방법: XAudio2에 XAPOFX 사용

이 항목에서는 XAudio2 효과 체인의 XAPOFX에 포함된 효과 중 하나를 사용하는 방법을 보여 줍니다.

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);
    

    참고

    체인을 IXAudio2::CreateSourceVoice, IXAudio2::CreateSubmixVoice 또는 IXAudio2::CreateMasteringVoice에 매개 변수로 전달하여 음성을 만들 때 음성에 효과 체인을 적용할 수도 있습니다.

     

  5. IUnknown::Release를 사용하여 효과를 해제합니다. XAPO를 만들 때 참조 수는 1입니다. SetEffectChain을 사용하여 XAudio2에 XAPO가 전달되면 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 프로그래밍 지침