Glasíntesis: síntesis digital de una copa de vino percutida

Esta actividad es una variación de un ejercicio de síntesis digital que aparece en el cuarto capítulo del libro Programming Sound with Pure Data de Tony Hillerson.

En dicho ejercicio, el autor propone una serie de pasos para sintetizar con Pure Data (PD) el sonido de una copa de vino percutida por un cuchillo. Siguiendo sus pasos, en este artículo mostraré de qué manera aprovechar este poderoso lenguaje de programación no sólo para recrear con medios digitales el sonido del vidrio golpeado, sino también para transformarlo de diversas maneras, convirtiéndolo en un valioso material para el arte sonoro y la composición de música electroacústica.

Estoy seguro de que disfrutarás esta pequeña aventura digital 😉


Consideraciones preliminares

Antes de entrar de lleno a la descripción de la actividad, es importante hacer algunas precisiones sobre el lenguaje de Pure Data y sobre los archivos que requeriremos descargar para poder seguir el ejercicio propuesto.

¿Qué es PD, dónde puedo descargarlo y dónde puedo aprender a utilizarlo?

Pure Data es un entorno de programación especializado en aplicaciones de audio. Una característica de este lenguaje es que funciona a partir de objetos gráficos, lo que lo convierte en una herramienta sumamente didáctica (¡y sumamente potente!) para el trabajo con audio digital. A partir de conectar distintas cajas, botones y cables, es posible generar prácticamente cualquier instrumento sonoro que imagines. En ese sentido, podríamos decir que Pure Data, más que un programa de audio digital, es un lenguaje que permite construir programas de audio.

Lo mejor de todo es que PD es software libre, se puede descargar gratuitamente desde la página oficial del proyecto, y por si fuera poco corre perfectamente en cualquiera de los sistemas operativos de uso común (Linux, Mac y Windows).

Además, existe gran cantidad de foros, tutoriales y manuales para aprender a usar PD. De manera personal, les comparto en este enlace un curso que recientemente desarrollé, junto con Hernani Villaseñor para la plataforma Coursera, en el que ofrecemos una introducción al audio digital a través de Pure Data.


¿Qué archivos necesito para desarrollar el ejercicio que se propone en este artículo?

Una de las características más emocionantes de Pure Data es que, al ser un lenguaje de programación y funcionar bajo una lógica de código abierto, es muy fácil diseñar herramientas que complementen, extiendan e incluso faciliten el uso de los objetos que el entorno incluye por default.

Aprovechando lo anterior, y a diferencia del ejercicio original diseñado por Tony Hillerson (el cual utiliza únicamente objetos básicos de Pure Data), en este post utilizaremos una serie de objetos complejos que yo mismo diseñé para este tipo de actividades.

Estos objetos se pueden descargar siguiendo este link y descomprimiendo la carpeta .zip llamada “glasíntesis”, que se copiará en tu sistema cuando sigas el enlace. La siguiente imagen muestra los archivos que deben aparecer en el folder una vez que lo hayas descomprimido:

Ahora simplemente tienes que abrir un archivo nuevo de Pure Data y guardarlo con el nombre que quieras, pero teniendo cuidado de que quede guardado en la misma carpeta que descargaste. Esto será suficiente para que el patch (así se conoce a los archivos de PD) que generes pueda utilizar los objetos que se requieren para realizar el ejercicio.

¡Listo! con esto tenemos los elementos suficientes para realizar nuestra actividad. Comencemos entonces explicando con más detalle en qué consiste este ejercicio.


Descripción del ejercicio y análisis de audio

Como mencioné al inicio, el objetivo inicial del ejercicio es sintetizar el sonido de una copa de vino al ser golpeada por un cuchillo. De manera más específica, lo que haremos es recrear el siguiente sonido:

Para ello, lo primero que necesitamos es analizar el espectro del mismo, para lo cual utilizaremos el archivo de audio que se incluye en la carpeta que descargaste (es el archivo que se llama “cuchillo”). Este análisis lo puedes realizar en distintos programas, aunque personalmente recomiendo el uso de SonicVisualizer, por ser un software especializado en análisis de audio que además, al igual que PD, es software libre.

La siguiente imagen muestra cómo se ve nuestro archivo de audio, al analizar su espectrograma en SonicVisualizer:

espectro

