方法: XAudio2 での XAPOFX の使用

このトピックでは、XAudio2 エフェクト チェーンの XAPOFX に含まれる効果の 1 つを使用する方法について説明します。

XAudio2 効果チェーンで XAPOFX からの効果を使用するには

  1. XAPOFX 効果の CLSID を CreateFX 関数に渡して、効果を作成します。

    この場合、簡略化されたリバーブエフェクトFXReverbが作成されています。

    IUnknown * pXAPO;
    CreateFX(__uuidof(FXReverb),&pXAPO);
    
  2. XAUDIO2_EFFECT_DESCRIPTOR構造体にデータを設定します。

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

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

    pVoice->SetEffectChain(&chain);
    

    Note

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

     

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

    pXAPO->Release();
    
  6. 効果に関連付けられているパラメーター構造 (存在する場合) を設定します。

    この場合、 FXREVERB_PARAMETERS 構造を使用して、リバーブエフェクトで使用する拡散と部屋のサイズを設定します。

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

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

オーディオ効果

XAudio2 プログラミング ガイド