sistema para la afinación automática de sonidos polifónicos

11

Click here to load reader

Upload: iloes

Post on 03-Aug-2015

75 views

Category:

Documents


4 download

DESCRIPTION

Este texto recoge la descripción fundamental del procedimiento ideado para la afinación automática (asistida por computador) de sonidos polifónicos.

TRANSCRIPT

Page 1: Sistema para la Afinación Automática de Sonidos Polifónicos

1

Sistema para la Afinación

Automática de Sonidos

Polifónicos

Iván López Espejo | [email protected]

Este texto recoge la descripción fundamental del procedimiento ideado para la

afinación automática (asistida por computador) de sonidos polifónicos.

Motivación.

Todos conocemos de la existencia de plug-in’s y otros softwares de ordenador

que nos permiten afinar en tiempo real o por postprocesado una línea melódica, ya sea

voz humana u otro instrumento musical como puede ser una guitarra o un violín. No

obstante aún no existe un sistema comercial de afinación polifónica. Pensemos en que

en un estudio de grabación se recoge como línea de entrada una secuencia de acordes de

guitarra. Por algún avatar del destino, algunos de los acordes están desafinados y no

podemos volver a grabar dicha secuencia y, sin embargo, queremos respetarla porque su

ausencia provocaría un vacío en la pieza musical. La solución radicaría en la afinación

asistida por ordenador del acorde o acordes en cuestión. El sistema que se presenta a

continuación vendría a auxiliar en caso de que este problema se diese.

Otra utilidad similar podría venir dada por la necesidad de mejora de afinación

en una canción u obra que se desea remasterizar. En muchos casos de remasterización

de audio, no se dispone de la disgregación de pistas necesarias como para tratar cada

línea por separado. El sistema de afinación de una obra en conjunción vendría de nuevo

a auxiliar este problema.

Descripción de la solución.

La clave de la solución ofertada por este sistema radica en el trabajo realizado en

el dominio de la frecuencia ya que, de otro modo, a priori resultaría casi imposible la

afinación de polifonía en el dominio del tiempo. Mostraremos una aproximación

mediante la generación de un acorde ideal bastante limpio únicamente conformado por

los tonos fundamentales y sus respectivos armónicos atenuados exponencialmente.

Presentamos a continuación el diagrama de bloques, procediendo seguidamente a su

desglose y descripción:

Page 2: Sistema para la Afinación Automática de Sonidos Polifónicos

2

Figura 1. Diagrama de bloques del sistema afinador.

El sonido polifónico 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 polifónico mediante el estudio de

máximos 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 operación

de DFT de la forma:

�(�) = �(�)�� �� �����

���

Seguidamente trabajamos con el módulo de la transformada pues, recordemos que la

información sonora relevante se encuentra en el módulo del espectro y no en la fase. Por

