방법: XAudio2에 XAPO 사용

이 항목에서는 XAudio2 효과 체인에서 XAPO API로 만든 효과를 사용하는 방법을 보여줍니다.

  1. 방법: XAPO 만들기에 설명된 대로 XAPO를 만듭니다.

    방법: XAPO에 런타임 매개 변수 지원 추가에 설명된 대로 런타임 매개 변수 기능을 구현할 수도 있습니다.

  2. XAPO의 instance 만듭니다.

    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을 사용하여 XAudio2에 XAPO가 전달되면 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 프로그래밍 지침