Aunque una explicación a profundidad sobre cómo leer un espectrograma excedería los objetivos de este artículo, es importante mencionar, así sea de manera general, cuáles son los datos relevantes que esta imagen ofrece para nuestros fines.

De manera concreta, podemos ver en el siguiente detalle que el sonido analizado tiene tres bandas de frecuencia que se destacan del espectro general, y que tienen duraciones distintas y diferentes niveles de intensidad:

detalle

Los datos precisos de la frecuencia, la intensidad y la duración de cada una de estas bandas se pueden obtener al complementar la información extraída de SonicVisualizer con un ejercicio de escucha atenta. Estos son, precisamente, los datos que necesitamos tener en cuenta para programar nuestro sintetizador.

Por último, es importante observar que tenemos, al inicio de nuestro audio, un ataque fuerte que tiende a cubrir el espectro completo de las frecuencias, y que seguramente corresponde con el golpe inicial del cuchillo sobre la copa de vino.

Con toda esta información en mente, pasaremos finalmente a replicar el sonido utilizando las herramientas de Pure Data. Sin embargo, antes de ello es necesario repasar algunos conceptos de audio analógico que serán necesarios para entender a cabalidad lo que haremos.


Elementos de un sintetizador analógico

Para comprender la manera en la que replicaremos el sonido que analizamos, es importante conocer cuáles son los elementos que suelen integrar un sintetizador analógico, pues estas son, precisamente, las piezas que utilizaremos para armar nuestro sistema de síntesis digital.

VCO

Resultado de imagen para vco audioVCO es el acrónimo de “Voltage Controlled Oscillator”, lo que en español se traduce como “oscilador controlado por voltaje”.

La función del VCO es producir una determinada cantidad de oscilaciones por segundo, lo que en términos de audio corresponde a la frecuencia de un determinado sonido.

Es común que este tipo de osciladores permitan elegir entre distintos tipos de forma de onda (senoidal, triangular, cuadrada, diente de sierra) y que permitan también generar señales de ruido e ingresar señales para generar procedimientos de modulación de amplitud y frecuencia.

VCA

Resultado de imagen para vca audio

De manera similar, VCA es el acrónimo de “Voltage Controlled Amplifier”, lo que se traduce como “amplificador controlado por voltaje”.

No es difícil inferir que en esta caso hablamos de un dispositivo que se encarga de amplificar la señal de audio, lo que en términos coloquiales corresponde con el nivel de volumen que se aplica a un determinado sonido.

VCF

Resultado de imagen para voltage controlled filterLos VCF, o “Voltage Controlled Filters”, son dispositivos que sirven para realizar lo que se conoce como síntesis sustractiva. Este tipo de síntesis funciona a partir de filtrar frecuencias a las señales de audio, lo que en forma invertida equivale a resaltar las frecuencias que no fueron filtradas.

Existen distintos tipos de filtros controlados por voltaje. Los más comunes, y al mismo tiempo los más sencillos, son los que funcionan a partir de bandas que determinan a partir de qué frecuencias comenzarán a filtrarse los espectros sonoros. Algunos filtros operan definiendo una banda que deja pasar todas las frecuencias superiores a frecuencia central, y se conocen como hi-pass filters; en cambio, otros filtros operan con el principio inverso, definiendo una banda que deja pasar las frecuencias inferiores, y llamándose, por ende, low pass filters; por último, hay filtros que definen una banda central de frecuencias, y que tienden a eliminar todas las frecuencias (superiores e inferiores) que quedan fuera de dicha banda.

LFO

Resultado de imagen para lfo audio

Estas siglas se derivan del concepto de “Low Frequency Oscillation”, y se refieren a un dispositivo cuya función es enviar frecuencias de audio de rango bajo.

Algunas veces, estas frecuencias pueden incluso estar por debajo del límite de audición humana (el ser humano, en teoría, no escucha frecuencias por debajo de los 20 Hz).

Esto se debe a que los LFO se suelen utilizar no tanto para generar sonidos directamente audibles; en cambio, es común que se utilicen para controlar a otras señales, lo que muchas veces deriva en procesos de modulación de amplitud y/o frecuencia.

ADSR

Resultado de imagen para adsr audio

Terminaré este repaso mencionando los dispositivos conocidos como ADSR, que tienen la función de diseñar envolventes sonoras basadas en los parámetros de ataque (A), decaimiento (D), sostenimiento (S) y relajación (R), lo que en inglés se traduce como Attack, Decay, Sustain y Release.

