Filtros biquad

facebook-svg gplus-svg twitter-svg

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.

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