Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1636 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Programmation d'effet reverb en Langage C

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Programmation d'effet reverb en Langage C

n°1488664
shinohinat​a
Posté le 08-12-2006 à 15:33:51  profilanswer
 

Bonjour à tous et à toutes, :hello:  
j'aurais aimé savoir si il y avait possibilité que l'on m'aide à créer un programme qui fera partie d'une bibliothèque en C dans mon IUT
On doit pour celà créer un fichier.c qui permettra aux futures personnes utilisant la bibliothèque en question de pouvoir faire des effets reverb,(delay et chorus) sur des sons
mais je ne sais pas exactement comment m'y prendre d'une part pour gérer des sons dans un programme en C et je ne sais pas non plus comment faire pour créer un programme qui ait cette fonctionnalité pourriez-vous m'éclairer un peu si ce n'est pas m'illuminer
 
Merci à tous et à toutes pour l'aide qui m'aura été apportée.
 :bounce:

mood
Publicité
Posté le 08-12-2006 à 15:33:51  profilanswer
 

n°1488679
-ThX-
Not here anymore
Posté le 08-12-2006 à 15:46:39  profilanswer
 

Déja il faut que tu recherches les différents algorithmes pour générer les effets.
 
Le chorus, c'est une réinjection du signal avec une phase variable.
Le délai, c'est une réinjection pondérée et retardée temporellement.
Pour la réverb, soit tu te casses la tete, soit tu utilises plusieurs délais savamment réglés.
 
Mais je préfère te prévenir, ça va vraiment pas etre une partie de plaisir...
 
Le plus simple c'est encore de coder un conteneur de plugin DX ou VST, tu auras des miliers d'effets a dispo.

n°1488684
shinohinat​a
Posté le 08-12-2006 à 15:50:34  profilanswer
 

Le problème c'est que vu que celà fait partie des cours je n'ai pas le droit à d'autre logiciel que le code que nous génerons nous c'est à dire sous linux avec du Kwrite et autre éditeurs de texte dans le genre lol.
Donc pas le droits à des plugins qu'on recoderait normalement...
voilà merci que même et si d'autres ont des solutions je veux bien
merci

n°1488716
shinohinat​a
Posté le 08-12-2006 à 16:40:44  profilanswer
 

personne d'autres ne peut m'aider??

n°1488736
-ThX-
Not here anymore
Posté le 08-12-2006 à 16:54:44  profilanswer
 

Citation :

