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