次の方法で共有


方法 : XAudio2 での XAPO の使用

ここでは、XAudio2 エフェクト チェーンで XAPO API を使用して作成されたエフェクトの使用法を示します。

XAudio2 エフェクト チェーンで XAPO を使用するには

  1. 方法 : XAPO の作成」で示されているように、XAPO を作成します。

  2. オプションで、「方法 : XAPO へのランタイム パラメーター サポートの追加」で示されているように、ランタイム パラメーター機能を実装します。

  3. XAPO のインスタンスを作成します。

    IUnknown * pXAPO;
    pXAPO = new SimpleXAPO();
    
  4. データを XAUDIO2_EFFECT_DESCRIPTOR 構造体に入力します。

    XAUDIO2_EFFECT_DESCRIPTOR descriptor;
    descriptor.InitialState = true;
    descriptor.OutputChannels = 1;
    descriptor.pEffect = pXAPO;
    
  5. データを XAUDIO2_EFFECT_CHAIN 構造体に入力します。

    XAUDIO2_EFFECT_CHAIN chain;
    chain.EffectCount = 1;
    chain.pEffectDescriptors = &descriptor;
    
  6. SetEffectChain 関数を使用して、エフェクト チェーンを XAudio2 ボイスに適用します。

    pVoice->SetEffectChain(&chain);
    

        チェーンをパラメーターとして IXAudio2::CreateSourceVoiceIXAudio2::CreateSubmixVoice、または IXAudio2::CreateMasteringVoice に渡してボイスが作成されると、エフェクト チェーンもボイスに適用できます。

  7. IUnknown::Release によりエフェクトを解除します。

    XAPO が作成されると、そのリファレンス カウントは 1 になります。SetEffectChain により XAPO が XAudio2 に渡されると、XAudio2 で XAPO のリファレンス カウントがインクリメントされます。クライアントの XAPO へのリファレンスが解放されると、XAudio2 で XAPO の所有権を取得可能になります。XAudio2 に XAPO への参照しか存在しない場合、XAudio2 で使用されなくなると破棄されます。クライアント コードで XAPO への参照を維持する必要がある場合は (たとえば、後で再利用する場合など)、この手順を省略してください。

    pXAPO->Release();
    
  8. エフェクトに関連付けられているパラメーター構造体がある場合は、入力します。

    ここでは、エフェクトが適用されるレベルをパーセンテージで指定します。

    XAPO_PARAMETERS XAPOParameters;
    XAPOParameters.Level = 0.75;
    
  9. エフェクトをアタッチするボイスで SetEffectParameters 関数を呼び出して、エフェクト パラメーター構造体をエフェクトに渡します。

    hr = pVoice->SetEffectParameters( 0, &XAPOParameters, sizeof( XAPO_PARAMETERS ) );
    

関連トピック