[07] Dans l'absence de réponses, il n'est pas nécessaire de 'upper' le topic toutes les 5 minutes.

  • Si les gens sont là et qu'ils peuvent vous aider, ils vous aideront. Autrement, soit ils ne sont pas là, soit ils ne peuvent pas vous aider, n'insistez donc pas.
  • Si après plusieures heures personne n'a répondu et que votre topic n'est plus sur la première page, vous pouvez éventuellement envisager de le faire remonter (mais pas d'en créer un autre juste parce qu'on n'a pas répondu au premier !)

n°1488743
shinohinat​a
Posté le 08-12-2006 à 17:03:54  profilanswer
 

d'accord excuser moi
merci du conseil
THX

n°1488745
red factio​n
Posté le 08-12-2006 à 17:04:01  profilanswer
 

<hors topic>
 
-Thx- jessaie de recoder les principaux instruments de la TR808 (a coup de sin , square wave etc) , pour les trucs simples (BD, CB,hats) ca marche bien mais ca manque un peu de punch, tu pourrait peut etre maider....
</hors topic>

n°1488757
-ThX-
Not here anymore
Posté le 08-12-2006 à 17:13:49  profilanswer
 

red faction a écrit :

<hors topic>
 
-Thx- jessaie de recoder les principaux instruments de la TR808 (a coup de sin , square wave etc) , pour les trucs simples (BD, CB,hats) ca marche bien mais ca manque un peu de punch, tu pourrait peut etre maider....
</hors topic>


 
Ca manque de punch dans quel sens ? Si tu parles de la dynamique de ton signal généré, pourquoi tu n'implémentes pas un compresseur-expenseur de base ? Quitte à tricher, pour gagner en dynamique sur tes attaques, tu peux multiplier ta sortie par :
 
1 + exp(-t / l )
 
avec t le temps actuel de ton signal, l la longueur de ton signal généré.
 
Ca va multiplier par 2 ton signal de sortie pendant un temps, puis doucement redescendre a ton signal de base.. une compression d'escroc

n°1488770
red factio​n
Posté le 08-12-2006 à 17:23:10  profilanswer
 

non enfait je me suis mal exprimmé: en fait les sons ne ressemble pas toujours a ceux de la 808  , par exemple les hats claquent beacoup moins fort que sur la vraie machine, j'ai essaye de plusieurs manières avec des filtres , white noise etc, mais comme je suis pas un expert la dedans...
 
en plus jessaie de coder ca avec le minimum de lignes possibles , car le but est de mettre tout ca dans ma demo 4k , (et pq pas faire une boite a ryhtme soft par apres)
 
je posterai le code au soir des instru que j'ai deja refait c pas tres long ...

n°1488775
red factio​n
Posté le 08-12-2006 à 17:26:08  profilanswer
 

-ThX- a écrit :

Ca manque de punch dans quel sens ? Si tu parles de la dynamique de ton signal généré, pourquoi tu n'implémentes pas un compresseur-expenseur de base ? Quitte à tricher, pour gagner en dynamique sur tes attaques, tu peux multiplier ta sortie par :
 
1 + exp(-t / l )
 
avec t le temps actuel de ton signal, l la longueur de ton signal généré.
 
Ca va multiplier par 2 ton signal de sortie pendant un temps, puis doucement redescendre a ton signal de base.. une compression d'escroc


faut que jessaie ce truc , ca a lair terrible!! j'aime les trucs simple qui font de leffet!!
 
l'autre jour j'ai trouve un low/highpass filter qui faisait seulement qq lignes (et qui marche , teste et approuvé)

mood
Publicité
Posté le 08-12-2006 à 17:26:08  profilanswer
 

n°1488800
-ThX-
Not here anymore
Posté le 08-12-2006 à 17:48:03  profilanswer
 

le lowpass le plus simple a coder amha c'est le moyenneur... le b.a.ba du traitement numérique: ( avec Yn signal sortie et Xn signal entree )
 
Yn = ( Xn + X(n-1) + X(n-2) ) / 3
 
Ca lisse ton signal, donc c'est un passe bas. Pour savoir la fréquence de coupure, faut calculer la transformée en Z de la fonction de transfert mais la c'est vraiment super-hs

n°1488830
red factio​n
Posté le 08-12-2006 à 18:46:07  profilanswer
 

Code :
  1. //Filtre lowpass
  2. //dt = intervalle entre 2 samples
  3. //r= 100 par ex
  4. a= dt / ( rc + dt)
  5. yn = a*x + (1-a)* yn-1 //ici je fais juste un interpolation entre 2 frames


 
enfait ca ressemble fort a ta methode, en gros ca fait une moyenne aussi ...
 
 
sinon javais trouve ca aussi qui fait low pass filter egalement + resonance, (mais c pas de moi)
 

Code :
  1. //Resonant filter
  2. //This filter consists of two first order low-pass filters in
  3. //series, with some of the difference between the two filter
  4. //outputs fed back to give a resonant peak.
  5. //You can use more filter stages for a steeper cutoff but the
  6. //stability criteria get more complicated if the extra stages
  7. //are within the feedback loop.
  8. //set feedback amount given f and q between 0 and 1
  9. fb = q + q/(1.0 - f);
  10. //for each sample...
  11. buf0 = buf0 + f * (in - buf0 + fb * (buf0 - buf1));
  12. buf1 = buf1 + f * (buf0 - buf1);
  13. out = buf1;


 
je vais peut-etre creer un topic pour eviter de lui pourrir le sien....


Message édité par red faction le 08-12-2006 à 19:06:51
n°1488905
karlkox
Posté le 08-12-2006 à 22:17:53  profilanswer
 

J'utilise un filtre passe bas de second ordre comme ceci : (bon la, il y à deux filtres en cascade)
 

Code :
  1. float Temp  = (B0  * SampleValue + B1*I1  + B2*I2  - A1*O1   - A2*O2);
  2. float Temp2 = (B0B * SampleValue + B1B*I1 + B2B*I2 - A1B*O1B - A2B*O2B);
  3. I2 = I1;
  4. I1 = SampleValue;
  5. O2 = O1;
  6. O1 = Temp;
  7. O2B = O1B;
  8. O1B = Temp2;


 
Cf mon blog pour écouter ce que ça donne.
 
Pour répondre à la question initiale, je conseil la lecture de cet excellent article.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Programmation d'effet reverb en Langage C

 

Sujets relatifs
Sexe hard informatique scanf (sex vs programmation)Editeur de texte spécifique Langage de Programmation
Effet thumbnail dans un menu défilant en HTML/CSSEffet sur texte
Programmation en C pour liason sériequels outils quel langage
Quel langage pour... faire caEffet page qui se tourne au clic d'un lien ?
[Résolu] OutOfMemoryException et programmation multi-threads 
Plus de sujets relatifs à : Programmation d'effet reverb en Langage C


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR