方法: XAudio2 での XAPO の使用
このトピックでは、XAudio2 エフェクト チェーンで XAPO API で作成された効果を使用する方法について説明します。
「方法: 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 ) );
関連トピック