Efectos de audio 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 efectos. Cada descriptor contiene un puntero a un objeto de efecto proporcionado por el cliente. Estos objetos deben implementar las interfaces de objeto de procesamiento de audio (APO). Consulte la de información general de XAPO para obtener más información sobre el modelo de APO.
Las cadenas de efectos se pueden modificar mediante el cliente dinámicamente (mientras el motor XAudio2 se está ejecutando), los efectos se pueden habilitar o deshabilitar individualmente, y los parámetros de efecto se pueden cambiar, todo ello sin interrupciones del audio. Siempre que cambie cualquier aspecto del gráfico de efectos, XAudio2 optimiza de nuevo el grafo para evitar el procesamiento innecesario. Consulte IXAudio2Voice::SetEffectChain, IXAudio2Voice::EnableEffecty 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 que 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 a la velocidad de muestreo de procesamiento de la 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 producir 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 produce una serie de canales que el siguiente efecto no puede controlar. Cualquier IXAudio2Voice::EnableEffect o IXAudio2Voice::D isableEffect llamadas que hacen 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 | Creation (método) |
---|---|
Reverberación | XAudio2CreateReverb |
Medidor de volumen | XAudio2CreateVolumeMeter |
Para obtener un ejemplo de creación y uso de una instancia de un efecto de audio, consulte How to: Create an Effect Chain.
Efectos personalizados en XAudio2
La API de de XAPO proporciona un marco para crear efectos de audio personalizados que puede usar en XAudio2. Para obtener un ejemplo de creación de un efecto personalizado con XAPO, consulte 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 de uso de XAPOFX con XAudio2, consulte Cómo: Usar XAPOFX en XAudio2.
Temas relacionados