#ifndef WAVE_HEADER_H #define WAVE_HEADER_H namespace Wave { enum AudioFormat { PCM = 0x01, IMA_ADPCM = 0x11, MP3 = 0x55, }; struct Header { uint32_t chunkID; uint32_t chunkSize; // file-size - 8 char format[4] = {'W', 'A', 'V', 'E'}; char subChunk1ID[4] = {'f', 'm', 't', ' '}; uint32_t subChunk1Size = 20; uint16_t audioFormat = AudioFormat::PCM; uint16_t numChannels = 1; uint32_t sampleRate = 22050; uint32_t byteRate = sampleRate * 256 / 505; uint16_t blockAlign = 0x100; uint16_t bitsPerSample = 8; uint16_t byteExtraData = 2; uint16_t extraData = 505; // samples-per-block. see byteRate char subChunk2ID[4] = {'f', 'a', 'c', 't'}; uint32_t subChunk2Size = 4; uint32_t numOfSamples = 0xFFFFFFFF; // play forever char subChunk3ID[4] = {'d', 'a', 't', 'a'}; uint32_t subChunk3Size = 0xFFFFFFFF; // file-size - 60 }; #endif