| WAV/RIFF Header Format | | :------: | | FileTypeBlocID
4 bytes


| | FileSize
4 bytes


| | FileFormatID
4 bytes


| | FormatBlocID
4 bytes


| | BlocSize
4 bytes


| | AudioFormat
2 bytes | | NbrChannels
2 bytes | | Frequence
4 bytes


| | BytePerSec
4 bytes


| | BytePerBloc
2 bytes | | BitsPerSample
2 bytes |
| WAV Data Chunk Format | | :------: | | DataBlocID
4 bytes


| | DataSize
4 bytes


| | SampledData
2-3 bytes typically


|
Note: So easy in fact that I can just show you the entire format. ``` [Master RIFF chunk] FileTypeBlocID (4 bytes) : Identifier « RIFF » (0x52, 0x49, 0x46, 0x46) FileSize (4 bytes) : Overall file size minus 8 bytes FileFormatID (4 bytes) : Format = « WAVE » (0x57, 0x41, 0x56, 0x45) [Chunk describing the data format] FormatBlocID (4 bytes) : Identifier « fmt␣ » (0x66, 0x6D, 0x74, 0x20) BlocSize (4 bytes) : Chunk size minus 8 bytes, which is 16 bytes here (0x10) AudioFormat (2 bytes) : Audio format (1: PCM integer, 3: IEEE 754 float) NbrChannels (2 bytes) : Number of channels Frequence (4 bytes) : Sample rate (in hertz) BytePerSec (4 bytes) : Number of bytes to read per second (Frequence * BytePerBloc). BytePerBloc (2 bytes) : Number of bytes per block (NbrChannels * BitsPerSample / 8). BitsPerSample (2 bytes) : Number of bits per sample [Chunk containing the sampled data] DataBlocID (4 bytes) : Identifier « data » (0x64, 0x61, 0x74, 0x61) DataSize (4 bytes) : SampledData size SampledData ``` [comment]: # (!!!)