次の方法で共有


方法: XAudio2 での XAPO の使用

このトピックでは、XAudio2 エフェクト チェーンで XAPO API で作成された効果を使用する方法について説明します。

  1. 「方法: XAPO を 作成する」の説明に従って XAPO を作成します。

    方法: XAPO にランタイム パラメーター サポートを追加する」の説明に従って、実行時パラメーター機能を実装することもできます。

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

    IUnknown * pXAPO;
    pXAPO = new SimpleXAPO();
    
  3. XAUDIO2_EFFECT_DESCRIPTOR構造体にデータを設定します。

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

    XAUDIO2_EFFECT_CHAIN chain;
    chain.EffectCount = 1;
    chain.pEffectDescriptors = &descriptor;
    
  5. SetEffectChain 関数を使用して、効果チェーンを XAudio2 音声に適用します。

    pVoice->SetEffectChain(&chain);
    

    注意

    エフェクト チェーンは、IXAudio2::CreateSourceVoice、IXAudio2::CreateSubmixVoice、または IXAudio2::CreateMasteringVoice にパラメーターとしてチェーンを渡すことによって、音声が作成されたときに音声に適用することもできます。

     

  6. IUnknown::Release を使用して効果を解放します。

    XAPO を作成すると、参照カウントは 1 になります。 SetEffectChain を使用して XAPO が XAudio2 に渡されると、XAudio2 は XAPO の参照カウントをインクリメントします。 クライアントの XAPO への参照を解放すると、XAudio2 は XAPO の所有権を取得できます。 XAudio2 が XAPO への唯一の参照を持つ場合、XAudio2 で使用されなくなったときに破棄されます。 たとえば、後で再利用するためにクライアント コードで XAPO への参照を維持する必要がある場合は、この手順をスキップする必要があります。

    pXAPO->Release();
    
  7. 効果に関連付けられているパラメーター構造 (存在する場合) を設定します。 この場合、効果を適用する必要がある完全な強度の割合。

    XAPO_PARAMETERS XAPOParameters;
    XAPOParameters.Level = 0.75;
    
  8. エフェクトがアタッチされている音声で SetEffectParameters 関数を呼び出して、エフェクトパラメーター構造をエフェクトに渡します。

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

オーディオ効果

XAPO 概要

XAudio2 プログラミング ガイド