Capítulo 2.
REALIZACIÓN DEL PROYECTO.
1. Objetivos específicos del proyecto
2. Plataforma de programación y material sonoro
utilizado
3. Extracción automática de la melodía
4. Preprocesado digital
5. Similitud melódica
6. Análisis filogenético: generación de grafos
7. Ajuste mediante una función escalón
1. Objetivos específicos del proyecto.
Ya dijimos en la introducción que los objetivos del proyecto se centran en el estudio de los aspectos musicales de la música flamenca mediante herramientas informáticas y tecnológicas. Más concretamente, pretendemos, en primer lugar, realizar una extracción automática de la melodía flamenca y de sus propiedades, para poder hacer a continuación un análisis de similitud entre las diferentes melodías, utilizando diferentes algoritmos existentes para medir la similitud entre dos melodías. De esa forma podremos ver, por una parte, las diferencias y similitudes entre diferentes palos (en nuestro caso, deblas y martinetes) y, por otra, entre diferentes interpretaciones de un mismo palo por parte de diversos cantaores.
Una vez que hayamos realizado todo ese análisis, podremos plantear diversas cuestiones, con la ayuda de herramientas de clasificación, sobre el origen, la evolución y clasificación de los estilos, así como la influencia que unos cantaores han ejercido sobre otros. Este proyecto puede ser utilizado por musicólogos y expertos flamencos para responder a las muchas incógnitas planteadas en el arte flamenco. La conjunción de los resultados aquí obtenidos con los conocimientos históricos, musicológicos, bibliográficos, etc. que ya se tienen o se pueden obtener mediante una investigación rigurosa, puede ayudar a clarificar el análisis y la descripción de esta música de interés universal.
Figura 5. Esquema resumen del análisis.
En la Figura 5 podemos ver un esquema metodológico de nuestra propuesta. Partiendo de las piezas de audio originales, realizamos en primer lugar una extracción automática del contorno melódico que define la melodía de la pieza en cuestión. Para ello haremos uso, como veremos más adelante, de un software específico de transcripción de melodía. A continuación, una vez que hemos convertido el archivo .wav en una señal que almacenaremos en forma de vector, conteniendo las alturas que componen la melodía, tendremos que realizar un preprocesado digital adecuado que permita el posterior análisis de similitud melódica. En dicho análisis, implementaremos diversos algoritmos existentes de similitud que nos dirán cuánto se parece una melodía a otra, y de
Resultados y representaciones.
Corpus de piezas de audio a analizar.
…
…
…
…
Audio .WAV Extracción melódica Preprocesado digital Similitud melódica Matriz de distanciasExtracción automática del contorno melódico mediante algoritmos de extracción (librería MAMI).
Tratamiento digital de las señales para adecuarlas al análisis
posterior.
Aplicación de algoritmos de similitud melódica a las señales.
ese modo podremos obtener lo que se conoce como matriz de distancias (matriz que almacena los valores de similitud entre todas las melodías). Mediante la matriz de distancias, podremos observar los primeros resultados y extraer ciertas conclusiones que se verán reforzadas con la generación a partir de la matriz de un árbol o grafo que muestre las relaciones existentes entre los diferentes cantes. Véase la función main.m del Anexo para consultar el código fuente.
2. Plataforma de programación y material sonoro
utilizado.
Para la realización del proyecto, se ha utilizado el software de análisis numérico MATLAB versión 6.1. Por tanto, todo el código desarrollado para el proyecto ha sido programado usando esta versión de MATLAB, lo que no supondrá ningún problema para su uso en otras versiones más avanzadas. Además, como se verá posteriormente, se ha hecho uso de la versión demo 2.0 de la librería MAMI [68], un software propietario desarrollado por la Universidad de Gante, Bélgica, y que forma parte del proyecto MAMI (Musical Audio MIning).
En cuanto al audio utilizado en el proyecto, hemos hecho uso de un corpus compuesto por 24 ficheros de audio en formato WAV mono (de un solo canal), idéntica frecuencia de muestreo (44,1 kHz) y codificación de 16 bits. La colección se divide en 12 martinetes y 12 deblas, cantes que como ya hemos mencionado forman parte del grupo de las tonás.
Todas las piezas están limitadas exclusivamente al primer verso de la copla, ya que se puede considerar que es en dicho verso donde se realiza la
exposición melódica correspondiente a cada cante, esto es, podemos identificar el cante a partir del primer verso. Los versos siguientes suelen compartir patrones melódicos comunes a un rango más amplio de tonás, por lo que, en principio, no ha sido considerado para nuestro análisis.
Así mismo, se ha excluido de la muestra a deblas y martinetes interpretadas con acompañamiento de guitarra, cuerda frotada o viento. Además de que no es usual encontrar estos cantes con acompañamiento musical, supondría un importante problema tecnológico el hecho de incorporar estas piezas. La única forma de separar los instrumentos de la voz en una grabación musical sería a partir de la grabación MIDI, donde se utilizan diferentes canales para cada instrumento y para la voz. Existen algunas técnicas que permiten la separación a partir de audio WAV, pero tampoco serían muy eficientes en nuestras grabaciones, al tratarse de piezas antiguas y de mala calidad. De todas formas, esto no supone ningún problema porque, como ya hemos dicho, existe un número suficiente de piezas sin acompañamiento para realizar un análisis riguroso.
Cabe destacar que sí aparecen en el corpus algunas percusiones a golpe de un martillo, muy tradicionales en estos cantes, así como alguna voz que jalea al cantaor. Esto no influirá en nuestro análisis, pues las voces de jaleo están claramente separadas del cante, con lo que podemos eliminarlas manualmente, y las percusiones tampoco afectan demasiado a la muestra, al tratarse de impulsos de pequeña duración perfectamente localizados en la señal de audio.
Puede llamar la atención el hecho de que el corpus esté compuesto sólo por voces masculinas. El motivo de esa elección es doble: por un lado, muchos de los ejemplos existentes con voces femeninas tienen acompañamiento armónico instrumental. Por otro lado, las diferentes tesituras de las voces
masculinas y femeninas podrían introducir complicaciones innecesarias en el análisis.
El cantaor paradigmático de estos palos, especialmente de la Debla, es, como ya se ha mencionado, Tomás Pabón. Además de él, son primeras figuras Antonio Mairena, Chocolate y Naranjito. Los dos primeros son especialistas en cantes de fragua y referentes obligados. También se ha incluido a Naranjito como primera figura del Flamenco, cantaor de portentosas facultades y gran conocimiento de los cantes trianeros, entre los que se incluyen la debla y la forma de martinete seleccionada para esta muestra.
En la Tabla 1 podemos ver a los doce intérpretes que componen la colección (cada uno de ellos interpreta una debla y un martinete, hasta llegar a las 24 piezas ya mencionadas). También se incluye en dicha tabla el año de grabación de la pieza, la localización y la escuela o influencia del cantaor [8].
Cantaor Año de grabación Localización Escuela
Antonio Mairena 1960 Mairena del Alcor Pabón
Chano Lobato 2002 Cádiz Pabón Mairena Chocolate 1999 Jerez de la
Frontera
Pabón Mairena J. Almadén 1985 Ciudad Real Pabón
Mairena Jesús Heredia 2002 Écija Pabón
Mairena M. Simón 1985 Jerez de la
Frontera Pabón M. Vargas 1972 Cazalla de la
Sierra Mairena Naranjito 2002 Triana (Sevilla) Pabón
Mairena Pepe de Lucía 1963 Algeciras Pabón
Talegón 2002 Córdoba Pabón
Mairena Tomás Pabón 1950 Triana (Sevilla) El Baboso
Turronero 1989 Utrera Pabón Mairena
Tabla 1. Intérpretes que forman el corpus analizado.
3. Extracción automática de la melodía.
En un sentido no riguroso entendemos melodía como una sucesión de sonidos de diferentes alturas, es decir, una sucesión de notas musicales. La melodía tiene una importancia vital en la música, porque es la melodía lo que nos permite distinguir una obra de otra. Además, la melodía es lo que hace que
podamos recordar la música, y seamos capaces de reproducirla cantando, tarareando o silbando [58].
El primer problema que nos planteamos es cómo pasar del audio en formato WAV a una cierta representación de la melodía que nos permita manipularlas digitalmente. Como se ha mencionado en la introducción, el carácter marcadamente oral del Flamenco ha provocado la casi nula existencia de partituras que representen las melodías de los cantes (existen, no obstante, partituras para guitarra flamenca, no así para la voz, aspecto que estamos analizando). Por tanto, necesitamos obtener automáticamente una descripción de la melodía, tal como vemos en la Figura 6.
Figura 6. Descripción automática de la melodía.
Hay que tener en cuenta que la obtención de una melodía MIDI a partir de un archivo de audio es hoy en día, como ya se ha mencionado anteriormente, un problema de investigación abierto. Existen algunos algoritmos desarrollados para ello, pero siempre debemos considerar que el nivel de perfección que llegan a conseguir no es total, incluso tratándose de música monofónica (un único instrumento, una voz, etc.).
Señal de audio
Descripción melódica
Si hablamos de descripción melódica automática para música polifónica, podemos ver que se trata de una labor extremadamente compleja, y sólo aplicaciones de inteligencia artificial de gran complejidad permiten obtener resultados satisfactorios. Ésta es la principal razón que ha motivado la elección de cantes sin acompañamiento musical en el corpus a analizar. La introducción de cantes acompañados de guitarra u otros instrumentos introduciría nuevas variables que elevarían enormemente la complejidad del análisis, por lo que hemos creído conveniente dejarlo como una línea futura de investigación, y centrarnos en los cantes a capella.
Una vez hecha estas consideraciones iniciales, en nuestro proyecto vamos a hablar de la melodía haciendo referencia a una sucesión de notas musicales, por lo que será expresada con los siguientes descriptores asociados [26]:
Instante de inicio de la nota, expresado en segundos.
Instante de final de la nota (o duración), expresado en segundos.
Frecuencia fundamental de la nota, medido en Hertzios.
Altura expresada en la escala temperada, expresada como nota MIDI. Esto es, hacemos corresponder a cada frecuencia (valores continuos) una nota musical (valores discretos).
Por tanto, vamos a expresar una melodía como una secuencia de etiquetas con el siguiente formato:
inicio_1 final_1 freq_1 nota_1 inicio_2 final_2 freq_2 nota_2 inicio_3 final_3 freq_3 nota_3 ….
Figura 7. Modelo básico de descripción melódica.
Para realizar la descripción melódica mencionada anteriormente, el esquema general utilizado es el que aparece en la Figura 7. A partir de la señal de audio, obtenemos un conjunto de descriptores de bajo nivel, que se pueden calcular a partir de la forma de onda o de una representación frecuencial. Estos descriptores son la frecuencia fundamental y la energía de la onda. A continuación, una vez estimado dichos descriptores, hay que realizar la segmentación de la señal en notas, usando la información suministrada por los descriptores de bajo nivel. Por último, se realizaría una descripción de cada una de las notas, calculando su duración, frecuencia fundamental, nota cuantizada, así como otros parámetros relevantes.
La estimación de la curva de frecuencia fundamental podría calcularse utilizando el algoritmo TWM [42], adaptado para trabajar con voz cantada, propuesto en el proyecto SMS (Spectral Modelling Synthesis) [60, 83]. Sin
Extracción de descriptores de bajo nivel Segmentación de notas Descripción de notas Audio Melodía
embargo, debido a las características especiales del Flamenco, en particular la abundante ornamentación, en forma de vibratos y melismas, y el microtonalismo, resulta difícil estimar cuándo se trata de una nota diferente o cuándo de un vibrato con una amplitud interválica amplia. En la Figura 8 se puede ver un ejemplo donde resulta muy difícil identificar las notas a simple vista, pues se trata de una melodía con gran cantidad de fluctuaciones de la frecuencia.
Figura 8. Curva de frecuencia fundamental para un sonido de muestra.
En la Figura anterior, puede observarse la intensidad sonora de un fragmento de una pieza de cante flamenco (véase mitad superior de la pantalla). En la mitad inferior, vemos la estimación del descriptor de frecuencia fundamental generado por la herramienta SMSTools, donde cada línea
horizontal representa un intervalo de un semitono. Podemos ver que resulta muy complicado decidir las notas fundamentales que forman parte de esta melodía, pues se trata de una interpretación muy melismática, con muchísimas fluctuaciones. Además, en esa figura se manifiesta el fenómeno del microtonalismo antes mencionado, ya que cada barra horizontal representa un semitono, y se puede observar que existen notas de altura menor a un semitono.
Por otra parte, usando el software SMSTools, podemos representar la curva de la evolución de la energía fácilmente, Combinando la información que proporcionan los descriptores de frecuencia fundamental y curva de energía, daríamos paso a la siguiente fase del proceso de descripción melódica, la segmentación de la melodía en notas, para su posterior descripción.
Para realizar la segmentación de notas a partir de los descriptores de bajo nivel, existen una serie de sistemas diseñados para describir melódicamente señales de voz, si bien generalmente han sido diseñados para su uso en el ámbito de la música popular. Algunos de estos sistemas son:
• Melodyne. Se trata de un sistema comercial que segmenta las notas basándose en la información suministrada por el descriptor energía principalmente [80].
• El método propuesto por Ryynänen [55] se basa en un complejo sistema de transcripción basado en cadenas de Markov, y requiere un entrenamiento con una serie de melodías anotadas manualmente.
• Proyecto MAMI [68]. Forma parte de un proyecto de búsqueda de música por tarareo y, entre otras muchas funciones, han implementado un algoritmo de transcripción de melodía. Dado que existe una versión de demostración disponible en la web gratuitamente, y ya que el uso de esta librería es realmente sencillo, hemos decidido trabajar con este software en la extracción automática de las melodías de los cantes que componen nuestro corpus. Como veremos más adelante, las prestaciones ofrecidas son relativamente altas.
La librería que vamos a utilizar para realizar el proceso de transcripción melódica forma parte del proyecto Musical Audio-Mining, desarrollado por la Universidad de Gante en Bélgica. Se trata de un proyecto de reconocimiento automático de música, cuyo objetivo final es el de crear un motor de búsqueda de archivos de audio tan potente como los actuales motores de búsqueda de texto (como pueda ser Google).
En nuestro proyecto hemos utilizado la versión de demostración 2.0 del sistema de transcripción automática que ellos han desarrollado como parte del proyecto MAMI, que permite mostrar al usuario cómo puede obtener fácilmente, a partir del tarareo de una canción, una síntesis audible de lo que el sistema ha reconocido de dicha melodía tarareada. En la Figura 9 vemos la interfaz de inicio de la librería de transcripción melódica MAMI. Podemos observar que se trata de una aplicación bajo el sistema operativo MS-DOS.
Figura 9. Interfaz de la librería MAMI.
El programa nos permite dos alternativas para usar como entrada de audio: a partir de una grabación en vivo, usando un micrófono o una línea de la entrada de audio, o bien a partir de un archivo de sonido. Este archivo de sonido debe tener formato WAV, debe tratarse de una grabación monoaural (mono, de un único canal) y, por defecto, analiza únicamente los primeros 30 segundos de la grabación. Este último parámetro puede ser modificado usando la opción –maxduration en la línea de comandos, eligiendo el usuario el tiempo que quiere que sea analizado.
En nuestro caso, vamos a utilizar la segunda opción, e iremos introduciendo cada uno de los archivos de audio que componen la colección. Después de reproducir el audio original, el sistema realiza la extracción de las notas, mostrando por pantalla el conjunto de notas que componen la melodía extraída por el sistema. Cada nota está compuesta del instante de inicio (onset), instante de final (offset) y altura medida en Hertzios. La Figura 10 muestra un ejemplo del resultado después de realizar la extracción automática.
Figura 10. Pantalla obtenida tras introducir un archivo de audio.
Además, simultáneamente, cuando ha terminado de obtener todas las notas que componen la melodía, la aplicación ha generado, mediante un módulo de síntesis, un audio reconstruido a partir de la melodía que ha reconocido, lo que permite al usuario estimar cuán fiel es la melodía estimada respecto a la melodía original. Así mismo, permite reproducir el audio original al mismo tiempo que la melodía sintetizada, que también será de gran utilidad para observar el comportamiento de la transcripción. Para facilitar un posterior procesamiento, la librería ha generado un archivo de texto con extensión TEXTGRID, que contiene todas las notas estimadas (su altura, instante de inicio e instante de final) y que será el archivo del que partiremos en todo nuestro análisis posterior. En el archivo formatoMAMI.m (ver Anexo) hemos descrito el formato que presenta el archivo generado por la librería MAMI, y en las funciones extraccionMAMI.m y generaFreq.m, incluidas en el Anexo, todo el código utilizado para extraer la secuencia de notas, con toda su información, a partir de dicho archivo para un posterior tratamiento en MATLAB.
En la Tabla 2 y en la Figura 11, hemos representado en formato texto y en formato gráfico, respectivamente, la salida generada por la librería MAMI para un archivo de audio perteneciente a la colección, en concreto el martinete interpretado por Chocolate.
Inicio de nota (seg) Final de nota (seg) Altura (Hz)
0 0.03 0 0.03 0.24 122.782 0.24 0.55 169.649 0.55 0.72 188.614 0.72 0.9 189.928 0.9 0.97 0 0.97 1.31 196.854 1.31 1.66 225.087 1.66 2.03 236.253 2.03 2.36 253.705 2.36 3.24 254.001 3.24 3.71 252.847 3.71 4.16 243.433 4.16 4.43 0 4.43 4.57 180.96 4.57 4.81 234.221 4.81 5.81 244.707 5.81 6.73 235.384 6.73 6.99 251.781 6.99 7.19 245.713 7.19 7.76 235.221 7.76 8.18 227.964 8.18 8.43 222.315 8.43 8.66 216.033 8.66 8.69 0
Tabla 2. Estimación de la curva melódica obtenida por la librería MAMI a partir del martinete interpretado por Chocolate.
Figura 11. Representación gráfica del martinete interpretado por Chocolate, a partir de la melodía estimada por la librería MAMI.
Durante el desarrollo del proyecto, el hecho de tener una transcripción melódica de nuestros cantes que sea robusta y lo más fiel posible a la melodía original, resulta esencial para poder continuar con la investigación con garantías de éxito. Tras consultas con expertos en musicología y música flamenca del grupo de investigación COFLA, llegamos a la conclusión de que la transcripción realizada por la librería MAMI era suficientemente buena como para poder continuar con el análisis.
A pesar de presentar determinados errores de afinación en ciertas notas, en general, el contorno melódico estimado es bastante fiel al contorno original. Con el objetivo de mantener la premisa de realizar una extracción completamente automática, se decidió no retocar manualmente ninguna de las descripciones melódicas. De esa forma, todas las transcripciones serán usadas
tal y como fueron generadas por la librería MAMI, asumiendo que esas pequeñas imperfecciones en la melodía se deben a un error sistemático de la aplicación, que se va a producir uniformemente en todas las señales, por lo que no va a provocar la aparición de un sesgo en nuestro análisis. Sólo hemos corregido manualmente una única nota, en concreto de la debla interpretada por Tomás Pabón. La figura de Pabón como eje principal en la interpretación y posterior difusión de la debla hizo que creyéramos conveniente retocar esa nota manualmente. La peculiar voz de Tomás Pabón, de una grandísima riqueza armónica, puede provocar, como ocurre en esa nota, el mal funcionamiento del sistema, llevando la nota a una octava superior de donde realmente pertenece.
De todas formas, para suavizar el impacto de esos pequeños errores de afinación introducidos en la fase de descripción melódica, introduciremos un cierto margen de tolerancia cuando diseñemos los métodos de similitud melódica que veremos más adelante, así como en el ajuste de las frecuencias a la escala temperada.
Después de haber convertido el archivo de texto generado por MAMI en un vector de MATLAB, que contiene el instante de inicio, el de final y la altura, medida en Hertzios, de cada una de las notas que forman la melodía, el siguiente paso a realizar es la afinación de cada una de esas frecuencias a una nota de la escala musical. Ya dijimos que, a pesar de las microtonalidades presentes en el Flamenco, vamos a utilizar la escala temperada para realizar este ajuste.
Vamos a utilizar el estándar MIDI (Musical Instrument Digital Interface) para representar las notas. En esta interfaz, cada nota se representa por un número entero. La referencia de la escala temperada, la nota La perteneciente a la cuarta octava, se define por convención como La4 = 440 Hz. En el estándar MIDI, esta nota se corresponde con el número MIDI 69. Subir o bajar
la afinación un semitono se manifiesta sumando o restando la unidad a la nota MIDI. Existe una relación entre la frecuencia y la nota MIDI que se puede ver en la siguiente ecuación:
( )
f log 440 midi 69 round 12 log 2 = + Para suavizar el desajuste que existe entre la melodía cantada y el sistema de afinación, debido a la presencia de microtonalismos y a que el Flamenco no se ajusta exactamente a la escala temperada, tenemos que utilizar alguna de las diversas soluciones que se han propuesto para un problema similar: el hecho de que cantantes aficionados no son capaces de ajustarse perfectamente al sistema de afinación de la escala temperada. Aquí vamos a estudiar dos de ellos:
• Aproximación a la nota MIDI más cercana. Consiste simplemente
en utilizar la ecuación anterior que relaciona la frecuencia con la nota MIDI, tomando el valor más cercano. Se trata del método más básico.
• Método de Pollastri [49]. La hipótesis utilizada por Pollastri es que
cada cantante tiene un tono de referencia en mente y canta notas de una escala temperada referida a este tono. Esto quiere decir que los errores tienden a ser constantes, salvo una pequeña dependencia con el intervalo. El método consiste en calcular la desviación más frecuente para estimar el tono de referencia y así ajustar las notas cantadas a la escala temperada absoluta. Para ello se divide el semitono en 10 intervalos iguales de 0.2 semitonos solapados 0.1 semitono, se calcula la desviación de
cada nota como la parte fraccionaria de la ecuación utilizada para calcular la nota MIDI y se asocia al intervalo correspondiente. La desviación más frecuente corresponde a la media de las desviaciones del intervalo con más notas. A cada nota se le resta esta desviación y se redondea a la nota MIDI más cercana. En la Tabla 3 podemos observar un ejemplo del funcionamiento de este ajuste, representado gráficamente en la Figura 12.
Notas MIDI antes de ser redondeadas:
{46.9031 52.5006 54.3352 54.4554 55.0755 57.3958 58.2339 59.4678 59.4880 59.4091 58.7523 53.6180 58.0844 58.8426 58.1702 59.3360 58.9136 58.1582 57.6156 57.1812 56.6850}
Clasificación por intervalos:
Rango del
intervalo Notas incluidas en cada intervalo
Número de notas Desviación media 1 0.0 – 0.199 55.0755, 58.0844, 58.1702, 58.1582, 57.1812 5 0.1339 2 0.1 – 0.299 58.2339, 58.1702, 58.1582, 57.1812 4 0.1859 3 0.2 – 0.399 54.3352, 57.3958, 58.2339, 59.3360 4 0.3252 4 0.3 – 0.499 54.3352, 54.4554, 57.3958, 59.4678, 59.4880, 59.4091, 59.3360 7 0.4125 5 0.4 – 0.599 52.5006, 54.4554, 59.4678, 59.4880, 59.4091 5 0.4642 6 0.5 – 0.699 52.5006, 53.6180, 57.6156, 56.6850 4 0.6048 7 0.6 – 0.799 58.7523, 53.6180, 57.6156, 56.6850 4 0.6677 8 0.7 – 0.899 58.7523, 58.8426 2 0.7974 9 0.8 – 0.999 46.9031, 58.8426, 58.9136 3 0.8864 10 0.9 – 0.099 46.9031, 55.0755, 58.0844, 58.9136 4 0.4941
Tabla 3. Cálculo de la desviación más frecuente aplicando el método de Pollastri.
Figura 12. Histograma representando la distribución de notas según los intervalos definidos en el método de Pollastri.
En el caso de la Tabla 3, hemos calculado que el intervalo con más notas es el número 4. Por tanto, la desviación más frecuente será la desviación media de este intervalo, en este caso, 0.4125. El siguiente paso consiste en restar esa desviación a todas las notas y redondear a la nota MIDI más cercana.
Existen otros métodos para resolver este problema, como el propuesto por McNab [43] y el método que propone Klapuri [63]. Sin embargo, las prestaciones que ofrece la solución de McNab no son mejores que el método más simple de aproximación a la nota más cercana. En cuanto al método de Klapuri, ofrece unas prestaciones muy similares al de Pollastri, por lo que no ha sido implementado [39].
En el archivo freq2notas.m, incluido en el Anexo puede encontrarse el código fuente utilizado para implementar los dos métodos señalados para pasar de frecuencias continuas a notas del estándar MIDI.
En las Figura 13-a y 13-b, podemos visualizar un par de ejemplos del ajuste realizado por los dos métodos propuestos cuando son aplicados a la debla y al martinete interpretados por Chano Lobato. En ella se pueden observar las diferencias en el ajuste de los dos métodos propuestos que, como puede observarse en dicho ejemplo y como estudiaremos cuantitativamente a continuación, son mínimas.
Figura 13-a. Diferencias en el paso de frecuencias a notas para la debla de Chano Lobato utilizando los dos métodos estudiados.
Figura 13-b. Diferencias en el paso de frecuencias a notas para el martinete de Chano Lobato utilizando los dos métodos estudiados.
En la Tabla 4 se muestra de forma cuantitativa la diferencia en el ajuste a la escala temperada entre los dos métodos propuestos. Hemos obtenido, para cada una de las piezas, el valor máximo de diferencia entre una secuencia de notas y otra, así como el porcentaje de notas diferentes entre ambos métodos. Aunque el porcentaje de notas diferentes es relativamente alto en algunas piezas, vemos cómo la máxima desviación entre un método de ajuste y otro nunca es mayor de un semitono. Por tanto, los resultados no van a verse demasiado afectados por la elección de un método u otro.
Máxima diferencia (en semitonos)
Porcentaje de notas diferentes (%) Intérprete
Debla Martinete Debla Martinete
A. Mairena 1 1 30.3571 3.8462 Chano Lobato 1 1 38.9831 13.7255 Chocolate 0 1 0 28 J. Almadén 1 1 32.3529 14.2857 Jesús Heredia 1 1 25.4545 29.5455 M. Simón 1 1 41.667 3.0303 M. Vargas 1 1 27.1186 24.3243 Naranjito 1 1 13.0435 22.4490 Pepe de Lucía 1 1 32.1839 26.2295 Talegón 1 1 25.4902 18.1818 Tomás Pabón 1 1 32.0755 2.5641 Turronero 1 1 38.6364 38.7097
Tabla 4. Desviación máxima y porcentaje de notas diferentes entre el ajuste por redondeo y por el método de Pollastri.
A partir de ahora, todos los resultados mostrados habrán sido implementados usando el ajuste planteado por Pollastri. De todas formas, durante la ejecución de la aplicación se permite al usuario elegir qué sistema quiere utilizar.
Una vez que hemos extraído automáticamente los contornos melódicos de los cantes que forman el corpus, vamos a hacer una comparación entre la descripción melódica realizada en nuestro proyecto y un análisis manual realizado por expertos en música flamenca [8].
Para hacer este análisis, se ha normalizado el contorno melódico con respecto a la tónica, y todas las notas han sido aproximadas a la nota más cercana de la escala temperada. Además, las notas de adornos y los melismas no han sido considerados, por tratarse más de características vocales del cantaor que de características definitorias del estilo en cuestión. Así mismo, no hay una representación rítmica, y la duración de las notas no ha sido reflejada. A pesar de esto último, podremos comparar visualmente el contorno melódico extraído por el experto en Flamenco y el contorno estimado por nuestro sistema. En resumen, para esta anotación manual se ha hecho una representación de la melodía muy simplificada, intentando aproximarse a la percepción que un aficionado al Flamenco tiene cuando escucha e identifica uno de estos cantes.
En las Figuras 14-a y 15-a podemos observar la representación del contorno melódico obtenido manualmente de la debla interpretada por los dos autores más característicos de estos cantes, Tomás Pabón y Antonio Mairena. En las Figuras 14-b y 15-b tenemos el contorno melódico que ha sido extraído automáticamente a partir de las señales de audio. Para facilitar la comparación, hemos eliminado del contorno automático las bajadas a cero, con el fin de obtener un contorno continuo que permita observar la curva con más claridad sin las caídas provocadas por los silencios.
Igualmente, en las Figuras 16-a y 17-a se ha representado el contorno melódico representativo de los martinetes que interpretan Pabón y Mairena anotados manualmente, mientras que en las Figuras 16-b y 17-b encontramos la transcripción automática de esos dos cantes realizadas en este proyecto.
Figura 14-a. Transcripción manual de la debla interpretada por A. Mairena.
Figura 14-b. Transcripción automática de la debla interpretada por A. Mairena
0
2
4
6
8
10
12
0 5 10 15 20 25 30 35 40 45 50 54 56 58 60 62 64 66 68 70 note indexFigura 15-a. Transcripción manual de la debla interpretada por T. Pabón.
Figura 15-b. Transcripción automática de la debla interpretada por T. Pabón.
0
2
4
6
8
10
12
0 5 10 15 20 25 30 35 40 45 54 56 58 60 62 64 66 68 70 note index M ID I p it c hFigura 16-a. Transcripción manual del martinete interpretado por A. Mairena.
Figura 16-b. Transcripción automática del martinete interpretado por A. Mairena.
-6
-4
-2
0
2
4
6
8
10
0 5 10 15 20 25 50 52 54 56 58 60 62 64 66 note index M ID I p it c hFigura 17-a. Transcripción manual del martinete interpretado por T. Pabón.
Figura 17-b. Transcripción automática del martinete interpretado por T. Pabón.
0 5 10 15 20 25 30 50 52 54 56 58 60 62 64 66 note index M ID I p it c h
-6
-4
-2
0
2
4
6
8
Como podemos observar en las figuras anteriores, existen variaciones entre los resultados obtenidos manualmente y los obtenidos automáticamente. Sin embargo, se puede ver como el contorno global es bastante similar en ambos casos. Algunos de estos errores son debidos a las simplificaciones tenidas en cuenta en el análisis manual (donde se ignoraban los melismas y las notas de adorno). Nótese que estas simplificaciones no se han realizado en la extracción automática. Además, la falta de afinación en la escala temperada, característica de las interpretaciones de Flamenco, introduce errores en el valor de las notas.
De todos modos, a pesar de las diferencias existentes entre la anotación manual y la automática, expertos en Flamenco y musicólogos han validado las transcripciones obtenidas con métodos computacionales, dando el visto bueno para su utilización como representativas de las melodías de los cantes analizados. Esta aprobación se hace fundamental para poder continuar con el desarrollo del proyecto de una manera rigurosa y completamente válida.
4. Preprocesado digital.
Una vez que hemos adaptado la señal generada por la librería MAMI al entorno de nuestro lenguaje de programación, el primer paso que tenemos que dar es pasar las frecuencias estimadas por MAMI a valores de notas MIDI.
Para distinguir una melodía de otra, los elementos más importantes son los intervalos de altura y los intervalos de duración de las notas que la componen. Es decir, en lugar de ver una melodía como una sucesión de sonidos en el tiempo, podemos verlo como un sonido seguido de una sucesión de intervalos en el tiempo. Es por dicha razón por la que vamos a trabajar,
como ya hemos dicho, con intervalos de altura y con intervalos de duración de notas. Por tanto, el siguiente paso del preprocesado será el convertir la secuencia de notas MIDI en una secuencia de intervalos de notas. En la Figura 18 podemos ver un ejemplo de la conversión realizada.
Figura 18. Ejemplo de la conversión de serie de notas a serie de intervalos de notas
Por tanto, nuestras melodías a partir de ahora van a constar de una secuencia formada por una nota inicial, seguida de una serie de intervalos. Cada uno de estos intervalos será un número entero, que indicará el valor del intervalo, y un signo, que indicará si se trata de un intervalo ascendente (signo positivo) o de un intervalo descendente (signo negativo).
Al mismo tiempo, al trabajar con una sucesión de intervalos, estamos consiguiendo lo que se conoce como invarianza a la transposición. En música, se entiende como transposición al proceso de interpretar una pieza musical a una altura diferente de la original, es decir, a desplazar la secuencia de notas
Secuencia de notas: {68, 69, 72, 66}
Secuencia de intervalos de notas:
una cierta cantidad de semitonos. Esto provoca que diferentes piezas musicales pueden tener el mismo contorno melódico, pero al estar interpretadas en diferentes alturas, las notas que las componen sean diferentes. De esta forma, trabajando con intervalos, nuestro análisis no se ve influenciado por las diferentes alturas a las que una pieza pueda ser interpretada, sino que sólo tiene en cuenta el contorno melódico que la representa [39].
A partir de la secuencia de n notas MIDI que representa la melodía,
M = (m1, m2,…, mn)
la representación que vamos a utilizar formada por los intervalos de notas será:
M = (m2 – m1, m3 – m2…, mn – mn-1)
Se puede comprobar fácilmente que dos melodías idénticas, pero interpretadas a diferente altura, presentan exactamente la misma secuencia de intervalos. Como hemos dicho, una melodía se diferenciará de la otra porque sus notas han sido desplazadas una cierta cantidad de semitonos. Por tanto, sea Mla secuencia de notas de la melodía original y M* la secuencia de notas de la misma melodía después de haber sufrido una transposición, los elementos que forman M*serán de la forma:
m*i = mi + K
En la Figura 19 vemos otro ejemplo de dos melodías interpretadas a diferente altura, donde podemos observar como ambas tienen la misma representación en intervalos.
Figura 19. Melodías idénticas interpretadas a diferente altura poseen la misma secuencia de intervalos.
Por tanto, realizando esta primera transformación, conseguimos tener una representación de la melodía invariante a la transposición, con lo cual podremos comparar secuencias de alturas sin importarnos la altura a la que la pieza está interpretada, ya sea más aguda o más grave.
A continuación, otro aspecto a tener en cuenta es el tempo. Esto es, la velocidad a la que la obra es interpretada. Al igual que con la transposición, nos interesaría que la representación de nuestra melodía fuera invariante al tempo, es decir, que diferentes interpretaciones de una misma melodía a diferentes velocidades resultaran iguales en nuestro análisis. Por tanto, tendremos que
Secuencia de notas para la
melodía 1: {68, 69, 72, 66}
Secuencia de notas para la melodía 2:
{60, 61, 64, 58} Intervalos de notas para la
melodía 1: {+1, +3, -6}
Intervalos de notas para la melodía 2:
normalizar de algún modo la secuencia que representa las duraciones de cada nota.
La forma más usual de hacer esto es normalizando respecto a una duración de referencia invariante al tempo. Normalmente para este valor se elige el período de pulso o pulsación (número de beats o señales periódicas que marcan el ritmo de la pieza por minuto). En nuestro análisis, al tratarse de cantes a capella, obtener esta pulsación se convierte en una labor compleja, además de poco precisa. Una solución intermedia, que nos permite obtener invarianza al tempo a pesar de no conocer el período de pulso de la pieza, consiste en considerar la duración de referencia como la duración de la nota previa a la actual [48].
Por tanto, dada una secuencia de duraciones D = (d1, d2,…, dn), la representación invariante al tempo, que llamaremos de duraciones relativas, será de la forma: −
=
2 3 n 1 2 n 1d
d
d
D (
,
,...,
)
d d
d
Como en el caso anterior, se puede observar fácilmente que dos melodías idénticas pero interpretadas con diferente tempo tendrán la misma representación usando esta codificación. Sea D la secuencia de duraciones que representa a la melodía original, y D* la que representa a la melodía con tempo diferente. La variación en el tempo de la pieza se ve reflejada en la secuencia de duraciones con la introducción de un factor constante, que incrementa o disminuye la duración de cada nota. Por tanto:
d*i = di . K
De esta forma, las secuencias de duraciones relativas son exactamente iguales para ambos casos, a pesar de tratarse de melodías con diferente tempo, ya que al normalizar con la duración de la nota anterior a la actual
estamos eliminando ese factor constante. Podemos ver un ejemplo en la Figura 20.
Figura 20. Melodías iguales interpretadas con diferente tempo poseen la misma secuencia de duraciones relativas.
Todo el código fuente utilizado en la fase de preprocesado digital se encuentra disponible en el archivo procesado.m del Anexo.
Intervalo de duraciones para la
melodía 1: {2, 2, 1, 1} segundos
Intervalo de duraciones para la
melodía 2: {2/3, 2/3, 1/3, 1/3} seg. Duraciones relativas para la
melodía 1: {1, 1/2, 1}
Duraciones relativas para la
melodía 2: {1, 1/2, 1}
5. Similitud melódica.
La similitud melódica es un aspecto muy importante utilizado en la recuperación de información musical (MIR, Music Information Retrieval). Podemos definirla como una medida que nos indica el grado de identidad que puede establecerse entre dos melodías. En otras palabras, se trata de obtener un número que nos indique cuánto se parece (o cuánto se diferencia) una melodía a otra. Típicamente, se requiere el uso de conceptos matemáticos y algorítmicos para establecer y calcular eficientemente una medida de similitud.
En la actualidad, se utiliza en diversos tipos de sistemas, principalmente en los conocidos como Query by humming (QBH) [20], que son sistemas de recuperación de música que buscan identificar la melodía cantada o tarareada (humming, en inglés) por un usuario en una base de datos de melodías. Podemos encontrar multitud de proyectos de este tipo, como por ejemplo el sitio web Midomi [81], que permite la búsqueda de una canción cantando o tarareando, además de ofrecer la posibilidad de pertenecer a una comunidad de usuarios que contribuye a ampliar la base de datos de canciones. Otro ejemplo es el software de libre distribución bajo la licencia GNU MaART (Music
and Audio Retrieval Tools) [79], cuyo objetivo es el de crear un motor de
búsqueda de audio con la efectividad de los buscadores de texto ya existentes. Permite la descarga de una serie de librerías en C++ que pueden usarse para implementar aplicaciones de búsqueda o recuperación de información musical. Por último, el proyecto Tararira [39] implementa un sistema completo de detección de altura, segmentación en notas y comparación de melodías, creando una aplicación que busca la melodía más parecida a la que el usuario ha cantado o tarareado en una base de datos de melodías MIDI monofónicas compuesta por 208 temas de The Beatles.
La similitud melódica también se utiliza en sistemas desarrollados para administración de derechos de autor y detección de plagios [13], identificación de versiones de una misma canción [59], entre otros.
En nuestro proyecto, vamos a utilizar la similitud melódica para calcular cuantitativamente cuánto se parecen entre sí dos cantes. Haremos dos tipos de análisis: por un lado, veremos el grado de similitud entre dos tipos diferentes de palos, deblas y martinetes; y por otro lado, estudiaremos la similitud existente entre interpretaciones de diferentes cantaores de un mismo palo (deblas por una parte y martinetes por otra). De esa forma vamos a intentar clasificar automáticamente diferentes palos, así como extraer conclusiones sobre la evolución de un palo, en virtud de las diferentes interpretaciones de cada cantaor.
Existen multitud de métodos de diferente complejidad para calcular el grado de similitud melódica. Aquí vamos a revisar algunos de ellos [71]:
• Medidas geométricas. Podemos encontrar implementaciones de algoritmos calculando una medida geométrica que calcula la diferencia entre dos cadenas melódicas como el área mínima encerrada entre las dos curvas que representan a ambas melodías [1].
Figura 21. Ejemplo del área encerrada entre dos melodías representadas por las cadenas Ma y Mb [1].
En el artículo referido, definen dos algoritmos: uno de ellos en tiempo lineal para calcular el área entre dos cadenas que tienen alineamiento fijo, y otro con alineamiento variable, que se puede calcular en tiempo logarítmico.
• Cadenas de Markov. Usando los modelos ocultos de Markov [33] de primer orden es posible crear una medida probabilística de similitud melódica. En este modelo, se crea una matriz T donde el valor de cada elemento tij representa la probabilidad de transición del valor de nota i al valor de nota j. Esta matriz puede ser generada fácilmente, simplemente contabilizando las transiciones existentes en la pieza musical. Por tanto, dada una secuencia de consulta, se puede calcular la probabilidad de que dicha secuencia coincida exactamente con la secuencia de referencia, usando los valores contenidos en la matriz T. Dicha probabilidad se define como la medida de similitud.
• Cálculo de vectores [31, 32]. Se definen dos vectores: el vector de similitud, que resulta de calcular la diferencia entre los valores de altura individuales de cada una de las cadenas melódicas a comparar; y el vector intervalo, definido como las diferencias entre miembros adyacentes del vector de similitud. La similitud entre las dos melodías será el producto de dos valores, uno obtenido a partir del vector de similitud, y otro obtenido a partir del vector de intervalos. Hay que mencionar que, en este caso, se utiliza una representación especial de las melodías, como una cadena donde cada nota que forma dichas melodías es representada por tres valores: uno que representa la altura, otro la duración, y un tercero (que representa el aspecto novedoso de esta
representación) que define la sonoridad. Son definidos en términos de medidas de cognición, o valores subjetivos de percepción de similitud.
En nuestro análisis, nos vamos a centrar en cuatro medidas de similitud diferentes. Vamos a utilizar, en primer lugar, la distancia euclídea entre vectores multidimensionales. A continuación, haremos un estudio utilizando una medida estadística, el coeficiente de correlación, que calcula la fuerza y dirección de una relación lineal entre dos variables. En tercer lugar, vamos a utilizar una medida de similitud conocida como edit distance, o distancia de
edición, que se utiliza en aplicaciones de comparación de cadenas de
caracteres, como pueden ser los correctores ortográficos. Por último, implementaremos un algoritmo de alineamiento de secuencias conocido como
Dynamic Time Warping (DTW).
Aplicaremos cada una de estas medidas de similitud melódica a todas las piezas que forman nuestro corpus y, en vista de los resultados, veremos cuál de ellas presenta unas mejores prestaciones y cómo podemos mejorar alguno de esos algoritmos para el caso concreto del cante flamenco.
5.1. Distancia euclídea
La primera medida de similitud melódica que vamos a estudiar es la basada en la distancia euclídea, que se trata sin duda de la más simple de las cuatro que vamos a utilizar. La distancia es una magnitud escalar que mide la relación de lejanía entre dos puntos en un espacio n-dimensional. En el espacio euclídeo, la distancia entre dos puntos coincide con la longitud del camino más corto entre dos puntos.
Cuando tenemos dos secuencias de puntos de la misma longitud n, X = {x1, x2,…, xn} e Y = {y1, y2,…, yn}, se define la distancia euclídea de la siguiente forma: d = n 2 i i i 1 x y = −
∑
Esta definición de distancia euclídea no es más que una generalización del teorema de Pitágoras para el caso genérico de tener más de dos coordenadas, y se corresponde con la idea intuitiva de distancia.
Una vez definida esta medida, tendremos que aplicarla sobre todos los pares de piezas musicales, y de esa forma iremos obteniendo una nueva matriz de distancias. En la Figura 22 está representada la matriz de distancias usando la distancia euclídea, usando colores para representar cada valor.
Figura 22. Matriz de distancias obtenida usando la distancia euclídea entre vectores multidimensionales.
Como va a ocurrir a partir de ahora en el resto de matrices de distancia que vamos a ir obteniendo, se va a tratar de una matriz simétrica. Ésa es la razón por la que sólo hemos representado los elementos por debajo de la diagonal principal, ya que la otra mitad de la matriz presenta total simetría. La diagonal principal está formada por valores de máxima similitud, pues se trata de comparar una secuencia de notas con ella misma. En cuanto a los colores que aparecen en la matriz, como puede observarse en la barra vertical situada en el margen derecho, los tonos más cercanos al rojo indican valores de similitud bajos. Por el contrario, tonos cercanos al azul indican un grado de similitud muy alto, es decir, las melodías serán muy similares.
Máxima diferencia Máxima similitud Martinetes Deblas Deblas Martinetes
Por tanto, si observamos el resultado obtenido, a primera vista vemos como esta medida no es capaz de diferenciar un estilo del otro. Esto se manifiesta en el hecho de que no existen valores de similitud altos cuando se comparan dos interpretaciones del mismo palo, ni valores bajos cuando se comparan palos distintos.
La distancia euclídea se trata de una medida muy simple, y poco apropiada para el cálculo de similitud entre melodías, pues se está realizando una comparación nota a nota, mientras que estas entidades van a tener diferentes tempos, lo que provoca que esta medida no ofrezca ningún resultado de interés.
5.2. Coeficiente de correlación entre histogramas de notas.
A continuación, vamos a implementar el coeficiente de correlación entre histogramas de notas, que es un índice estadístico que indica la fuerza y la dirección de una relación lineal entre dos variables aleatorias.
En nuestro caso, las variables que vamos a comparar serán los histogramas de intervalos de notas. Para cada pieza musical, partiendo de su secuencia de intervalos de notas, se obtendrá el histograma que representa dichos intervalos. Es decir, vamos a almacenar la frecuencia, el número de veces que aparece en la melodía, cada valor de intervalo. En las Figuras 23.a y 23.b podemos ver un ejemplo representando a una melodía a partir de sus notas MIDI. Hemos calculado su secuencia de intervalos de notas, y a partir de él, su histograma.
Figura 23-a. Representación de una melodía como secuencia de notas.
Figura 23-b. Histograma generado a partir de la secuencia de intervalos de notas.
También podemos ver en la Figura 24 el aspecto que tienen dos histogramas de dos de las deblas pertenecientes al corpus. Se observa que los intervalos se concentran principalmente en torno al valor cero, lo que indicaría
Secuencia de notas: {68, 69, 72, 66, 67, 70, 73}
Secuencia de intervalos de notas:
que se han detectado una serie de notas consecutivas con el mismo valor, donde el intervalo valdría exactamente cero, así como otras donde el intervalo vale la unidad, con sentido positivo o negativo, es decir, la nota siguiente se diferencia de la actual en un solo semitono, ya sea ascendente o descendente.
Figura 24. Representación de dos histogramas de intervalos de notas para las deblas de A. Mairena y J. Almadén.
Una vez que hemos calculado los histogramas para todos los cantes que forman el corpus, el siguiente paso será calcular el coeficiente de correlación entre cada par de histogramas. Por tanto, vamos a medir cómo están correladas las distribuciones de intervalos, sin tener en cuenta el orden en que
aparecen (en el histograma sólo se considera la información relativa al número de apariciones, no al orden de cada una de ellas).
Para obtener ese valor de correlación, vamos a calcular el coeficiente de correlación de Pearson, que se define como el cociente entre la covarianza de los dos histogramas a analizar,σXY, y el producto de las desviaciones estándar de cada una de esos histogramas, σX y σY.
XY
X Y
r = σ
σ ⋅ σ
Para calcular el coeficiente de correlación de Pearson r, podemos hacer uso directamente de una función existente en Matlab que calcula dicho coeficiente sin tener que hacer los cálculos intermedios de la covarianza y las desviaciones estándar. Dicha función es corrcoef, y su sintaxis es la siguiente:
c = corrcoef(hist1, hist2); r = c(1,2);
Al llamar a la función corrcoef con dos variables como parámetros de entrada, genera a la salida una matriz 2x2 que contiene los valores de desviación estándar de cada variable en los elementos (1,1) y (2,2), y el valor de coeficiente de correlación en los elementos de la diagonal. Al tratarse de señales reales, este valor será el mismo al calcular la correlación entre hist1 e hist2 que al calcularla entre hist2 e hist1. Por tanto, tendremos esto en cuenta a la hora de calcular la correlación entre todos los pares de señales, pues habrá simetría en los resultados. Véase el archivo correlacion.m en el Anexo para más detalles.
El valor del índice de correlación r va a estar siempre en el rango [-1 +1]. Los posibles valores que puede tener se interpretan de la siguiente forma:
• Si r = 0, no existe ninguna correlación. El índice indica, por tanto, una independencia total entre las dos variables, es decir, que la variación de una de ellas no influye en absoluto en el valor que pueda tomar la otra.
• Si r = 1, existe una correlación positiva perfecta. El índice indica una dependencia total entre las dos variables denominada relación
directa: cuando una de ellas aumenta, la otra también lo hace en
idéntica proporción.
• Si 0 < r < 1, existe una correlación positiva.
• Si r = -1, existe una correlación negativa perfecta. El índice indica una dependencia total entre las dos variables llamada relación
inversa: cuando una de ellas aumenta, la otra disminuye en idéntica
proporción.
• Si -1 < r < 0, existe una correlación negativa.
Para nuestro análisis, tomaremos el valor absoluto de r. Cuanto más cercano esté el valor de r a 1, más similar será una melodía a la otra; por el contrario, cuanto más cercano esté a 0, más diferente serán ambas melodías.
Una vez realizado el análisis para todas las piezas, vamos a obtener una matriz de distancias que contiene todos los valores de similitud para todos los pares de piezas musicales que forman el corpus. En la Figura 25 se puede ver la matriz de distancias usando el coeficiente de correlación como medida de
similitud melódica. Para facilitar la visualización y obtener el resultado de una manera mucho más gráfica e intuitiva, vamos a asignar a cada número de la matriz un color.
Figura 25. Matriz de distancias usando el coeficiente de correlación como medida de similitud.
Como hemos dicho anteriormente, se trata de una matriz simétrica - ésta es la razón por la que sólo aparecen los elementos por debajo de la diagonal principal. Precisamente los elementos que forman la diagonal principal tienen valor exactamente igual a uno; esto es debido a que representan el valor de similitud melódica que obtenemos cuando comparamos una pieza con ella misma, valor que, como es lógico, se corresponde con el de una correlación
Máxima similitud Máxima diferencia Deblas Martinetes Martinetes Deblas
perfecta, igual a uno. Este comportamiento va a ser general para todas las matrices de distancias que generemos de aquí en adelante.
Si observamos la matriz con atención, podemos ver que los valores obtenidos cuando comparamos interpretaciones de la debla realizadas por diferentes cantaores son muy altos. Esto nos indica que el contorno melódico de todas las deblas es parecido, a pesar de las diferencias que pueda haber en el estilo de cada cantaor en concreto. Lo mismo podemos observar que ocurre cuando comparamos los valores de los martinetes que interpretan todos los cantaores; obtenemos valores altos, como era de esperar, lo que indica la similitud melódica existente entre todos ellos. Por el contrario, cuando comparamos una debla cualquiera con un martinete cualquiera, obtenemos valores de correlación bajos, salvo algunos casos aislados que comentaremos más adelante. Por tanto, a primera vista podemos concluir que el coeficiente de correlación entre histogramas de notas es una medida válida para discriminar un palo de otro. En cuanto al análisis particular de interpretaciones del mismo palo, será estudiado en un apartado posterior.
A pesar de tratarse de una medida relativamente simple y de bajo coste computacional, las singularidades de los cantes analizados, donde las diferencias entre notas consecutivas juegan un papel crucial en la identificación del cante, permiten que sea un método bastante eficaz y, a la vez, con un bajo coste computacional.
5.3. Distancia de edición.
La distancia de edición [45], también llamada distancia de Levenshtein, es un método usado normalmente en el ámbito de comparación de cadenas de caracteres. Generalizando, se define la distancia de edición (normalmente se usa su nombre en inglés, edit distance) entre dos secuencias como el número
mínimo de operaciones que necesitamos para pasar de una secuencia a la otra. Estas operaciones son inserción, omisión y sustitución de un carácter de la secuencia. Esta distancia se aplica cuando queremos conocer cuán similares son dos cadenas de caracteres, como puede ser el caso de correctores ortográficos (Figura 26). 1 Sustitución letra A -> U P L U N E T A 2 Omisión letra N P L U N E T A Secuencia origen: P L A N E T A 3 Omisión letra E P L U E T A 4 Sustitución letra A -> O P L U T O 5 Inserción letra N P L U T O N Secuencia destino: P L U T O N Distancia = 5
Figura 26. Distancia de edición entre dos secuencias de caracteres.
Se puede generalizar esta definición de distancia de edición mediante la introducción de las llamadas funciones de costo. Esto consiste en asignar un peso a cada una de las operaciones antes mencionadas. De esa forma, podremos penalizar ciertas operaciones, asignándoles una función de costo con un valor alto, o suavizar otras mediante la asignación de un valor bajo. En general, para la distancia de edición, los costos que se utilizan son:
• Costo = 0, cuando se trata de una coincidencia de carácter.
• Costo = 1, si se produce una sustitución de un carácter por otro.
Para implementar esta distancia, se usa un algoritmo conocido como
Programación Dinámica [38]. Dadas las dos secuencias de caracteres A = {a1, a2,…, am} y B = {b1, b2,…, bn}, de longitudes m y n respectivamente, se construye una matriz D de tamaño (m+1,n+1) de forma recursiva, donde el elemento dij representa la distancia entre las secuencias {a1, a2,…, ai} y {b1, b2,…, bj}. Tendremos que inicializar la primera fila y la primera columna de esa matriz, de la siguiente forma:
D(i,0) = i 0 ≤ i ≤ m D(0,j)= j 0 ≤ j ≤ n
La ecuación de recurrencia que utilizamos para ir calculando la matriz es de la forma:
dij = mínimo
La distancia entre las secuencias es el elemento dmn de la matriz que hemos generado. Para realizar este algoritmo de programación dinámica, la cantidad de operaciones requeridas es del orden de m x n. En la Figura 27 tenemos un ejemplo de cálculo de la distancia de edición entre dos cadenas de caracteres.
di-1,j + 1 di,j-1 + 1
di-1,j-1 + 0, si ai =bj di-1,j-1 + 1, si ai ≠bj
P L A N E T A 0 1 2 3 4 5 6 7 P 1 0 1 2 3 4 5 6 L 2 1 0 1 2 3 4 5 U 3 2 1 1 2 3 4 5 T 4 3 2 2 2 3 3 4 O 5 4 3 3 3 3 4 4 N 6 5 4 4 4 4 4 D=5
Figura 27. Cálculo de la distancia de edición usando programación dinámica.
En nuestro caso concreto, hay que tener en cuenta una serie de consideraciones, ya que estamos trabajando con secuencias de notas, no con secuencias de caracteres alfanuméricos. Al tratarse de melodías, hay que considerar que cada carácter representa una nota, y cada nota es una combinación de altura y duración. Tendríamos que definir por tanto una distancia de edición que tenga en cuenta esas dos dimensiones.
Además, sería interesante introducir una tolerancia a los errores que se hayan podido cometer en la fase de extracción automática; para remediar esto, vamos a introducir una tolerancia de un semitono. Esto quiere decir que dos intervalos de altura que se diferencien en un semitono serán considerados equivalentes para el cálculo de la distancia de edición. El motivo de elegir un semitono como máximo error permitido es porque los errores más usuales que se cometen durante la transcripción automática se deben a las aproximaciones realizadas durante la fase de ajuste de las alturas a la escala temperada.
También hay que tener en cuenta que en la música occidental, la altura permite mayor discriminación melódica que la duración, ya que existen más
combinaciones naturales de una secuencia de n alturas que de una secuencia de n duraciones [38].
Teniendo en cuenta estas consideraciones, si definimos ai a y bj a como los intervalos exactos de altura de las dos melodías a comparar, y ai d y bj d los intervalos de duración de esas melodías, el algoritmo que vamos a implementar, que también ha sido utilizado en el trabajo [39] para la búsqueda de música en bases de datos por melodía, viene dado por la siguiente recursividad:
dij = mínimo
A continuación vamos a ver qué representa cada uno de los valores presentes en la anterior ecuación recursiva, así como el valor que van a tomar en nuestro análisis:
• El costo de una inserción viene definido por i y va a tomar el valor unidad.
• La letra o representa el costo de una omisión, y también va a valer uno.
• Una sustitución tendrá un costo representado por la letra s, que también tomará el valor igual a uno.
• El costo de una coincidencia de duración y altura se representa por la letra c. En este caso, el costo tiene valor -1.
• Por último, el costo que tiene una sustitución de duración, que viene dado por sd, tomará un valor nulo.
di-1,j + i di,j-1 + o di-1,j-1 + s
di-1,j-1 + c, si aia −bja <2 y aid−bjd <2 di-1,j-1 + sd, si aia−bja <2
Como dijimos anteriormente, vamos a introducir una tolerancia de un semitono en los intervalos de altura. Esta tolerancia puede verse reflejada en la ecuación que define el algoritmo, cuando se introduce la condición aia−bja <2 para considerar una coincidencia de duración y altura o una sustitución de duración.
Siguiendo la metodología ya expuesta, y una vez que hemos definido el algoritmo para calcular la distancia de edición, se puede consultar en el archivo
editdistance.m del Anexo todo el código fuente correspondiente al cálculo de
esta distancia para cada par de melodías. Nuevamente, vamos a obtener una matriz de distancias, que vamos a representar con colores para facilitar su consulta en la Figura 28.
Figura 28. Matriz de distancias obtenida utilizando la distancia de edición como medida de similitud. Máxima diferencia Máxima similitud Deblas Martinetes Martinetes Deblas Martinetes
La matriz de distancias obtenidas con la distancia de edición discrimina bastante bien los martinetes, como puede observarse en la Figura 28, pues presenta valores de similitud altos cuando comparamos las diferentes interpretaciones de este palo. El principal inconveniente de esta medida es el elevado coste computacional que conlleva, que se pudiera convertir en inviable si aumentáramos considerablemente las dimensiones del corpus a analizar o la duración de cada una de las piezas. En ese caso, se podría realizar una aproximación mediante función escalón, como veremos en el apartado 7, con el objetivo de reducir la carga computacional empleada en la ejecución del algoritmo.
Quizás no se trate de una medida demasiado buena para discriminar un estilo de otro, pero sí podremos utilizarla para el análisis específico de un solo cante, pudiendo estudiar su evolución y las influencias ejercidas por algunos cantaores sobre otros. Esto se verá más detenidamente en el apartado de Análisis filogenético.
5.4. Dynamic Time Warping.
Este algoritmo de similitud melódica, conocido por sus iniciales DTW [56], se aplica cuando las dos secuencias que vamos a comparar pueden variar en tiempo o velocidad, es decir, cuando ambas secuencias tienen diferente longitud. Es muy utilizado en aplicaciones de reconocimiento automático de voz, donde el sistema puede recibir una misma palabra enunciada a diferentes velocidades [50].
En general, el funcionamiento del algoritmo se basa en la búsqueda de un camino óptimo de coincidencia entre dos secuencias con ciertas
restricciones. Las secuencias son transformadas no linealmente en el tiempo, de modo que son comprimidas o expandidas en el tiempo para que tengan el mismo largo, y así poder compararlas punto a punto.
Existen varias definiciones alternativas de este algoritmo. En concreto, nosotros vamos a utilizar la implementación realizada por Timothy Felty [65] para Matlab (véase el código fuente en el archivo dtw.m, incluido en el Anexo).
El algoritmo genera una matriz de distancias (usando en este caso la distancia euclídea) entre cada par de puntos que forman las dos secuencias de entrada. Sobre esa matriz, se busca un camino óptimo en el cual la suma de distancias sea la menor posible, cumpliendo los requisitos de continuidad y monotonicidad (no pueden existir vueltas atrás). En la Figura 29 podemos observar un ejemplo del funcionamiento del algoritmo.
Figura 29. Funcionamiento del algoritmo DTW (búsqueda del camino óptimo) [22].
En nuestro caso, las secuencias de entrada serán las dos melodías que queremos comparar. Se define una matriz con las distancias entre cada par de notas que forman ambas melodías, y mediante un algoritmo basado en
Programación Dinámica, se busca el camino que minimiza esa suma de
distancias. Ese camino óptimo es el que define de alguna manera cómo deben ser transformadas las secuencias de entrada, comprimiéndose o expandiéndose, para que presenten el mejor ajuste posible y así se suavice el efecto introducido por el hecho de que las melodías tengan diferente velocidad.
En la Figura 30 podemos ver la matriz de distancias generada cuando usamos como medida de similitud melódica el algoritmo DTW.
Figura 30. Matriz de distancias obtenida con el algoritmo DTW.
El uso del algoritmo DTW supone un coste computacional mayor que las medidas de similitud anteriormente estudiadas, el coeficiente de correlación y la distancia de edición. Además, como puede observarse en la matriz de distancias de la Figura anterior, no parece discriminar un estilo del otro. Sin embargo, como veremos en el siguiente apartado, parece ofrecer unos resultados coherentes cuando analizamos las interpretaciones de un mismo palo por separado.
Máxima diferencia Máxima similitud Deblas Martinetes Deblas Martinetes