Está en la página 1de 11

1

Sistema para la Afinacin Automtica de Sonidos Polifnicos


Ivn Lpez Espejo | iloes@correo.ugr.es Este texto recoge la descripcin fundamental del procedimiento ideado para la afinacin automtica (asistida por computador) de sonidos polifnicos.

Motivacin. Todos conocemos de la existencia de plug-ins y otros softwares de ordenador que nos permiten afinar en tiempo real o por postprocesado una lnea meldica, ya sea voz humana u otro instrumento musical como puede ser una guitarra o un violn. No obstante an no existe un sistema comercial de afinacin polifnica. Pensemos en que en un estudio de grabacin se recoge como lnea de entrada una secuencia de acordes de guitarra. Por algn avatar del destino, algunos de los acordes estn desafinados y no podemos volver a grabar dicha secuencia y, sin embargo, queremos respetarla porque su ausencia provocara un vaco en la pieza musical. La solucin radicara en la afinacin asistida por ordenador del acorde o acordes en cuestin. El sistema que se presenta a continuacin vendra a auxiliar en caso de que este problema se diese. Otra utilidad similar podra venir dada por la necesidad de mejora de afinacin en una cancin u obra que se desea remasterizar. En muchos casos de remasterizacin de audio, no se dispone de la disgregacin de pistas necesarias como para tratar cada lnea por separado. El sistema de afinacin de una obra en conjuncin vendra de nuevo a auxiliar este problema.

Descripcin de la solucin. La clave de la solucin ofertada por este sistema radica en el trabajo realizado en el dominio de la frecuencia ya que, de otro modo, a priori resultara casi imposible la afinacin de polifona en el dominio del tiempo. Mostraremos una aproximacin mediante la generacin de un acorde ideal bastante limpio nicamente conformado por los tonos fundamentales y sus respectivos armnicos atenuados exponencialmente. Presentamos a continuacin el diagrama de bloques, procediendo seguidamente a su desglose y descripcin:

Figura 1. Diagrama de bloques del sistema afinador.

El sonido polifnico desafinado debe ser recogido en primera instancia por el bloque Estimador de Tonos Fundamentales. En esta primera etapa se determinan los tonos fundamentales que componen el sonido polifnico mediante el estudio de mximos del espectro. A tal fin, sea el acorde desafinado en el dominio del tiempo el conjunto de muestras ( ), obtenemos el espectro del mismo mediante la operacin de DFT de la forma: ( )= ( )

Seguidamente trabajamos con el mdulo de la transformada pues, recordemos que la informacin sonora relevante se encuentra en el mdulo del espectro y no en la fase. Por tanto, calculamos las muestras del mdulo (suponemos ahora mismo por simplicidad que disponemos tambin de muestras de la DFT) como: | ( )| = { ( )} + { ( )} = 0,1, , 1

Una vez calculado habremos de obtener un conjunto representativo de posiciones de las muestras que son mximos. Estos mximos han de corresponderse con los picos de los tonos y armnicos que conforman el acorde desafinado. Como no sabemos, a priori, el nmero de tonos fundamentales (o no tenemos porqu saberlo), podemos curarnos en salud tomando las posiciones de un conjunto amplio de mximos aunque, con la experiencia, podremos ir adquiriendo un compromiso que maximice la eficiencia de tal modo que el programa cumpla su cometido a la perfeccin en el menor tiempo posible. Mediante un algoritmo de recorrido y comparacin entre todas las posiciones de los mximos obtenidos, clasificamos los tonos fundamentales y desechamos los armnicos. El desechado de los armnicos se realiza mediante comparacin por cociente entre el potencial armnico y el potencial tono fundamental. De este modo, si uno de los mximos se corresponde con un armnico, el cociente, idealmente, debe ser un nmero natural . Como puede haber cierta desviacin, de nuevo, mediante una base de datos estocstica determinaremos el mejor que discierna entre un armnico del que no lo es. En principio, = 0.05, algo ms que suficiente.

Una vez estimados todos los tonos fundamentales, la etapa devolver un vector de tonos fundamentales (los cuales se presuponen desafinados). A continuacin, el bloque Clasificador Lineal se encargar, mediante un sistema de decisin lineal, de determinar cul es el tono fundamental al cual se debe afinar cada uno de los sonidos componentes de la polifona desafinada. Esto lo hace linealmente adaptando previamente la escala exponencial frecuencial a una funcin logartmica. Recordemos que la percepcin auditiva del ser humano no es lineal con la frecuencia, sino que la sensacin de linealidad proviene del crecimiento exponencial de la frecuencia. Recurriendo a la siguiente expresin: ( , ) = 440
(( ) ( )) ( )

Donde log (2) hace referencia al logaritmo neperiano de 2. Nos interesa que la funcin slo sea dependiente de , donde corresponde a la siguiente asociacin: n 1 2 3 4 5 6 7 8 9 10 11 12 ota Do Do# Re Re# Mi Fa Fa# Sol Sol# La La# Si

