Accueil > Informatique [computer science] > Articles informatique > Format WAV et synthèse sonore
Format WAV et synthèse sonore
vendredi 6 novembre 2015, par
Fichiers des deux articles publiés dans GNU/Linux Magazine n°190 (fév. 2016).
Articles accessibles librement :
p. 44 Format WAV : créez des ondes sonores en C
p. 50 Format WAV : des sons de plus en plus complexes
Code source du programme en C : https://github.com/GLMF/GLMF190/tree/master/Dev/format_WAV
Sinusoïde à 440 Hz : Amp * sin(omega*t + phi)
Somme de 7 harmoniques décroissant d’autant plus vite qu’elles sont d’un ordre important (dents de scie descendantes) :
for(j=1 ; j<=7 ; j=j+1){
gauche[i] = gauche[i] + Amp/(j*(1+pow(t,j)))*sin(j*omega*t) ;
droite[i] = gauche[i] ;
}
Signal carré (harmoniques impaires) :
for(j=1 ; j<=14 ; j=j+2){
gauche[i] = gauche[i] + Amp/(j*(1+pow(t,j)))*sin(j*omega*t) ;
}
Accord parfait majeur do mi sol :
for(j=1 ; j<=7 ; j=j+1){
gauche[i] = gauche[i] + Amp/(pow(j, 2)*(1+pow(t,j)))*(sin(j*omega*t) + sin(j*omega*pow(2.0, 4/12.0)*t) + sin(j*omega*pow(2.0, 7/12.0)*t)) ;
}
Sinus cardinal à 110 Hz :
phi = -2*PI ;
if (omega*t+phi != 0.0) {
gauche[i] = gauche[i] + Amp * sin(omega * t + phi) / (omega*t+phi) ;}
else {
gauche[i] = gauche[i] + Amp ;
}
Son évoquant une clarinette (220 Hz) :
for(j=1 ; j<=11 ; j=j+2){
gauche[i] = gauche[i] + Amp/pow(j, 0.7)*sin(j*omega*t) ;
}
...
mon_signal(0.0, 3.0, 220.0, 1.0) ;
generateur_enveloppe(0.0, 3.0, 30.0, 20.0, 80.0, 30.0) ;
Son sinusoïdal avec un trémolo à 5 Hz :
gauche[i] = gauche[i] * (1.0-AmpLFO*sin(omegaLFO*t)) ;
Son sinusoïdal tournant (0,5 Hz, profondeur de modulation 0,5) :
gauche[i] = gauche[i] * (1.0-AmpLFO*sin(omegaLFO*t + phi)) ;
droite[i] = droite[i] * (1.0-AmpLFO*cos(omegaLFO*t + phi)) ;
Son sinusoïdal avec vibrato à 4 Hz :
gauche[i] = gauche[i] + Amp * sin(omega * t + phi*(1.0+0.5*sin(2*PI*4.0*t))) ;
Bourdonnement obtenu par modulation de phase :
gauche[i] = gauche[i] + Amp * sin(omega*t + phi*sin(omega*0.2*t)) ;
Son FM :
gauche[i] = gauche[i] + Amp * sin(omega*t + phi*cos(75*t)/(1+log(t/100+0.01))) ;
Autre son FM :
gauche[i] = gauche[i] + Amp * sin(omega*(1.0+0.001*sin(t*500)) * t + phi) ;
Autre son FM :
gauche[i] = gauche[i] + Amp * sin(omega*(1.0+0.001*sin(t*500*(1.0+0.0002*cos(t*50)))) * t + phi) ;
Site du logiciel Audacity : http://audacityteam.org/