Síntesis aditiva Emilia Gómez Gutiérrez Síntesi i Processament del So I Departament de Sonologia Escola Superior de Musica de Catalunya Curso 2009-2010 emilia.gomez@esmuc.cat 30 de septiembre de 2009 Índice 1. Introducción 2 2. Síntesis directa o table-lookup synthesis 2.1. Algoritmos de lectura de tablas . . . . . . . . . . . . . . . . . . . 2.2. Problemática de la lectura sin interpolación . . . . . . . . . . . . 2 2 3 3. Síntesis aditiva 3.1. Síntesis aditiva de forma de onda fija . . . . 3.1.1. La fase . . . . . . . . . . . . . . . . . 3.1.2. Crítica . . . . . . . . . . . . . . . . . 3.2. Síntesis aditiva por forma de onda variable 3.2.1. Reducción de datos . . . . . . . . . . 3 4 5 5 5 6 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1. Introducción En este tema explicaremos dos métodos de síntesis muy sencillos y relacionados entre sí. En primer lugar veremos la síntesis directa o table look-up synthesis, que es una aplicación directa del teorema de muestreo que hemos visto en el tema anterior. En segundo lugar, estudiaremos el método aditivo de síntesis. La síntesis aditiva se basa en la suma de formas de ondas elementales para crear una forma de onda más compleja. 2. Síntesis directa o table-lookup synthesis La síntesis directa, que también se denomina “de lectura de tabla” (table lookup) es una aplicación directa de la teoría de muestreo. Una forma de onda se almacena en la memoria de un ordenador, y un incremento de la lectura permite direccionar sucesivamente cada punto de la forma de onda y dirigirlo hacia los conversores, como muestra la figura 1. Figura 1: Síntesis por lectura de tabla, table lookup synthesis 2.1. Algoritmos de lectura de tablas Para cambiar la altura de la señal obtenida, debemos en principio variar la velocidad de lectura de la tabla. Por ejemplo, si una tabla de 8192 posiciones la leemos a una tasa de muestreo de 8192 Hz, obtendremos una frecuencia de 1 Hz. Si la leemos a 16384, la frecuencia será de 2 Hz. Si la velocidad de muestreo es fija, tenemos que proceder mediante salto de muestras o repetición de muestras para variar la frecuencia de la señal de salida. A la base, el algoritmo más elemental de lectura de una tabla de longitud L es un proceso en dos tiempos que se expresa como sigue: indexf ase = modL(f aseprecedente + incremento) salida = amplitud ∗ tabla[indexf ase ] 2 La primera etapa contiene una suma y una operación modulo. El módulo recorta a la longitud L la suma, en el caso en que dicha suma sea mayor que L. De esta manera, el índice de la fase es siempre inferior o igual a la longitud de la tabla. La segunda etapa lee el valor de la tabla situado en la posición indexf ase y multiplica el valor obtenido por un factor de amplitud. La frecuencia obtenida depende entonces directamente del valor del incremento. Sea fs la frecuencia de muestreo y fD la frecuencia deseada. Para obtener diferentes frecuencias, será necesario variar el incremento según la relación siguiente: incremento = fd · L fs es decir, incremento · fs L Por ejemplo, si deseamos una frecuencia de 20 Hz y disponemos de una tabla de 2048 valores con una frecuencia de muestreo de 8192 Hz, el incremento valdrá 20 · 2048/8192 = 5. Por lo tanto, leeremos de la tabla una muestra de cada 5 (posición 0,5,10,15,...). Después de la muestra a la posición 2045, comenzamos por el principio de la tabla por la posición 2. De hecho, [(2045+5)modulo2048] = 2050 − 2048 = 2. fd = 2.2. Problemática de la lectura sin interpolación Si la frecuencia que se desea corresponde a un incremento no entero, aparecerá un ruido en la lectura. Este sería un caso corriente, y significaría que la posición real de lectura en la tabla estaría entre dos posiciones. Cuando las tablas son muy grandes, esta situación no es catastrófica. Pero si el redondeo es muy pronunciado, obtendremos diversos artefactos en la señal resultante. La solución a este problema es utilizar un método de lectura con interpolación. Este método es más costoso en tiempo de cálculo, pero da resultados muy satisfactorios para casi todas las longitudes de tabla. La interpolación implica utilizar la parte fraccional del incremento para calular el valor preciso de la muestra misma si es que ésta no está presente en la tabla. Este proceso se lleva a cabo leyendo dos muestras de la tabla (el correspondiente al valor entero del incremento y el siguiente) e interpolando entre estos dos valores (ver ejemplo en la figura 2). 3. Síntesis aditiva La síntesis aditiva es uno de los primeros métodos utilizados para la obtención de espectros sonoros ricos que se aproximaran al comportamiento natural de los sonidos. El análisis acústico de las señales de audio nos enseña que los sonidos naturales están, de hecho, compuestos de una multitud de componentes simples, las cuales, en el caso de los sonidos periódicos con una altura determinada, tienen una frecuencia múltiplo de la frecuencia fundamental. El concepto de síntesis aditiva apareció en la edad media, aplicado a los órganos que podían comprender un conjunto de tubos para cada altura (acompañamiento por varias quintas y octavas). Más tarde, se empezó a utilizar en 3 Figura 2: table lookup synthesis interpolada los inicios de la música eléctrica y electrónica (por ejemplo el Telharmonium en 1906 y los órganos Hammond). 3.1. Síntesis aditiva de forma de onda fija Según el Teorema de Fourier, cualquier forma de onda puede expresarse como una suma de señales sinusoidales a diferentes frecuencias. Si dicha forma de onda es periódica, entonces las frecuencias de las sinusoides son múltiplos de la frecuencia fundamental. Estas dos afirmaciones son la base de la síntesis aditiva. Cada muestra de la señal resultante (out[n]) se calcula como una suma ponderada de las muestras generadas por las diferentes ondas simples (xi [n]), de la forma siguiente: out[n] = N X xi [n] = i=1 N X ai · sin(2 · π · fi · i=1 n + φi ) fs donde cada función xi [n] es una sinusoide de amplitud ai , frecuencia fi y fase inicial φi , y fs es la frecuencia de muestreo. Si la señal resultante es periódica, fi = i · f0 , donde f0 es la frecuencia fundamental. La figura 3 muestra el resultado de la suma de las componentes de una onda cuadrada. Esta forma de onda presenta dos características: (1) la amplitud relativa de cada una de los armónicos adicionales decrece con el orden del armónico; (2) sólo están presentes los armónicos de orden impar. La figura ilustra las etapas de la suma de armónicos en una serie de formas de onda en el dominio temporal: (a) Fundamental sola (b) Primer y tercer armónico (c) Suma de los armónicos impares hasta el quinto (d) Suma de los armónicos impares hasta el noveno (e) Forma de onda aproximada a la cuatrada obtenida sumando los armónicos impares hasta el 101. 4 3.1.1. La fase Aunque la fase (el ángulo de desviación en el instante 0) de cada uno de los armónicos no es importante para la percepción del timbre del sonido si se mantiene fija (!), puede tener una gran importancia en cuanto al aspecto visual de la forma de onda. La figura 4 ilustra el resultado de la suma de ondas sinusoidales cuya amplitud ha generado la onda cuadrada de la figura 3 (e), excepto que la fase de partida del quinto armónico es de 90 grados en lugar de 0 grados. La forma de onda es visualmente muy diferente, aunque el contenido espectral sea el mismo. 3.1.2. Crítica La síntesis aditiva a forma de onda fija no es siempre satisfactoria al oido. La síntesis por adición de parciales fijos es muy limitada, porque no puede darnos un espectro dinámico, es decir, que varie en el tiempo. La forma de onda, aunque contenga diferentes armónicos, no se comporta como en los sonidos naturales donde la forma de onda cambia con el tiempo. Además, las investigaciones sobre las señales acústicas nos ha enseñado que los sonidos obtienen sus características distintivas gracias a los períodos de ataque y subida, períodos durante los cuales el espectro del sonido es muy diferente y varia rápidamente. El problema que se presenta en la síntesis por forma de onda fija es que las características esenciales son incontrolables. 3.2. Síntesis aditiva por forma de onda variable Para obtener timbres de síntesis más convincentes y ricos, querremos cambiar al curso del tiempo las características y el número de armónicos presentes en la señal. De hecho, hemos podido ver que los sonidos instrumentales presentan esta propiedad (figura 5 Podemos observar que la fundamental no es el parcial con mayor amplitud, sino la componente que dura más tiempo). Estas evoluciones de amplitud y de frecuencia en el tiempo son determinadas por la física del instrumento. Aunque no intentemos reproducir sonidos instrumentales por síntesis aditiva, querremos probablemente sintetizar sonidos con sonoridad natural. Entonces tendremos que recrear este tipo de comportamiento. La envolvente temporal de un sonido es un elemento importante en la definición de un timbre. La figura 6 ilustra la aplicación de una envolvente de tipo ADSR (Attack-Decay-Sustain-Release) a una señal cuya forma de onda es un diente de sierra. La aplicación de una envolvente es en realidad una modulación de amplitud (que veremos en temas futuros). Aunque costosa en tiempo de cálculo, la síntesis aditiva a forma de onda variable es, en principio, muy general, y nos permite crear familias enteras de sonidos. Para cada parcial deseado del espectro utilizaremos un generador de onda sinusoidal en el que podremos controlar de forma independiente la frecuencia y la amplitud. Las salidas de los osciladdores se suman en una sola señal. La figura 7 ilustra la síntesis aditiva variable con diferentes envolventes para la frecuencia (F) y la amplitud (A). Para sintetizar con una fidelidad de las sonoridades naturales, nos hará falta utilizar un gran número de osciladores. Para una síntesis realista, podremos 5 necesitar más de una treintena de ellos. Este método es, por tanto, muy costoso, tanto por el tiempo de cálculo como por el número de datos a especificar y el control de este banco de osciladores. 3.2.1. Reducción de datos Para que este método sea práctico, hay que encontrar formas rápidas de generar o de adquirir los datos necesarios para controlar todos los osciladores. Para una treintena de osciladores, por ejemplo, tendremos que obtener: 30 envolventes de amplitud 30 envolventes de altura (frecuencia) 30 frecuencias nominales de osciladores 30 amplitudes nominales 30 duraciones 30 tiempos de inicio de envolventes ... Considerando que cada envolvente puede tener al menos media docena de puntos, tendremos que especificar para cada evento unos 500 datos. Por lo tanto es obligado encontrar soluciones de recambio para facilitar esta especificación. Podremos, por ejemplo, recurrir a procesos matemáticos, a generadores de onda aleatorios, a análisis espectrales de señales externas, etc. 6 Figura 3: Suma de las componentes de una onda cuadrada Figura 4: Fase 7 Figura 5: Evolución del espectro de una trompeta, 12 primeros parciales 8 Figura 6: Envolventes 9 Figura 7: Síntesis aditiva Figura 8: Síntesis aditiva 10