RIFF Wave 形式のファイルに音声データを書き込む。
Inheritance: IDisposable
Beispiel #1
0
        /// <summary>
        /// Wave ファイルを開く。
        /// </summary>
        /// <param name="reader">Wave ファイルを格納したストリーム</param>
        public void Open(BinaryWriter writer, FormatHeader header)
        {
            if (this.writer != null)
            {
                this.writer.Close();
            }

            this.writer = writer;
            this.header = header;

            WaveWriter.WriteHeader(writer, header, 0); // データ長は仮に0を入れておく。
        }                                              //Open
Beispiel #2
0
        }                                              //Open

        /// <summary>
        /// Wave ファイルを閉じる。
        /// </summary>
        public void Close()
        {
            if (writer == null)
            {
                return;
            }

            WaveWriter.ModifyHeader(this.writer, (int)this.dataLength, this.header.blockSize);

            writer.Close();
            writer = null;
        }
Beispiel #3
0
        }        //Write

        /// <summary>
        /// データの書き込み。
        /// </summary>
        /// <param name="length">書き込むサンプル数。</param>
        /// <param name="l">左チャネルのデータ。</param>
        /// <param name="r">右チャネルのデータ。</param>
        /// <returns>実際に書き込んだサンプル数。</returns>
        public int Write(short[] l, short[] r)
        {
            if (this.writer == null)
            {
                return(0);
            }

            uint length = (uint)l.Length;
            int  i      = WaveWriter.Write(this.writer, this.header, l, r);

            this.dataLength += (uint)i;
            return(i);
        }        //Write
Beispiel #4
0
 /// <summary>
 /// Wave の生データをそのまま書き込む。
 /// </summary>
 /// <param name="data">書き込むデータ</param>
 /// <param name="length">書き込む長さ(バイト数)</param>
 public void WriteRawData(byte[] data, int length)
 {
     WaveWriter.WriteRawData(this.writer, data, length);
     this.dataLength += (uint)(length / this.header.blockSize);
 }
Beispiel #5
0
		/// <summary>
		/// データ wave の書き込み。
		/// </summary>
		/// <param name="filename">ファイル名</param>
		public void WirteData(string filename)
		{
			using(WaveWriter writer = new WaveWriter(filename, this.data.Header))
			{
				writer.Write(this.data.TimeL, this.data.TimeR);
			}
		}