Le codage d'un fichier WAV :

Un fichier .wav contient toutes les informations nécessaires à la reconstitution de « l’image sonore » qu’il contient. Il faut disposer d’un logiciel approprié pour lire ce type de fichier. 

Ce qui va définir que le fichier sera de la musique sera bien sûr son extension (ici WAV) mais ce n'est pas tout. En effet, le fichier, en plus de contenir la version numérique (01000111000....) de la musique va posséder une entête contenant des informations importantes sur la musique.

Analysons l'entête d'un fichier "WAV" en prenant l'exemple d'un fichier mesurant au total 65592 octets et contenant 65536 échantillons :


                                                                            

adr:                         HEXA                                                 ASCII       

0000  52 49 46 46  30 00 01 00  57 41 56 45  66 6D 74 20   |RIFF0...WAVEfmt |

0010  10 00 00 00  01 00 01 00  11 2B 00 00  11 2B 00 00   |.........+...+..|

0020  01 00 08 00  66 61 63 74  04 00 00 00  00 00 01 00   |....fact........|

0030  64 61 74 61  00 00 01 00  80 80 80 80  80 80 82 84   |data............|

0040  88 8E A6 88  5E 50 5A 4A  64 76 84 90  A2 9C 9A 9E  |....^PZJdv......|

0050  8C 7C 78 72  5E 5A 62 60  60 72 7E 82  92 9E 9A 96  |.|xr^Zb``r~.....|

0060  9A 90 7C 76  70 62 60 66  68 6C 7E 86  8A 92 9C 9A  |..|vpb`fhl~.....|

etc.


L'entête mesure 56 octets, et s'étend donc de l'adresse 00h à l'adresse 38h.


Les fichiers WAV utilisent le format RIFF ; définition du format RIFF :


Octets 1 à 4   : Caractères 'RIFF' [52h 49h 46h 46h] identifiant le format.

Octets 5 à 8   : Longueur du groupe de données au format WAV =

                 [30h.00h.01h.00h] = 00010030h = 65584 octets,

                 (le reste du fichier, car 65584+8 = 65592 octets).

Octets 9 à 16  : Caractères 'WAVEfmt ' identifiant le format WAV.


Les octets 17 à 56 définissent les paramètres du format 'WAV' :


Octets 17 à 20 : [10.00.00.00] = 00000010h = 16 = nombre d'octets

                 utilisés après pour définir le format.

Octets 21 à 22 : [01.00] = 0001h = 1 = numéro de format du fichier

                 (pas de compression, format PCM classique).

Octets 23 à 24 : [01.00] = 0001h = 1 : nombre de canaux : ici, mono.

Octets 25 à 28 : [11.2B.00.00] = 00002B11h = 11025, fréquence

                 d'échantillonnage (en Hz), c'est à dire le nombre

                 d'échantillons pas seconde.

Octets 29 à 32 : [11.2B.00.00] = 00002B11h = 11025, nombres d'octets par

                 seconde, ce qui revient au même car un échantillon mesure

                 un octet et l'on est en mono.

Octets 33 à 34 : [01.00] = 0001h = 1 = Produit du nombre de canaux par le

                 nombre d'octets par échantillon (ici 1x1=1).

Octets 35 à 36 : [08.00] = 0008h = 8 bits par échantillon (valeurs

                 possibles : 8, 12 ou 16).

Octets 37 à 48 : [66.61.63.74][04.00.00.00][00.00.01.00] = 'fact', 4, 65536.

                 Champ sur lequel je n'ai pas de précision ; je pense

                 que 'fact' annonce des informations, que les 4 octets

                 suivants indiquent la taille de ces infos (4 octets),

                 et que dans ce cas, l'info est le nombre d'échantillons,

                 lequel est repris après par 'data', soit 65536.

Octets 49 à 52 : 'data' : annonce l'arrivée des données.

Octets 53 à 56 : [00.00.01.00] = 00010000h = 65536 : taille des données.

Les 65536 octets suivants : valeurs numériques successives des échantillons, oscillant autour de la valeur moyenne 80h, selon l'amplitude et le signe du signal d'entrée...


N.B. : Selon l'éditeur WAV utilisé, on peut remarquer des différences minimes dans la taille des entêtes, mais l'essentiel des informations données ici restent valables.

Créé avec HelpNDoc Personal Edition: Création d'aide CHM, PDF, DOC et HTML d'une même source