Como se observa en la imagen siguiente, estos parámetros determinan el comportamiento que el sonido tendrá a lo largo del tiempo, lo que tiene un impacto fundamental en la gestualidad y la tímbrica general de los sonidos que se generan a partir de herramientas de síntesis:

Resultado de imagen para adsr audio

Con estos conceptos tenemos suficiente para construir nuestro sintetizador. Después de tantos preámbulos, ¡es por fin momento de poner manos a la obra!


Síntesis digital de una copa de vino en Pure Data

Como dije ya, en la carpeta que descargaste vienen todos los objetos necesarios para realizar tu sintetizador. Es importante, sin embargo, no olvidar que para tener acceso a estos objetos es fundamental que el archivo que generes se encuentre ubicado en la misma carpeta. De modo que lo primero que haremos (en caso de que no lo hayas hecho ya) es crear un archivo nuevo en Pure Data, ponerle el nombre que quieras, y guardarlo en la ubicación mencionada.

Como ves en tu pantalla, los patches de Pure Data comienzan con un lienzo en blanco llamado “canvas”. Es en ese lienzo donde iremos colocando las distintas piezas de nuestro sinte.


Modelando el ataque inicial

Comenzaremos diseñando el ataque inicial, que como vimos es un golpe que tiende a abarcar el rango entero de las frecuencias que escuchamos. Es por esto mismo que utilizaremos una señal de ruido blanco para modelar este sonido (el ruido blanco se compone de un arreglo aleatorio de todas las frecuencias disponibles).

Lo primero que haremos es colocar en nuestro lienzo un objeto denominado “vco~”, que, como podemos suponer, replica las funciones de un oscilador de voltaje. Para poner objetos en PD simplemente hay que teclear “Ctrl + 1”, escribir en el recuadro que aparece la palabra que corresponda al objeto (en este caso, “vco~”), y dar click en cualquier parte del lienzo. Si hiciste bien lo anterior, debe aparecerte el siguiente gráfico:

vco

Ahora tenemos que seleccionar el botón que aparece abajo del slider titulado “noise”. Lo que hace este botón es activar la señal de ruido blanco que viene integrada en el dispositivo digital.

Para activar el botón, es necesario pasar a lo que en PD se conoce como Modo de ejecución, que a diferencia del Modo de edición sirve para ejecutar nuestros programas de audio, y no para editarlos. Puedes cambiar de un modo a otro utilizando el comando “Ctrl + e”, o palomeando en el menú “Edit” la opción que se denomina “Edit mode” o “Modo edición”.

A estas alturas, todavía no podemos escuchar ningún sonido, pues hace falta agregar algunos elementos a nuestro sinte. Es así que, después de nuestro VCO, agregaremos un amplificador (VCA) y una pequeña consola que nos permitirá comunicar a Pure Data con la tarjeta de sonido de nuestra computadora.

Lo anterior se realiza agregando dos objetos nuevos. El primero se denomina “vca~”, y el segundo se llama “master~”. Una vez que agregues a tu patch ambos objetos, simplemente hay que conectarlos utilizando las pequeñas pestañas que aparecen arriba y abajo de los gráficos. Las pestañas superiores corresponden a las entradas, las pestañas inferiores a las salidas de audio. En la siguiente imagen se muestra cómo debe verse el patch hasta este momento:

sistema1

Nota que la consola tiene activado el botón de “on”; para hacer esto, simplemente tienes que dar “click” sobre el mismo (¡recuerda que para hacer esto tienes que estar en el Modo de ejecución!).

También es importante observar que solamente tendremos sonido si ingresamos algún valor al VCA; de lo contrario, este dispositivo servirá como una compuerta que no dejará pasar señal de audio.

Por último, es importante mencionar que la conexión del VCA con la consola Master consta de dos cables, uno que se extiende hacia el canal izquierdo (ch1) y otro hacia el derecho (ch2). En caso de que no realices esta doble conexión, solamente escucharás sonido en uno de los dos canales de tu estéreo (en una sola bocina de tu computadora o en un solo lado de tus audífonos, según sea el caso).

Si todo ha funcionado bien hasta este momento, ya deberías escuchar el sonido del ruido. Ahora sólo tenemos que generar una envolvente ADSR para modelar su comportamiento en el tiempo.

