Como: Usar um XAPO no XAudio2
Este tópico mostra como usar um efeito criado com a API XAPO em uma cadeia de efeitos XAudio2.
Crie o XAPO conforme descrito em Como criar um XAPO.
Você também pode implementar a funcionalidade de parâmetro em tempo de execução, conforme descrito em Como adicionar suporte a parâmetros em tempo de execução a um XAPO.
Crie uma instância do XAPO.
IUnknown * pXAPO; pXAPO = new SimpleXAPO();
Preencha uma estrutura de XAUDIO2_EFFECT_DESCRIPTOR com dados.
XAUDIO2_EFFECT_DESCRIPTOR descriptor; descriptor.InitialState = true; descriptor.OutputChannels = 1; descriptor.pEffect = pXAPO;
Preencha uma estrutura XAUDIO2_EFFECT_CHAIN com dados.
XAUDIO2_EFFECT_CHAIN chain; chain.EffectCount = 1; chain.pEffectDescriptors = &descriptor;
Aplique a cadeia de efeitos a uma voz XAudio2 com a função SetEffectChain .
pVoice->SetEffectChain(&chain);
Observação
Uma cadeia de efeitos também pode ser aplicada a uma voz quando a voz é criada passando a cadeia como um parâmetro para IXAudio2::CreateSourceVoice, IXAudio2::CreateSubmixVoice ou IXAudio2::CreateMasteringVoice.
Libere o efeito com IUnknown::Release.
Quando você criar um XAPO, ele terá uma contagem de referência de 1. Quando o XAPO é passado para XAudio2 com SetEffectChain, XAudio2 incrementa a contagem de referência no XAPO. Liberar a referência do cliente ao XAPO permite que XAudio2 se aproprie do XAPO. Se xAudio2 tiver a única referência ao XAPO, ele será descartado quando não estiver mais sendo usado pelo XAudio2. Se o código do cliente precisar manter uma referência ao XAPO para reutilização posterior, por exemplo, você deverá ignorar esta etapa.
pXAPO->Release();
Preencha a estrutura de parâmetros, se houver, associada ao efeito . Nesse caso, a porcentagem de força total na qual o efeito deve ser aplicado.
XAPO_PARAMETERS XAPOParameters; XAPOParameters.Level = 0.75;
Passe a estrutura do parâmetro de efeito para o efeito chamando a função SetEffectParameters na voz à qual o efeito está anexado.
hr = pVoice->SetEffectParameters( 0, &XAPOParameters, sizeof( XAPO_PARAMETERS ) );
Tópicos relacionados