WaveIn コントロールを用いた録音方法 |
WaveIn コントロールには、録音のためのバッファの配列が内蔵されています。このバッファは、コントロール内部で管理されており、それぞれのバッファはインデックスにより識別されます。録音を行うと、このバッファ内にデータが格納されます。バッファの個数やサイズは、NumBuffers プロパティ、および BufferSize プロパティにより、自由に設定することができます (ただし、録音中にこれらのプロパティの値を変更することはできません)。
ページの先頭へもどる
録音を行うためには、AddBuffer メソッドを用いて WAVE 入力デバイスにバッファを追加し、Start メソッドで録音を開始します。デバイスには複数のバッファを追加することができます。バッファはデバイス内に蓄積され、順次処理されていきます。複数のバッファを貯えておくと、他のアプリケーションがコンピュータに負担のかかるような処理を行っても、録音が途切れにくくなります。
バッファがデータでいっぱいになると、バッファはデバイスから解放され、OnDone イベントが発生します。解放されたバッファには録音されたデータが格納されているので、このデータを GetData メソッドで配列変数にコピーします。配列変数にコピーされたデータは、その後自由に扱うことができます。
解放されたバッファは、AddBuffer メソッドを用いて、再度 WAVE 入力デバイスに追加することができます。このように、バッファを繰り返し使用することにより、途切れのない録音が可能になります。
ページの先頭へもどる
WaveIn コントロールを用いて WAVE サウンドの録音を行うプログラムは、以下のような流れになります。
ステップ | 処理の内容 | 関連するプロパティ、メソッド、イベント |
1 | 初期化
|
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 メソッド |
ページの先頭へもどる
Copyright (C) 1998, Kentaro Hara.
All rights reserved. |