tanto, calculamos las muestras del módulo (suponemos ahora mismo por simplicidad

que disponemos también 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 máximos. Estos máximos han de corresponderse con los picos de los

tonos y armónicos que conforman el acorde desafinado. Como no sabemos, a priori, el

número de tonos fundamentales (o no tenemos porqué saberlo), podemos curarnos en

salud tomando las posiciones de un conjunto amplio de máximos aunque, con la

experiencia, podremos ir adquiriendo un compromiso que maximice la eficiencia de tal

modo que el programa cumpla su cometido a la perfección en el menor tiempo posible.

Mediante un algoritmo de recorrido y comparación entre todas las posiciones de los

máximos obtenidos, clasificamos los tonos fundamentales y desechamos los armónicos.

El desechado de los armónicos se realiza mediante comparación por cociente entre el

potencial armónico y el potencial tono fundamental. De este modo, si uno de los

máximos se corresponde con un armónico, el cociente, idealmente, debe ser un número

natural �. Como puede haber cierta desviación, de nuevo, mediante una base de datos

estocástica determinaremos el mejor # que discierna entre un armónico del que no lo es.

En principio, # = 0.05, algo más que suficiente.

Page 3: Sistema para la Afinación Automática de Sonidos Polifónicos

3

Una vez estimados todos los tonos fundamentales, la etapa devolverá un vector de tonos

fundamentales (los cuales se presuponen desafinados).

A continuación, el bloque Clasificador Lineal se encargará, mediante un sistema

de decisión lineal, de determinar cuál es el tono fundamental al cual se debe afinar cada

uno de los sonidos componentes de la polifonía desafinada. Esto lo hace linealmente

adaptando previamente la escala exponencial frecuencial a una función logarítmica.

Recordemos que la percepción auditiva del ser humano no es lineal con la frecuencia,

sino que la sensación de linealidad proviene del crecimiento exponencial de la

frecuencia. Recurriendo a la siguiente expresión:

&(', �) = 440(()�*)+(����� )),-. ( )

Donde log (2) hace referencia al logaritmo neperiano de 2. Nos interesa que la función sólo sea dependiente de �, donde � corresponde a la siguiente asociación:

n �ota

1 Do

2 Do#

3 Re

4 Re#

5 Mi

6 Fa

7 Fa#

8 Sol

9 Sol#

10 La

11 La#

12 Si

Como es lógico, 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 función de la frecuencia como:

' = 3log 4 &32.77 + 18

En consecuencia, la función resulta:

& = 4409:;,-.<: => .?@+�A�*@+:����� @B ,-.( ) ⟹

⟹ log 4 &4407 = D43log 4 &32.77 + 18 − 47 + 4� − 1012 7E log(2) ⟹

⟹ log 4 &4407 = log(2) 3log 4 &32.77 + 18 − 4 log(2) + 4� − 1012 7 log(2) ⟹

⟹ F = GH + GIJKL (I) MJKL 4 NOOH7 − JKL (I) P3JKLI 4 NQI. R7 + G8 − OST

Page 4: Sistema para la Afinación Automática de Sonidos Polifónicos

4

La función anterior resulta en un decisor lineal, de modo que, por redondeo, podremos

establecer la nota a la cual, respetando la percepción auditiva, se aproxima más la nota

desafinada. Se deduce inmediatamente que si n = 1,2,…,12, la nota componente está

perfectamente afinada y no será necesario realizar ninguna afinación 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 según lo estimado a 450Hz (& = 450UV). Aplicando la anterior expresión deducida:

F = GH + GIJKL (I) MJKL 4OWHOOH7 − JKL (I) P3JKLI 4 OWHQI. R7 + G8 − OST = GH. QXYG

Como 0.3891 < 0.5, n = 10 y, por tanto, se correspondería con un La 4 (a 440Hz).

Podemos modificar la tabla decisoria de forma que la afinación no se correspondiese

con distancias de medio tono, sino que agrupase armonías concretas, siendo ello mera

particularización de lo expuesto. Notar también que consideramos un Do# igual a un

Reb, aunque ello no sea estrictamente ortodoxo en la práctica.

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 separación, lo que logramos es simplificar el problema, llevándolo

posteriormente a una mera afinación de un sonido aislado por desplazamiento del

espectro y finalmente sumando todas las muestras afinadas en el dominio del tiempo

reconstruyendo la polifonía ya arreglada.

El filtro se genera para cada caso particular según cada una de las frecuencias

estimadas. Este filtro no es más que la superposición en el dominio del tiempo del tono

fundamental estimado y todos los armónicos audibles con una dispersión de 2Hz, para

tratar de no modificar altamente el timbre del instrumento en cuestión. Aplicando la

operación de DFT anteriormente descrita, obtenemos la respuesta del filtro en el

dominio de la frecuencia, de modo que la convolución 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 polifónico:

Z[\]^' ℎ`(�) ↔ ℱ{ℎ`(�)} = U`(�) c'�[d' e'\[&ó�[g' �(�) ↔ ℱ{�(�)} = �(�) �']h g'ie'��] j`(�) = ℎ`(�) ∗ �(�) = ℎ`(l)�(� − l)���

m��↔ n`(�) = U`(�)�(�)

Por tanto, este bloque se encargaría de, para cada una de las frecuencias fundamentales

estimadas, devolver el espectro de las o notas componentes, donde, en consecuencia, [ = 1,2, … , o.

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

Page 5: Sistema para la Afinación Automática de Sonidos Polifónicos

5

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

parámetro p = &^gq�g[h [dh\ &^gq�g[h r][ihdhs .

Aprovechamos la propiedad de escalado temporal de la transformada de Fourier que nos

dice:

�(p]) ↔ ℱ{�(p])} = 1|p| � :tp@

En consecuencia, cada uno de los espectros devueltos por el Filtro, n`(�), lo transformaremos en:

u`(�) = 1|p| n` 4�p7

Donde los índices de muestras �v se deben redondear al entero más cercano (el prototipo

trabaja con una muestra por hertzio, aunque mejoraría mucho su funcionamiento si lo

hiciese con una mayor resolución, únicamente escalando los anteriores resultados). Para

el parámetro p, la frecuencia estimada proviene directamente del Estimador de Tonos

Fundamentales mientras que la frecuencia ideal se calcula mediante la función

anteriormente expuesta:

&(', �) = 440(()�*)+(����� )),-. ( )

Donde � es el parámetro de redondeo devuelto por el Clasificador Lineal y ' hace referencia a la octava de la nota en cuestión según la expresión ya comentada:

' = 3log 4 &32.77 + 18

Una vez afinada la nota i-ésima por desplazamiento de espectro componente del sonido

polifónico, esta se pasa ya convertida mediante DFT inversa al bloque Buffer Sumador

en el Dominio del Tiempo:

�w=`�wxw(�) = 1� u(�)� �� �����

���

Aquí esperan todas las notas componentes hasta que están todas listas, momento en el

que son superpuestas para conformar el sonido polifónico ya afinado.

A continuación veamos un ejemplo de proceder del sistema. Supongamos que

tenemos un acorde de La menor construido sobre un La 4 (idealmente 440Hz), La-Do-

Mi. 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:

Page 6: Sistema para la Afinación Automática de Sonidos Polifónicos

6

Figura 2. 1000 muestras del acorde desafinado.

El sonido polifónico está muestreado a 44100Hz (calidad de audio) y está compuesto

por, aparte de los tres tonos fundamentales, 20 armónicos cuya amplitud sufre un

decaimiento exponencial por cada uno de los tonos fundamentales. A continuación, el

bloque Estimador de Tonos Fundamentales calcula el módulo de la DFT del acorde

entre 0 y y. Como se aprecia en la figura 3, esta etapa implementa un algoritmo de

selección de posición de máximos 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.

Page 7: Sistema para la Afinación Automática de Sonidos Polifónicos

7

Por ello, el vector devuelto por el bloque será z = (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 según el vector v:

Figura 4. Respuesta en el dominio temporal del filtro para la nota cuya frecuencia fundamental se sitúa

en 435Hz.

Figura 5. Respuesta en el dominio temporal del filtro para la nota cuya frecuencia fundamental se sitúa

en 520Hz.

Page 8: Sistema para la Afinación Automática de Sonidos Polifónicos

8

Figura 6. Respuesta en el dominio temporal del filtro para la nota cuya frecuencia fundamental se sitúa

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 polifónico 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 polifonía según lo descrito. Es decir:

�� = 10 + 12log (2) Mlog 44354407 − log (2) P3log 443532.77 + 18 − 4ST = 10.2390 � = 10 + 12log (2) Mlog 45204407 − log (2) P3log 452032.77 + 18 − 4ST = 0.8921 �> = 10 + 12log (2) Mlog 46504407 − log (2) P3log 465032.77 + 18 − 4ST = 4.7552

Realizamos una simple clasificación lineal basada en minimización 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((*�*)+(������ )),-. ( ) = 440UV &(5,1) = 440((~�*)+(����� )),-. ( ) = 523.25UV &(5,5) = 440((~�*)+(~���� )),-. ( ) = 659.26UV

Page 9: Sistema para la Afinación Automática de Sonidos Polifónicos

9

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 parámetro p:

p� = 440435 = 1.011494253 p = 523.25520 = 1.010096154 p� = 659.26650 = 1.014246154

Estos son los parámetros 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 polifonía se puede aproximar por la función cos (2y&]), por lo que, para conseguir que dicho tono se sitúe ahora a la frecuencia &′, precisaremos de multiplicar el anterior argumento por p = &�/&, de tal modo que

cos(p2y&]) = cos :=�= 2y&]@ = cos (2y&′]). Esta idea la hacemos corresponder con la

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:

u`(�) = 1|p| n` 4�p7

Donde n` es la respuesta en frecuencia de la nota i-ésima conformadora de la polifonía.

A continuación se muestra la secuencia de espectros componentes ya afinados:

Figura 7. Espectro del La 4 afinado.

Page 10: Sistema para la Afinación Automática de Sonidos Polifónicos

10

Figura 8. Espectro del Do 5 afinado.

Figura 9. Espectro del Mi 5 afinado.

La última etapa del diagrama de bloques se encargaría 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 polifónico ya afinado. La siguiente gráfica

recoge una comparación 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 distorsión (sólo sería cuestión de ir "afinando" el sistema).

Page 11: Sistema para la Afinación Automática de Sonidos Polifónicos

11

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