Para ello, agregaremos un nuevo objeto denominado “adsr~”, al cual agregaremos los valores específicos de los parámetros de la envolvente. Concretamente, escribiremos en el recuadro del objeto lo siguiente: “adsr~ 1 0 5 0 0”, y al dar click en el lienzo se debe generar el siguiente gráfico:

adsr

Este objeto servirá para crear una envolvente que tiene las siguientes características:

  • Un ataque con intensidad de “1”
  • Un tiempo de ataque “0” (es decir, un ataque inmediato)
  • Un decaimiento sumamente rápido (de sólo 5 milisegundos)
  • Un nivel nulo de sostenimiento (es decir, el sonido se “muere” después del decaímiento, pues no tiene nivel de sustain)
  • Un nivel nulo de relajamiento (si ya estaba “muerto” el sonido, no tiene caso añadir release).

Estos valores son los mismos que ingresamos como argumentos al momento de crear nuestro objeto, aunque pueden modificarse utilizando los sliders correspondientes a cada uno de los parámetros. Para resetear el ADSR a sus valores de inicio, basta con activar el botón que aparece en la esquina inferior derecha.

Para terminar con esta sección, lo único que tenemos que hacer es conectar nuestra envolvente al VCO que habíamos hecho, utilizando para ello la pestaña rotulada “env”. Así mismo, es necesario presionar, en el mismo VCO, el botón denominado “env” que se encuentra en la esquina inferior izquierda:

envs

Si todo va bien hasta ahora, el ruido blanco debería haber cesado, pues la envolvente sirve como compuerta que sólo deja pasar el sonido cuando es activada. Esto se logra añadiendo un valor de “1” en la primera entrada del ADSR, rotulada como “bg”. Este número se añade utilizando una caja de mensaje que se puede añadir con el comando “Ctrl+2”.

Así se debería ver nuestro patch en este punto:

adsr-vco

Al dar click sobre el mensaje “1” conectado al ADSR, debería sonar un ruido corto que corresponde al ataque del cuchillo sobre la copa.



Modelando la resonancia del vidrio

Para modelar la resonancia de la copa de vidrio seguiremos varios de los pasos que vimos para diseñar el ataque inicial, y además haremos uso de los datos que extrajimos al analizar el archivo de audio.

Comenzaremos por añadir tres objetos VCO, y a cada uno le agregaremos una envolvente ADSR que corresponda con los valores de intensidad y duración que surgieron al analizar el espectrograma. Estos son los valores que debemos escribir en cada uno de los objetos de envolvente:

  • Para la nota fundamental: “adsr~ 0.75 0 1000 0 0”
  • Para el primer componente armónico: “adsr~ 0.7 0 300 0 0”
  • Para el segundo componente: “adsr~ 0.6 0 200 0 0”

(En caso de que no entiendas la razón de escribir esos valores, revisa la sección en donde analizamos el archivo de audio, utilizando un espectrograma de SonicVisualizer, y repasa la explicación que hice previamente sobre cómo construir una envolvente para el ataque inicial.)

Ya que tenemos los tres objetos ADSR conectados a los tres VCO, recuerda dar click en el botón rotulado como “env” en cada uno de los osciladores, para activar la compuerta de la envolvente. También recuerda agregar a cada ADRS el mensaje “1” en la primera entrada (“bg”), para poderlo activar cada vez que se presione dicho mensaje.

Después de eso, lo que sigue es añadir en cada uno de los osciladores la frecuencia correspondiente, partiendo de los valores arrojados por el análisis. Esto se consigue añadiendo un mensaje que se conecta a la primera entrada de cada oscilador (rotulada “fq”), y en los casos del primer y segundo componentes se agrega además un operador matemático, específicamente una multiplicación, para calcular sus frecuencias con relación a la nota fundamental (el primer componente equivale a la fundamental multiplicada por 2.35, y el segundo por 3.8).

Finalmente, dado que la resonancia del vidrio se compone en general de ondas simples (esto es algo que no necesariamente se extiende del espectrograma, pero es evidente al escuchar el audio), elegiremos en cada oscilador el botón correspondiente a las ondas senoidales (rotulado “sine”), cuidando que el ruido y los demás tipos de onda estén desactivados.

Así se deben ver los tres VCO, conectados a sus respectivas envolventes:

vcos

¡Ya casi terminamos! Pero… ¿cómo hacer para que todos estos osciladores, incluyendo nuestro ataque inicial, suenen al mismo tiempo conectados a la misma consola?


