Algunos filtros

El concepto de filtro en nuestro tiempo no resulta ser algo desconocido, al menos es posible pensar que cualquier instrumentista de algún instrumento eléctrico ha tenido control sobre los potenciómetros que le permiten tener más contenido agudo o grave en su instrumento. Adicionalmente es posible afirmar que los instrumentos musicales por sí mismos son fruto de una evolución de materiales, formas de construcción, y contornos que han moldeado el sonido de una manera particular, así como el espacio mismo en el cual se proyecta el sonido es también un filtro que afecta al sonido emitido cambiando su contenido (Smith, 2007).

Basándonos en esa última afirmación es posible comenzar a armar un modelo simple para entender un poco más este concepto de filtraje y ver sus diversas posibilidades en Pure Data. Consideremos que tenemos como fuente sonora un generador de ruido blanco, el cual podemos observar en términos de su contenido espectral a través de un espectroscopio como se puede observar en las siguientes gráficas:




Cada uno de estos cuadros representa un momento diferente del generador de ruido. En estos espectroscopios, se observa en el eje x (numerado de 0 a 512) los contenedores de frecuencia para un análisis a 512 muestras, lo cual quiere decir que tenemos contenedores de 43 Hz aproximadamente y con ellos observamos entre 0 Hz para el contenedor inicial y 22050 Hz para el último contenedor. En el eje y vemos la intensidad que tiene cada contenedor medida en este caso entre 0 y 1 en RMS.

Lo primero que podemos observar es que el ruido tiene un comportamiento diferente para cada captura que se ha realizado y que a la vez es imposible predecir cuál o cuáles contenedores tendrán un pico de intensidad, lo cual hace a este generador algo ideal para nuestro propósito y que también podemos decir que generalmente se puede pensar como una medición igual para todas las frecuencias, que es lo que muestra el siguiente gráfico.




Hay muchas formas diferentes de crear filtros en Pure Data, sin embargo en esta entrada sólo nos concentraremos en uno en particular desde un enfoque práctico que permita su aplicación simple. En este caso vamos a dedicarnos a tres objetos que se encuentran en la librería iemlib, estos son vcf_bp#, vcf_lp# y vcf_hp#. En todos los casos # va a significar el orden del filtro, lo cual veremos en unos cuantos párrafos.

Comencemos con el vcf_bp# el cual es un filtro pasa banda. Se ha elegido este filtro porque todas sus entradas trabajan con audio, lo cual representa un enorme potencial de control sin la preocupación de generar zipper noise. El nombre del objeto vcf significa voltage controlled filter haciendo referencia a los filtros de control de voltaje que se crearon durante la década de los sesenta (Manning, 2004). El funcionamiento resulta sencillo, pues el objeto cuenta con tres entradas, la de la izquierda es para la señal entrante, la siguiente para la frecuencia central y la última para el coeficiente Q que explicaremos a continuación.

Q es definido muchas veces como un coeficiente de precisión o también es conocido en ocasiones como coeficiente recíproco. Su cálculo es sencillo, pues requiere de dos informaciones que pueden ser definidas por quien esté programando o preguntadas al usuario. Se requiere de la frecuencia central (Fc), la cual es una referencia que elegiremos y el otro parámetro es el ancho de banda (Fw) que será la cantidad de frecuencias hacia lo agudo y hacia lo grave que daremos. En muchas ocasiones se calcula Fw a través de la resta de una frecuencia de corte superior - la frecuencia de corte inferior, dichas frecuencias son calculadas a través del descenso de 6 dB respecto a la intensidad de la frecuencia central. 

Observemos en el siguiente gráfico varias respuestas del filtro a diferentes valores

Caso 1. Fc = 500, Fw = 200.  




























Caso 2. Fc = 5000, Fw = 300


Caso 3. Fc = 5000, Fw = 50


Como se puede observar, en cada caso la respuesta del filtro ha sido diferente y muestra efectivamente el paso de la información requerida, sin embargo, también es posible observar en todos los casos, diversos grados de paso de sonido a lo largo de la totalidad del espectro. Aparentemente, en el caso 3 hay menos residuo del sonido original, pero a su vez la respuesta de la banda es muy limitada y tal vez eso no permita un buen aprovechamiento del sonido.

La solución a esto es generar una "cascada" de filtros, es decir, poner varios filtros sucesivos con los mismos valores para que perfeccionen en cada etapa el resultado que se ha requerido. En los ejemplos anteriores se trabajó con vcf~ el cual podemos pensar como una base para todo el proceso, sin embargo como se mencionó previamente, el objeto vcf_bp# permite abreviar este proceso, si lo invocamos reemplazando # por 2, 4 u 8. En todos esos casos lo que implica es la cantidad de filtros en la "cascada", lo cual también es llamado orden. 

Tomemos el segundo ejemplo, en el cual se observó una gran cantidad de sonido residual. En el siguiente gráfico se muestran los resultados para los los ordenes 4o y 8avo.
 


Como se puede observar, al aumentar el orden los resultados incluyen menos de la señal original, lo cual puede ser muy provechoso, ya sea porque tengamos un interés particular en alguna parte del espectro o por la elección de este mecanismo para moldear el sonido añadiéndolo al original. En este último caso, es posible añadir un control de ganancia después del filtrado para hacer énfasis en un área en particular, como se hace usualmente en la ecualización. Es también posible añadir varios de estos para construir un ecualizador paramétrico.



En este último ejemplo, se puede observar en el espectroscopio el resultado de dos filtros amplificados y añadidos a la señal original.


Actividad:

1- Repita los ejemplos usando los filtros vcf_lp4~ y vcf_hp4~ copiando los resultados de los espectroscopios, contraste los resultados y elabore una pequeña explicación del funcionamiento de cada filtro.

2- Construya un ecualizador paramétrico de 5 bandas en el cual el primer filtro sea pasa bajos y el último un pasa altos.

3 (opcional). Programe una abstracción que permita seleccionar cualquiera de los tres filtros.




Comentarios

Entradas populares de este blog

Conociendo lo básico de Pure Data

Pure data - Vanilla, lo básico, añadir externos

Síntesis aditiva