+ char* pData = reinterpret_cast<char*> (m_data);
+
+ strncpy (pData, "RIFF", 4);
+
+ // Length of file after 8 byte header
+ put_int4 (pData + 4, 36 + m_nDataBytes);
+
+ strncpy (pData + 8, "WAVEfmt ", 8);
+
+ // Length of header block
+ put_int4 (pData + 16, 0x10);
+
+ // Always 1
+ put_int2 (pData + 20, 1);
+
+ /* Number of channels */
+ put_int2 (pData + 22, m_nChannels);
+
+ // Sample Rate
+ put_int4 (pData + 24, static_cast<int> (m_rate + 0.5));