Conexiones inalámbricas y activación simultánea de los módulos

Cada uno de los objetos que hemos generado puede ser considerado un módulo independiente. Es por eso que a los sintetizadores que funcionan conectando diversos objetos entre sí se les suele denominar “sintetizadores modulares”.

De modo que lo único que tenemos que hacer para completar nuestro instrumento es conectar todos nuestros módulos a una misma salida de audio, lo cual podríamos lograr simplemente estirando cables de cada uno de nuestros VCOs para conectarlos al mismo VCA. Sin embargo, para lograr mayor limpieza visual y mayor flexibilidad de movimiento, utilizaremos un par de objetos que incluye Pure Data para realizar conexiones inalámbricas.

Lo que haremos entonces es conectar cada uno de los osciladores a un objeto titulado “throw~”, que servirá para enviar la señal de audio a otro objeto que se llama “catch~”. La clave para que estas conexiones inalámbricas funcionen es que cada “throw~” incluya un nombre-etiqueta que puede ser cualquier que elijas, pero que en cualquier caso debe ser idéntico al del “catch~”, pues es a través de esta etiqueta que PD sabrá que estos módulos deben conectarse.

Así se ven nuestras conexiones inalámbricas (en este ejemplo he elegido la etiqueta “osciladores”, pero tú podrías elegir el nombre que prefieras):

throw

Y bien, ahora aprenderemos a generar otro tipo de conexiones inalámbricas, que en este caso nos servirán no para enviar diversas señales a un único destino (como ocurre con los objetos throw~/catch~), sino para enviar un mismo mensaje a distintas direcciones. Esto se consigue generando un par de objetos: “send” y “receive”, que compartan la misma etiqueta.

De manera más puntual, generaremos un único mensaje con valor de “1”, y lo conectaremos a un único objeto llamado “send on”. El propósito de este objeto es enviar un valor de “1” cada vez que presionemos el mensaje que conectamos.

Después generaremos cuatro objetos idénticos, llamados “receive on”, y los conectaremos a la entrada “bg” de cada uno de nuestros objetos ADSR, sustituyendo el mensaje “1” que habíamos generado para cada objeto independiente. De este modo, cuando apretemos el mensaje “1” (el que se encuentra conectado al objeto “send on”), todos los objetos “receive on” recibirán al mismo tiempo el valor correspondiente. Así se ve el detalle de esta parte de nuestro patch (este detalle sólo incluye dos ADSR, pero la misma lógica se sigue para los demás):

on

(Importante: los objetos “throw/catch” incluyen una tilde “~”, pues en PD se utiliza este signo para indicar que estamos enviando señales de audio. En cambio, los objetos “send/receive” que estamos usando no incluyen dicha tilde “~”, pues en este caso sirven únicamente para enviar valores numéricos)

Ahora vamos añadir, siguiendo exactamente la misma lógica, un nuevo mensaje con valor de “0” que conectaremos a un objeto llamado “send off”. Así mismo, conectaremos a cada ADSR, en la misma pestaña “bg”, un objeto denominado “receive off”, que como puedes imaginar servirá para apagar el sonido de nuestra envolvente. Si bien por el momento esto no es en realidad necesario (pues todas las envolventes se apagan solas después de que cae el ataque), es importante prever un mecanismo de apagado manual para cuando manipulemos las envolventes de manera distinta.

También agregaremos un mensaje con el valor “2911”, conectado a un objeto llamado “send fund”, que servirá para enviar la frecuencia fundamental (2911 Hz) a cada uno de los osciladores, donde previamente teníamos replicado el valor de dicha frecuencia de manera independiente. En otras palabras, sustituiremos en cada oscilador el valor de la frecuencia fundamental por un objeto llamado “receive fund”, que recibirá ese mismo valor cuando demos click en el mensaje que se conecta al objeto “send”. Este método tiene al menos dos ventajas: primero, podemos activar el valor de la frecuencia fundamental con un único click que sirva para todos los componentes armónicos; y segundo, podemos cambiar el valor desde un único lugar, si es que queremos probar modificar la frecuencia con fines creativos.

Aquí tenemos un detalle que muestra estos nuevos agregados:

sends

¡Ya estamos listos! Si has seguido con cuidado todos los pasos del artículo, basta con dar click al mensaje de la frecuencia fundamental (“2911”), y acto seguido al mensaje de encendido (“1”), y podrás escuchar un sonido similar al del audio del cuchillo sobre la copa de vino.

