WaveOut コントロールを用いた再生方法 |
WaveOut コントロールには、再生のためのバッファの配列が内蔵されています。このバッファは、コントロール内部で管理されており、それぞれのバッファはインデックスにより識別されます。再生するサウンド データは、このバッファ内に格納します。バッファの個数やサイズは、NumBuffers プロパティ、および BufferSize プロパティにより、自由に設定することができます (ただし、再生中にこれらのプロパティの値を変更することはできません)。
ページの先頭へもどる
まず、再生するサウンド データを SetData メソッドを用いてバッファにコピーします。そして、AddBuffer メソッドを用いて WAVE 出力デバイスにバッファを追加することにより、再生が開始されます。デバイスには複数のバッファを追加することができます。バッファはデバイス内に蓄積され、順次処理されていきます。複数のバッファを貯えておくと、他のアプリケーションがコンピュータに負担のかかるような処理を行っても、再生が途切れにくくなります。
バッファ内にあるデータを再生し終わると、バッファはデバイスから解放され、OnDone イベントが発生します。
解放されたバッファは、AddBuffer メソッドを用いて、再度 WAVE 出力デバイスに追加することができます。このように、バッファを繰り返し使用することにより、途切れのない再生が可能になります。
ページの先頭へもどる
WaveOut コントロールを用いて WAVE サウンドの再生を行うプログラムは、以下のような流れになります。
ステップ | 処理の内容 | 関連するプロパティ、メソッド、イベント |
1 | 初期化
|
DeviceID
プロパティ SamplesPerSec プロパティ Channels プロパティ BitsPerSample プロパティ BufferSize プロパティ NumBuffers プロパティ |
2 | デバイスを開く | Open メソッド |
3 | バッファに新しいサウンド データをコピーする | SetData メソッド |
4 | バッファをデバイスに追加する | Pause
メソッド AddBuffer メソッド |
5 | 再生を開始する | Restart メソッド |
6 | イベント発生 :
“データを再生し終わった” → ステップ 7 へ |
OnDone イベント |
7 | バッファに新しいサウンド データをコピーする | SetData メソッド |
8 | バッファをデバイスに追加する | AddBuffer メソッド |
9 | ステップ 6 へ | |
10 | 再生を停止する | Stop メソッド |
11 | イベント発生 :
“再生が終了した” → ステップ 12 へ |
OnBusyFlagChange
イベント IsBusy プロパティ |
12 | デバイスを閉じる | Close メソッド |
ページの先頭へもどる
Copyright (C) 1998, Kentaro Hara.
All rights reserved. |