//--Methods public WaveFileWriter(int sampleRate, int channels, int bitsPerSample, string fileName) { this.sRate = sampleRate; this.channels = channels; this.bits = bitsPerSample; this.fname = fileName; this.ftemp = GetTemporaryFileName(Path.GetDirectoryName(fileName)); this.writer = new BinaryWriter(CrossPlatformHelper.CreateResource(ftemp)); }
public void Close() { if (writer == null) { return; } writer.Close(); writer = null; BinaryWriter bw2 = new BinaryWriter(CrossPlatformHelper.CreateResource(fname)); bw2.Write((Int32)1179011410); bw2.Write((Int32)44 + length - 8); bw2.Write((Int32)1163280727); bw2.Write((Int32)544501094); bw2.Write((Int32)16); bw2.Write((Int16)1); bw2.Write((Int16)channels); bw2.Write((Int32)sRate); bw2.Write((Int32)(sRate * channels * (bits / 8))); bw2.Write((Int16)(channels * (bits / 8))); bw2.Write((Int16)bits); bw2.Write((Int32)1635017060); bw2.Write((Int32)length); using (BinaryReader br = new BinaryReader(CrossPlatformHelper.OpenResource(ftemp))) { byte[] buffer = new byte[1024]; int count = br.Read(buffer, 0, buffer.Length); while (count > 0) { bw2.Write(buffer, 0, count); count = br.Read(buffer, 0, buffer.Length); } } bw2.Close(); CrossPlatformHelper.RemoveResource(ftemp); }