No olvides que para hacer la prueba es necesario estar en el Modo de ejecución. En caso de que no escuches ningún sonido, revisa que los siguienes criterios se cumplan:

  • la consola general (master~) debe estar encendida y tener nivel de volumen
  • el VCA debe tener nivel de volumen
  • cada uno de los osciladores debe tener elegido el tipo de onda correspondiente (“noise” en el primer caso, y “sine” en los demás)
  • todos los osciladores deben tener activado el botón “env” que sirve de compuerta para que los ADSR funcionen correctamente
  • todos los ADSR deben tener reseteados los valores iniciales con los que fueron creados
  • todas las etiquetas de conexiones inalámbricas deben estar debidamente escritas
  • es necesario haber dado click al mensaje de la frecuencia fundamental (esto hay que hacer sólo la primera vez), y después al mensaje de encendido. Estos clicks se deben realizar siempre en Modo de ejecución.

Aquí tenemos una imagen del patch completo, para que puedas cotejarlo con el que has venido programando:

pacth

¿Ya has podido escuchar tu copas sintética?

De ser así, ya estamos listos para pasar de la imitación de la realidad al universo de las realidades alteradas.


De la síntesis digital al procesamiento digital de sonido

Si comparas nuestro sonido sintetizado con el audio original de la copa de vino, probablemente coincidas conmigo en que logramos una réplica convincente; más allá de las complejidades acústicas más sutiles que ciertamente no se encuentran en nuestra síntesis, la información de frecuencia, amplitud y envolvente que extrajimos de nuestro análisis fue suficiente para que podamos reconocer la similitud entre el “original” y la “copia”. Esto demuestra las capacidades que tiene la síntesis digital para recrear la realidad de manera numérica ;).

Sin embargo, cuando queremos hacer música electroacústica o distintos tipos de arte sonoro, nuestro objetivo muchas veces no es recrear la realidad, sino generar realidades nuevas a través del sonido. Por esa razón, el propósito final de nuestro ejercicio es partir de nuestra copa sintética hacia copas imaginarias, algunas de ellas imposibles en términos físicos, pero totalmente viables en términos musicales.

¿Cómo haremos lo anterior? Hay muchas maneras, tantas como tu imaginación sea capaz de generar. De hecho, en esta parte del artículo no voy a proponer una forma particular de procesar el sonido, sino que me limitaré a hacer algunas recomendaciones para que puedas explorar por tu cuenta las múltiples posibilidades de manipulación sonora que incluye nuestro patch.


Manipulando las envolventes y formas de onda

El primer aspecto que te recomiendo explorar es el diseño de tus envolventes. Aunque en las secciones anteriores nos concentramos en generar envolventes que nos aproximaran al sonido replicado, ahora podemos cambiar los parámetros de nuestros ADSR para conseguir distintos tipos de efecto. Prueba, por ejemplo, dar distintos valores al tiempo de ataque y decaimiento, y distintos niveles de sustain. También puedes alterar el tiempo de release, aunque este último parámetro sólo se hará efectivo cuando pulses el mensaje “0” que sirve para apagar las envolventes (me refiero al que se encuentra conectado al objeto “send off”).

Otro elemento que puedes explorar es la combinación de formas de onda, ya sea cambiando la onda seno por ondas triangulares, cuadradas o dientes de sierra, o explorando distintos tipos de mezcla entre ondas diferentes. Sobre este punto, únicamente te recomiendo tener cuidado de no saturar la señal, pues cada vez que añadas una forma de onda nueva estarás aumentando la amplitud de su sonido general. Para evitar la saturación, simplemente tienes que buscar un balance adecuado de intensidades, utilizando los sliders que se incluyen para cada forma de onda.

Aquí podemos ver una imagen con las envolventes y las formas de onda alteradas de distintas maneras:

manipulaciones


Controlando los osciladores con moduladores de baja frecuencia

Como vimos cuando hablamos de los distintos dispositivos de audio analógico, los LFO son osciladores de baja frecuencia que pueden servir para modular la amplitud y/o la frecuencia de otros osciladores.

Para hacer este tipo de modulaciones en Pure Data, simplemente tenemos que crear un objeto nuevo llamado “lfo~”, lo que desplegará un gráfico como este:

lfo