Como es lgico, para terminar de caracterizar la nota necesitaremos especificar la octava en la que esta se encuentra, y de ello se encarga la variable . Podemos dejar expresada la octava, , en funcin de la frecuencia como: = log En consecuencia, la funcin resulta: = 440 = 10 +1 4 + log(2) 32.7 12 10 + 1 4 log(2) + log(2) 32.7 12
. ( )

32.7

+1

log

log = 440

440 +

= log(2) log ( )

log

( )

La funcin anterior resulta en un decisor lineal, de modo que, por redondeo, podremos establecer la nota a la cual, respetando la percepcin auditiva, se aproxima ms la nota desafinada. Se deduce inmediatamente que si n = 1,2,,12, la nota componente est perfectamente afinada y no ser necesario realizar ninguna afinacin por desplazamiento de espectro. El Estimador de Tonos Fundamentales enviar el vector de tonos al Clasificador Lineal, de tal modo que, por ejemplo, imaginemos que uno de los tonos fundamentales se situase segn lo estimado a 450Hz ( = 450 ). Aplicando la anterior expresin deducida: = + ( ) ( ) . + = .

Como 0.3891 < 0.5, n = 10 y, por tanto, se correspondera con un La 4 (a 440Hz). Podemos modificar la tabla decisoria de forma que la afinacin no se correspondiese con distancias de medio tono, sino que agrupase armonas concretas, siendo ello mera particularizacin de lo expuesto. Notar tambin que consideramos un Do# igual a un Reb, aunque ello no sea estrictamente ortodoxo en la prctica. El bloque Filtro se encarga de filtrar todo el espectro correspondiente al acorde desafinado de entrada, nicamente respetando las componentes asociadas a cada uno de los tonos, por separado, estimados por el bloque Estimador de Tonos Fundamentales. Realizando esta separacin, lo que logramos es simplificar el problema, llevndolo posteriormente a una mera afinacin de un sonido aislado por desplazamiento del espectro y finalmente sumando todas las muestras afinadas en el dominio del tiempo reconstruyendo la polifona ya arreglada. El filtro se genera para cada caso particular segn cada una de las frecuencias estimadas. Este filtro no es ms que la superposicin en el dominio del tiempo del tono fundamental estimado y todos los armnicos audibles con una dispersin de 2Hz, para tratar de no modificar altamente el timbre del instrumento en cuestin. Aplicando la operacin de DFT anteriormente descrita, obtenemos la respuesta del filtro en el dominio de la frecuencia, de modo que la convolucin en el dominio del tiempo del filtro con el acorde se transforma en el producto de los espectros del filtro y del acorde, seleccionando as una sola nota de las que componen el sonido polifnico: ( ) { ( )} = ( ) ( ) { ( )} = ( )

( )= ( ) ( )=

( ) ( )

( )=

( ) ( )

Por tanto, este bloque se encargara de, para cada una de las frecuencias fundamentales estimadas, devolver el espectro de las notas componentes, donde, en consecuencia, = 1,2, , . Ahora, con ayuda del Clasificador Lineal, el bloque Afinador por Desplazamiento de Espectro se encargar de afinar cada una de las notas componentes a partir de los espectros proporcionados por el Filtro. Este bloque aprovecha el

conocimiento de la frecuencia fundamental estimada y la real o ideal para definir el parmetro = .

Aprovechamos la propiedad de escalado temporal de la transformada de Fourier que nos dice: ( ) { ( )} = | | 1

En consecuencia, cada uno de los espectros devueltos por el Filtro, transformaremos en: ( )= | | 1

( ), lo

Donde los ndices de muestras se deben redondear al entero ms cercano (el prototipo trabaja con una muestra por hertzio, aunque mejorara mucho su funcionamiento si lo hiciese con una mayor resolucin, nicamente escalando los anteriores resultados). Para el parmetro , la frecuencia estimada proviene directamente del Estimador de Tonos Fundamentales mientras que la frecuencia ideal se calcula mediante la funcin anteriormente expuesta: ( , ) = 440
(( ) ( )) ( )

Donde es el parmetro de redondeo devuelto por el Clasificador Lineal y referencia a la octava de la nota en cuestin segn la expresin ya comentada: = log 32.7 +1

hace

Una vez afinada la nota i-sima por desplazamiento de espectro componente del sonido polifnico, esta se pasa ya convertida mediante DFT inversa al bloque Buffer Sumador en el Dominio del Tiempo: ( )= 1 ( )

Aqu esperan todas las notas componentes hasta que estn todas listas, momento en el que son superpuestas para conformar el sonido polifnico ya afinado. A continuacin veamos un ejemplo de proceder del sistema. Supongamos que tenemos un acorde de La menor construido sobre un La 4 (idealmente 440Hz), La-DoMi. No obstante, las frecuencias de los tonos fundamentales de las notas componentes del acorde son 435Hz (para el La a 440Hz), 520Hz (para el Do a 523.25Hz) y 650Hz (para el Mi a 659.26Hz), por lo que est desafinado. En la siguiente figura se observa un conjunto de 1000 muestras del acorde:

