WAVE Form Definition

The WAVE form is defined as <WAVE-form> as follows. Programs must expect (and ignore) any unknown chunks encountered, as with all RIFF forms. However, <fmt-ck> must always occur before <data-ck>, and both of these chunks are mandatory in a WAVE file.

<WAVE-form>RIFF('WAVE'// Form type

                                                        <fmt-ck>                                // Waveform format
                                                        <data-ck> )                                // Waveform data

<fmt-ck> fmt(<wave-format>// WaveFormat structure

                                                        <format-specific> )                // Dependent on format
                                                                                                        //  category

<wave-format>struct {

                                                WORD        formatTag;                        // Format category
                                                 WORD        nChannels;                        // No. channels
                                                 DWORD        nSamplesPerSec;         // Sampling rate
                                                 DWORD        nAvgBytesPerSec;        // For buffering
                                                 WORD        nBlockAlign;                // Block alignments
                                         }

<PCM-format-specific>

                                        struct {
                                                 WORD        nBitsPerSample;                // Sample size
                                         }

<data-ck> data( <wave-data> )