Esta página ha sido traducida del inglés por la comunidad.Aprende más y únete a la comunidad de MDN Web Docs.
AudioNode
Baseline Widely available *
This feature is well established and works across many devices and browser versions. It’s been available across browsers since julio de 2015.
* Some parts of this feature may have varying levels of support.
AudioNode es una interfaz genérica para representar un módulo de procesamiento de audio.
Ejemplos que la incluyen:
- Una fuente de audio (por ejemplo, un elemento HTML
<audio>o<video>, unOscillatorNode, etc.), - El destino del audio,
- Módulo de procesamiento intermedio (por ejemplo, un filtro como
BiquadFilterNodeoConvolverNode), o - Control de volumen (como
GainNode)
Nota:UnAudioNode puede ser objetivo de eventos, por lo que implementa la interfazEventTarget.
In this article
Descripción
>El gráfico de enrutamiento de audio

CadaAudioNode tiene entradas y salidas, y varios nodos de audio están conectados para crear ungráfico de procesamiento. Este gráfico está contenido en unAudioContext, y cada nodo de audio solo puede pertenecer a un contexto de audio.
Unnodo fuente tiene cero entradas pero una o múltiples salidas y puede usarse para generar sonido. Por otro lado, unnodo de destino no tiene salidas; en cambio, todas sus entradas se reproducen directamente en los altavoces (o cualquier dispositivo de salida de audio que utilice el contexto de audio). Además, haynodos de procesamiento que tienen entradas y salidas. El procesamiento exacto realizado varía de unAudioNode a otro pero, en general, un nodo lee sus entradas, realiza algún procesamiento relacionado con el audio y genera nuevos valores para sus salidas, o deja pasar el audio (por ejemplo, en elAnalyserNode, donde se accede por separado al resultado del procesamiento).
Cuantos más nodos haya en un gráfico, mayor será la latencia. Por ejemplo, si su gráfico tiene una latencia de 500ms, cuando el nodo de origen reproduce un sonido, tardará medio segundo hasta que ese sonido se pueda escuchar en sus altavoces (o incluso más debido a la latencia en el dispositivo de audio subyacente). Por lo tanto, si necesita audio interactivo, mantenga el gráfico lo más pequeño posible y coloque nodos de audio controlados por el usuario al final del gráfico. Por ejemplo, un control de volumen (GainNode) debe ser el último nodo para que los cambios de volumen tengan efecto inmediato.
Cada entrada y salida tiene una cantidad determinada decanales. Por ejemplo, el audio mono tiene un canal, mientras que el audio estéreo tiene dos canales. La Web Audio API mezclará hacia arriba o hacia abajo la cantidad de canales según sea necesario; Consulte las especificaciones de Web Audio para obtener más detalles.
Para obtener una lista de todos los nodos de audio, consulte la página de inicio de laWeb Audio API.
Creando unAudioNode
Hay dos formas de crear unAudioNode: mediante elconstructor y mediante elmétodo de fábrica.
// constructorconst analyserNode = new AnalyserNode(audioCtx, { fftSize: 2048, maxDecibels: -25, minDecibels: -60, smoothingTimeConstant: 0.5,});// método de fábricaconst analyserNode = audioCtx.createAnalyser();analyserNode.fftSize = 2048;analyserNode.maxDecibels = -25;analyserNode.minDecibels = -60;analyserNode.smoothingTimeConstant = 0.5;Es libre de usar constructores o métodos de fábrica, o mezclar ambos, sin embargo, hay ventajas al usar los constructores:
- Todos los parámetros se pueden configurar durante el tiempo de construcción y no es necesario configurarlos individualmente.
- Puedehacer subclases de un nodo de audio. Si bien el procesamiento real lo realiza internamente el navegador y no se puede modificar, puede escribir un contenedor alrededor de un nodo de audio para proporcionar propiedades y métodos personalizados.
- Rendimiento ligeramente mejor: tanto en Chrome como en Firefox, los métodos de fábrica llaman a los constructores internamente.
Breve historia: La primera versión de la especificación Web Audio solo definía los métodos de fábrica. Después de unarevisión del diseño en octubre de 2013, se decidió agregar constructores porque tienen numerosos beneficios sobre los métodos de fábrica. Los constructores se agregaron a la especificación de agosto a octubre de 2016. Los métodos de fábrica continúan incluidos en la especificación y no están obsoletos.
Propiedades
AudioNode.contextRead onlyDevuelve el
BaseAudioContextasociado, que es el objeto que representa el gráfico de procesamiento en el que participa el nodo.AudioNode.numberOfInputsRead onlyDevuelve el número de entradas que alimentan el nodo. Los nodos de origen se definen como nodos que tienen una propiedad
numberOfInputscon un valor de0.AudioNode.numberOfOutputsRead onlyDevuelve el número de salidas del nodo. Los nodos de destino, como
AudioDestinationNode, tienen un valor de0para este atributo.AudioNode.channelCountRepresenta un número entero que se usa para determinar cuántos canales se usan cuando semezclan hacia arriba y hacia abajo las conexiones a cualquier entrada del nodo. Su uso y definición precisa dependen del valor de
AudioNode.channelCountMode.AudioNode.channelCountModeRepresenta un valor enumerado que describe la forma en que los canales deben coincidir entre las entradas y salidas del nodo.
AudioNode.channelInterpretationRepresenta un valor enumerado que describe el significado de los canales. Esta interpretación definirá cómo ocurrirá lamezcla hacia arriba y hacia abajo de audio. Los valores posibles son
"speakers"o"discrete".
Métodos
También implementa métodos de la interfazEventTarget.
AudioNode.connect()Nos permite conectar la salida de este nodo para que se introduzca en otro nodo, ya sea como datos de audio o como el valor de un
AudioParam.AudioNode.disconnect()Nos permite desconectar el nodo actual de otro al que ya está conectado.
Ejemplo
Este simple fragmento de código muestra la creación de algunos nodos de audio y cómo se pueden usar las propiedades y los métodos deAudioNode. Puede encontrar ejemplos de dicho uso en cualquiera de los ejemplos en la página deWeb Audio API (por ejemplo,Violent Theremin).
const audioCtx = new AudioContext();const oscillator = new OscillatorNode(audioCtx);const gainNode = new GainNode(audioCtx);oscillator.connect(gainNode).connect(audioCtx.destination);oscillator.context;oscillator.numberOfInputs;oscillator.numberOfOutputs;oscillator.channelCount;Especificaciones
| Specification |
|---|
| Web Audio API> # AudioNode> |