PlaySound
説明
PlaySound サンプルは、DirectSound のセカンダリ バッファ内のウェーブ ファイルを再生する方法を示す。
パス
ソース :(SDK ルート)\Samples\Multimedia\DirectSound\PlaySound
実行可能ファイル :(SDK ルート)\Samples\Multimedia\DirectSound\Bin
ユーザーズ ガイド
[Sound File] をクリックしてウェーブ ファイルをロードする。繰り返し再生する場合は、[Loop Sound] を選択する。[Play] をクリックする。
プログラミング メモ
このサンプルは、DirectSound バッファ内のサウンドを再生するために必要な、次の基本的タスクを示している。
DirectSound の設定
- DirectSoundCreate 関数を呼び出して DirectSound オブジェクトを作成する。
- IDirectSound8::SetCooperativeLevel を呼び出す。
- プライマリ バッファ フォーマットを設定する。このサンプルは、Dsutil.cpp 内の DSUtil_SetPrimaryBufferFormat 関数を呼び出してこの処理を行う。
DirectSound バッファへのウェーブ ファイルのロード
- ウェーブ ファイル ヘッダーを読み込んでデータのサイズとフォーマットを取得する。
- ウェーブ ファイルのサイズが適切であれば、そのデータと同じフォーマットで、ファイル全体を格納できるサイズのセカンダリ バッファを作成する。ウェーブ ファイルが大きすぎる場合、データはバッファにストリーミングされる。StreamData サンプルを参照すること。
- バッファにデータを書き込む。IDirectSoundBuffer8::Lock を呼び出して、バッファへのポインタを取得する。バッファの再生中はデータのストリーミングは行われないので、バッファ全体をロックできる。メモリをコピーした後、IDirectSoundBuffer8::Unlock を呼び出す。
DirectSound バッファの再生
- バッファが失われていないかどうかを調べる。失われた場合は復元する。
- IDirectSoundBuffer8::Play を呼び出してバッファを再生する。
DirectSound の解放
取得したすべての DirectSound インターフェイスで Release を呼び出す。バッファを解放してから、DirectSound オブジェクトを解放する。
参照
スタティック バッファの書き込みと再生