Efectos de audio de XAudio2
Un efecto de audio es un objeto que toma datos de audio entrantes y realiza alguna operación en los datos antes de pasarlos. Puede usar un efecto para realizar una variedad de tareas, incluida la adición de reverberación a una secuencia de audio y la supervisión de los niveles máximos de volumen.
Cadenas de efectos
Cualquier voz XAudio2 puede hospedar una cadena de efectos de audio. Puede usar una matriz de estructuras de XAUDIO2_EFFECT_DESCRIPTOR para especificar cadenas de efecto. Cada descriptor contiene un puntero a un objeto de efecto proporcionado por el cliente. Estos objetos deben implementar las interfaces del objeto de procesamiento de audio (APO). Consulte la información general de XAPO para obtener más información sobre el modelo de APO.
El cliente puede modificar dinámicamente las cadenas de efectos (mientras se ejecuta el motor XAudio2), los efectos se pueden habilitar o deshabilitar individualmente, y los parámetros de efecto se pueden cambiar, todo ello sin ninguna interrupción del audio. Siempre que cambie cualquier aspecto del gráfico de efectos, XAudio2 optimiza el grafo de nuevo para evitar el procesamiento innecesario. Vea IXAudio2Voice::SetEffectChain, IXAudio2Voice::EnableEffect y IXAudio2Voice::SetEffectParameters.
Después de adjuntar un efecto a una voz XAudio2, XAudio2 toma el control del efecto y el cliente no debe realizar más llamadas a él. La manera más sencilla de asegurarse de esto es liberar todos los punteros al efecto.
Los efectos de una cadena de efectos de voz XAudio2 determinada deben consumir y producir audio de punto flotante en la frecuencia de muestreo de procesamiento de esa voz. El único aspecto del formato de audio que pueden cambiar es el recuento de canales (por ejemplo, un efecto de reverberación puede convertir datos mono a 5.1). El cliente puede usar el XAUDIO2_EFFECT_DESCRIPTOR. Campo OutputChannels para especificar el número de canales que debe generar cada efecto. Se produce un error en la cadena de efectos si alguno de los efectos no puede cumplir estos requisitos o si un efecto genera un número de canales que el siguiente efecto no puede controlar. Las llamadas IXAudio2Voice::EnableEffect o IXAudio2Voice::D isableEffect que provocan que la cadena de efectos deje de cumplir estos requisitos producirá un error.
Las interfaces de APO usadas en XAudio2 deben ser destructivas. Esto significa que siempre sobrescriben los datos que encuentran en sus búferes de salida. De lo contrario, el audio resultante podría ser incorrecto porque XAudio2 no garantiza que estos búferes se hayan inicializado previamente con silencio.
Efectos integrados de XAudio2
En la tabla siguiente se muestra el conjunto de efectos de audio integrados proporcionados por XAudio2 y sus métodos de creación.
Efecto | Método de creación |
---|---|
Reverberación | XAudio2CreateReverb |
Medidor de volumen | XAudio2CreateVolumeMeter |
Para obtener un ejemplo de cómo crear y usar una instancia de un efecto de audio, vea Cómo: Crear una cadena de efectos.
Efectos personalizados en XAudio2
La API de XAPO proporciona un marco para crear efectos de audio personalizados que puede usar en XAudio2. Para obtener un ejemplo de cómo crear un efecto personalizado con XAPO, vea How to: Create an XAPO.
Biblioteca de efectos de XAPO (XAPOFX)
XAPOFX proporciona una biblioteca adicional de XAPOs y un mecanismo común para crearlos. Para obtener un ejemplo del uso de XAPOFX con XAudio2, consulte Cómo: Usar XAPOFX en XAudio2.
Temas relacionados