Compartilhar via


Efeitos de áudio XAudio2

Um efeito de áudio é um objeto que usa dados de áudio de entrada e executa alguma operação nos dados antes de passá-los. Você pode usar um efeito para executar uma variedade de tarefas, incluindo adicionar reverb a um fluxo de áudio e monitorar níveis de volume de pico.

Cadeias de efeito

Qualquer voz XAudio2 pode hospedar uma cadeia de efeitos de áudio. Você pode usar uma matriz de estruturas de XAUDIO2_EFFECT_DESCRIPTOR para especificar cadeias de efeito. Cada descritor contém um ponteiro para um objeto de efeito fornecido pelo cliente. Esses objetos devem implementar as interfaces do APO (Objeto de Processamento de Áudio). Consulte o de Visão Geral do XAPO para obter mais informações sobre o modelo de APO.

As cadeias de efeito podem ser modificadas pelo cliente dinamicamente (enquanto o mecanismo XAudio2 está em execução), os efeitos podem ser habilitados ou desabilitados individualmente e os parâmetros de efeito podem ser alterados, tudo sem interrupção do áudio. Sempre que qualquer aspecto do grafo de efeito é alterado, o XAudio2 otimiza o grafo novamente para evitar o processamento desnecessário. Consulte IXAudio2Voice::SetEffectChain, IXAudio2Voice::EnableEffecte IXAudio2Voice::SetEffectParameters.

Depois que um efeito é anexado a uma voz XAudio2, o XAudio2 assume o controle do efeito e o cliente não deve fazer mais chamadas para ele. A maneira mais simples de garantir isso é liberar todos os ponteiros para o efeito.

Os efeitos na cadeia de efeitos de uma determinada voz XAudio2 devem consumir e produzir áudio de ponto flutuante na taxa de exemplo de processamento dessa voz. O único aspecto do formato de áudio que eles podem alterar é a contagem de canais (por exemplo, um efeito reverb pode converter dados mono em 5.1). O cliente pode usar o XAUDIO2_EFFECT_DESCRIPTOR.campo OutputChannels para especificar o número de canais que cada efeito deve produzir. A cadeia de efeitos falhará se qualquer um dos efeitos não puder atender a esses requisitos ou se um efeito produzir vários canais que o próximo efeito não poderá manipular. Qualquer IXAudio2Voice::EnableEffect ou IXAudio2Voice::D isableEffect chamadas que fazem com que a cadeia de efeitos pare de atender a esses requisitos falhará.

As interfaces APO usadas no XAudio2 devem ser destrutivas. Isso significa que eles sempre substituem todos os dados encontrados em seus buffers de saída. Caso contrário, o áudio resultante pode estar incorreto porque o XAudio2 não garante que esses buffers tenham sido inicializados anteriormente com silêncio.

Efeitos internos do XAudio2

A tabela a seguir lista o conjunto de efeitos de áudio internos fornecidos pelo XAudio2 e seus métodos de criação.

Efeito Método de criação
Reverb XAudio2CreateReverb
Medidor de Volume XAudio2CreateVolumeMeter

 

Para obter um exemplo de criação e uso de uma instância de um efeito de áudio, consulte How to: Create an Effect Chain.

Efeitos personalizados no XAudio2

A API de do XAPO fornece uma estrutura para criar efeitos de áudio personalizados que você pode usar no XAudio2. Para obter um exemplo de como criar um efeito personalizado com o XAPO, consulte How to: Create an XAPO.

Biblioteca de efeitos XAPO (XAPOFX)

XAPOFX fornece uma biblioteca adicional de XAPOs e um mecanismo comum para criá-los. Para obter um exemplo de como usar XAPOFX com XAudio2, consulte Como usar XAPOFX no XAudio2.

de efeitos de áudio

Guia de Programação do XAudio2