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 ミリ秒のサウンド データを処理する。この処理は、以下のいずれかの呼び出しが実行された後に行うことができる。

これらのメソッドのいずれかを呼び出した後でエフェクト パラメータを変更した場合、処理済みのデータが再生されるまで、新しいパラメータは聞こえない。これを回避するには、以下のいずれかを実行する。