Filtros biquad
Los nodos audio biquad ofrecen la posibilidad de manipular la frecuencia, utilizando filtros audio.
Para crear un nuevo filtro biquad utilizamos el método createBiquadFilter
.
var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
var filtroBiquad = audioCtx.createBiquadFilter();
La propiedad type
La propiedad type
del filtro biquad define el algoritmo de filtración utilizado, y puede tomar uno de estos valores:
lowpass
(filtro de paso bajo) permite el paso de las frecuencias más bajas y atenua las frecuencias más altas.
highpass
(filtro de paso alto) permite el paso de las frecuencias más altas y atenua las frecuencias más bajas.
bandpass
(filtro de paso banda ) deja pasar un determinado rango de frecuencias de una señal y atenúa el paso del resto.
lowshelf
Realza o recorta las frecuencias por debajo de la frecuencia especificada
highshelf
Realza o recorta las frecuencias por encima de la frecuencia especificada
peaking
Realza o recorta las frecuencias dentro de unos limites especificados.
notch
(filtro eliminador de banda) no permite el paso de señales cuyas frecuencias se encuentran fuera de unos limites especificados.
allpass
deja pasar todas las frecuencias, pero cambia la relación de fase entre varias frecuencias.
Otras propiedades de los filtros biquad.
La propiedad frequency
: representa la frecuencia en el algoritmo de filtración.
La propiedad gain
: representa la ganancia en el algoritmo de filtración.
La propiedad Q
: representa el factor de calidad.
La propiedad detune
se utiliza para afinar el sonido del audio, y se mide en centos.
En acústica musical, el cent
es la menor unidad usual que se emplea para medir intervalos musicales. Equivale a una centésima de semitono temperado.
Veamos un ejemplo:
// crea un nuevo audio context
var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
// crea un oscilador
var oscilador = audioCtx.createOscillator();
// y un filtro biquad
var filtro = audioCtx.createBiquadFilter();
// establece el valor de la frecuencia del oscilador
oscilador.frequency.value = 170;
// y el tipo de oscilador
oscilador.type = "sawtooth";
// establece algunas propiedades del filtro biquad
// el valor del atributo detune
filtro.detune.value = 500;
// el tipo de filtro
filtro.type = "lowshelf";
// el valor de la frecuencia
filtro.frequency.value = 100;
// y de la ganancia
filtro.gain.value = 25;
// conecta el oscilador con el filtro
oscilador.connect(filtro);
// y el filtro con el dispositivo de destino
filtro.connect(audioCtx.destination);
// inicia el oscilador al hacer clic
document.body.addEventListener("click", function(){
oscilador.start(audioCtx.currentTime);
oscilador.stop(audioCtx.currentTime + 3);
})
Vea este ejemplo en codepen:
Importante: cuando el oscilador se detiene utilizando el método stop()
, ya no puede ser reiniciado.
See the Pen WAA filtro biquad* by Gabi (@enxaneta) on CodePen.