コード例 #1
0
ファイル: WaveFileWriter.cs プロジェクト: MSylvia/DoomEngine
 //--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));
 }
コード例 #2
0
ファイル: WaveFileWriter.cs プロジェクト: MSylvia/DoomEngine
        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);
        }