方法 : XAudio2 での XAPO の使用
ここでは、XAudio2 エフェクト チェーンで XAPO API を使用して作成されたエフェクトの使用法を示します。
XAudio2 エフェクト チェーンで XAPO を使用するには
「方法 : XAPO の作成」で示されているように、XAPO を作成します。
オプションで、「方法 : XAPO へのランタイム パラメーター サポートの追加」で示されているように、ランタイム パラメーター機能を実装します。
XAPO のインスタンスを作成します。
IUnknown * pXAPO; pXAPO = new SimpleXAPO();
データを XAUDIO2_EFFECT_DESCRIPTOR 構造体に入力します。
XAUDIO2_EFFECT_DESCRIPTOR descriptor; descriptor.InitialState = true; descriptor.OutputChannels = 1; descriptor.pEffect = pXAPO;
データを XAUDIO2_EFFECT_CHAIN 構造体に入力します。
XAUDIO2_EFFECT_CHAIN chain; chain.EffectCount = 1; chain.pEffectDescriptors = &descriptor;
SetEffectChain 関数を使用して、エフェクト チェーンを XAudio2 ボイスに適用します。
pVoice->SetEffectChain(&chain);
注 チェーンをパラメーターとして IXAudio2::CreateSourceVoice、IXAudio2::CreateSubmixVoice、または IXAudio2::CreateMasteringVoice に渡してボイスが作成されると、エフェクト チェーンもボイスに適用できます。
IUnknown::Release によりエフェクトを解除します。
XAPO が作成されると、そのリファレンス カウントは 1 になります。SetEffectChain により XAPO が XAudio2 に渡されると、XAudio2 で XAPO のリファレンス カウントがインクリメントされます。クライアントの XAPO へのリファレンスが解放されると、XAudio2 で XAPO の所有権を取得可能になります。XAudio2 に XAPO への参照しか存在しない場合、XAudio2 で使用されなくなると破棄されます。クライアント コードで XAPO への参照を維持する必要がある場合は (たとえば、後で再利用する場合など)、この手順を省略してください。
pXAPO->Release();
エフェクトに関連付けられているパラメーター構造体がある場合は、入力します。
ここでは、エフェクトが適用されるレベルをパーセンテージで指定します。
XAPO_PARAMETERS XAPOParameters; XAPOParameters.Level = 0.75;
エフェクトをアタッチするボイスで SetEffectParameters 関数を呼び出して、エフェクト パラメーター構造体をエフェクトに渡します。
hr = pVoice->SetEffectParameters( 0, &XAPOParameters, sizeof( XAPO_PARAMETERS ) );
関連トピック
- XAPO の概要
XAPO の概要を説明します。
- XAudio2 の概要
XAudio2 の概要を説明します。