Para conectar un LFO a un oscilador simplemente tienes que jalar un cable de la salida del primero, y conectarlo a alguna de las entradas del oscilador que se denominan “am” y “fm”. Dependiendo de a donde lo conectes, esto generará una modulación de amplitud (am) o de frecuencia (fm). Es importante decir que además de conectar el LFO a la entrada correspondiente, es necesario dar click sobre el recuadro inferior del oscilador que corresponda al efecto elegido (abajo del VCO, al lado del botón de “env”, hay un botón para activar la entrada “am” y otro para la entrada “fm”).

Aquí tenemos una imagen del LFO conectado a la entrada “am”, con su respectivo botón seleccionado:

lfoam

Por si fuera poco, los objetos LFO que se incluyen en la carpeta tienen la posibilidad de conectar varias modulaciones entre sí, de modo que un LFO puede servir para controlar otro LFO a través de modulaciones de amplitud o frecuencia:

lfos


Agregando efectos de filtro y reverb… y una pequeña sorpresa

Ya que hemos explorado la manipulación de envolventes, formas de onda y modulación de amplitud y frecuencia, cerraremos nuestro ejercicio explorando dos tipos de procesos diferentes: los filtros (VCF) y el reverb.

Aunque estos procesos los puedes agregar en cualquier parte de tu patch, un buen comienzo sería agregar estos efectos al final del flujo de señal, esto es, justo antes del amplificador general de nuestro sinte.

En la carpeta del ejercicio he incluido dos objetos que sirven para estos propósitos: “reverb~” y “vcfilter~”. Prueba integrando estos dos nuevos elementos a tu patch, y descubre por ti mismo sus posibilidades creativas. (Nota: el objeto “reverb~” está basado en otro objeto llamado “freeverb~”, el cual se instala automáticamente en algunas versiones de Pure Data, pero no en todas. En caso de que tu objeto “reverb~” no funcione correctamente, lo más probable es que necesites instalar por tu cuenta el objeto “freeverb~”, lo que puedes hacer de manera bastante sencilla: simplemente ingresa al menú “ayuda”, selecciona la opción que se llama “buscar externos”, y teclea la palabra “freeverb~”. Una vez que aparezca el objeto correspondiente, instálalo y reinicia Pure Data, y después de eso todo debería funcionar sin problemas).

Así se ven nuestros efectos de reverberación y VCF, conectados al VCA general de nuestro patch:

fx

Ahora sí, hemos terminado, aunque antes de poner el punto final a este ejercicio hay una última sorpresa: en caso de que quieras grabar y exportar en formato de audio los sonidos resultantes de tu sinte, he incluido en la carpeta un objeto llamado “rec~” que permite hacer esto de manera sencilla:

recout

Como se observa en la imagen, el objeto “rec~” despliega un pequeño módulo que se conecta a las salidas “tape out” de nuestra consola “master~”. Para activar esta grabadora, lo único que tenemos que hacer es conectar a la pestaña rotulada “name” un mensaje que incluya el comando “open” seguido del nombre que quieras otorgar a tu archivo, teniendo cuidado de agregar a tu nombre la extensión .wav:

open

Con el mensaje conectado, basta dar click encima del mismo para que PD genere, en la misma carpeta donde guardaste tu patch, un archivo de audio sobre el cual se escribirá lo que grabes. Para empezar la grabación, da click sobre el botón “start”, y automáticamente empezará a registrarse todo lo que salga de tu consola master. Y para detener la grabación… ¡adivinaste!, simplemente hay que presionar el botón de “stop”, y a partir de entonces puedes abrir tu archivo .wav en el reproductor de audio de tu preferencia.


¡Gracias y hasta pronto!

Espero que esta actividad haya sido de tu agrado, y que haya despertado tu imaginación acústica. A partir de aquí, las posibilidades de continuar este ejercicio son infinitas.

A manera de reto, te propongo replicar el ejercicio completo utilizando un archivo de audio distinto, a ver a dónde te puede llevar esta nueva aventura sonora. Otro reto interesante sería analizar la manera en la que cada uno de los objetos que se incluyen en la carpeta fueron construidos (esto se logra dando en click derecho sobre cada objeto, y eligiendo la opción “abrir”), para adaptarlos a tus propias necesidades creativas.

Me despido invitándote a seguir profundizando en las posibilidades que entornos libres como Pure Data ofrecen para la creación musical.

Resultado de imagen para gnu free software music

*Imagen de portada