4.2. Síntesis aditiva

La síntesis aditiva consiste en la suma de componentes sinusoidales de frecuencias y amplitudes determinadas. A través de ella pretendemos generar sonidos complejos que imiten a los instrumentos acústicos, o bien, creen nuevos instrumentos.

Esta técnica se fundamenta en el teorema de Fourier que, llevado al campo que nos ocupa, expresa que toda forma de onda compleja periódica puede descomponerse en la suma de formas de onda sinusoidales de frecuencias, amplitudes y fases adecuadas, a las que se denomina armónicos.

Actualmente, sabemos que los sonidos tónicos (aquellos que definen claramente una altura, como el piano, por ejemplo) poseen componentes armónicas, es decir, están compuestos por sonidos puros cuyas frecuencias son múltiplos de la frecuencia más baja, denominada fundamental. Y que los sonidos no tónicos (aquellos que no definen una altura, como algunas campanas, o un platillo) poseen componentes no armónicas (no son múltiplos de una fundamental) a las que se denomina parciales.

Mediante la síntesis aditiva podemos crear sonidos tónicos o no tónicos, ya sea a través de la suma de armónicos o de parciales, respectivamente. Cada componente es producida por un oscilador, y su amplitud es afectada por una envolvente dinámica que describe el comportamiento de esa componente en el tiempo.

La figura G.4.1 muestra un subpatch destinado a producir una componente de la síntesis. Observamos un inlet por donde ingresa el valor de frecuencia, el oscilador, y una envolvente dinámica que recibe la duración remotamente, al igual que el bang para disparar esa envolvente. La señal de audio generada es enviada remotamente a la salida a través del objeto throw~.


G.4.1. Oscilador en un subpatch que dibuja contenido

Encapsulamos la programación en un objeto al que denominamos pd oscil. Hasta aquí todo nos resulta conocido, excepto que el subpatch creado tiene la capacidad de mostrar el objeto gráfico que ubicamos en su interior (el objeto envgen, que utilizamos para dibujar envolventes).

Para crear un subpatch, o incluso una abstracción, que muestre los objetos GUI ubicados en su interior, hacemos clic con el botón derecho del mouse en el fondo de la ventana de ese subpatch y, al desplegarse el menú, elegimos la opción Propiedades. Cuando se abre el cuadro de diálogo, tildamos la opción Dibujar contenido. Al presionar el botón Aplicar veremos que en la ventana aparece un rectángulo rojo, que podemos trasladar o redimensionar cambiando los números de Tamaño y Margen, respectivamente (ver G.4.2.).


G.4.2. Propiedades del fondo de ventana

Para abrir un subpatch creado de este modo, hacemos clic derecho sobre él y, al desplegarse el menú, elegimos la opción Abrir.

Vamos a utilizar el subpatch pd oscil en un programa que sintetice sonidos complejos a partir de sonidos puros. G.4.3. muestra el resultado de la programación, donde observamos 12 instancias del objeto, cada una con una frecuencia distinta.

Al comenzar, las frecuencias se corresponden con los 12 primeros armónicos de una frecuencia fundamental preestablecida (200 Hz). Pero es posible cambiar, tanto la fundamental desde el objeto Number asociado, como transformar la frecuencia de cada componente individualmente, con la intención de convertir en inarmónico el sonido a sintetizar.


G.4.3. Programa de síntesis aditiva

En la parte inferior derecha del patch puede verse un mensaje que se envía automáticamente, cuando se abre el archivo, a través del objeto loadbang. Este mensaje tiene nombres de conexiones remotas, precedidos por un punto y coma, y seguidos de valores numéricos. Este tipo de mensajes permite enviar valores a objetos receive que comparten el mismo nombre. Por ejemplo, si escribimos en un mensaje la expresión “; amplitud 0.5”, el número 0.5 llegará a cualquier objeto receive que tenga como argumento la palabra “amplitud” (ver G.4.4.).


G.4.4. Envío remoto mediante mensaje

El patch de G.4.3 se encuentra en el archivo “29-Síntesis aditiva.pd”. Abra el archivo y analice en el menú de Propiedades de cada objeto Number y del botón bang, los nombres de las conexiones remotas utilizadas. Modifique también las envolventes y las frecuencias de cada componente, y escuche atentamente los resultados.