Microsoft DirectX 8.0 (C++) |
サウンド エフェクトのパラメータを設定または取得するには、まず、そのエフェクトを含むバッファの適切なインターフェイスを取得する必要がある。次のインターフェイスを使って、DirectX Audio で提供される DMO のパラメータにアクセスできる。
エフェクトのインターフェイスを取得するには、DMUS_PATH_BUFFER_DMO を dwStage パラメータとして IDirectMusicAudioPath8::GetObjectInPath または IDirectMusicSegmentState8::GetObjectInPath に渡す。オーディオパスに複数のバッファが含まれる場合、dwBuffer はバッファのインデックスでなければならない。標準オーディオパスのバッファのインデックス番号については、「標準オーディオパス」のオーディオパスのタイプを参照すること。
次のサンプル コードは、オーディオパス構成から作成されたバッファのガーグル エフェクトのインターフェイスを取得する。次に、このインターフェイスを使って、エフェクトのパラメータを変更している。
// g_p3DAudioPath は有効な IDirectMusicAudioPath8 ポインタであり、 // IDirectMusicPerformance8::CreateAudioPath から取得される。 // 例をわかりやすくするために、エラー処理は省略している。 HRESULT hr; IDirectSoundFXGargle8* pEffectDMO; DSFXGargle FXParams; hr = g_p3DAudioPath->GetObjectInPath(DMUS_PCHANNEL_ALL, DMUS_PATH_BUFFER_DMO, 0, GUID_All_Objects, 0, IID_IDirectSoundFXGargle8, (LPVOID*) &pEffectDMO); hr = pEffectDMO->GetAllParameters(&FXParams); FXParams.dwRateHz = DSFXGARGLE_RATEHZ_MIN; hr = pEffectDMO->SetAllParameters(&FXParams);
アプリケーションが独自の DirectSound バッファを管理する場合、エフェクト パラメータの変更をすぐに実行する必要がある。効率を高めるため、DirectSound は、IDirectSoundBuffer8::Play を呼び出す前に、再生カーソルの位置から開始して 100 ミリ秒のサウンド データを処理する。この処理は、以下のいずれかの呼び出しが実行された後に行うことができる。
これらのメソッドのいずれかを呼び出した後でエフェクト パラメータを変更した場合、処理済みのデータが再生されるまで、新しいパラメータは聞こえない。これを回避するには、以下のいずれかを実行する。