Introducción a la síntesis FM (Tutorial 2)
1. Modulación. El término "modulación" se refiere libremente a cualquier técnica que altere sistemáticamente la forma de onda de una señal, modificando su gráfica de manera vertical u horizontal (Puckette 2007, p. 119). De hecho, podemos afirmar que el control de la amplitud de una sinusoidal, presentado en ejemplos anteriores, es como tal una modulación de la amplitud, en la que variamos la gráfica de la señal de manera vertical:
Descargue este patch aquí.
El mejor ejemplo para entender la modulación de la amplitud (AM) es el trémolo. En este caso, el control de amplitud no es una señal estática (como el objeto sig~ del ejemplo anterior), sino una sinusoidal adicional que oscila lentamente, por debajo del rango audible (0 - 10 HZ, <20hz). En el siguiente ejemplo se puede escuchar como el valor de la frecuencia moduladora es proporcional a la velocidad del tremolo:
Descargue este patch aquí.
En el patch anterior, al oscilador de baja frecuencia (0 a 10 HZ, <20hz) se le denomina la señal moduladora, puesto que su salida modula la amplitud de la sinusoidal, a quien se le denomina, en cambio, la señal portadora.
En el diseño de sintetizadores, el término "LFO" (siglas en inglés para "oscilador de baja frecuencia") refiere al empleo de este tipo de señales para modular parámetros del sonido. En términos prácticos, un LFO no es distinto a un objeto generador de señal, y como vimos en el ejemplo anterior, puede ser implementado utilizando cycle~.
En el siguiente ejemplo, controlamos la frecuencia del LFO de acuerdo al tiempo del secuenciador global de Max, dado en pulsos por minuto, comunmente denominado "BPM" en secuenciadores como Pro ools, Logic o Ableton Live, proveniente del inglés "beats per minute". Para ello utilizamos el objeto [transport] como se muestra a continuación:
Descargue este patch aquí.
Max habilita un secuenciador global con el que es posible interactuar al interior de los patches por medio del objeto [transport]. El acceso a la ayuda de [transport] permite copiar y pegar el botón “Open Global Transport”, el cual invoca la interfáz gráfica del secuenciador global ya mencionado.
Para obtener el valor "bpm" del secuenciador global de Max, utilizamos la salida número cinco de [transport] para convertir de ""bpm"" a Hz, con el fin de sincronizar el ciclo del LFO (la frecuencia de cycle~) con el tiempo global. Adicionalmente, intercambiamos el objeto cycle~ por phasor~, un oscilador diente de sierra ("sawtooth oscillator"). Cuando se utiliza phasor~, se hace evidente la necesidad de implementar rampsmooth~ a su salida, con el fin de "suavizar" la señal y evitar el corte de audio.
2. Síntesis FM ("Frequency Modulation"). Consideremos la situación en la que una señal moduladora no controla la amplitud de la portadora sino en cambio, su frecuencia. Si utilizamos sinusoidales, escucharemos un cambio en la altura del sonido percibido a manera de vibrato, con un patrón sinusoidal correspondiente a la salida de cycle~. Si dicha oscilación se encuentra en cambio dentro del rango audible (por arriba de 20 Hz), el ciclo es muy veloz, y por ende, percibimos cambio en el timbre del sonido:
Descargue este patch aquí.
Lo que sucede es que la frecuencia, al ser modulada tan rápidamente, genera nuevos componentes ("sidebands") alrededor de la frecuencia portadora, en distintos tipos de proporción, armónica e inarmónica.
En Max podemos implementar síntesis FM de la siguiente forma: iniciamos por definir la señal moduladora ("M"), utilizando una caja de valores decimales conectada a un oscilador y a un posterior control de amplitud (el cual llamaremos "index"). La salida de la moduladora se suma al valor de la frecuencia portadora ("C", del inglés, "carrier"), y el resultado se entrega al oscilador de la portadora:
Descargue este patch aquí.
En pocos segundos resulta evidente que la amplitud de la moduladora ("index") es proporcional al número de componentes en el espectro que resulta. Dichos componentes surgen en el espectro alrededor de la frecuencia portadora "C", distribuidos de manera equitativa a una distancia equivalente a la frecuencia moduladora "M".
A continuación algunas observaciones tomadas de Barry Truax (Truax 2014):
En el siguiente ejemplo encontramos los valores en frecuencia de los parciales de acuerdo a las observaciones anteriores, utilizando objetos de aritmética simple y [pak] para sincronizar las operaciones:
A partir de dichos valores es posible implementar objetos GUI como [nslider], para visualizar polifonicamente la correspondencia en valores MIDI de los (seis primeros) componentes predecibles del espectro FM:
Descargue este patch aquí.
Objetos como spectroscope~ permiten también visualizar el cambio de la información espectral dentro del patch. Observe que utilizando el menú "transform" (min. 2'23") es posible invocar prototipos para ciertos objetos, en este caso, agilizando la configuración gráfica de su preferencia:
Más info sobre el menú "transform" aquí.
3. "Fixed CM ratio". En síntesis FM es usual utilizar la proporción entre las frecuencias "C" y "M" para predecir el grupo de componentes que componen el espectro, por lo que se dice que es una técnica de modelado espectral ("spectral modelling") (Chowning, Truax). Dicha técnica utiliza la proporción entre las frecuencias de la portadora y la moduladora para predecir la producción de espectros armónicos e inarmónicos (C:M). Particularmente, se dice que las proporciones en la forma 1:N producen espectros armónicos. Por ejemplo:
Espectros armónicos: 1:1 1:2 1:3 1:4 1:5 1:6 1:7 1:8 1:9
Espectros inarmónicos: 2:9 2:7 3:8 2:5 2:7 4:9
… considerando que 1:2 = 2:4, 1:3 = 2:6, etc.
En el siguiente ejemplo se ilustra cómo definir un parámetro que permita alternar entre espectros armónicos e inarmónicos, al cual se le denomina "HR" del inglés "harmonicity ratio":
Descargue este patch aquí.
Considerando que los espectros armónicos:
1:1 1:2 1:3 1:4 1:5 1:6 1:7 1:8 1:9
son equivalentes a:
1 0.5 0.33 0.25 0.2 0.16 0.1428 0.11
Es posible utilizar el parámetro HR para predecir espectros armónicos como se muestra a continuación:
4. "FM Brass". En síntesis FM es usual escalar la cantidad de modulación (correspondiente al valor "index") de acuerdo al valor de la frecuencia ("C"), de forma tal que entre más agudo sea el sonido, mayor la modulación. Por qué se hace esto? Jean-Claude Risset, a quien mencionamos en el tutorial anterior, observó a partir de análisis espectral que el ancho de banda del sonido emitido por los metales ("brass tones") es proporcional a su amplitud total. En otras palabras, que el espectro gana energía en los brillos de manera proporcional a su amplitud. Esto inspiró la técnica "FM brass synthesis" de John Chowning, quien en 1970 utilizó indices de modulación proporcionales a la frecuencia de la portadora, generando una constante entre la altura fundamental y la cantidad de componentes ("sidebands") que resultan (Sievers 2017). El siguiente video modifica el patch anterior para escalar de el valor "index" de acuerdo a la altura fundamental del sonido producido:
Descargue este patch aquí.
5. "Signal-rate". Debido a que Max maneja subprocesadores es posible definir una prioridad en la ejecución de datos y audio (más información sobre esto en la Guía rápida para programar Max). Por ello es siempre recomendable (y para obtener una mejor calidad en el procesamiento de señal) conservar las operaciones de control dentro del subproceso de audio. Modificando el patch de manera superficial, es posible convertir nuestras operaciones aritméticas de datos a señales de audio, con el fin de que tengan prioridad en la ejecución del programa :
Retomando el inicio del tutorial, podemos utilizar de nuevo phasor~ a manera de LFO, esta vez para controlar la fase de la moduladora, y crear una transformación cíclica del espectro, sincronizable con el "bpm" global del secuenciador de Max:
Descargue este patch aquí.
Además de modular la fase, la salida del LFO puede afectar otros parámetros del sonido (en el ejemplo anterior la salida del LFO controla de manera simultánea a la fase y el "index" de la modulación).
5. "Multiple Carrier FM Synthesis". Chowning, inventor de la síntesis FM, reconoce que resulta difícil agotar las posibilidades tímbricas de un motor sonoro como el del Yamaha DX7, que tiene tan solo seis portadoras. En el ejemplo a continuación, configuramos a partir del patch anterior síntesis FM utilizando seis múltiples portadoras, por medio de la encapsulación ("apple + shift + e"):
Observe que para visualizar por medio de [nslider] los parciales del patch anterior, es necesario volver a computar "M" como en el video cinco de este tutorial:
Descargue este patch aquí.
Algunas consideraciones finales (McCulloch, Chowning): una proporción igual a 1 (1:1) tendrá potencialmente todos los armónicos naturales, mientras que una proporción igual a 2 tendrá sólo los armónicos impares. Entre mayor la proporción (p. ej. 2:3 = 0.6 > 1:2 = 0.5) más amplia la distribución de los componentes alrededor de la portadora. Valores decimales cercanos al valor entero (1.995 vs 2.0) pueden arrojar resultados sonoros más interesantes debido a los batidos y modulaciones sutiles que producen. Más info aquí .
Acerca de la percepción de altura ("pitch"): la altura de un sonido puede o no ser deducida a partir de su espectro armónico. Para espectros discretos (armónicos e inarmónicos), la altura percibida se relaciona principalmente con las frecuencias de los parciales de mayor amplitud. Los espectros armónicos tienen una altura determinada por su frecuencia fundamental; en los espectros inarmónicos la altura puede ser en cambio, clara, ambigua o ausente por completo, según reglas complejas y no completamente entendidas. En general, la sonoridad y el timbre de un sonido dependen más de su envolvente espectral que de las frecuencias presentes en el espectro, aunque la diferencia entre espectros continuos y discretos también puede ser escuchada como una diferencia en timbre (Puckette 2007, p. 121).
Referencias en Zotero