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~.
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.).
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.
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.).
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.