WaveOut コントロールを用いた再生方法

バッファの概念

再生のしくみ

再生処理の手順

 

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


バッファの概念

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

バッファの概念図

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

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


再生のしくみ

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

バッファ内にあるデータを再生し終わると、バッファはデバイスから解放され、OnDone イベントが発生します。

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

再生処理の流れ

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

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


再生処理の手順

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

ステップ 処理の内容 関連するプロパティ、メソッド、イベント
1 初期化
  • 使用するデバイス ID の設定
  • サンプリング周波数の設定
  • チャネル数の設定
  • 量子化ビット数の設定
  • バッファ サイズの設定
  • バッファ数の設定
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 メソッド

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

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


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