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.