Son wave et octave

Signaler
Messages postés
30
Date d'inscription
lundi 10 novembre 2003
Statut
Membre
Dernière intervention
15 mars 2005
-
Messages postés
702
Date d'inscription
vendredi 21 mars 2003
Statut
Membre
Dernière intervention
1 octobre 2009
-
bonjour.
j'ai des sons waves et je voudrai soit augmenter d'un octave (plus aigu) soit diminuer d'un octave (plus grave) comment peut t'on faire.

Merci.

A++++++++++++++

1 réponse

Messages postés
702
Date d'inscription
vendredi 21 mars 2003
Statut
Membre
Dernière intervention
1 octobre 2009
4
Salut,



Tu peux, dans certaines limites modifier les indications de vitesse d'échantillonnage et de débit dans l'en-tête du fichier WAV.





00000000 5249 4646 2445 0100 5741 5645 666D 7420 RIFF$E..WAVEfmt

00000010 1000 0000 0100 0100 2256 0000 44AC 0000 ........D....X..

00000020 0200 1000 6461 7461 0045 0100 FDFF FDFF ....data.E......



bits par échantillon ($10 = 16 ici, soit 2 octets)

canaux (1 ici = mono)

Vitesse d'échantillonage ($2256 = 22050 Hz ici)

débit =
22050
x 2 x 1 $AC44 soit 44100 octets/s 353 kb/s

nombre d'octets à suivre

taille du bloc data






en divisant par 2 la vitesse d'échantillonage indiquée, on diminue d'une octave :



00000000 5249 4646 2445 0100 5741 5645 666D 7420 RIFF$E..WAVEfmt

00000010 1000 0000 0100 0100 112B 0000 2256 0000 ........D....X..

00000020 0200 1000 6461 7461 0045 0100 FDFF FDFF ....data.E......



en la multiliant par 2, on augmente d'une octave :




00000000 5249 4646 2445 0100 5741 5645 666D 7420 RIFF$E..WAVEfmt

00000010 1000 0000 0100 0100
44AC
0000 8858 1000 ........D....X..

00000020 0200 1000 6461 7461 0045 0100 FDFF FDFF ....data.E......





les valeur possibles sont malheusement limitées (en général 11.025k, 22.05k et 44.1K).



Si on veut une solution plus souple, il faut extraire les données,
enlever un echantillon sur deux pour "accélérer" le son (+1 octave) ou
doubler chaque échantilon pour le "ralentir" (-1 octave), et
recontruire un fichier WAV avec un entête correct (modification de la
taille du bloc data multiplié par 2 ou divisé par 2 et le nombre
d'octets dans le fichier = taille data + $24)







Ken@vo

____________________

Code, Code, Codec !