WaveIn コントロールを用いた録音方法

バッファの概念

録音のしくみ

録音処理の手順

 

リターン WaveIn コントロールのページへもどる


バッファの概念

WaveIn コントロールには、録音のためのバッファの配列が内蔵されています。このバッファは、コントロール内部で管理されており、それぞれのバッファはインデックスにより識別されます。録音を行うと、このバッファ内にデータが格納されます。バッファの個数やサイズは、NumBuffers プロパティ、および BufferSize プロパティにより、自由に設定することができます (ただし、録音中にこれらのプロパティの値を変更することはできません)。

バッファの概念図

ページの先頭へ ページの先頭へもどる

リターン WaveIn コントロールのページへもどる


録音のしくみ

録音を行うためには、AddBuffer メソッドを用いて WAVE 入力デバイスにバッファを追加し、Start メソッドで録音を開始します。デバイスには複数のバッファを追加することができます。バッファはデバイス内に蓄積され、順次処理されていきます。複数のバッファを貯えておくと、他のアプリケーションがコンピュータに負担のかかるような処理を行っても、録音が途切れにくくなります。

バッファがデータでいっぱいになると、バッファはデバイスから解放され、OnDone イベントが発生します。解放されたバッファには録音されたデータが格納されているので、このデータを GetData メソッドで配列変数にコピーします。配列変数にコピーされたデータは、その後自由に扱うことができます。

解放されたバッファは、AddBuffer メソッドを用いて、再度 WAVE 入力デバイスに追加することができます。このように、バッファを繰り返し使用することにより、途切れのない録音が可能になります。

録音処理の流れ

ページの先頭へ ページの先頭へもどる

リターン WaveIn コントロールのページへもどる


録音処理の手順

WaveIn コントロールを用いて WAVE サウンドの録音を行うプログラムは、以下のような流れになります。

ステップ 処理の内容 関連するプロパティ、メソッド、イベント
1 初期化
  • 使用するデバイス ID の設定
  • サンプリング周波数の設定
  • チャネル数の設定
  • 量子化ビット数の設定
  • バッファ サイズの設定
  • バッファ数の設定
DeviceID プロパティ
SamplesPerSec プロパティ
Channels プロパティ
BitsPerSample プロパティ
BufferSize プロパティ
NumBuffers プロパティ
2 デバイスを開く Open メソッド
3 バッファをデバイスに追加する AddBuffer メソッド
4 録音を開始する Start メソッド
     
5 イベント発生 : “バッファがデータでいっぱいになった”
→ ステップ 6 へ
OnDone イベント
6 録音されたデータを取得
必要に応じて、データを処理または保存する
GetData メソッド
7 バッファをデバイスに追加する AddBuffer メソッド
8 ステップ 5 へ  
     
9 録音を停止する Stop メソッド
10 イベント発生 : “録音が終了した”
→ ステップ 11 へ
OnBusyFlagChange イベント
IsBusy プロパティ
11 デバイスを閉じる Close メソッド

ページの先頭へ ページの先頭へもどる

リターン WaveIn コントロールのページへもどる


Copyright (C) 1998, Kentaro Hara. All rights reserved.
無断転載を禁じます。