AudioPath
説明
AudioPath サンプルは、1 つのオーディオパスで複数の異なるサウンドを再生する方法と、オーディオパスでの変更がすべてのサウンドのパラメータに与える影響を示す。
パス
ソース :(SDK ルート)\Samples\Multimedia\DirectMusic\AudioPath
実行可能ファイル :(SDK ルート)\Samples\Multimedia\DirectMusic\Bin
ユーザーズ ガイド
[Lullaby]、[Snore]、および [Mumble] をクリックしてさまざまなサウンドを再生する。スライダを使って、3D 空間でのサウンドの位置を調整する。[Rude Awakening] をクリックすると、別の 1 つのサウンドを再生してほかのすべてのサウンドを停止することができる。
プログラミング メモ
このサンプルは、PlayAudio サンプルと形式がよく似ている。AudioPath は、オーディオパスの多様な使い方をいくつか示している。
WM_INITDIALOG で、OnInitDialog 関数は次の処理を行う。
- IDirectMusicPerformance8::CreateStandardAudioPath を呼び出し、DMUS_APATH_DYNAMIC_3D に渡して、IDirectMusicAudioPath8 インターフェイス g_p3DAudiopath によって示される 3D オーディオパスを作成する。
- CMusicManager フレームワーク クラスを使って、ファイルのリストから CMusicSegment オブジェクトを作成する。
- オーディオパスから IDirectSound3DListener8 インターフェイスを取得する。
- IDirectSound3DListener8::SetRolloffFactor を呼び出して、サウンドの振幅が距離が離れるにつれて消滅するときの割合を変更する。
3D 位置スライダが変更されると、SetPosition 関数は以下の処理を実行する。
- IDirectMusicAudioPath8::GetObjectInPath を呼び出して IDirectSound3DBuffer8 インターフェイスを取得する。
- IDirectSound3DBuffer8::SetPosition を呼び出してバッファの位置を設定する。
- バッファを解放する。
セグメントを再生すると、PlaySegment 関数は以下の処理を実行する。
- [Lullaby] をクリックすると、セグメントがプライマリ セグメントとしてオーディオパス上で再生される。
- [Snore] または [Mumble] をクリックすると、セカンダリ セグメントが再生される。
- [Rude Awakening] をクリックすると、オーディオパスが pFrom パラメータとして IDirectMusicPerformance8::PlaySegmentEx に渡されるため、オーディオパス上のすべてのサウンドが停止される。次に、新しいプライマリ セグメントとしてアラーム サウンドが再生される。
参照
オーディオパスの使い方