Figura 2. 1000 muestras del acorde desafinado.

El sonido polifnico est muestreado a 44100Hz (calidad de audio) y est compuesto por, aparte de los tres tonos fundamentales, 20 armnicos cuya amplitud sufre un decaimiento exponencial por cada uno de los tonos fundamentales. A continuacin, el bloque Estimador de Tonos Fundamentales calcula el mdulo de la DFT del acorde entre 0 y . Como se aprecia en la figura 3, esta etapa implementa un algoritmo de seleccin de posicin de mximos que se correspondan con las frecuencias de los tonos fundamentales. Por simplicidad, cada muestra se refiere a un hertzio, por lo que sobre el eje de abscisas se puede ver directamente la frecuencia fundamental de cada una de las notas componentes del acorde:

Figura 3.Espectro del acorde desafinado.

Por ello, el vector devuelto por el bloque ser

= (435,520,650).

Ahora, por cada nota detectada, se proceder del siguiente modo. La etapa Filtro, conocida la frecuencia fundamental de la nota i-sima, con i = 1,2,,M, siendo en este caso M = 3, generar el filtro en el dominio del tiempo anteriormente descrito. La siguiente secuencia de figuras recoge 1000 muestras de cada una de las respuestas temporales de los filtros segn el vector v:

Figura 4. Respuesta en el dominio temporal del filtro para la nota cuya frecuencia fundamental se sita en 435Hz.

Figura 5. Respuesta en el dominio temporal del filtro para la nota cuya frecuencia fundamental se sita en 520Hz.

Figura 6. Respuesta en el dominio temporal del filtro para la nota cuya frecuencia fundamental se sita en 650Hz.

Para cada uno de los filtros anteriormente generados se calcula el producto de sus respuestas en frecuencia con el espectro del acorde, lo que nos devuelve, en este caso, tres espectros (puesto que M = 3) que se corresponden con los propios de las notas componentes del sonido polifnico por separado. Paralelamente, el Clasificador Lineal hace uso de las frecuencias estimadas de los tonos fundamentales para determinar hacia qu nota debe afinarse cada una de las componentes de la polifona segn lo descrito. Es decir: = 10 + 12 435 log log (2) log log (2) 440 435 +1 4 32.7 = 10.2390 = 0.8921 = 4.7552

= 10 + = 10 +

12 520 log log (2) log log (2) 440 12 650 log log (2) log log (2) 440

520 +1 4 32.7 650 +1 4 32.7

Realizamos una simple clasificacin lineal basada en minimizacin de distancia en el espacio de las notas musicales, por lo que deducimos que las notas componentes son La4-Do5-Mi5, como se puede extraer de la tabla anteriormente presentada. Las frecuencias reales de las notas son, en consecuencia: (4,10) = 440
(( ) ( )) ( )

(5,1) = 440

(5,5) = 440

(( ((

) ( ) (

)) ))

( ) ( )

= 523.25 = 659.26

= 440

Todos estos datos son recogidos por la etapa Afinador por Desplazamiento de Espectro. De este modo, para cada una de las notas componentes del acorde, calculamos el parmetro : 440 = 1.011494253 435 523.25 = = 1.010096154 520 659.26 = = 1.014246154 650 = Estos son los parmetros de escalado temporal motivados por la necesidad de modificar el pitch de cada una de las notas desafinadas. Pensemos en que el tono fundamental de cada una de las notas componentes de la polifona se puede aproximar por la funcin cos (2 ), por lo que, para conseguir que dicho tono se site ahora a la frecuencia , precisaremos de multiplicar el anterior argumento por = / , de tal modo que propiedad de escalado temporal de la transformada de Fourier anteriormente expuesta. Seguidamente, para cada uno de los espectros de las notas componentes del acorde obtenidas en la etapa de filtrado, aplicamos: ( )= | | 1 cos( 2 ) = cos 2 = cos (2 ). Esta idea la hacemos corresponder con la

Donde es la respuesta en frecuencia de la nota i-sima conformadora de la polifona. A continuacin se muestra la secuencia de espectros componentes ya afinados:

Figura 7. Espectro del La 4 afinado.

10

Figura 8. Espectro del Do 5 afinado.

Figura 9. Espectro del Mi 5 afinado.

La ltima etapa del diagrama de bloques se encargara de sumar las transformadas inversas (muestras temporales) de cada uno de los espectros de las notas componentes del acorde, lo que se traduce en el sonido polifnico ya afinado. La siguiente grfica recoge una comparacin entre las primeras 1000 muestras del acorde desafinado (en azul) y las primeras 1000 muestras del acorde ya afinado (en rojo). Observar que el filtro introduce una cierta distorsin (slo sera cuestin de ir "afinando" el sistema).

11

Figura 10. Acorde afinado vs. acorde desafinado en el dominio del tiempo.

También podría gustarte