DirectSoundでWAVEファイルを再生する

前回はDirectSoundによるOggVorbisファイルの再生について書きましたが、
今回はDirectSoundによるWAVEファイルの再生について書きます。

全体的な処理の流れは以下のようになります。

 WAVEファイルオープン
   ↓
 WAVEファイルのフォーマット・デコード後サイズ取得
   ↓
 DirectSoundの初期化
   ↓
 WAVEファイルのデータをDirectSoundバッファにデコード
   ↓
 バッファの再生
   ↓
 後始末

OggVorbisファイルの時と処理の流れはほぼ一緒です。

以上の流れのソースコードを以下に記します。

WAVEファイルはRIFFファイルとして定義されています。
WAVEファイルの読み込みにはmmio~関数を用います。
これはWindowsのマルチメディア操作用関数のことで、RIFFファイルを比較的楽に扱うことが出来ます。

RIFFファイルはWAVEファイルに限らずたとえばMP3などのサウンドデータもサポートします。

これらのAPIを使用するためにはwinmm.libをインポートする必要があります。

WAVEファイルはmmioOpen関数で開きます。

ファイルを開いたら、WAVEFORMATEX構造体データと実データを読み込みます。
今回は読み込み処理を示すだけにして詳細の説明は割愛させていただきます。

ここまで出来たら、後はDirectSoundバッファにデータを読み込んで再生できるようになります。

OggVorbisファイルの再生同様にワンパターンな処理なので、関数化やクラス化して使ったほうが良いでしょう。

■参考サイト
RIFFファイルフォーマット
WAVEの再生