Aracılığıyla paylaş


Nasıl yapılır: XAudio2'de XAPOFX Kullanma

Bu konu, XAudio2 efekt zincirinde XAPOFX'te bulunan efektlerden birinin nasıl kullanılacağını gösterir.

XAudio2 efekt zincirinde XAPOFX efektini kullanmak için

  1. Bir XAPOFX efektinin CLSID'sini CreateFX işlevine geçirerek efekti oluşturun.

    Bu durumda, basitleştirilmiş yankı efekti olan FXReverb oluşturuluyor.

    IUnknown * pXAPO;
    CreateFX(__uuidof(FXReverb),&pXAPO);
    
  2. XAUDIO2_EFFECT_DESCRIPTOR yapısını verilerle doldurun.

    XAUDIO2_EFFECT_DESCRIPTOR descriptor;
    descriptor.InitialState = true;
    descriptor.OutputChannels = 1;
    descriptor.pEffect = pXAPO;
    
  3. XAUDIO2_EFFECT_CHAIN yapısını verilerle doldurun.

    XAUDIO2_EFFECT_CHAIN chain;
    chain.EffectCount = 1;
    chain.pEffectDescriptors = &descriptor;
    
  4. SetEffectChain işleviyle efekt zincirini XAudio2 sesine uygulayın.

    pVoice->SetEffectChain(&chain);
    

    Notu

    Bir ses oluştururken, IXAudio2::CreateSourceVoice , IXAudio2::CreateSubmixVoice veya IXAudio2::CreateMasteringVoice işlevlerine parametre olarak zinciri geçirerek sesi bir efekt zinciri ile uygulayabilirsiniz.

     

  5. Etkiyi IUnknown::Release ile serbest bırakın. XAPO oluşturduğunuzda referans sayısı 1 olacaktır. XAPO, SetEffectChainile XAudio2'ye geçirildiğinde XAudio2, XAPO'da başvuru sayısını artırır. İstemcinin XAPO başvurusunun serbest bırakılması, XAudio2'nin XAPO'nun mülkiyetini üstlenmesine olanak tanır. XAPO'ya olan tek referans XAudio2'deyse, XAPO artık XAudio2 tarafından kullanılmadığında bu referans yok edilir. Eğer istemci kodunun bir XAPO referansı tutması gerekiyorsa (örneğin, daha sonra yeniden kullanmak için) bu adımı atlayabilirsiniz.

    pXAPO->Release();
    
  6. Etkiyle ilişkili parametre yapısını (varsa) doldurun.

    Bu durumda, FXREVERB_PARAMETERS yapısı reverb efektinin kullanması gereken difüzyonu ve oda boyutunu ayarlamak için kullanılır.

    FXREVERB_PARAMETERS XAPOParameters;
    XAPOParameters.Diffusion = FXREVERB_DEFAULT_DIFFUSION;
    XAPOParameters.RoomSize = FXREVERB_DEFAULT_ROOMSIZE;
    
  7. Efektin eklendiği seste SetEffectParameters işlevini çağırarak efekt parametresi yapısını efekte geçirin.

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

Ses Efektleri

XAudio2 Programlama Kılavuzu