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 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 Objeto de Processamento de Áudio (APO). Consulte a Visão geral do XAPO para obter mais informações sobre o modelo do APO.

As cadeias de efeitos 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 qualquer interrupção do áudio. Sempre que qualquer aspecto do grafo de efeito é alterado, o XAudio2 otimiza o grafo novamente para evitar processamento desnecessário. Consulte IXAudio2Voice::SetEffectChain, IXAudio2Voice::EnableEffect e 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 amostragem 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 puder manipular. Todas as chamadas IXAudio2Voice::EnableEffect ou IXAudio2Voice::D isableEffect 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 foram 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 Como criar uma cadeia de efeitos.

Efeitos personalizados no XAudio2

A API 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 Como criar um XAPO.

Biblioteca de efeitos XAPO (XAPOFX)

O 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.

Efeitos de áudio

Guia de Programação em XAudio2