Notations
Notations pour la structure des données.
- B (Byte) = entier sur 1 octet
- W (Word) = entier sur 2 octets
- DW (DoubleWord) = entier sur 4 octets
- S[x] (String) = chaîne de caractères avec x caractères
Structure du format
Donnée |
Structure |
Valeur |
Explication |
chunk type |
|
|
|
file_type |
S[4] |
'RIFF' |
identification du format |
file_size |
DW |
|
taille du fichier - 8 (restant) |
file_id |
S[4] |
'WAVE' |
|
chunk format |
|
|
|
chunk_id |
S[4] |
'fmt ' |
identification chunk format |
chunk_size |
DW |
|
taille du chunk format |
format |
W |
|
format (0 pour classique) |
channels_nb |
W |
{1,2} |
nombre de canaux (mono / stéréo) |
sampling_freq |
DW |
|
fréquence d'échantillonage |
bytes_per_second |
DW |
|
nombre d'octets par seconde utilisés |
bytes_per_sample |
W |
|
nombre d'octets par échantillonage utilisés |
depth |
W |
{8,16} |
profondeur (nombre de bits par échantillonage) |
chunk données |
|
|
|
chunk_id |
S[4] |
'data' |
identification chunk données |
chunk_size |
DW |
|
taille du chunk données |
données |
|
|
|
Remarques
- Les données sont
ensuite organisées par échantillonnage, les éventuels
deux canaux se succédant, et les valeurs écrites sur deux
octets avec l'octet de poids faible en premier
- Pour une profondeur de 16bits,
il est nécessaire d'inverser le bit de poids fort (effectuer un xor
0x8000)
- D'autres chunks peuvent exister
avec le chunk data, il faut les ignorer