[C] Mettre de l'echo dans un fichier .wav

Mettre de l'echo dans un fichier .wav [C] - Programmation

Marsh Posté le 16-11-2001 à 13:06:42    

Salut !
 
Voila, j'ai un projet a faire en C(Ansi C plus specialement), qui consiste a prendre un fichier .wav, et a y mettre un echo.
 
Quelqu'un saurait-il m'expliquer comment on peut sommer un echo sur un fichier existant, en gardant l'intégrité du son ?  
 
Par exemple :
Imaginons que l'echo doit commencer une seconde apres le debut du fichier.
Supposons que la premiere note du fichier est DO (un certain code dans le fichier), et qu'au bout d'une seconde, c'est un MI (un autre code) qui doit etre joué.
Alors a t+1seconde du debut du morceau, il doit me jouer "simultanement" un MI + un DO(affaibli a cause de l'echo mais ca c'est secondaire).
 
Ce que je ne comprends pas, c'est comment "sommer" ce DO et ce MI. Si j'additionnais tout betement leur valeur, il m'en sortirait une troisieme qui ne serait ni DO ni MI, mais un espece de micmac entre les deux.
 
Alors comment faire ?   :??:  
 
Si quelqu'un s'y connait dans ce domaine, je le remercie d'avance pour toutes ses explications.
 
Merci.
 
Nicolas.

Reply

Marsh Posté le 16-11-2001 à 13:06:42   

Reply

Marsh Posté le 16-11-2001 à 13:56:33    

Ben un DO plus un MI  
ca s'appelle un accord DO-MI.
 
Mais toi tu t'en fiches
tu travailles juste sur des fichiers
d'onde, donc ca importe peu la note qu'il
est en train de jouer.
 
Donc pour faire un echo, tu ajoutes les ondes
en les decalant d'une seconde et en diminuant
leur intensite. Et ton oreille (ou ton cerveau)
va se debrouiller pour comprendre qu'il s'agit
d'un echo.
 
A+
LEGREG

Reply

Marsh Posté le 16-11-2001 à 14:15:08    

Si on joue un DO faible et un MI fort, ça doit aller. Ce qu'il ne faut pas, c'est les "sommer" numériquement, juste les jouer en même temps, comme sur un (vrai) instrument.

Reply

Marsh Posté le 16-11-2001 à 14:32:29    

CARBON_14 a écrit a écrit :

Si on joue un DO faible et un MI fort, ça doit aller. Ce qu'il ne faut pas, c'est les "sommer" numériquement, juste les jouer en même temps, comme sur un (vrai) instrument.  




non ce qu'il n'a pas compris
c'est que son fichier wav ne contient pas des notes
mais des ondes (wave en anglais)
Donc pour ajouter des sons, on fait comme
ce qui se fait dans la nature, on ajoute
les valeurs d'onde.
 
Attention toutefois que si tu ajoutes des sons
de frequences proches, il y a des risques
d'interference..
 
LEGRE

Reply

Marsh Posté le 16-11-2001 à 14:39:07    

CARBON_14 a écrit a écrit :

Si on joue un DO faible et un MI fort, ça doit aller. Ce qu'il ne faut pas, c'est les "sommer" numériquement, juste les jouer en même temps, comme sur un (vrai) instrument.  




 
je t'assure que si tu fais une somme parfaire (avec normalisation à suivre, évidemment), ca marche très bien. Ya aucune raison que ca ne marche pas...
 
 
oroumov:
un DO n'est pas une valeur mais une succession de valeur qui forment une sinusoïde (on oublie les harmoniques et tout le reste, on se place dans le cas idéail). Idem pour un MI. Donc sommer un DO et un MI revient à sommer dans le temps tous les échantillons, ce qui crée une nouvelle forme d'onde.
 
Donc pour de l'écho, tu décales tous les échantillons de ton écho ( mettons 1s d'écho, pour des fichiers audios à 16KHz, ca fait un décalage de 16000 échantillons) et ensuite tu ajoutes.
 
Eventuellement tu normalises tout ça, et c'est bon.

Reply

Marsh Posté le 18-11-2001 à 15:21:06    

SoWhatIn22 a écrit a écrit :

 
 
Donc pour de l'écho, tu décales tous les échantillons de ton écho ( mettons 1s d'écho, pour des fichiers audios à 16KHz, ca fait un décalage de 16000 échantillons) et ensuite tu ajoutes.




 
Merci pour cette réponse, je vois mieux ce qui doit s'y passer.
 
Donc concretement, si j'ai bien compris, quand j'ouvre mon fichier wav en binaire et que je vois une succession de caracteres, je dois decaler ces caracteres du nombre voulu pour un certain echo multiplié par mettons 16000 (si le fichier audio est a 16Khz). Et donc si je somme directement deux caracteres entre eux, ca fonctionnera ?
 
C'est le cerveau qui se chargera lui meme de re-séparer les deux ? Rien de plus a faire par moi ?
 
Ca parait vachement simple vu comme ca, un peu trop meme peut etre...

Reply

Marsh Posté le 18-11-2001 à 16:09:18    

oroumov a écrit a écrit :

 
 
Ca parait vachement simple vu comme ca, un peu trop meme peut etre...  




 
peut-etre tout simplement te manque-t-il les bases
theoriques necessaires pour comprendre
ce qu'est une onde sonore et comment sont percues les frequences par le cerveau (et bizarrement meme si les bases sont simples ca peut etre beaucoup plus complique que ca n'en a l'air: cf psychoacoustique, et certains resultats utilises pour la compression MP3 ou encore la perception des sons 3D par l'oreille et le cerveau)
 
En gros dans un fichier wave on stocke des suites de chiffres qui representent une onde sonore, c'est a dire des variations de pression de l'air. Ces variations de pression font vibrer des cils dans ton oreille et ton cerveau interprete ces vibrations comme des sons de frequences differentes.  
 
Dis moi: que fais-tu comme etudes?
(est-ce que c'est un projet d'etude?)
 
A+
LEGREG

Reply

Marsh Posté le 19-11-2001 à 13:51:40    

Encore merci pour les explications.
 
Oui c'est un projet "d'etudes".
 
Je suis dans une ecole d'informatique et je dois programmer ca en C (Enoncé : "mettre de l'echo dans un fichier wav", vachement explicite), mais on a absolument aucune notion de cours relative a l'acoustique en général ou tout ce qui pourrait y avoir trait, donc autant c'est peut etre facile a programmer, autant j'ignore comment ca fonctionne.
 
A+
Nicolas.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed