SlideShare uma empresa Scribd logo
1 de 60
Baixar para ler offline
Ingeniería Técnica en Informática de Sistemas
Escuela Superior de Ciencias Experimentales y Tecnología
Curso académico 2004-2005
Grupo de Algorítmica aplicada a la Visión Artificial y la Biometría
Proyecto Fin de Carrera
Segmentación y búsqueda de patrones
en partituras musicales
Autor: José Ignacio Pérez Alcocer
Tutores: Ángel Sánchez Calle
Juan José Pantrigo Fernández
Dedicado a mis familiares y amigos,
por el apoyo y ayuda incondicional
prestada a lo largo de la carrera;
y a la memoria de todas aquellas
personas queridas que ya no están
entre nosotros.
página 1
Agradecimientos
Agradezco la colaboración prestada por los miembros del Grupo de Algorítmica aplicada a la
Visión Artificial y la Biometría, especialmente a mis tutores, Juan José Pantrigo Fernández y Ángel
Sánchez Calle. Muchas gracias a ambos por el interés que han demostrado y por la ayuda prestada.
Sin sus aportaciones y colaboración, este proyecto no hubiera sido posible.
Igualmente agradezco la ayuda prestada por todos mis compañeros, y a la par amigos, durante los
años que he cursado la carrera de Ingeniería Técnica en Informática de Sistemas.
página 2
Índice general
1. Introducción 7
1.1 Objetivos ................................................................................................................................ 7
1.2 Herramientas .......................................................................................................................... 8
1.2.1 MATLAB ....................................................................................................................... 9
1.2.2 Escaner ........................................................................................................................... 10
1.2.3 GIMP ............................................................................................................................. 10
1.2.4 Partituras ........................................................................................................................ 10
1.3 Grupo de Algorítmica aplicada a la Visión Artificial y la Biometría ............................. 11
1.4 J.S Bach ................................................................................................................................... 11
2 Sistemas OMR 14
2.1 Introducción a los sistemas OMR ...................................................................................... 14
2.2 Estado de los sistemas OMR ............................................................................................... 15
2.2.1 Detección de las líneas del pentagrama ..................................................................... 15
2.2.2 Segmentación de elementos musicales ...................................................................... 15
2.2.3 Análisis de la imagen segmentada .............................................................................. 16
3 Metodología desarrollada 17
3.1 Preproceso de la imagen ...................................................................................................... 17
3.2 Identificación de compases .................................................................................................. 18
3.3 Búsqueda de notas ................................................................................................................ 20
3.4 Tono y duración .................................................................................................................... 22
4 Descripción informática 27
4.1 Implementación ..................................................................................................................... 28
4.1.1 buscar_patron_notacion_diferencial ......................................................................... 28
4.1.2 buscar_patron_notacion_estandar ............................................................................. 28
4.1.3 buscar_patron_duracion .............................................................................................. 29
4.1.4 analizar ........................................................................................................................... 29
4.1.5 preproceso ..................................................................................................................... 29
página 3
4.1.6 eliminar_ruido ............................................................................................................... 30
4.1.7 separar_sistemas ........................................................................................................... 30
4.1.8 separar_pentagramas .................................................................................................... 30
4.1.9 trocear_compases ......................................................................................................... 30
4.1.10 maximos_locales ......................................................................................................... 31
4.1.11 amplitud_picos ............................................................................................................ 31
4.1.12 histograma ................................................................................................................... 31
4.1.13 vhist .............................................................................................................................. 31
4.1.14 buscar ........................................................................................................................... 31
4.1.15 buscar_candidatos ...................................................................................................... 32
4.1.16 eliminar_candidatos_consecutivos .......................................................................... 32
4.1.17 aplicar_masacara ......................................................................................................... 32
4.1.18 convertir ....................................................................................................................... 32
4.1.19 buscar_subsecuencia .................................................................................................. 33
4.2 Uso .......................................................................................................................................... 33
5 Resultados experimentales 37
6 Conclusiones y líneas futuras 47
6.1 Conclusiones .......................................................................................................................... 47
6.2 Líneas futuras ......................................................................................................................... 48
BIBLIOGRAFÍA 49
ANEXO I: Glosario de términos musicales utilizados en el proyecto 50
ANEXO II: Partituras utilizadas 53
página 4
Índice de figuras
Figura 1.1. Retrato de J.S Bach ....................................................................................................... 13
Figura 3.1. Imagen de la partitura original .................................................................................. 18
Figura 3.2. Imagen de la partitura preprocesada ........................................................................ 18
Figura 3.3. Proyección horizontal de la imagen de la figura 3.1 ............................................... 19
Figura 3.4. Pentagrama .................................................................................................................... 19
Figura 3.5. Proyección vertical de la imagen de la figura 3.4 .................................................... 20
Figura 3.6. Proyección horizontal de un compás ........................................................................ 21
Figura 3.7. Pistas virtuales trazadas sobre el compás de la figura 3.6 ....................................... 21
Figura 3.8. Máscara empleada para efectuar las comparaciones ............................................... 22
Figura 3.9. Detección de notas de un compás ............................................................................. 22
Figura 3.10. Compás ........................................................................................................................ 23
Figura 3.11. Adquisición de imágenes ........................................................................................... 24
Figura 3.12. Preprocesado y segmentación de la partitura ......................................................... 25
Figura 3.13. Segmentación y detección de notas ......................................................................... 26
Figura 4.1. Desarrollo en espiral ..................................................................................................... 27
Figura 4.2. Icono del programa MATLAB ................................................................................... 33
Figura 4.3. Ventana principal de MATLAB ................................................................................. 34
Figura 4.4. Inserción de un comando en MATLAB ................................................................... 35
Figura 4.5. Cuadro de diálogo que permite la selección de la partitura a analizar .................. 35
Figura 4.6. Cuadro de diálogo que permite establecer el patrón de búsqueda ........................ 36
Figura 4.7. Message Box que advierte al usuario de que no se han encontrado coincidencias. 36
página 5
Índice de tablas
Tabla 2.1. Comparación de porcentajes de éxito en el reconocimiento de una serie de
partituras ........................................................................................................................ 14
Tabla 5.1. Estadísticas del análisis de la partitura 1 de la Invención 5 ...................................... 37
Tabla 5.2. Estadísticas del análisis de la partitura 1 de la Invención 5 ..................................... 38
Tabla 5.3. Estadísticas del análisis de la partitura 2 de la Invención 5 ..................................... 38
Tabla 5.4. Estadísticas del análisis de la partitura 2 de la Invención 5 ..................................... 40
Tabla 5.5. Estadísticas del análisis de la partitura 1 de la Invención 8 ..................................... 40
Tabla 5.6. Estadísticas del análisis de la partitura 1 de la Invención 8 ..................................... 41
Tabla 5.7. Estadísticas del análisis de la partitura 2 de la Invención 8 ..................................... 41
Tabla 5.8. Estadísticas del análisis de la partitura 2 de la Invención 8 ..................................... 43
Tabla 5.9. Estadísticas del análisis de la partitura 1 de la Invención 10.................................... 43
Tabla 5.10. Estadísticas del análisis de la partitura 1 de la Invención 10 ................................. 44
Tabla 5.11. Estadísticas del análisis de la partitura 2 de la Invención 10 .................................. 44
Tabla 5.12. Estadísticas del análisis de la partitura 2 de la Invención 10 ................................. 45
página 6
1. Introducción
1.1. Objetivos
El objetivo de este proyecto es el desarrollo de una herramienta semiautomática para la
segmentación de partituras musicales, para extraer de éstas la mayor información posible
(pentagramas, compases y duración y tono de las notas incluidas en la partitura en éste caso). Se
incide en la consideración de la herramienta como semiautomática, puesto que a día de hoy, no hay
ningún software que de forma automática asegure la completa corrección de los resultados, y se
requiere de un segundo análisis por parte de otro agente (software o humano) que garantice la
veracidad de los resultados.
La segmentación y análisis de la partitura es una tarea propia de los sistemas OMR (Optical Music
Recognition), de los que hablaremos en posteriores secciones. Una vez procesada la imagen, un
segundo objetivo es obtener líneas melódicas (patrones musicales) en partituras barrocas, más en
concreto de la música de J. S. Bach.
El método elegido para el análisis es un conglomerado de las propuestas de diversos autores de
artículos sobre los sistemas OMR y de ideas de aportación propias del alumno y los tutores de éste.
Para lograr los objetivos propuestos, se ha desarrollado una serie de funciones en MATLAB1
que
nos proporcionarán la información que deseamos obtener de las partituras. En primer lugar se
realiza un preproceso sobre las imágenes digitalizadas de las partituras. Dicho preproceso consiste
básicamente en la eliminación de información innecesaria (tales como el título de la partitura y el
número de página), y la transformación en una imagen binaria (la imagen original se encuentra en
un formato de niveles de grises). Posteriormente, se procede a desglosar la información contenida
en dicha imagen. En sucesivos pasos, se identifican los sistemas de pentagramas para acto seguido
realizar la obtención individual de cada pentagrama, los compases que conforman dichos
pentagramas y, en última instancia, obtener duración y tono (en el orden adecuado) de las notas de
todos los compases. Finalmente, se permite al usuario realizar la búsqueda del patrón musical que
desee.
El objetivo final de este proyecto ha sido el d e sarro llo de un siste m a se m iau to m áti c o c apaz de
rec o no c e r un patrón m eló dic o establecido por el usuario de dicho sistema. Este objetivo se ha
articulado en los siguientes objetivos operativos:
1 Copyright The Math Works, Inc.
página 7
• Documentación: los tutores suministraron al alumno una serie de artículos relacionados con los
sistemas OMR y sus metodologías; de este modo el alumno se pone al día de la problemática de
estos sistemas, las diversas metodologías propuestas para abordar el problema tratado, etc.
• Aprendizaje de la herramienta MATLAB: el alumno consultó una serie de documentos, también
proporcionados por los tutores, para adquirir los conocimientos básicos para poder trabajar con
esta herramienta. Dada la similitud existente entre la sintaxis que se emplea en MATLAB y otros
lenguajes de alto nivel, como por ejemplo CC++ o Java, la facilidad para la manipulación de
objetos y matrices, y el haber trabajado con MAPLE previamente, hizo que este proceso no
requiriese de la inversión de mucho esfuerzo por parte del alumno.
• Preprocesado de la imagen: el primer paso, previo al proceso de análisis de una partitura,
consiste en obtener una imagen libre de información irrelevante (como por ejemplo, el título de
la partitura o el número de página del libreto), en un formato que computacionalmente sea más
manejable (una imagen binaria ocupa menos espacio en memoria y disco que la misma imagen
en niveles de grises), y que facilite su posterior análisis (una imagen de una partitura con una
cierta rotación influye notablemente en la complejidad del análisis, y requiere de otra posterior
tarea de procesado que corrija ese defecto de la imagen).
• Segmentación de la imagen: sobre la imagen preprocesada, se procede a la extracción de los
componentes de la partitura. La descomposición de los elementos de la partitura se realiza según
este orden: en primer lugar, se localizan los sistemas, posteriormente, los pentagramas y,
finalmente, los compases. Se parte de la identificación de unidades estructurales más complejas,
para llegar a las unidades mínimas analizables.
• Establecer la secuencia de notas que conforman el compás: sobre cada uno de los compases que
en su conjunto constituyen una determinada partitura, se procede a identificar las notas en él
contenidas.
• Búsqueda de patrones: sobre la información obtenida en el anterior objetivo operativo, se
procede a efectuar las búsqueda del patrón melódico elegido por el usuario.
1.2. Herramientas
En esta sección se enumeran las herramientas (tanto software como hardware) empleadas en este
proyecto, realizando una breve descripción de las mismas.
página 8
1.2.1. MATLAB
MATLAB (Matrix LABoratory) es un lenguaje desarrollado para el cómputo técnico. Integra tareas
de computación, visualización, y programación en un entorno amigable donde tanto los problemas
como las soluciones se expresan en una notación matemática familiar.
Dentro de la clasificación de los lenguajes de programación, MATLAB se puede considerar dentro
del grupo de los lenguajes interpretados (del que, por ejemplo, también forma parte MAPLE2). Su
característica fundamental es que es un lenguaje especializado en la manipulación de matrices,
aunque las versiones más recientes del lenguaje permitan de una manera restringida la definición de
nuevos tipos abstractos de datos.
La elección de este entorno de programación es debida a la facilidad que ofrece en el manejo de
imágenes, puesto que éstas son tratadas como matrices de datos y MATLAB ofrece una gran
cantidad de funciones que nos facilitan su manipulación. Otro factor determinante en esta elección
es la posibilidad de utilizar la Image Procesing Toolbox. La toolbox de procesamiento de imágenes es
una colección de funciones (librería) que extienden la capacidad del entorno de desarrollo numérico
de MATLAB. Esta librería soporta un amplio rango de operaciones de procesamiento de imágenes,
incluyendo:
 Transformaciones espaciales de imagen
 Operaciones morfológicas
 Operaciones de bloques y vecinos
 Diseño de filtros y filtrados lineales
 Transformadas en el dominio de la frecuencia
 Análisis de imagen y realzado
 Operaciones sobre regiones de interés
Otra característica interesante es la similitud de la sintaxis con la de algunos lenguajes de
programación de alto nivel, tales como C/C++ o Java.
Para obtener más información, nos podemos dirigir a la página web oficial del producto,
http://www.mathworks.com, o bien consultar la herramienta de ayuda adjunta.
Reseñar que la versión del producto sobre la que se han desarrollado las funciones es la
6.5.0.180913 Release 13, publicada el 18 de junio de 2002. Se comenta esta particularidad debido a
que hay pequeñas incompatibilidades con versiones anteriores del software, como por ejemplo, la
limitación del tamaño de los identificadores de funciones.
2 Copyright Maplesoft, division of Waterloo Maple Inc.
página 9
1.2.2. Escáner
Un escáner es un periférico de sólo entrada que nos permite llevar a cabo la digitalización de
imágenes. Por digitalización se entiende la operación de transformar un objeto analógico (algo
físico, real, de precisión infinita) en un objeto digital (un conjunto finito y de precisión determinada
de unidades lógicas denominadas bits).
El proceso de captación de una imagen resulta casi idéntico para cualquier escáner: se ilumina la
imagen con un foco de luz, se conduce mediante espejos la luz reflejada hacia un dispositivo
denominado CCD (Charge Coupled Device, dispositivo acoplado por carga -eléctrica-) que transforma
la luz en señales eléctricas, se transforma dichas señales eléctricas a formato digital en un DAC
(conversor digital-analógico) y se transmite el caudal de bits resultante al ordenador.
En este caso, se ha empleado el escáner para digitalizar las partituras contenidas en un libreto
musical. Las imágenes resultantes tienen una resolución de 1600x2400 ppp (puntos por pulgada), y
un tamaño aproximado de 1,6 MB, en formato jpeg (Joint Photographic Experts Group, un formato con
soporte de 24 bits y una alta compresión, que han hecho de este un estándar para la publicación de
imágenes en la Web).
1.2.3. GIMP
GIMP (GNU Image Manipulation Program) es un programa extremadamente potente y versátil,
empleado en tareas de retoque fotográfico y creación y diseño de imágenes. Se trata de un
programa de libre distribución (bajo licencia GPL, licencia de uso público y general ), totalmente
gratuito, y disponible en varios sistemas operativos y en diversos idiomas.
Este programa se ha empleado para retocar las imágenes digitalizadas de las partituras. Con este
software se ha reducido el tamaño de las imágenes (originalmente el tamaño de la imagen escaneada
es, en media, de unos 1,6 MB, y tras ser procesada el tamaño de la imagen es de unos 500 KB) para
que estas sean manejadas con mayor eficiencia en MATLAB, y se han realizado unas pequeñas
correcciones en las imágenes adquiridas mediante el escáner. Dichas correcciones consisten
básicamente en pequeñas rotaciones de la imagen, entre los +0,25º y +1º, para evitar realizar
operaciones más complejas en las funciones de preprocesado de la imagen, como es la corrección
del ángulo de las partituras.
1.2.4. Partituras
Las partituras utilizadas han sido extraídas de un libreto de partituras de J.S Bach editado por Real
Musical. Se tratan de unas partituras estándar, de tamaño A4, disponibles en el Anexo II de este
documento.
página 10
1.3. GAVAB
El Grupo de Algorítmica aplicada a la Visión Artificial y la Biometría, con sede en el edifico
departamental 2 del campus de Móstoles, está formado por formado por profesores y alumnos
cuyos intereses giran entorno a las siguientes líneas de investigación:
 Visión artificial
• Técnicas de segmentación de imágenes
• Procesamiento borroso de imágenes
• Procesamiento de altas prestaciones de imágenes
• Procesamiento de vídeo en tiempo real
 Reconocimiento biométrico
• Análisis de documentos
• Verificación de firmas
• Modelado y reconocimiento de caras en 3D
• Análisis de movimiento humano
 Otras líneas
• Software pipelining para algoritmos en DSP
• Técnicas de planificación en grafos
• Metaheurísticas
• Computación Ubicua
Para obtener más información sobre este grupo, se puede visitar la siguiente página web:
http://gavab.escet.urjc.es/.
1.4. J.S Bach
Puesto que este proyecto se basa sobre una pequeña parte de la obra de Johann Sebastian Bach, se
realizará una reseña biográfica sobre este afamado organista y compositor alemán del periodo
barroco, así como una pequeña descripción de las características de sus composiciones.
Bach nació el 21 de marzo de 1685 en Eisenach, Turingia, en el seno de una familia que durante
siete generaciones dio origen, al menos, a 53 músicos de importancia, desde Veit Bach hasta
Wilhelm Friedrich Ernst Bach.
Bach comenzó a ganarse la vida como miembro del coro de la iglesia de San Miguel, en Lüneburg.
Posteriormente pasó a ser violinista de la orquesta de cámara del príncipe Johann Ernst de Weimar,
pero más tarde, se fue a Arnstadt, donde se convirtió en organista de iglesia. Bach estudió durante
un breve periodo con Dietrich Buxtehude, renombrado organista y compositor danés, cuya música
influyó enormemente en Bach.
página 11
En 1707 se casó con María Bárbara Bach, prima segunda suya. Durante los siete años siguientes,
compuso unas 30 cantatas, incluida la conocida cantata de funeral Gottes Zeit ist die allerbeste Zeit (El
tiempo de Dios es el mejor), y también compuso obras para órgano y clavicémbalo. Comenzó a
viajar por Alemania como virtuoso del órgano y como asesor de organeros.
En 1717 Bach comenzó a trabajar como maestro de capilla y director de música de cámara en la
corte del príncipe Leopoldo de Anhalt-Köthen. Durante este periodo escribió fundamentalmente
música profana para conjuntos instrumentales e instrumentos solistas. También compuso libros de
música para su mujer e hijos, con el objeto de enseñarles la técnica del teclado y el arte de la música
en general. Estos libros incluyen el Clave bien temperado, las Invenciones (de las cuales forman
parte las partituras sobre las que se ha trabajado en este proyecto) y el Pequeño libro de órgano.
En1720, Bach se casó con Ana Magdalena Wilcken, cantante e hija de un músico de la corte que le
dio trece hijos, además de los siete que había tenido con su anterior mujer.
Bach se trasladó a Leipzig en 1723, donde permaneció el resto de sus días, trabajando como
director musical y jefe de coro en la iglesia de Santo Tomás y en la escuela eclesiástica de Leipzig.
Bach comenzó a quedarse ciego el último año de su vida, y murió el 28 de julio de 1750, después de
someterse a una fallida operación ocular.
Tras su muerte, fue recordado más como virtuoso del órgano y el clavicémbalo que como
compositor. Sus frecuentes giras le habían asegurado una reputación como gran organista de su
tiempo, pero el estilo contrapuntístico de sus composiciones sonaba anticuado para sus
contemporáneos, quienes preferían los nuevos estilos preclásicos, que eran más homofónicos y
menos contrapuntísticos que la música de Bach y que se estaban poniendo de moda.
Debido a ésto, durante los 80 años siguientes, su música fue rechazada por el público, a pesar de la
admiración que le profesaban ciertos músicos como Wolfgang Amadeus Mozart y Ludwig van
Beethoven. El resurgimiento del interés por su música se produjo a mediados del siglo XIX. El
compositor alemán Félix Mendelssohn preparó una audición de la Pasión según San Mateo en
1829, lo cual facilitó el nacimiento de un nuevo interés por Bach. La Bach Gesellschaft surgió en
1850 a fin de encontrar, editar y publicar los trabajos de Bach.
Como este "renacimiento" de Bach coincidió con el florecimiento del romanticismo musical, los
estilos utilizados para interpretarlo fueron a menudo distorsiones de lo que Bach pretendía en
realidad. Sin embargo, la escuela musical del siglo XX, inspirada por el entusiasmo de Albert
Schweitzer, misionero protestante francés, médico, organista y musicólogo, ha ido estableciendo
unos principios de interpretación más próximos a la época de Bach y a su música.
Bach fue, en buena medida, autodidacta en lo que se refiere a la composición musical. Siguiendo la
costumbre de su época, su principal método de estudio consistía en copiar en un cuaderno la
música de compositores franceses, alemanes e italianos de su tiempo o anteriores a él. Hizo esto
durante toda su vida y con frecuencia realizó arreglos sobre los trabajos de otros compositores.
La trascendencia de la música de Bach se debe, en gran parte, al alcance de su intelecto. Es
conocido como el maestro supremo del contrapunto. Era capaz de entender y usar cualquier tipo
página 12
de recurso musical existente en el barroco. Si quería, podía combinar en una misma composición
los esquemas rítmicos de las danzas francesas, la dulzura de las melodías italianas y el rebuscado
estilo contrapuntístico alemán.
Al mismo tiempo, podía escribir para voz y para diversos instrumentos sacando el máximo partido
de las propiedades de construcción y afinación de cada uno de ellos. Su capacidad para explotar y
valorar los recursos, estilos y géneros musicales le permitió introducir importantes cambios de
lenguaje instrumental. Así por ejemplo, podía tomar una composición italiana para varios
instrumentos, como un concerto para violín, y transformarla en una obra para címbalo solo.
Mediante el estudio de intrincadas líneas melódicas, era capaz de reducir la compleja estructura de
una fuga a varias voces y adaptarla para un instrumento como el violín o el violonchelo. Los juegos
de preguntas y respuestas, y las dispersas texturas de los recitativos operísticos, se pueden encontrar
en algunas de sus obras para tecla. La grandeza de Bach no se debió, por supuesto, sólo a su
facilidad técnica. Es la expresividad de su música, presente sobre todo en sus trabajos vocales, lo
que transporta y transmite su humanidad, y conmueve a quienes la escuchan.
Figura 1.1. Retrato de J.S Bach.
página 13
2. Sistemas OMR
2.1. Introducción a los sistemas OMR
El objetivo de los sistemas OMR (Optical Music Recognition, reconocimiento óptico de música) es el
pleno reconocimiento automático de todas aquellas características básicas musicales, como pueden
serlo la duración y tono de las notas contenidas en toda partitura. El objetivo es la conversión de la
música impresa (e incluso en algunos casos, manuscrita) en una descripción computacional de las
primitivas musicales. Teniendo la representación musical de la partitura en una representación
adecuada para el ordenador se podrán realizar otras tareas de análisis y tratamiento de la
información.
Las investigaciones en el campo de los sistemas OMR tienen sus orígenes en los primero años de la
década de los 70. Prereau[12 ] fue el primero en presentar un programa que reconocía un conjunto
de símbolos musicales básicos. Matsushima[13] desarrolló un sistema en tiempo real de visionado
musical que era capaz de reconocer una partitura de una nana en un tiempo de unos 15 segundos.
Más recientemente, Roach[14] detalló los principios de un sistema experto en el que una base de
conocimiento musical era aplicada para extraer algunas propiedades primitivas de una imagen
digitalizada de una partitura manuscrita.
En la actualidad, no se ha logrado desarrollar ningún sistema capaz de proporcionarnos con total
fiabilidad la información contenida en una partitura musical (véase la tabla 2.1, obtenida de [2]), lo
cual es índice de la complejidad del desarrollo de un sistema de estas características. Algunos
programas comerciales que implementan un sistema OMR son los siguientes: MIDISCAN,
NoteScan, Solero.
Tabla 2.1. Comparación de porcentajes de éxito en el reconocimiento de una serie de partituras.
Partitura Símbolos Índice de reconocimiento (%)
Método Lemon MIDISCAN NoteScan
Magnificant 239 99 84 88
Canon in D 206 99 88 73
Concerto No. 1 247 95 98 94
Poloverzian Dance 281 98 93 86
The Entertainer 233 94 99 64
Für Elise 534 99 96 83
Moonlight Sonata 179 96 96 74
Sonata in C Major 256 99 65 88
The Four Seasons 264 81 84 79
Antiphonae Marianae 214 80 87 90
página 14
2.2. Estado del arte de los sistemas OMR
Como se comentó en la introducción, la metodología seguida para el desarrollo de este sistema
OMR es un compendio de las ideas expuestas en algunos artículos sobre el tema y de las ideas
aportadas por los tutores y alumno.
Cada autor propone una metodología propia, pero la mayoría de los sistemas analizados
concuerdan en una serie de pasos, que serán descritos a continuación.
2.2.1. Detección de las líneas del pentagrama
La detección de las líneas de los pentagramas, o staff lines,es considerado por la mayoría de los
autores como el paso preliminar para afrontar las posteriores tareas de reconocimiento. En los
sistemas más complejos, en primer lugar se analizan los ángulos de inclinación de los pentagramas
para rotar las partituras (en caso de que sea necesario), ya que un ángulo de inclinación puede influir
muy negativamente en la identificación de la información. En nuestro caso se ha procurado tener
sumo cuidado a la hora de realizar la digitalización de las imágenes para evitar tener que realizar las
complejas operaciones de rotado de la imagen, y en el caso de que se mantengan dichos errores,
mediante un software de tratamiento de imágenes se realiza dicha corrección.
Puesto que las líneas de los pentagramas intersectan con la mayoría de los símbolos contenidos en
los compases, su presencia puede llegar a dificultar posteriores tareas. Por ello, en un alto
porcentaje de los métodos se opta por identificar las líneas, empleando la transformada de Hough
en la mayoría de los casos (con el consiguiente consumo de recursos debido a la complejidad de
dicha función), para obtener las ecuaciones de las rectas de la imagen, y posteriormente eliminar las
rectas. Otro método para la detección de las staff lines (usado en este proyecto) consiste en el análisis
de la proyección horizontal de la imagen. El histograma resultante es muy característico, puesto
que se observa claramente los picos generados por la concentración de píxeles que conforman las
líneas.
En este tipo de sistemas siempre se puede regresar a los resultados obtenidos en los pasos
anteriores, por lo que la eliminación de parte de la información no supone ningún inconveniente ya
que en cualquier momento podemos recuperar los datos previos.
2.2.2. Segmentación de elementos musicales
Una vez eliminadas las staff lines, en la partitura permanecen símbolos aislados que han de ser
identificados. Estos símbolos pueden ser notas musicales, caracteres (generalmente numéricos y
para cuyo reconocimiento se puede hacer uso de un motor OCR, Optical Carácter Recognition) o
elementos decorativos de la partitura. Puesto que, en esencia, sólo interesa la información musical,
se procura aislar los caracteres y otras misceláneas, considerándolo como ruido.
página 15
Es en esta etapa donde más divergencia existen entre los métodos empleados por los diversos
autores. La mayor parte de éstos optan por realizar una búsqueda de las componentes conexas
(usando grafos de adyacencias de líneas, LAG, principalmente). Una vez elaborado el grafo (y
optimizado para su manipulación) se procede al estudio de cada una de las componentes conexas
para establecer las características. Otra alternativa es el uso de máscaras (comparación de patrones),
que será el método que elegiremos debido a su mayor simplicidad. En algunos casos, se emplean
conjuntamente ambos métodos.
El formato de las partituras se tiene en cuenta para la identificación de la información. Hay algunas
características comunes en toda partitura, como por ejemplo, la ubicación de las claves, que siempre
aparecen en el lado izquierdo del primer compás de un pentagrama. El uso de bases del
conocimiento musical simplifica el proceso de segmentación.
2.2.3. Análisis de la imagen segmentada
Una vez identificados los elementos que componen la partitura, la siguiente etapa consiste en
asignar una cierta nomenclatura que permita establecer la relación entre la partitura original y la
representación computerizada de la misma.
La información debe estar en un formato que pueda ser manejada por cualquier agente, ya sea un
usuario u otro programa informático.
En la mayoría de los artículos estudiados, no se propone ningún criterio para expresar en una
notación musical los resultados, puesto que simplemente se limitan a la descripción de las etapas
anteriores. Se ha optado por elegir la codificación propuesta en el artículo [11]. Dicha codificación
se basa en la duración de la nota (negra, corchea, semicorchea, …) y el tono (codificado mediante
un valor numérico), y será descrita más en detalle en posteriores secciones.
página 16
3. Metodología desarrollada
En esta sección se explicará, sin profundizar en los detalles de implementación, la metodología
seguida para realizar el análisis de las partituras musicales digitalizadas.
3.1. Preproceso de la imagen
El primer paso consiste en el preprocesamiento de la imagen. En este proceso se lleva a cabo el
binarizado de la imagen y la eliminación de información innecesaria. Como ya se comentó en
anteriores secciones, previamente se realizó mediante un software de tratamiento de imágenes unas
pequeñas correcciones sobre las partituras escaneadas. Dichas modificaciones consisten en rotar las
imágenes unas décimas de grado para facilitar posteriores tareas. Si dicha corrección se realizara
mediante funciones en MATLAB, se convertiría en un proceso más complejo. También se lleva a
cabo una reducción del tamaño de las imágenes, reduciendo el tamaño que éstas ocupan en disco,
pasando de 1,6 MB a unos 500 KB. De esta forma, el manejo de las imágenes en MATLAB será
más eficiente y consumirá menos recursos.
Para llevar a cabo el paso de la imagen de una escala de grises (256 colores) a una imagen binaria, en
primer lugar se calcula el umbral a partir del cuál un valor de gris será considerado como blanco o
negro en la representación binaria. Carece de sentido el considerar como blancos en la imagen
binaria todos aquellos valores que queden por debajo de la mitad de la escala de grises y como
negro los valores que queden por encima de la media, ya que ello acarrea la pérdida de información.
El cálculo de dicho umbral se realiza empelando el método de Otsu[10], que elige un umbral para
reducir al mínimo la variación de los rangos en los que un pixel será considerado como negro o
blanco en la imagen binaria resultante.
Una vez calculado el umbral y transformada la imagen original en una representación binaria de la
misma, se procede a eliminar la información innecesaria que aparece en la partitura (como por
ejemplo, el número de página, y el título, que a efectos prácticos resultan irrelevantes). Para esto es
necesario realizar un estudio previo de la morfología de la proyección horizontal del conjunto de la
partitura. De dicho estudio se observa que la información superflua se encuentra en una zonas
determinadas de la partitura, concretamente en la cabecera y el pie de la partitura. Mediante un
método de discriminación de estas zonas, se puede considerar como concluido esta primera fase.
Sobre esta imagen resultante del preproceso se realizarán las posteriores tareas.
En las figuras 3.1. y 3.2. se aprecia el resultado del procesado de la imagen original.
página 17
Figura 3.1. Imagen de la partitura original. Figura 3.2. Imagen de la partitura preprocesada.
3.2. Identificación de los compases
El segundo paso consiste en identificar de algún modo todos los compases que conforman la
partitura sobre la que se trabaja. Esto se consigue mediante sucesivos refinamientos en el análisis de
la imagen binaria resultante del preproceso.
En primer lugar se detectan los sistemas (o pares de pentagramas) de la partitura. Para ello, nos
basamos nuevamente en la esclarecedora morfología de la proyección horizontal de la partitura
(véase figura 3.3).
Se aprecia claramente las zonas en las que se encuentran los pares de pentagramas, separadas entre
sí por unas zonas prácticamente llanas, indicadoras de la ausencia de contenido. Una vez obtenidas
las coordenadas de los sistemas (almacenadas en un vector de estructuras que guardan los vértices
de los rectángulos que acotan dichos sistemas), se prosigue en la tarea de detección de los
compases.
página 18
Figura 3.3. Proyección horizontal de la imagen de la figura 3.1.
A continuación se procede a la división de los pares de pentagramas. Esta división también se lleva
a cabo en función de los resultados de la proyección horizontal. Como se observa en la figura 3.3,
en la que cada pico (y su entorno) se corresponde con un pentagrama, hay una pequeña zona de
separación entre un pentragrama y el siguiente. Basándonos en dicha separación, puede establecerse
el rectángulo que delimita a un determinado pentragrama. En algunos casos, esta separación no es
tan clara como se muestra en la figura. En dichas excepciones se procede a una división equitativa
del área que encierra a los pentagramas.
Para establecer las coordenadas que identifican a los compases de la partitura, se analiza la
proyección vertical de los pentagramas obtenidos anteriormente.
Figura 3.4. Pentagrama.
página 19
Figura 3.5. Proyección vertical de la imagen de la figura 3.4.
Como se puede apreciar en la figura 3.5, es fácil identificar las barras de separación de los compases
de un pentagrama (en este caso, el de la figura 3.4.). Descartando los picos generados por los
extremos del pentagrama, se obtienen con facilidad los puntos de separación de compases.
Una vez localizados estos elementos, se guardan en un vector de estructuras que alberga los vértices
de las ventanas que delimitan a cada uno de los compases de la partitura sobre la que se trabaja.
3.3. Búsqueda de notas
Esta fase es la más compleja, debido al mayor consumo de recursos (y tiempo) derivado de las
constantes y continuas exploraciones que se realizan sobre cada uno de los compases en búsqueda
de las notas musicales.
En primer lugar, se van a “trazar” una serie de pistas virtuales en el compás sobre las que
posteriormente se desplazará una máscara de la cabeza de una nota musical. El uso de dichas pistas
se justifica por los siguientes motivos: 1) eficiencia: en lugar de recorrer una a una las posiciones de
la matriz que contiene la imagen correspondiente al compás, sólo se buscarán las notas en unas
determinadas filas en las que la probabilidad de hallar una nota es mayor, puesto que la disposición
de las notas en un compás está limitada; y 2) mayor facilidad para asignar posteriores valores a las
página 20
posibles notas detectadas. Obviamente, algunas de estas pistas virtuales coinciden con las líneas del
pentagrama.
Para elegir estas pistas, nuevamente nos apoyamos en los resultados de la proyección horizontal del
compás (figura 3.6).
Figura 3.6. Proyección horizontal de un compás.
Como referencia para establecer las pistas elegiremos la línea superior del pentagrama. Para trazar
las demás pistas, se estudia la distancia media entre los picos que generan las líneas del pentagrama
en la proyección horizontal y se estiman unas líneas intermedias. La figura 3.7 ilustra esta
explicación y expone el resultado:
Figura 3.7. Pistas virtuales trazadas sobre el compás de la figura 3.6.
La siguiente tarea de esta fase es la que consume el mayor número de recursos de todo el proceso.
Se posiciona una máscara (figura 3.8) en la primera pista virtual, y se produce un desplazamiento
por las pistas inferiores. Durante este desplazamiento, se efectúa una comparación entre la región
de la imagen de tamaño igual a la máscara elegida que rodea al punto en el que se desea saber si hay
una nota, y la máscara de la cabeza de una nota musical. Se estudia el índice de solapamiento entre
ambas regiones, y si supera un cierto umbral, se considerará candidata a nota musical.
página 21
0 100 200 300 400 500 600 700 800
0
20
40
60
80
100
120
Figura 3.8. Máscara empleada para efectuar las comparaciones.
Los índices de solapamiento se almacenan en una matriz de tamaño MxN, siendo M el ancho (en
píxels) del compás y N el número de pistas virtuales trazadas. Sobre esta matriz se comprobará si
las posibles notas detectadas en el paso anterior son realmente tal, ya que en algunos casos se
produce un alto índice de solapamiento entre la máscara y las barras que unen las plicas de las
corcheas y semicorcheas. El número resultante de multiplicar las dimensiones de la matriz es
indicativo del número de iteraciones realizadas por el algoritmo de comparación.
A continuación se combinan los resultados de la proyección vertical del compás analizado y la
matriz obtenida anteriormente. De la proyección se obtienen las coordenadas de las plicas de la
notas (que se identifican estableciendo un umbral inferior al empelado para detectar las barras de
separación de compases y adecuado para no confundirlo con otro tipo de información). El
algoritmo posiciona en matriz que contiene los índices de solapamiento en las coordenadas
correspondientes a las plicas y realiza un estudio en un entorno acotado alrededor de dichas
coordenadas. Se selecciona la posición de la matriz con un mayor índice de coincidencias, y se
marca como nota. La figura 3.9 muestra las notas detectadas en el compás de la figura 3.6.
Figura 3.9. Detección de notas de un compás.
La forma de identificar una nota es guardar su coordenada en el eje x (teniendo en cuenta que dicha
coordenada es relativa al compás analizado) y el número de pista en la que ésta se encuentra. Esta
información, junto con el índice de la pista virtual tomada como referencia (se debe recordar que la
referencia es en todos los casos la línea superior de la pauta) será la que nos permita establecer el
tono de cada nota.
3.4 Tono y duración
La siguiente tarea consiste en asignar un valor que identifique el tono y la duración de la nota. Para
asignar estos valores se ha elegido la nomenclatura propuesta en el artículo [11]. Se proponen varias
notaciones diferentes, de las cuales se adoptan las notaciones implícita y diferencial.
página 22
En la notación implícita se indica mediante un valor numérico el valor en la escala de tonos de la
nota en cuestión. La diferencia entre un tono y el siguiente se traduce en un incremento numérico
de dos unidades, a excepción de los pasos de mi a fa y de si a do, entre los que sólo existe un
semitono de diferencia, lo cual implica un incremento de una unidad. Por poner unos ejemplos, a la
línea del pentagrama que coincide con la clave de sol en segunda, se le asigna el valor 24; a la línea
de la clave de fa en cuarta, le corresponde el valor 12.
La notación diferencial se basa en la notación implícita. Consiste en calcular la diferencia entre un
tono y el siguiente. De este modo se consigue una abstracción de la tonalidad, preservando el
patrón melódico.
Para representar la duración de una nota, se codifica mediante una letra: n para las negras, c para las
corcheas, s para las semicorcheas, f para las fusas, etc. Puesto que el objetivo del proyecto es la
identificación o búsqueda de patrones melódicos, se ha prestado una menor atención a esta
característica de las notas, ya que para el fin propuesto la duración es irrelevante.
A continuación se muestra un ejemplo de codificación para el compás de la figura 3.10.
Figura 3.10. Compás.
Notación implícita:
19s 17s 19c 20c 22n 24n
Notación diferencial:
Ss -2s 2c 1c 2n 2n
En la implementación se guardan en diferentes vectores la notación implícita y la diferencial, en
ambos casos sin indicar la duración, que se almacena en otro vector independiente. Es lo que el
autor del artículo tomado como referencia para esta notación denomina splitted implicit notation y
splitted diferential notation, respectivamente.
El resultado final del análisis es una estructura de datos compleja, en concreto un vector de n
posiciones (siendo n el número de compases detectados en la partitura), que guarda la información
relevante de cada uno de los compases contenidos en la partitura.
página 23
En lo que respecta a la tarea de encontrar patrones melódicos contenidos en las partituras
analizadas, ésta se resume en un mera búsqueda de subcadenas de caracteres. Una vez halladas las
subcadenas, se resaltan las coincidencias sobre la imagen de la partitura.
Las figuras 3..11, 3.12 y 3.13 ilustran la metodología seguida
Figura 3.11. Adquisición de imágenes.
página 24
Figura 3.12. Preprocesado y segmentación de la partitura.
página 25
Figura 3.13. Segmentación y detección de notas.
página 26
4. Descripción informática
En esta sección se comentarán los detalles más relevantes de la implementación y se realizará una
descripción del modo de funcionamiento del sistema desarrollado.
Este sistema se ha elaborado bajo las premisas de un desarrollo en espiral. El desarrollo en espiral
consiste en una serie de iteraciones, en las cuales se implementa una nueva funcionalidad del
proyecto, hasta que se llega a una versión final. Este desarrollo ofrece libertad para variar los
requisitos, hecho frecuente en este tipo de desarrollos. También ofrece la posibilidad de estudiar las
nuevas funcionalidades añadidas, y en caso de no adaptarse a los objetivos buscados, desechar los
cambios. Cada una de estas iteraciones consta de las siguientes etapas:
• Estudio de requisitos: los objetivos de un ciclo de desarrollo deben de ser identificados y
especificados.
• Valorar y reducir los riesgos: los riesgos son valorados y ciertas actividades son puestas en vigor
para reducir los riesgos claves.
• Desarrollar y validar: el sistema se desarrolla y es validado usando pruebas que testean el
cumplimiento de los requisitos fijados.
• Planificar: El proyecto es repasado y la próxima fase de la espiral es planificada.
Figura 4.1. Desarrollo en espiral.
página 27
4.1. Implementación
El sistema se ha desarrollado bajo el entorno de programación MATLAB, del que ya se habló en la
sección 1.2.1. Se han creado una serie de funciones que, llamadas en un orden o secuencia concreta,
permiten el análisis de una partitura musical, así como efectuar búsquedas de patrones melódicos
sobre ésta, según varios criterios (empleando la notación diferencial, la notación implícita o en
función de la duración).
A continuación se enumeran las funciones creadas por el alumno, y se realiza una breve descripción
de las mismas, comentado sus parámetros y los datos o valores que retorna la función. En
MATLAB se puede obtener esta misma información mediante el comando help, seguido del nombre
de la función de la que se pretende conocer los detalles.
El orden en el que se describen las funciones es el mismo en el que éstas son llamadas a la hora de
llevar a cabo el análisis de la partitura. Esto se traduce en una mayor especificidad de las funciones
listadas en última instancia, mientras que las que aparecen en primer lugar son de un carácter más
general, y por ello, dependientes de los resultados de las funciones enumeradas en último lugar.
4.1.1. buscar_patron_notacion_diferencial
Al ejecutar esta función, aparecerá el diálogo que permite elegir la imagen que contiene la partitura
sobre la que se realizará el posterior análisis. Una vez seleccionada la imagen, se pasa la ruta de
dicha imagen a las funciones que llevarán a cabo el análisis. Tras el análisis de la partitura, se
mostrará una caja de texto (inputbox) solicitando el patrón en función al cual realizar la búsqueda. El
formato del patrón de búsqueda es una secuencia de valores numéricos separados por espacios en
blanco. Una vez halladas las coincidencias, se muestra la partitura, destacando las regiones donde se
encuentran los parámetros establecidos en la búsqueda. En caso de que no se hallen coincidencias
entre el patrón establecido y alguna sección de cualquier compás contenido en la partitura, se
muestra un mensaje que advierte de la ausencia de coincidencias.
Esta función carece de parámetros, tanto de entrada como de salida.
4.1.2. buscar_patron_notacion_estandar
Esta función realiza las mismas tareas que la función anteriormente expuesta. La diferencia entre
ambas radica en el criterio de búsqueda de las líneas melódicas. En este caso, el criterio de
búsqueda se basa en la notación estándar. Una vez halladas las posibles coincidencias, éstas se
destacan sobre la partitura analizada.
Igualmente, carece de cualquier tipo de parámetros .
página 28
4.1.3. buscar_patron_duracion
Esta función desempeña las mismas tareas que las dos anteriores, con la salvedad de que el criterio
de búsqueda es una secuencia de duraciones. Esta función tampoco retorna ningún valor, y carece
de parámetros.
4.1.4. analizar
El propósito de esta función es la obtención de las características identificativas de cada uno de los
compases que conforman la partitura. Como parámetros de entrada recibe la ruta de la imagen que
será analizada (obtenida previamente de un diálogo estándar de apertura de ficheros en una de las
tres anteriores funciones).
Esta función retorna un vector de estructuras con las siguientes campos:
• imagen, que es a su vez una estructura que consta de cuatro campos (x1, y1, x2, y2), que
corresponden a los vértices que delimitan el rectángulo que contiene al compás analizado.
• clave, que indica que se trata de un compás en clave de SOL o en clave de FA.
• referencia: indica el numero de la pista virtual que se ha tomado como referencia para el proceso
de identificación de duración y tono.
• notas: vector que contiene a su vez dos campos: pista (indica la pista virtual donde se detecto la
nota), y x (coordenada en el eje x, con respecto a la coordenada x1 del campo imagen, donde
esta ubicada la nota.
• tono: vector que contiene información sobre el tono de las notas, utilizando la notación implícita
anteriormente expuesta.
• diferencial: vector en notación diferencial.
• duracion: vector que contiene la duración de las notas.
4.1.5. preproceso
En esta función se lleva a cabo el proceso de conversión de la imagen en escala de grises en una
imagen binaria. Sobre la imagen binaria, se procederá a la eliminación de información irrelevante y
al posterior análisis de la imagen.
Dada una imagen de una partitura musical en niveles de grises, la función devuelve una estructura
con dos campos: imagen, que contiene la imagen binaria carente de información irrelevante, y
resultado, vector de estructuras con los campos x1, y1, x2, y2 (vértices de la región que delimita un
compás), conteniendo todos los compases hallados en la imagen.
página 29
4.1.6. eliminar_ruido
Dada una imagen de una partitura musical (primer parámetro), esta función elimina de la imagen
información irrelevante para el análisis de la partitura (título, numero de página, etc), basándose en
los resultados obtenidos de la proyección horizontal de la partitura. Mediante un segundo
parámetro, se indica si se ha de visualizar (valor 1) o no (valor 0) la imagen resultante.
4.1.7. separar_sistemas
La función retorna un vector de estructuras que contiene los campos inicio y fin, que establecen el
límite horizontal superior e inferior de la región que contiene un sistema (par de pentagramas),
respectivamente.
Como parámetro de entrada recibe la imagen binaria filtrada, retornada por la función eliminar_ruido.
4.1.8. separar_pentagramas
Dada la imagen binaria carente de información irrelevante devuelta por la función eliminar_ruido, y
el vector que contiene los puntos que delimitan los distintos sistemas de pentagramas, devuelto por
la función separar_sistemas, esta función separa el par que compone el sistema en dos pentagramas,
para realizar posteriormente análisis independientes de cada pentagrama.
La información que devuelve la función es un vector de estructuras con dos campos, inicio y fin, que
al igual que en el caso de la función anterior, establece los límites horizontales que determinan una
región que, en este caso, contiene sólo un compás.
4.1.9. trocear_compases
El objetivo de esta función es la obtención de cada uno de los compases contenidos en la partitura.
Como parámetros recibe la imagen devuelta por la función eliminar_ruido y el vector que delimita los
pentagramas observados en la partitura (retornado por la función separar_pentagramas).
El resultado es un vector de estructuras con los siguientes campos:
• x1, coordenada izquierda del rectángulo que acota al compás.
• y1, coordenada superior del rectángulo.
• x2, coordenada derecha de la región que delimita el compás.
• y2, coordenada inferior dcha. (eje Y) del fin del compas
Estas coordenadas delimitan la región que contiene cada uno de los compases. El orden en el que
las regiones que contienen los compases se guardan en el vector es el mismo orden en el que éstos
página 30
se encuentran en la partitura.
4.1.10. maximos_locales
Dado un vector numérico (primer parámetro), esta función selecciona todos aquellos valores que
superan un cierto umbral (segundo parámetro) y no exceden un límite (tercer parámetro).
El resultado es otro vector, que contiene los índices del vector inicial cuyos valores cumplen las
condiciones mencionadas anteriormente.
4.1.11. amplitud_picos
A partir de un vector y un umbral, ambos recibidos como argumentos de la función, ésta retorna
otro vector de estructuras de todos aquellos “picos” del vector cuya amplitud supere un cierto
umbral. Se denomina pico a una sucesión de valores numéricos, situados en el vector de forma
consecutiva, que superan un cierto umbral.
Esta función retorna un vector de estructuras con la siguiente información:
• inicio, índice del vector en el que comienza el pico.
• fin, índice del vector que coincide con el fin del pico.
• maximo, valor máximo del pico
• pto_maximo, índice del vector en el que se alcanza la cota del valor máximo del pico.
4.1.12. histograma
Dada una imagen, esta función devuelve un vector que contiene la proyección horizontal (véase
figura 3.3.) de dicha imagen. El segundo parámetro que recibe la función se emplea para mostrar
(valor 1) o no (valor 0) una gráfica de dicho histograma.
4.1.13. vhist
Esta función nos proporciona el vector que contiene la proyección vertical (véase figura 3.5.) de la
imagen recibida como argumento. Mediante un segundo argumento, se indica si ésta función debe
de visualizar, o no, una gráfica mostrando los resultados.
4.1.14. buscar
A partir de la imagen de un compás (todas ellas contenidas en la estructura devuelta por la función
encargada del preproceso de la partitura) y una máscara conteniendo la cabeza de una nota, usada
para buscar las notas contenidas en el compás, devuelve una estructura con los siguientes campos:
página 31
• notas, que a su vez es un vector de estructuras que consta de dos campos: pista, que nos
proporciona el número de pista virtual donde se encontró la nota, y x, que guarda la coordenada
en el eje x donde se encontró la nota.
• referencia, que guarda el número de pista virtual que se corresponde con la línea superior del
pentagrama. Recordemos que esta línea es la que se emplea como referencia para la conversión
del número de pista en el valor numérico correspondiente en la notación implícita. Esta
referencia se obtiene en la función buscar_candidatos, comentada a continuación.
• clave, es una valor que indica si el compás está en calve de sol o en clave de fa.
4.1.15. buscar_candidatos
Dada una imagen de un compás, retorna un vector con las pistas virtuales que se corresponden con
un tono musical, y el índice de la pista de dicho vector que se corresponde con la línea superior del
pentagrama. El vector con las pistas virtuales es una serie de valores numéricos que indican la
coordenada en el eje y, en la cual al trazar una linea recta horizontal se puede considerar que se
corresponde con un tono de la escala musical.
4.1.16. eliminar_candidatos_consecutivos
La función eliminar_candidatos_consecutivos se ocupa de eliminar del conjunto de candidatos a pistas
virtuales (pasado como primer parámetro) todas aquellas que no guarden una cierta distancia
(establecida mediante un segundo parámetro en la llamada a la función) con respecto al anterior
candidato. Retorna el vector sin los valores que no guarden la distancia marcada.
4.1.17. aplicar_mascara
Esta función recibe como argumentos la imagen de un compás, la máscara de la cabeza de una
nota musical y el conjunto de pistas virtuales correspondiente al compás a tratar. La estructura
resultante de ejecutar esta función es una matriz de tamaño M x N, siendo M el ancho de la imagen
del compás, y N la longitud del vector de pistas virtuales, denominado pistas. Dicha matriz guarda
el índice de solapamiento de la máscara con la sección de la imagen que se compara.
Sobre esta matriz, la función buscar realiza las comprobaciones pertinentes para obtener la
ubicación de las notas musicales.
4.1.18. convertir
Dado un vector de notas, la clave de y la línea de referencia del compás analizado, todos estos datos
obtenidos en la función buscar, la función se encarga de codificar en la notación implícita y
diferencial la información de entrada. También proporciona un vector que contiene una secuencia
de caracteres que expresan la duración de las notas contenidas en el compás.
página 32
En esta función se establece una correspondencia entre la línea en la que se detecta una nota y el
valor correspondiente en la notación implícita. A partir de la notación implícita, la obtención de la
notación diferencial es trivial.
Para obtener el vector de duración, se procede a un escueto análisis de la morfología de la
proyección vertical de la zona donde se encuentra una nota.
4.1.19. buscar_subsecuencia
Esta función, a partir de un vector conteniendo una serie de valores y otro vector conteniendo la
secuencia que se desea buscar en el primer vector, devuelve otro vector conteniendo los índices de
las posiciones del primer vector a partir de las cuales coinciden las secuencias de valores.
4.2. Uso
En esta sección se explicará detalladamente los pasos a seguir para que cualquier persona ajena al
desarrollo de este sistema sea capaz de efectuar el análisis de una partitura.
Este sistema se ha desarrollado bajo la versión para la plataforma WIN32 de la herramienta
MATLAB. Por tanto, los detalles de uso se atienen a las características de los sistemas operativos
basados en dicha plataforma.
En primer lugar, se debe de ejecutar la aplicación MATLAB, ya que es la encargada de interpretar
las funciones desarrolladas. Para ello, desde el menú Inicio, en la opción Ejecutar, escribimos matlab.
Otra posibilidad es hacer doble click sobre el acceso directo que al instalar MATLAB se genera en
el escritorio (figura 4.2), o bien, desde el menú Inicio, en la opción Programas, y en la carpeta del
grupo de programas MATLAB, seleccionar matlab.
Figura 4.2. Icono del programa MATLAB.
Una vez lanzado MATLAB, nos encontraremos ante una ventana con una distribución similar a la
que refleja la figura 4.3. En la misma figura aparecen destacadas las áreas más relevantes de cara a
esta explicación.
página 33
Figura 4.3. Ventana principal de MATLAB.
Se debe establecer como directorio de trabajo aquel que contenga las funciones creadas. Para
modificar el directorio de trabajo, desde la ventana del directorio de trabajo se puede pulsar sobre
el icono , que aparece a la derecha de la lista desplegable que contiene los últimos directorios de
trabajo. En el cuadro de diálogo que aparece al pulsar sobre dicho botón, se elige el directorio
deseado. Otra opción para modificar el directorio de trabajo es escribir en la ventana de comandos
de MATLAB el comando cd seguido de la ruta del directorio que se desea establecer como
directorio de trabajo.
A continuación, se debe ejecutar una de las siguientes funciones empleadas para realizar la
búsqueda de patrones melódicos: buscar_patron_notacion_estandar, buscar_patron_notacion_diferencial o
buscar_patron_duracion, cuyos cometidos ya se han comentado en la sección anterior. Estas funciones
realizan las mismas tareas, y sólo varía el criterio empleado a la hora de realizar la búsqueda de
patrones melódicos. Este ejemplo de uso será ilustrado mediante la ejecución de la función que se
basa en la notación diferencial para la búsqueda. En los otros dos casos, los pasos a seguir son
idénticos. Para ejecutar el comando, basta con escribir el nombre de la función tras el prompt de la
página 34
ventana de comandos (que en el caso de esta versión de MATLAB son dos paréntesis angulares
orientados a la derecha, >>, tal y como se muestra en la figura 4.4. ), y pulsar la tecla Intro.
Figura 4.4. Inserción de un comando en MATLAB.
Tras esta acción, aparece el cuadro de diálogo de la figura 4.5.:
Figura 4.5. Cuadro de diálogo que permite la selección de la partitura a analizar.
Se trata de un cuadro de diálogo Open estándar, en el que el usuario debe seleccionar el fichero que
contiene la imagen a analizar. El formato de la imagen a analizar debe ser uno de los formatos
asumibles por MATLAB (TIFF, PNG, BMP, JPEG, GIF, PCX, XWD, CUR, e ICO). Lo más usual
(y lógico) es que la partitura este contenido en un fichero JPEG, PNG o BMP.
Una vez seleccionado el fichero de imagen que contiene la partitura, se procederá al análisis de la
partitura. En la ventana de comandos aparecen los resultados del análisis y los valores devueltos por
las funciones relevantes, útiles para el programador de cara al estudio del correcto funcionamiento
del programa, y a la par útiles para el usuario interesado en el análisis.
página 35
Concluido el análisis, aparecerá una caja de texto (figura 4.6.) en la que el usuario deberá introducir
la secuencia que desea identificar en la partitura, teniendo en cuenta que el patrón de búsqueda
debe hallarse en notación diferencial (puesto que en este ejemplo se está realizando una búsqueda
atendiendo a dicho criterio).
Figura 4.6. Cuadro de diálogo que permite establecer el patrón de búsqueda.
Al aceptar la secuencia introducida, se procede a la búsqueda de la misma. Si se hallan
coincidencias, se visualiza la partitura elegida, recuadrando en ésta las secciones de la misma que
concuerdan con el patrón establecido. En caso de que no se encuentre ninguna coincidencia,
aparece un mensaje que advierte de ello al usuario (figura 4.7).
Figura 4.7. Message Box que advierte al usuario de que no se han encontrado coincidencias.
Cuando el usuario, en el caso de que hubiera coincidencia de patrones, cierra la ventana que
contiene a la figura que muestra las coincidencias, o en el caso de que no se hallaran coincidencias y
el usuario acepte el mensaje de advertencia, observa un nuevo diálogo en el que se le pregunta si
desea realizar una nueva búsqueda. En caso afirmativo, se repiten los pasos de solicitud de
secuencia mediante el diálogo de la figura 4.5 y se realiza la nueva búsqueda sobre los resultados
del análisis anterior. En caso de que el usuario no quiera llevar a cabo una nueva búsqueda,
concluye la ejecución de la función, y puede introducir nuevos comandos en la ventana destinada a
este fin de MATLAB.
página 36
5. Resultados experimentales
Las siguientes tablas reflejan los resultados del análisis de las partituras con las que se ha trabajado
en este proyecto.
En estas tablas aparecen el número de notas contenidas en cada compás y el número y tipo de los
fallos. Los errores considerados son los siguientes: información que se ha toma como nota, cuando
realmente no lo es (es lo que se denomina falso positivo, y ocurre, por ejemplo, cuando se detecta
una nota en la barra de unión de dos semicorcheas); notas que no se han hallado (denominado falso
negativo); los fallos de la duración de las notas halladas, y finalmente, los fallos cometidos en la
obtención de la duración de las notas.
Tabla 5.1. Resultados del análisis de la partitura 1 de la Invención 5.
Partitura Inven c ió n 5, BWV776, 1
Co m p ás
Núm e ro d e
no tas
Fals o s
po sitivo s
Falsos
ne g ativ os
Fallo s to no
Fallo s
durac ión
1 6 0 0 0 0
2 6 0 0 0 0
3 9 0 0 0 3
4 16 4 0 4 3
5 10 0 0 0 0
6 10 1 0 0 1
7 16 0 0 3 0
8 16 0 0 0 0
9 16 2 0 0 2
10 7 2 0 0 0
11 16 0 0 3 0
12 16 1 1 0 0
13 16 0 0 0 1
14 6 0 0 0 1
15 10 0 0 0 2
16 10 0 0 0 2
17 7 0 0 0 0
18 6 2 0 0 2
19 6 0 0 0 0
página 37
Partitura Inven c ió n 5, BWV776, 1
Co m p ás
Núm e ro d e
no tas
Fals o s
po sitivo s
Falsos
ne g ativ os
Fallo s to no
Fallo s
durac ión
20 16 1 0 0 1
21 16 0 0 0 0
22 16 3 0 0 4
23 16 0 0 1 3
24 16 0 0 3 3
25 16 2 0 0 5
26 7 0 0 0 1
27 6 0 0 0 0
28 10 0 2 0 1
TOTAL 324 18 3 14 35
El cuadro que aparece a continuación resume estadísticamente los resultados anteriores:
Tabla 5.2. Estadísticas del análisis de la partitura 1 de la Invención 5.
Can tida d Po rc en taje
Falsos positivos 18 85,71
Falsos negativos 3 14,29
TOTAL fallos detección de notas 21 6,48
Fallos en la detección de tonos 14 4,62
Fallos en la detección de duraciones 35 11,55
Se han detectado correctamente el 93,52% de las notas. El porcentaje de falsos positivos y falsos
negativos se calcula respecto a los fallos cometidos en la detección de las notas. En este caso en
concreto, el 85,71 % de los errores cometidos fueron falsos positivos. Los fallos de duración y el
tono se calculan sobre el total de notas correctamente detectadas.
Tabla 5.3. Resultados del análisis de la partitura 2 de la Invención 5.
Partitura In ve nc ió n 5, BWV776, 2
Co m pás
Núm e ro d e
no tas
Fals o s
po sitivo s
Fals o s
ne g ativ os
Fallo s to no
Fallo s
durac ión
1 16 0 0 0 5
2 7 2 0 0 3
3 6 0 0 0 2
4 10 0 0 0 1
5 16 2 0 0 4
página 38
Partitura In ve nc ió n 5, BWV776, 2
Co m pás
Núm e ro d e
no tas
Fals o s
po sitivo s
Fals o s
ne g ativ os
Fallo s to no
Fallo s
durac ión
6 16 4 1 0 3
7 10 0 0 0 2
8 10 3 0 0 4
9 16 0 0 0 5
10 16 1 0 0 5
11 16 1 0 0 9
12 7 2 0 0 1
13 16 0 0 0 5
14 16 2 0 0 5
15 7 0 0 0 1
16 6 0 0 0 1
17 6 0 0 0 2
18 16 0 1 0 9
19 6 0 0 0 1
20 16 3 0 0 8
21 16 0 0 0 7
22 16 0 0 0 6
23 7 0 0 0 3
24 6 0 0 0 2
25 7 0 0 0 1
26 6 0 0 0 2
27 10 0 0 10 6
28 16 0 0 0 7
29 16 0 0 0 7
30 16 0 0 0 7
31 10 0 0 0 2
32 10 0 0 0 3
33 5 1 0 1 3
34 16 0 0 0 5
35 16 3 0 0 7
36 4 1 0 0 1
TOTAL 412 22 2 11 145
página 39
Tabla 5.4. Estadísticas del análisis de la partitura 2 de la Invención 5.
Can tida d Po rc en taje
Falsos positivos 22 91,67
Falsos negativos 2 8,33
TOTAL fallos detección de notas 24 5,83
Fallos en la detección de tonos 11 2,82
Fallos en la detección de duraciones 145 37,18
Tabla 5.5. Resultados del análisis de la partitura 1 de la Invención 8.
Partitura In ven c ió n 8, BWV779, 1
Co m p ás
Núm e ro d e
no tas
Falsos
p o sitivos
Fals o s
ne g ativ os
Fallo s to no
Fallo s
durac ión
1 5 0 0 5 0
2 11 0 0 0 5
3 6 0 0 0 1
4 0 0 0 0 0
5 5 0 0 0 5
6 11 0 0 0 3
7 12 0 0 0 9
8 12 0 0 0 11
9 12 0 0 0 6
10 6 0 1 0 5
11 12 0 0 0 5
12 12 0 0 0 7
13 6 0 0 0 3
14 12 1 0 0 6
15 11 0 0 0 7
16 12 0 0 0 9
17 6 0 0 0 1
18 12 0 0 0 6
19 9 0 0 0 6
20 6 1 0 0 3
21 1 0 0 0 0
22 11 0 0 0 2
23 10 0 0 0 2
página 40
Partitura In ven c ió n 8, BWV779, 1
Co m p ás
Núm e ro d e
no tas
Falsos
p o sitivos
Fals o s
ne g ativ os
Fallo s to no
Fallo s
durac ión
24 5 0 0 0 0
25 5 0 0 0 0
26 11 0 0 0 5
27 12 0 0 0 6
28 11 0 0 0 5
29 6 0 0 0 1
30 6 1 0 0 3
TOTAL 256 3 1 5 122
Tabla 5.6. Estadísticas del análisis de la partitura 1 de la Invención 8.
Can tida d Po rc en taje
Falsos positivos 3 75
Falsos negativos 1 25
TOTAL fallos detección de notas 4 1,56
Fallos en la detección de tonos 11 1,98
Fallos en la detección de duraciones 145 48,41
Tabla 5.7. Resultados del análisis de la partitura 2 de la Invención 8.
Partitura In ven c ió n 8, BWV779, 2
Co m p ás
Núm e ro de
no tas
Falsos
p o sitivos
Falsos
ne g ativ os
Fallo s to no
Fallo s
durac ión
1 6 0 0 0 4
2 11 1 0 1 1
3 6 0 0 0 2
4 11 0 0 0 2
5 6 0 0 0 0
6 11 0 0 5 4
7 6 0 0 0 1
8 6 0 0 0 0
9 12 0 0 0 5
10 12 0 0 0 2
11 12 0 0 4 3
página 41
Partitura In ven c ió n 8, BWV779, 2
Co m p ás
Núm e ro de
no tas
Falsos
p o sitivos
Falsos
ne g ativ os
Fallo s to no
Fallo s
durac ión
12 6 0 0 0 0
13 12 0 0 0 8
14 12 1 0 0 5
15 6 0 0 0 4
16 6 0 0 0 2
17 6 0 0 0 1
18 12 2 0 0 7
19 6 0 0 0 0
20 12 0 0 0 4
21 12 0 0 0 4
22 12 0 0 0 6
23 6 0 0 0 2
24 12 0 1 11 0
25 12 0 0 0 7
26 6 0 0 0 1
27 12 0 0 0 6
28 12 1 0 2 0
29 12 0 0 0 0
30 6 0 0 0 0
31 11 1 0 0 4
32 9 0 0 0 0
33 6 0 0 0 0
34 1 0 0 0 1
35 12 0 0 0 1
36 11 1 0 0 2
37 10 0 0 0 1
38 1 0 0 0 0
TOTAL 340 7 1 23 90
página 42
Tabla 5.8. Estadísticas del análisis de la partitura 2 de la Invención 8.
Can tida d Po rc en taje
Falsos positivos 7 87,5
Falsos negativos 1 12,5
TOTAL fallos detección de notas 8 2,35
Fallos en la detección de tonos 23 6,93
Fallos en la detección de duraciones 90 27,11
Tabla 5.9. Resultados del análisis de la partitura 1 de la Invención 10.
Partitura Inven c ió n 10, BWV781, 1
Co m pás
Núm e ro d e
no tas
Fals o s posit iv os
Falsos
ne g ativo s
Fallo s to no
Fallo s
durac ió n
1 9 0 0 1 3
2 8 0 0 0 1
3 9 0 0 1 2
4 0 0 0 0 0
5 9 0 0 0 2
6 8 0 0 0 1
7 9 0 0 0 1
8 9 0 0 0 3
9 9 0 0 0 2
10 9 0 0 0 3
11 9 0 0 0 0
12 9 0 0 0 5
13 9 0 0 0 2
14 9 2 0 0 4
15 7 0 0 0 1
16 7 0 0 0 1
17 7 1 0 0 3
18 9 2 0 0 1
19 9 1 0 0 1
20 9 0 1 0 2
21 9 1 0 0 2
22 7 0 0 0 0
23 7 0 0 0 0
página 43
Partitura Inven c ió n 10, BWV781, 1
Co m pás
Núm e ro d e
no tas
Fals o s posit iv os
Falsos
ne g ativo s
Fallo s to no
Fallo s
durac ió n
24 7 2 0 0 1
25 9 0 0 0 1
26 1 0 0 0 1
27 9 2 0 0 0
28 8 0 0 0 1
29 9 0 0 0 4
30 2 2 0 0 2
TOTAL 231 13 1 2 50
Tabla 5.10. Estadísticas del análisis de la partitura 1 de la Invención 10.
Can tida d Po rc en taje
Falsos positivos 13 6,06
Falsos negativos 1 92,86
TOTAL fallos detección de notas 14 7,14
Fallos en la detección de tonos 2 0,92
Fallos en la detección de duraciones 50 23,04
Tabla 5.11. Resultados del análisis de la partitura 2 de la Invención 10.
Partitura In ve nc ió n 10, BWV781, 2
Co m pás
Núm e ro d e
no tas
Falsos
p o sitivos
Falsos
ne g ativo s
Fallo s to no
Fallo s
durac ión
1 2 0 0 0 0
2 9 2 0 0 7
3 9 0 0 0 0
4 9 0 0 0 4
5 2 0 0 0 0
6 7 0 0 0 3
7 9 0 0 0 3
8 1 1 0 0 0
9 1 1 0 0 0
10 7 0 0 0 3
11 9 0 0 0 1
página 44
Partitura In ve nc ió n 10, BWV781, 2
Co m pás
Núm e ro d e
no tas
Falsos
p o sitivos
Falsos
ne g ativo s
Fallo s to no
Fallo s
durac ión
12 9 0 0 0 3
13 1 0 0 0 0
14 1 1 0 0 0
15 9 0 0 0 3
16 9 0 0 0 3
17 9 0 0 0 0
18 9 0 0 0 1
19 1 0 0 0 0
20 1 0 0 0 0
21 6 0 0 0 2
22 9 0 0 0 4
23 9 0 0 0 6
24 9 0 0 0 1
25 9 0 0 0 4
26 9 0 0 0 0
27 9 0 0 0 4
28 9 0 0 0 2
29 9 0 0 0 1
30 4 0 0 0 0
31 9 0 0 0 1
32 6 0 0 0 2
33 7 0 0 0 1
34 5 0 0 0 0
TOTAL 223 5 0 0 59
Tabla 5.12. Estadísticas del análisis de la partitura 2 de la Invención 10.
Can tida d Po rc en taje
Falsos positivos 5 100
Falsos negativos 0 0
TOTAL fallos detección de notas 5 2,24
Fallos en la detección de tonos 0 0
Fallos en la detección de duraciones 59 27,06
página 45
Observando los resúmenes estadísticos, se tiene que, en media, se detectan correctamente el
95,73% de todas las notas contenidas en las partituras analizadas. Del total de notas halladas, un
2,87 % de las veces se comenten errores en el cálculo del tono de dichas notas. Los peores
resultados se obtienen en la detección de las duraciones de las notas, donde el porcentaje de errores
se eleva al 29 %.
página 46
6. Conclusiones y trabajos futuros
A continuación se exponen las conclusiones y futuras líneas de trabajo que se puedan derivar de
este proyecto.
6.1. Conclusiones
Este proyecto se inició sin tener claramente definido el objetivo final del mismo. El resultado
expuesto es la evolución de los sucesivos objetivos fijados en las sucesivas reuniones de las
personas implicadas en este proyecto. Pero se puede concluir que el resultado se aproxima al
objetivo que dio origen a la propuesta de este proyecto.
En todo sistema OCR (y por extensión, los sistemas OMR), el índice de fiabilidad, pese a ser muy
elevado, no se asegura la completa corrección de los resultados que éstos proporcionan. Por tanto,
el buscar un sistema OMR totalmente automático se puede considerar como una utopía.
Partiendo de cero (el alumno desconocía la mayoría de conceptos musicales y el entorno MATLAB,
y dada la ausencia de trabajos previos en la facultad que versen sobre esta temática), se ha obtenido
un producto que, pese a distar de las funcionalidades que ofrecen sistemas OMR comerciales,
proporciona unos resultados aceptables (el índice de fiabilidad supera el 95 %), si bien es verdad
que en nuestro caso se omite parte de la información contemplada por los sistemas comercializados
(como por ejemplo, silencios y alteraciones), entre otras limitaciones.
Este proyecto ha servido para que el alumno sea consciente de la complejidad que conlleva el
desarrollo de un sistema de reconocimiento óptico. También ha servido para que el alumno se
desenvuelva con soltura en el manejo de la herramienta MATLAB, y adquirir una serie de
conocimientos musicales básicos.
6.2. Líneas futuras
Este proyecto puede ser considerado como pionero en este campo, puesto que en la Universidad
Rey Juan Carlos no se había desarrollado ningún trabajo previo relacionado con los sistemas OMR.
Este proyecto asienta las bases sobre las que desarrollar futuras mejoras o nuevos proyectos.
Entre las futuras líneas, se pueden destacar las siguientes:
página 47
• Dotar de un interfaz gráfico a la aplicación, para que su uso sea más intuitivo y accesible para
todo usuario.
• Contemplar en los análisis características más complejas de las partituras musicales. En nuestro
caso, sólo nos hemos centrado en la obtención de tonos y, en menor medida, en la obtención de
la duración. Los sistemas OMR más completos también deben de reflejar otras informaciones
contenidas en las partituras, como por ejemplo, silencios, alteraciones y pausas.
• Mejorar el índice de aciertos en la detección de notas. Pese a que se ha obtenido unos buenos
resultados mediante unas técnicas sencillas, éstos son susceptibles de mejoras. Aplicando
metodologías más complejas, se puede incrementar la fiabilidad del sistema.
• Mejorar el criterio de establecimiento de la duración. Como se observa en la sección de
resultados experimentales, es en ese punto en el que se obtienen los peores resultados. Esto
también es debido a que fue una funcionalidad añadida en última instancia, no contemplada
en los objetivos iniciales del proyecto.
• Desarrollar el sistema bajo una plataforma o programa open source. Por ejemplo, bajo sistemas
operativos Linux, empleando la herramienta Octave.
página 48
Bibliografía
[1] E. Sicard, An Efficient Method for Recognition of Printed Music.
[2] K. Todd Reed y J.R Parker, Automatic Computer Recognition of Printed Music.
[3] R. Randriamahefa, J.P Cocquerez, C. Fluhr, F. Pépin y S. Philipp, Printed Music
Recognition.
[4] R.C González y R.E Woods, Digital Image Processing, ED. Addison Wesley, 2002.
[5] A. de la Escalera, Visión por computador: Fundamentos y Métodos, ED. Pearson-
Prentice Hall, 2001.
[6] J. González, Visión por computador, ED. Paraninfo, 2000.
[7] G.A Baxes, Digital Image Processing: Principles and Applications, J. Wiley & Sons, 1994.
[8] Apuntes de la Image Processing Toolbox de MATLAB de la asignatura Visión
Artifical.
[9] G. Orta Velázquez, 100 Biografías en la Historia de la Música, ED. Joaquín Porrúa,
1962
[10] N. Otsu, A Threshold Selection Method from Gray-Level Histograms, IEEE
Transactions on Systems, Man, and Cybernetics, vol. 9, no. 1, pp. 62-66, 1979.
[11] Proceedings of the Third International Conference WEB Delivering of Music
[12] Prereau “Do-re-mi; A Program that Recognizes Music Notation”, Computer
Human. Vol 9 pp25-29, 1975.
[13] Matsushima y Toshiaki: “Automated recognition system for musical score – the
vision system of wabot – 2”. Bulletin of science and engineering research laboratory, Waseda
University nº 112, 1985-p 25.52.
[14] J.W Roach y J.E Tatem, “Using domain knowledge in a low-level visual
processing to interpret handwritten music: an experiment”. Pattern Recognition vol.21,
nº1 – 1988 – p.33-34.
página 49
Anexo I
Glosario de términos musicales
• Acorde: Dos o más sonidos simultáneos.
• Barra: Linea divisoria de compás.
• Blanca: Figura de nota igual a media unidad.
• Cifra indicadora: Fracción que va al comienzo de la partitura, después de la llave.
• Clave: Llave que va al comienzo de la pauta y que sirve para dar el nombre a las líneas y
espacios.
• Compás: Período de tiempo igual a otros con que se marca el ritmo de una frase musical, cuya
división natural viene indicada en el pentagrama por unas líneas verticales.
• Contrapunto:Combinación simultánea de dos o más melodías. La palabra contrapunto viene del
latín punctus contra punctum (punto contra punto) o nota contra nota. Ello significa una
melodía contrapuesta a otra. Si bien el término es casi un sinónimo de polifonía (una textura
musical que contiene simultáneamente dos o más melodías), ambas palabras difieren ligeramente
en su uso habitual. La polifonía se refiere a las texturas en general (oponiendo la polifonía a la
homofonía), mientras que el vocablo contrapunto suele reservarse para las técnicas de
composición polifónica.
• Corchea: Figura de nota equivalente a un octavo de la unidad.
• Duración: indica si se trata de una nota redonda, corchea, semicorchea, etc.
• Fuga: Composición musical de un solo tiempo y escrita en estilo polifónico, en la que un tema
melódico se ve sistemáticamente sometido a la imitación melódica. La textura musical de una
fuga descansa en el contrapunto (melodías entretejidas), y su rasgo estilístico más importante es
el tratamiento del material temático por medio de la imitación. Esta característica es típica
también del fugato, un pasaje que emplea técnicas de la fuga dentro de otra forma, por ejemplo,
la sonata. Sin embargo, no necesariamente se ajustará en todos los detalles a una forma fija. La
calidad de la fuga depende del partido que se saque del contrapunto riguroso de una única idea.
Por ello, cualquier fuga responderá esencialmente a una fórmula abstracta, aunque se desviará de
ella en cierto grado.
página 50
• Intervalo: Diferencia de altura entre dos tonos musicales oídos sucesiva o simultáneamente. En
la armonía occidental, los nombres de los intervalos indican el número de notas de la escala
diatónica (la escala de siete notas que usa los tonos de do a si) comprendidas en el intervalo. Así,
el intervalo do-sol se denomina de quinta, ya que comprende cinco notas de la escala diatónica
(los intervalos siempre se cuentan con ambos extremos incluidos). El unísono (del italiano, 'una
sola nota') consiste en dos tonos idénticos (por ejemplo, dos voces que cantan el do central). La
octava (del latín, octavus) es un intervalo entre dos notas separadas por 5 tonos y 2 semitonos
(por ejemplo, del do central al do inmediatamente superior en la escala). Términos como quinta
o tercera no resultan suficientemente precisos para definir completamente a los intervalos
diatónicos, por lo que se añaden los términos calificativos de mayor, menor, perfecta, disminuida
o aumentada. Los unísonos, octavas, cuartas y quintas pueden calificarse como intervalos
perfectos. Su identidad acústica es tan fuerte que si su tamaño se viera alterado de forma
perceptible, perderían su carácter esencial. Por ejemplo, se puede analizar una cuarta perfecta
como do-fa para descubrir dos tonos enteros (do-re y re-mi) y un semitono (mi-fa). La escala
diatónica también contiene el intervalo fa-si (de tres tonos enteros), que el oído percibe como
radicalmente diferente de una cuarta perfecta. En este último caso, se denomina cuarta
aumentada, ya que es mayor que la cuarta perfecta en un semitono. Los otros intervalos
diatónicos (segundas, terceras, sextas y séptimas) aparecen en dos tamaños, uno de ellos mayor
que el otro en un semitono. La tercera menor mi-sol (un semitono, mi-fa, más un tono entero,
fa-sol) coexiste junto a la tercera mayor do-mi (dos tonos enteros, do-re y re-mi) al constituir
juntos el acorde de do mayor .
• Llave: Signo o clave que va al comienzo de la pauta.
• Ligadura: Línea curva que colocada sobre las notas, éstas deben interpretarse muy unidas.
• Negra: Figura de nota equivalente a un cuarto de unidad.
• Nota: Figura, forma de representar los sonidos.
• Octava: Ocho grados. Intervalo de cinco tonos y dos semitonos diatónicos.
• Partitura: Notación musical de una composición en varias partes, en la que la música que debe
ser interpretada por cada voz o instrumento está escrita en pentagramas separados. Los
pentagramas se alinean uno debajo del otro. Una partitura completa muestra la música de todos
los instrumentos; los músicos reciben individualmente unas partes separadas (particellas) que
sólo muestran la música de su instrumento.
• Pauta: Pentagrama.
página 51
• Pentagrama: Conjunto de cinco lineas y cuatro espacios sobre el que se escribe la música.
• Punto: Colocado al lado derecho de una nota o silencio, aumenta la mitad de su valor.
• Silencio: Signo que indica la suspensión del sonido.
• Semitono: Mitad del intervalo de un tono.
• Semicorchea: Figura de nota equivalente a un dieciseisavo de unidad.
• Tono: Mayor distancia entre sonidos contiguos.
• Tonalidad: Orden de las alteraciones en las escalas.
página 52
Anexo II
Partituras empleadas
En las siguientes páginas aparecen la partituras escaneadas sobre las cuales se han realizado los
análisis de este proyecto fin de carrera.
Mencionar que dichas imágenes son las que se han proporcionado inicialmente, sin tratamiento ni
manipulación alguna mediante software.
Se aprecian las imperfecciones de dichas partituras, como por ejemplo, el hecho de que éstas se
encuentren con una cierta inclinación, o una alteración de los colores originales.
página 53
página 54
página 55
página 56
página 57
página 58
página 59

Mais conteúdo relacionado

Mais procurados

Manual ofimatica v2.3
Manual ofimatica v2.3Manual ofimatica v2.3
Manual ofimatica v2.3
UCLA
 
Tutorial de maxima
Tutorial de maximaTutorial de maxima
Tutorial de maxima
lichowlin
 
Lego education we do teacher's guide (wedo)
Lego education we do teacher's guide (wedo)Lego education we do teacher's guide (wedo)
Lego education we do teacher's guide (wedo)
John Carabal
 
Texto guía para prácticas sobre análisis de estructuras
Texto guía para prácticas sobre análisis de estructurasTexto guía para prácticas sobre análisis de estructuras
Texto guía para prácticas sobre análisis de estructuras
OMAR RIOS
 
Arduino Manual de Usuario
Arduino Manual de UsuarioArduino Manual de Usuario
Arduino Manual de Usuario
danielpascual
 
Introducción a la programación en c
Introducción a la programación en cIntroducción a la programación en c
Introducción a la programación en c
victdiazm
 

Mais procurados (17)

Manual kyocera 6030
Manual kyocera 6030Manual kyocera 6030
Manual kyocera 6030
 
Manual ofimatica v2.3
Manual ofimatica v2.3Manual ofimatica v2.3
Manual ofimatica v2.3
 
Tutorial de maxima
Tutorial de maximaTutorial de maxima
Tutorial de maxima
 
Algoritmosy estructurasdedatos2015 1
Algoritmosy estructurasdedatos2015 1Algoritmosy estructurasdedatos2015 1
Algoritmosy estructurasdedatos2015 1
 
Metodologia Hefesto - Business Intelligence
Metodologia Hefesto - Business IntelligenceMetodologia Hefesto - Business Intelligence
Metodologia Hefesto - Business Intelligence
 
Hefesto v2.1
Hefesto v2.1Hefesto v2.1
Hefesto v2.1
 
Datawarehouse hefesto
Datawarehouse hefestoDatawarehouse hefesto
Datawarehouse hefesto
 
Manual de mathematica
Manual de mathematicaManual de mathematica
Manual de mathematica
 
Manual usuario AdServer
Manual usuario AdServerManual usuario AdServer
Manual usuario AdServer
 
Seminario del Operador
Seminario del Operador Seminario del Operador
Seminario del Operador
 
Algoritmos programacion-python
Algoritmos programacion-pythonAlgoritmos programacion-python
Algoritmos programacion-python
 
Lego education we do teacher's guide (wedo)
Lego education we do teacher's guide (wedo)Lego education we do teacher's guide (wedo)
Lego education we do teacher's guide (wedo)
 
Texto guía para prácticas sobre análisis de estructuras
Texto guía para prácticas sobre análisis de estructurasTexto guía para prácticas sobre análisis de estructuras
Texto guía para prácticas sobre análisis de estructuras
 
Maxima
MaximaMaxima
Maxima
 
Algoritmos programacion-python
Algoritmos programacion-pythonAlgoritmos programacion-python
Algoritmos programacion-python
 
Arduino Manual de Usuario
Arduino Manual de UsuarioArduino Manual de Usuario
Arduino Manual de Usuario
 
Introducción a la programación en c
Introducción a la programación en cIntroducción a la programación en c
Introducción a la programación en c
 

Destaque

Kaufman resume 2016
Kaufman resume 2016Kaufman resume 2016
Kaufman resume 2016
Sara Kaufman
 
As novas tecnologias e a educação
As novas tecnologias e a educaçãoAs novas tecnologias e a educação
As novas tecnologias e a educação
rita_rocha
 
Graduate Institute Of Export
Graduate Institute Of ExportGraduate Institute Of Export
Graduate Institute Of Export
martin wheeler
 
Ativ14 juliette terezam_1
Ativ14 juliette terezam_1Ativ14 juliette terezam_1
Ativ14 juliette terezam_1
jhullyste
 
Farmacologia clínica - Volume V Tomo III - Farmacodinâmica e Farmacocinética
Farmacologia clínica - Volume V  Tomo III - Farmacodinâmica e  Farmacocinética Farmacologia clínica - Volume V  Tomo III - Farmacodinâmica e  Farmacocinética
Farmacologia clínica - Volume V Tomo III - Farmacodinâmica e Farmacocinética
cecu2016
 

Destaque (15)

Kaufman resume 2016
Kaufman resume 2016Kaufman resume 2016
Kaufman resume 2016
 
pierre's resume 2016
pierre's resume 2016pierre's resume 2016
pierre's resume 2016
 
Certificate of project
Certificate of projectCertificate of project
Certificate of project
 
As novas tecnologias e a educação
As novas tecnologias e a educaçãoAs novas tecnologias e a educação
As novas tecnologias e a educação
 
Normas de seguridad en el laboratorio
Normas de seguridad en el laboratorioNormas de seguridad en el laboratorio
Normas de seguridad en el laboratorio
 
Certificate of trainings
Certificate of trainingsCertificate of trainings
Certificate of trainings
 
Presentasjonmodul 10
Presentasjonmodul 10Presentasjonmodul 10
Presentasjonmodul 10
 
lala uhul
lala uhullala uhul
lala uhul
 
Paseo al río cauca
Paseo al río caucaPaseo al río cauca
Paseo al río cauca
 
Graduate Institute Of Export
Graduate Institute Of ExportGraduate Institute Of Export
Graduate Institute Of Export
 
Ativ14 juliette terezam_1
Ativ14 juliette terezam_1Ativ14 juliette terezam_1
Ativ14 juliette terezam_1
 
Farmacologia clínica - Volume V Tomo III - Farmacodinâmica e Farmacocinética
Farmacologia clínica - Volume V  Tomo III - Farmacodinâmica e  Farmacocinética Farmacologia clínica - Volume V  Tomo III - Farmacodinâmica e  Farmacocinética
Farmacologia clínica - Volume V Tomo III - Farmacodinâmica e Farmacocinética
 
El arte de enfrentar la adversidad
El arte de enfrentar la adversidadEl arte de enfrentar la adversidad
El arte de enfrentar la adversidad
 
CV 20160419
CV 20160419CV 20160419
CV 20160419
 
Defence mechanism
Defence mechanismDefence mechanism
Defence mechanism
 

Semelhante a memoria_pfc_jose_2005

Conceptos basicos de solid works piezas y ensamblajes
Conceptos basicos de solid works   piezas y ensamblajesConceptos basicos de solid works   piezas y ensamblajes
Conceptos basicos de solid works piezas y ensamblajes
Reynol Rivas
 
Algoritmo de filtrado adaptable
Algoritmo de filtrado adaptableAlgoritmo de filtrado adaptable
Algoritmo de filtrado adaptable
Alberto Ascona
 
DataMining_lastfm
DataMining_lastfmDataMining_lastfm
DataMining_lastfm
Rub Afonso
 
Guía práctica de ANTLR 2.7.2
Guía práctica de ANTLR 2.7.2Guía práctica de ANTLR 2.7.2
Guía práctica de ANTLR 2.7.2
LAUNASA NOVENO B
 

Semelhante a memoria_pfc_jose_2005 (20)

Algoritmo de Reconocimiento de Objetos en Escenas Complejas para Aplicaciones...
Algoritmo de Reconocimiento de Objetos en Escenas Complejas para Aplicaciones...Algoritmo de Reconocimiento de Objetos en Escenas Complejas para Aplicaciones...
Algoritmo de Reconocimiento de Objetos en Escenas Complejas para Aplicaciones...
 
Conceptos básicos de solid works piezas y ensamblajes
Conceptos básicos de solid works piezas y ensamblajesConceptos básicos de solid works piezas y ensamblajes
Conceptos básicos de solid works piezas y ensamblajes
 
Conceptos basicos de solid works piezas y ensamblajes
Conceptos basicos de solid works   piezas y ensamblajesConceptos basicos de solid works   piezas y ensamblajes
Conceptos basicos de solid works piezas y ensamblajes
 
Guía #8 - Ciclos Iterativos Anidados.pdf
Guía #8 - Ciclos Iterativos Anidados.pdfGuía #8 - Ciclos Iterativos Anidados.pdf
Guía #8 - Ciclos Iterativos Anidados.pdf
 
Informe - generacion de superficie - secciones transversales en Autocad civi...
Informe - generacion de superficie - secciones transversales en Autocad  civi...Informe - generacion de superficie - secciones transversales en Autocad  civi...
Informe - generacion de superficie - secciones transversales en Autocad civi...
 
Enseñanza mesclada
Enseñanza mescladaEnseñanza mesclada
Enseñanza mesclada
 
Algoritmo de filtrado adaptable
Algoritmo de filtrado adaptableAlgoritmo de filtrado adaptable
Algoritmo de filtrado adaptable
 
Introducción a la programación en C
Introducción a la programación en CIntroducción a la programación en C
Introducción a la programación en C
 
Algoritmo Iterativo Eficiente para el Análisis de Interferogramas con Corrimi...
Algoritmo Iterativo Eficiente para el Análisis de Interferogramas con Corrimi...Algoritmo Iterativo Eficiente para el Análisis de Interferogramas con Corrimi...
Algoritmo Iterativo Eficiente para el Análisis de Interferogramas con Corrimi...
 
Números irracionales
Números irracionalesNúmeros irracionales
Números irracionales
 
Conceptos informáticos generales
Conceptos informáticos generalesConceptos informáticos generales
Conceptos informáticos generales
 
DataMining_lastfm
DataMining_lastfmDataMining_lastfm
DataMining_lastfm
 
Graficaci ón
Graficaci ónGraficaci ón
Graficaci ón
 
21222
2122221222
21222
 
Tfg g3750
Tfg g3750Tfg g3750
Tfg g3750
 
Sistema de Captura de Movimiento de Bajo Costo
Sistema de Captura de Movimiento de Bajo CostoSistema de Captura de Movimiento de Bajo Costo
Sistema de Captura de Movimiento de Bajo Costo
 
Guia_Analisis_Exp.pdf
Guia_Analisis_Exp.pdfGuia_Analisis_Exp.pdf
Guia_Analisis_Exp.pdf
 
Ayuda magna
Ayuda magnaAyuda magna
Ayuda magna
 
Guía práctica de ANTLR 2.7.2
Guía práctica de ANTLR 2.7.2Guía práctica de ANTLR 2.7.2
Guía práctica de ANTLR 2.7.2
 
Introduccion al lenguaje c
Introduccion al lenguaje cIntroduccion al lenguaje c
Introduccion al lenguaje c
 

memoria_pfc_jose_2005

  • 1. Ingeniería Técnica en Informática de Sistemas Escuela Superior de Ciencias Experimentales y Tecnología Curso académico 2004-2005 Grupo de Algorítmica aplicada a la Visión Artificial y la Biometría Proyecto Fin de Carrera Segmentación y búsqueda de patrones en partituras musicales Autor: José Ignacio Pérez Alcocer Tutores: Ángel Sánchez Calle Juan José Pantrigo Fernández
  • 2. Dedicado a mis familiares y amigos, por el apoyo y ayuda incondicional prestada a lo largo de la carrera; y a la memoria de todas aquellas personas queridas que ya no están entre nosotros. página 1
  • 3. Agradecimientos Agradezco la colaboración prestada por los miembros del Grupo de Algorítmica aplicada a la Visión Artificial y la Biometría, especialmente a mis tutores, Juan José Pantrigo Fernández y Ángel Sánchez Calle. Muchas gracias a ambos por el interés que han demostrado y por la ayuda prestada. Sin sus aportaciones y colaboración, este proyecto no hubiera sido posible. Igualmente agradezco la ayuda prestada por todos mis compañeros, y a la par amigos, durante los años que he cursado la carrera de Ingeniería Técnica en Informática de Sistemas. página 2
  • 4. Índice general 1. Introducción 7 1.1 Objetivos ................................................................................................................................ 7 1.2 Herramientas .......................................................................................................................... 8 1.2.1 MATLAB ....................................................................................................................... 9 1.2.2 Escaner ........................................................................................................................... 10 1.2.3 GIMP ............................................................................................................................. 10 1.2.4 Partituras ........................................................................................................................ 10 1.3 Grupo de Algorítmica aplicada a la Visión Artificial y la Biometría ............................. 11 1.4 J.S Bach ................................................................................................................................... 11 2 Sistemas OMR 14 2.1 Introducción a los sistemas OMR ...................................................................................... 14 2.2 Estado de los sistemas OMR ............................................................................................... 15 2.2.1 Detección de las líneas del pentagrama ..................................................................... 15 2.2.2 Segmentación de elementos musicales ...................................................................... 15 2.2.3 Análisis de la imagen segmentada .............................................................................. 16 3 Metodología desarrollada 17 3.1 Preproceso de la imagen ...................................................................................................... 17 3.2 Identificación de compases .................................................................................................. 18 3.3 Búsqueda de notas ................................................................................................................ 20 3.4 Tono y duración .................................................................................................................... 22 4 Descripción informática 27 4.1 Implementación ..................................................................................................................... 28 4.1.1 buscar_patron_notacion_diferencial ......................................................................... 28 4.1.2 buscar_patron_notacion_estandar ............................................................................. 28 4.1.3 buscar_patron_duracion .............................................................................................. 29 4.1.4 analizar ........................................................................................................................... 29 4.1.5 preproceso ..................................................................................................................... 29 página 3
  • 5. 4.1.6 eliminar_ruido ............................................................................................................... 30 4.1.7 separar_sistemas ........................................................................................................... 30 4.1.8 separar_pentagramas .................................................................................................... 30 4.1.9 trocear_compases ......................................................................................................... 30 4.1.10 maximos_locales ......................................................................................................... 31 4.1.11 amplitud_picos ............................................................................................................ 31 4.1.12 histograma ................................................................................................................... 31 4.1.13 vhist .............................................................................................................................. 31 4.1.14 buscar ........................................................................................................................... 31 4.1.15 buscar_candidatos ...................................................................................................... 32 4.1.16 eliminar_candidatos_consecutivos .......................................................................... 32 4.1.17 aplicar_masacara ......................................................................................................... 32 4.1.18 convertir ....................................................................................................................... 32 4.1.19 buscar_subsecuencia .................................................................................................. 33 4.2 Uso .......................................................................................................................................... 33 5 Resultados experimentales 37 6 Conclusiones y líneas futuras 47 6.1 Conclusiones .......................................................................................................................... 47 6.2 Líneas futuras ......................................................................................................................... 48 BIBLIOGRAFÍA 49 ANEXO I: Glosario de términos musicales utilizados en el proyecto 50 ANEXO II: Partituras utilizadas 53 página 4
  • 6. Índice de figuras Figura 1.1. Retrato de J.S Bach ....................................................................................................... 13 Figura 3.1. Imagen de la partitura original .................................................................................. 18 Figura 3.2. Imagen de la partitura preprocesada ........................................................................ 18 Figura 3.3. Proyección horizontal de la imagen de la figura 3.1 ............................................... 19 Figura 3.4. Pentagrama .................................................................................................................... 19 Figura 3.5. Proyección vertical de la imagen de la figura 3.4 .................................................... 20 Figura 3.6. Proyección horizontal de un compás ........................................................................ 21 Figura 3.7. Pistas virtuales trazadas sobre el compás de la figura 3.6 ....................................... 21 Figura 3.8. Máscara empleada para efectuar las comparaciones ............................................... 22 Figura 3.9. Detección de notas de un compás ............................................................................. 22 Figura 3.10. Compás ........................................................................................................................ 23 Figura 3.11. Adquisición de imágenes ........................................................................................... 24 Figura 3.12. Preprocesado y segmentación de la partitura ......................................................... 25 Figura 3.13. Segmentación y detección de notas ......................................................................... 26 Figura 4.1. Desarrollo en espiral ..................................................................................................... 27 Figura 4.2. Icono del programa MATLAB ................................................................................... 33 Figura 4.3. Ventana principal de MATLAB ................................................................................. 34 Figura 4.4. Inserción de un comando en MATLAB ................................................................... 35 Figura 4.5. Cuadro de diálogo que permite la selección de la partitura a analizar .................. 35 Figura 4.6. Cuadro de diálogo que permite establecer el patrón de búsqueda ........................ 36 Figura 4.7. Message Box que advierte al usuario de que no se han encontrado coincidencias. 36 página 5
  • 7. Índice de tablas Tabla 2.1. Comparación de porcentajes de éxito en el reconocimiento de una serie de partituras ........................................................................................................................ 14 Tabla 5.1. Estadísticas del análisis de la partitura 1 de la Invención 5 ...................................... 37 Tabla 5.2. Estadísticas del análisis de la partitura 1 de la Invención 5 ..................................... 38 Tabla 5.3. Estadísticas del análisis de la partitura 2 de la Invención 5 ..................................... 38 Tabla 5.4. Estadísticas del análisis de la partitura 2 de la Invención 5 ..................................... 40 Tabla 5.5. Estadísticas del análisis de la partitura 1 de la Invención 8 ..................................... 40 Tabla 5.6. Estadísticas del análisis de la partitura 1 de la Invención 8 ..................................... 41 Tabla 5.7. Estadísticas del análisis de la partitura 2 de la Invención 8 ..................................... 41 Tabla 5.8. Estadísticas del análisis de la partitura 2 de la Invención 8 ..................................... 43 Tabla 5.9. Estadísticas del análisis de la partitura 1 de la Invención 10.................................... 43 Tabla 5.10. Estadísticas del análisis de la partitura 1 de la Invención 10 ................................. 44 Tabla 5.11. Estadísticas del análisis de la partitura 2 de la Invención 10 .................................. 44 Tabla 5.12. Estadísticas del análisis de la partitura 2 de la Invención 10 ................................. 45 página 6
  • 8. 1. Introducción 1.1. Objetivos El objetivo de este proyecto es el desarrollo de una herramienta semiautomática para la segmentación de partituras musicales, para extraer de éstas la mayor información posible (pentagramas, compases y duración y tono de las notas incluidas en la partitura en éste caso). Se incide en la consideración de la herramienta como semiautomática, puesto que a día de hoy, no hay ningún software que de forma automática asegure la completa corrección de los resultados, y se requiere de un segundo análisis por parte de otro agente (software o humano) que garantice la veracidad de los resultados. La segmentación y análisis de la partitura es una tarea propia de los sistemas OMR (Optical Music Recognition), de los que hablaremos en posteriores secciones. Una vez procesada la imagen, un segundo objetivo es obtener líneas melódicas (patrones musicales) en partituras barrocas, más en concreto de la música de J. S. Bach. El método elegido para el análisis es un conglomerado de las propuestas de diversos autores de artículos sobre los sistemas OMR y de ideas de aportación propias del alumno y los tutores de éste. Para lograr los objetivos propuestos, se ha desarrollado una serie de funciones en MATLAB1 que nos proporcionarán la información que deseamos obtener de las partituras. En primer lugar se realiza un preproceso sobre las imágenes digitalizadas de las partituras. Dicho preproceso consiste básicamente en la eliminación de información innecesaria (tales como el título de la partitura y el número de página), y la transformación en una imagen binaria (la imagen original se encuentra en un formato de niveles de grises). Posteriormente, se procede a desglosar la información contenida en dicha imagen. En sucesivos pasos, se identifican los sistemas de pentagramas para acto seguido realizar la obtención individual de cada pentagrama, los compases que conforman dichos pentagramas y, en última instancia, obtener duración y tono (en el orden adecuado) de las notas de todos los compases. Finalmente, se permite al usuario realizar la búsqueda del patrón musical que desee. El objetivo final de este proyecto ha sido el d e sarro llo de un siste m a se m iau to m áti c o c apaz de rec o no c e r un patrón m eló dic o establecido por el usuario de dicho sistema. Este objetivo se ha articulado en los siguientes objetivos operativos: 1 Copyright The Math Works, Inc. página 7
  • 9. • Documentación: los tutores suministraron al alumno una serie de artículos relacionados con los sistemas OMR y sus metodologías; de este modo el alumno se pone al día de la problemática de estos sistemas, las diversas metodologías propuestas para abordar el problema tratado, etc. • Aprendizaje de la herramienta MATLAB: el alumno consultó una serie de documentos, también proporcionados por los tutores, para adquirir los conocimientos básicos para poder trabajar con esta herramienta. Dada la similitud existente entre la sintaxis que se emplea en MATLAB y otros lenguajes de alto nivel, como por ejemplo CC++ o Java, la facilidad para la manipulación de objetos y matrices, y el haber trabajado con MAPLE previamente, hizo que este proceso no requiriese de la inversión de mucho esfuerzo por parte del alumno. • Preprocesado de la imagen: el primer paso, previo al proceso de análisis de una partitura, consiste en obtener una imagen libre de información irrelevante (como por ejemplo, el título de la partitura o el número de página del libreto), en un formato que computacionalmente sea más manejable (una imagen binaria ocupa menos espacio en memoria y disco que la misma imagen en niveles de grises), y que facilite su posterior análisis (una imagen de una partitura con una cierta rotación influye notablemente en la complejidad del análisis, y requiere de otra posterior tarea de procesado que corrija ese defecto de la imagen). • Segmentación de la imagen: sobre la imagen preprocesada, se procede a la extracción de los componentes de la partitura. La descomposición de los elementos de la partitura se realiza según este orden: en primer lugar, se localizan los sistemas, posteriormente, los pentagramas y, finalmente, los compases. Se parte de la identificación de unidades estructurales más complejas, para llegar a las unidades mínimas analizables. • Establecer la secuencia de notas que conforman el compás: sobre cada uno de los compases que en su conjunto constituyen una determinada partitura, se procede a identificar las notas en él contenidas. • Búsqueda de patrones: sobre la información obtenida en el anterior objetivo operativo, se procede a efectuar las búsqueda del patrón melódico elegido por el usuario. 1.2. Herramientas En esta sección se enumeran las herramientas (tanto software como hardware) empleadas en este proyecto, realizando una breve descripción de las mismas. página 8
  • 10. 1.2.1. MATLAB MATLAB (Matrix LABoratory) es un lenguaje desarrollado para el cómputo técnico. Integra tareas de computación, visualización, y programación en un entorno amigable donde tanto los problemas como las soluciones se expresan en una notación matemática familiar. Dentro de la clasificación de los lenguajes de programación, MATLAB se puede considerar dentro del grupo de los lenguajes interpretados (del que, por ejemplo, también forma parte MAPLE2). Su característica fundamental es que es un lenguaje especializado en la manipulación de matrices, aunque las versiones más recientes del lenguaje permitan de una manera restringida la definición de nuevos tipos abstractos de datos. La elección de este entorno de programación es debida a la facilidad que ofrece en el manejo de imágenes, puesto que éstas son tratadas como matrices de datos y MATLAB ofrece una gran cantidad de funciones que nos facilitan su manipulación. Otro factor determinante en esta elección es la posibilidad de utilizar la Image Procesing Toolbox. La toolbox de procesamiento de imágenes es una colección de funciones (librería) que extienden la capacidad del entorno de desarrollo numérico de MATLAB. Esta librería soporta un amplio rango de operaciones de procesamiento de imágenes, incluyendo:  Transformaciones espaciales de imagen  Operaciones morfológicas  Operaciones de bloques y vecinos  Diseño de filtros y filtrados lineales  Transformadas en el dominio de la frecuencia  Análisis de imagen y realzado  Operaciones sobre regiones de interés Otra característica interesante es la similitud de la sintaxis con la de algunos lenguajes de programación de alto nivel, tales como C/C++ o Java. Para obtener más información, nos podemos dirigir a la página web oficial del producto, http://www.mathworks.com, o bien consultar la herramienta de ayuda adjunta. Reseñar que la versión del producto sobre la que se han desarrollado las funciones es la 6.5.0.180913 Release 13, publicada el 18 de junio de 2002. Se comenta esta particularidad debido a que hay pequeñas incompatibilidades con versiones anteriores del software, como por ejemplo, la limitación del tamaño de los identificadores de funciones. 2 Copyright Maplesoft, division of Waterloo Maple Inc. página 9
  • 11. 1.2.2. Escáner Un escáner es un periférico de sólo entrada que nos permite llevar a cabo la digitalización de imágenes. Por digitalización se entiende la operación de transformar un objeto analógico (algo físico, real, de precisión infinita) en un objeto digital (un conjunto finito y de precisión determinada de unidades lógicas denominadas bits). El proceso de captación de una imagen resulta casi idéntico para cualquier escáner: se ilumina la imagen con un foco de luz, se conduce mediante espejos la luz reflejada hacia un dispositivo denominado CCD (Charge Coupled Device, dispositivo acoplado por carga -eléctrica-) que transforma la luz en señales eléctricas, se transforma dichas señales eléctricas a formato digital en un DAC (conversor digital-analógico) y se transmite el caudal de bits resultante al ordenador. En este caso, se ha empleado el escáner para digitalizar las partituras contenidas en un libreto musical. Las imágenes resultantes tienen una resolución de 1600x2400 ppp (puntos por pulgada), y un tamaño aproximado de 1,6 MB, en formato jpeg (Joint Photographic Experts Group, un formato con soporte de 24 bits y una alta compresión, que han hecho de este un estándar para la publicación de imágenes en la Web). 1.2.3. GIMP GIMP (GNU Image Manipulation Program) es un programa extremadamente potente y versátil, empleado en tareas de retoque fotográfico y creación y diseño de imágenes. Se trata de un programa de libre distribución (bajo licencia GPL, licencia de uso público y general ), totalmente gratuito, y disponible en varios sistemas operativos y en diversos idiomas. Este programa se ha empleado para retocar las imágenes digitalizadas de las partituras. Con este software se ha reducido el tamaño de las imágenes (originalmente el tamaño de la imagen escaneada es, en media, de unos 1,6 MB, y tras ser procesada el tamaño de la imagen es de unos 500 KB) para que estas sean manejadas con mayor eficiencia en MATLAB, y se han realizado unas pequeñas correcciones en las imágenes adquiridas mediante el escáner. Dichas correcciones consisten básicamente en pequeñas rotaciones de la imagen, entre los +0,25º y +1º, para evitar realizar operaciones más complejas en las funciones de preprocesado de la imagen, como es la corrección del ángulo de las partituras. 1.2.4. Partituras Las partituras utilizadas han sido extraídas de un libreto de partituras de J.S Bach editado por Real Musical. Se tratan de unas partituras estándar, de tamaño A4, disponibles en el Anexo II de este documento. página 10
  • 12. 1.3. GAVAB El Grupo de Algorítmica aplicada a la Visión Artificial y la Biometría, con sede en el edifico departamental 2 del campus de Móstoles, está formado por formado por profesores y alumnos cuyos intereses giran entorno a las siguientes líneas de investigación:  Visión artificial • Técnicas de segmentación de imágenes • Procesamiento borroso de imágenes • Procesamiento de altas prestaciones de imágenes • Procesamiento de vídeo en tiempo real  Reconocimiento biométrico • Análisis de documentos • Verificación de firmas • Modelado y reconocimiento de caras en 3D • Análisis de movimiento humano  Otras líneas • Software pipelining para algoritmos en DSP • Técnicas de planificación en grafos • Metaheurísticas • Computación Ubicua Para obtener más información sobre este grupo, se puede visitar la siguiente página web: http://gavab.escet.urjc.es/. 1.4. J.S Bach Puesto que este proyecto se basa sobre una pequeña parte de la obra de Johann Sebastian Bach, se realizará una reseña biográfica sobre este afamado organista y compositor alemán del periodo barroco, así como una pequeña descripción de las características de sus composiciones. Bach nació el 21 de marzo de 1685 en Eisenach, Turingia, en el seno de una familia que durante siete generaciones dio origen, al menos, a 53 músicos de importancia, desde Veit Bach hasta Wilhelm Friedrich Ernst Bach. Bach comenzó a ganarse la vida como miembro del coro de la iglesia de San Miguel, en Lüneburg. Posteriormente pasó a ser violinista de la orquesta de cámara del príncipe Johann Ernst de Weimar, pero más tarde, se fue a Arnstadt, donde se convirtió en organista de iglesia. Bach estudió durante un breve periodo con Dietrich Buxtehude, renombrado organista y compositor danés, cuya música influyó enormemente en Bach. página 11
  • 13. En 1707 se casó con María Bárbara Bach, prima segunda suya. Durante los siete años siguientes, compuso unas 30 cantatas, incluida la conocida cantata de funeral Gottes Zeit ist die allerbeste Zeit (El tiempo de Dios es el mejor), y también compuso obras para órgano y clavicémbalo. Comenzó a viajar por Alemania como virtuoso del órgano y como asesor de organeros. En 1717 Bach comenzó a trabajar como maestro de capilla y director de música de cámara en la corte del príncipe Leopoldo de Anhalt-Köthen. Durante este periodo escribió fundamentalmente música profana para conjuntos instrumentales e instrumentos solistas. También compuso libros de música para su mujer e hijos, con el objeto de enseñarles la técnica del teclado y el arte de la música en general. Estos libros incluyen el Clave bien temperado, las Invenciones (de las cuales forman parte las partituras sobre las que se ha trabajado en este proyecto) y el Pequeño libro de órgano. En1720, Bach se casó con Ana Magdalena Wilcken, cantante e hija de un músico de la corte que le dio trece hijos, además de los siete que había tenido con su anterior mujer. Bach se trasladó a Leipzig en 1723, donde permaneció el resto de sus días, trabajando como director musical y jefe de coro en la iglesia de Santo Tomás y en la escuela eclesiástica de Leipzig. Bach comenzó a quedarse ciego el último año de su vida, y murió el 28 de julio de 1750, después de someterse a una fallida operación ocular. Tras su muerte, fue recordado más como virtuoso del órgano y el clavicémbalo que como compositor. Sus frecuentes giras le habían asegurado una reputación como gran organista de su tiempo, pero el estilo contrapuntístico de sus composiciones sonaba anticuado para sus contemporáneos, quienes preferían los nuevos estilos preclásicos, que eran más homofónicos y menos contrapuntísticos que la música de Bach y que se estaban poniendo de moda. Debido a ésto, durante los 80 años siguientes, su música fue rechazada por el público, a pesar de la admiración que le profesaban ciertos músicos como Wolfgang Amadeus Mozart y Ludwig van Beethoven. El resurgimiento del interés por su música se produjo a mediados del siglo XIX. El compositor alemán Félix Mendelssohn preparó una audición de la Pasión según San Mateo en 1829, lo cual facilitó el nacimiento de un nuevo interés por Bach. La Bach Gesellschaft surgió en 1850 a fin de encontrar, editar y publicar los trabajos de Bach. Como este "renacimiento" de Bach coincidió con el florecimiento del romanticismo musical, los estilos utilizados para interpretarlo fueron a menudo distorsiones de lo que Bach pretendía en realidad. Sin embargo, la escuela musical del siglo XX, inspirada por el entusiasmo de Albert Schweitzer, misionero protestante francés, médico, organista y musicólogo, ha ido estableciendo unos principios de interpretación más próximos a la época de Bach y a su música. Bach fue, en buena medida, autodidacta en lo que se refiere a la composición musical. Siguiendo la costumbre de su época, su principal método de estudio consistía en copiar en un cuaderno la música de compositores franceses, alemanes e italianos de su tiempo o anteriores a él. Hizo esto durante toda su vida y con frecuencia realizó arreglos sobre los trabajos de otros compositores. La trascendencia de la música de Bach se debe, en gran parte, al alcance de su intelecto. Es conocido como el maestro supremo del contrapunto. Era capaz de entender y usar cualquier tipo página 12
  • 14. de recurso musical existente en el barroco. Si quería, podía combinar en una misma composición los esquemas rítmicos de las danzas francesas, la dulzura de las melodías italianas y el rebuscado estilo contrapuntístico alemán. Al mismo tiempo, podía escribir para voz y para diversos instrumentos sacando el máximo partido de las propiedades de construcción y afinación de cada uno de ellos. Su capacidad para explotar y valorar los recursos, estilos y géneros musicales le permitió introducir importantes cambios de lenguaje instrumental. Así por ejemplo, podía tomar una composición italiana para varios instrumentos, como un concerto para violín, y transformarla en una obra para címbalo solo. Mediante el estudio de intrincadas líneas melódicas, era capaz de reducir la compleja estructura de una fuga a varias voces y adaptarla para un instrumento como el violín o el violonchelo. Los juegos de preguntas y respuestas, y las dispersas texturas de los recitativos operísticos, se pueden encontrar en algunas de sus obras para tecla. La grandeza de Bach no se debió, por supuesto, sólo a su facilidad técnica. Es la expresividad de su música, presente sobre todo en sus trabajos vocales, lo que transporta y transmite su humanidad, y conmueve a quienes la escuchan. Figura 1.1. Retrato de J.S Bach. página 13
  • 15. 2. Sistemas OMR 2.1. Introducción a los sistemas OMR El objetivo de los sistemas OMR (Optical Music Recognition, reconocimiento óptico de música) es el pleno reconocimiento automático de todas aquellas características básicas musicales, como pueden serlo la duración y tono de las notas contenidas en toda partitura. El objetivo es la conversión de la música impresa (e incluso en algunos casos, manuscrita) en una descripción computacional de las primitivas musicales. Teniendo la representación musical de la partitura en una representación adecuada para el ordenador se podrán realizar otras tareas de análisis y tratamiento de la información. Las investigaciones en el campo de los sistemas OMR tienen sus orígenes en los primero años de la década de los 70. Prereau[12 ] fue el primero en presentar un programa que reconocía un conjunto de símbolos musicales básicos. Matsushima[13] desarrolló un sistema en tiempo real de visionado musical que era capaz de reconocer una partitura de una nana en un tiempo de unos 15 segundos. Más recientemente, Roach[14] detalló los principios de un sistema experto en el que una base de conocimiento musical era aplicada para extraer algunas propiedades primitivas de una imagen digitalizada de una partitura manuscrita. En la actualidad, no se ha logrado desarrollar ningún sistema capaz de proporcionarnos con total fiabilidad la información contenida en una partitura musical (véase la tabla 2.1, obtenida de [2]), lo cual es índice de la complejidad del desarrollo de un sistema de estas características. Algunos programas comerciales que implementan un sistema OMR son los siguientes: MIDISCAN, NoteScan, Solero. Tabla 2.1. Comparación de porcentajes de éxito en el reconocimiento de una serie de partituras. Partitura Símbolos Índice de reconocimiento (%) Método Lemon MIDISCAN NoteScan Magnificant 239 99 84 88 Canon in D 206 99 88 73 Concerto No. 1 247 95 98 94 Poloverzian Dance 281 98 93 86 The Entertainer 233 94 99 64 Für Elise 534 99 96 83 Moonlight Sonata 179 96 96 74 Sonata in C Major 256 99 65 88 The Four Seasons 264 81 84 79 Antiphonae Marianae 214 80 87 90 página 14
  • 16. 2.2. Estado del arte de los sistemas OMR Como se comentó en la introducción, la metodología seguida para el desarrollo de este sistema OMR es un compendio de las ideas expuestas en algunos artículos sobre el tema y de las ideas aportadas por los tutores y alumno. Cada autor propone una metodología propia, pero la mayoría de los sistemas analizados concuerdan en una serie de pasos, que serán descritos a continuación. 2.2.1. Detección de las líneas del pentagrama La detección de las líneas de los pentagramas, o staff lines,es considerado por la mayoría de los autores como el paso preliminar para afrontar las posteriores tareas de reconocimiento. En los sistemas más complejos, en primer lugar se analizan los ángulos de inclinación de los pentagramas para rotar las partituras (en caso de que sea necesario), ya que un ángulo de inclinación puede influir muy negativamente en la identificación de la información. En nuestro caso se ha procurado tener sumo cuidado a la hora de realizar la digitalización de las imágenes para evitar tener que realizar las complejas operaciones de rotado de la imagen, y en el caso de que se mantengan dichos errores, mediante un software de tratamiento de imágenes se realiza dicha corrección. Puesto que las líneas de los pentagramas intersectan con la mayoría de los símbolos contenidos en los compases, su presencia puede llegar a dificultar posteriores tareas. Por ello, en un alto porcentaje de los métodos se opta por identificar las líneas, empleando la transformada de Hough en la mayoría de los casos (con el consiguiente consumo de recursos debido a la complejidad de dicha función), para obtener las ecuaciones de las rectas de la imagen, y posteriormente eliminar las rectas. Otro método para la detección de las staff lines (usado en este proyecto) consiste en el análisis de la proyección horizontal de la imagen. El histograma resultante es muy característico, puesto que se observa claramente los picos generados por la concentración de píxeles que conforman las líneas. En este tipo de sistemas siempre se puede regresar a los resultados obtenidos en los pasos anteriores, por lo que la eliminación de parte de la información no supone ningún inconveniente ya que en cualquier momento podemos recuperar los datos previos. 2.2.2. Segmentación de elementos musicales Una vez eliminadas las staff lines, en la partitura permanecen símbolos aislados que han de ser identificados. Estos símbolos pueden ser notas musicales, caracteres (generalmente numéricos y para cuyo reconocimiento se puede hacer uso de un motor OCR, Optical Carácter Recognition) o elementos decorativos de la partitura. Puesto que, en esencia, sólo interesa la información musical, se procura aislar los caracteres y otras misceláneas, considerándolo como ruido. página 15
  • 17. Es en esta etapa donde más divergencia existen entre los métodos empleados por los diversos autores. La mayor parte de éstos optan por realizar una búsqueda de las componentes conexas (usando grafos de adyacencias de líneas, LAG, principalmente). Una vez elaborado el grafo (y optimizado para su manipulación) se procede al estudio de cada una de las componentes conexas para establecer las características. Otra alternativa es el uso de máscaras (comparación de patrones), que será el método que elegiremos debido a su mayor simplicidad. En algunos casos, se emplean conjuntamente ambos métodos. El formato de las partituras se tiene en cuenta para la identificación de la información. Hay algunas características comunes en toda partitura, como por ejemplo, la ubicación de las claves, que siempre aparecen en el lado izquierdo del primer compás de un pentagrama. El uso de bases del conocimiento musical simplifica el proceso de segmentación. 2.2.3. Análisis de la imagen segmentada Una vez identificados los elementos que componen la partitura, la siguiente etapa consiste en asignar una cierta nomenclatura que permita establecer la relación entre la partitura original y la representación computerizada de la misma. La información debe estar en un formato que pueda ser manejada por cualquier agente, ya sea un usuario u otro programa informático. En la mayoría de los artículos estudiados, no se propone ningún criterio para expresar en una notación musical los resultados, puesto que simplemente se limitan a la descripción de las etapas anteriores. Se ha optado por elegir la codificación propuesta en el artículo [11]. Dicha codificación se basa en la duración de la nota (negra, corchea, semicorchea, …) y el tono (codificado mediante un valor numérico), y será descrita más en detalle en posteriores secciones. página 16
  • 18. 3. Metodología desarrollada En esta sección se explicará, sin profundizar en los detalles de implementación, la metodología seguida para realizar el análisis de las partituras musicales digitalizadas. 3.1. Preproceso de la imagen El primer paso consiste en el preprocesamiento de la imagen. En este proceso se lleva a cabo el binarizado de la imagen y la eliminación de información innecesaria. Como ya se comentó en anteriores secciones, previamente se realizó mediante un software de tratamiento de imágenes unas pequeñas correcciones sobre las partituras escaneadas. Dichas modificaciones consisten en rotar las imágenes unas décimas de grado para facilitar posteriores tareas. Si dicha corrección se realizara mediante funciones en MATLAB, se convertiría en un proceso más complejo. También se lleva a cabo una reducción del tamaño de las imágenes, reduciendo el tamaño que éstas ocupan en disco, pasando de 1,6 MB a unos 500 KB. De esta forma, el manejo de las imágenes en MATLAB será más eficiente y consumirá menos recursos. Para llevar a cabo el paso de la imagen de una escala de grises (256 colores) a una imagen binaria, en primer lugar se calcula el umbral a partir del cuál un valor de gris será considerado como blanco o negro en la representación binaria. Carece de sentido el considerar como blancos en la imagen binaria todos aquellos valores que queden por debajo de la mitad de la escala de grises y como negro los valores que queden por encima de la media, ya que ello acarrea la pérdida de información. El cálculo de dicho umbral se realiza empelando el método de Otsu[10], que elige un umbral para reducir al mínimo la variación de los rangos en los que un pixel será considerado como negro o blanco en la imagen binaria resultante. Una vez calculado el umbral y transformada la imagen original en una representación binaria de la misma, se procede a eliminar la información innecesaria que aparece en la partitura (como por ejemplo, el número de página, y el título, que a efectos prácticos resultan irrelevantes). Para esto es necesario realizar un estudio previo de la morfología de la proyección horizontal del conjunto de la partitura. De dicho estudio se observa que la información superflua se encuentra en una zonas determinadas de la partitura, concretamente en la cabecera y el pie de la partitura. Mediante un método de discriminación de estas zonas, se puede considerar como concluido esta primera fase. Sobre esta imagen resultante del preproceso se realizarán las posteriores tareas. En las figuras 3.1. y 3.2. se aprecia el resultado del procesado de la imagen original. página 17
  • 19. Figura 3.1. Imagen de la partitura original. Figura 3.2. Imagen de la partitura preprocesada. 3.2. Identificación de los compases El segundo paso consiste en identificar de algún modo todos los compases que conforman la partitura sobre la que se trabaja. Esto se consigue mediante sucesivos refinamientos en el análisis de la imagen binaria resultante del preproceso. En primer lugar se detectan los sistemas (o pares de pentagramas) de la partitura. Para ello, nos basamos nuevamente en la esclarecedora morfología de la proyección horizontal de la partitura (véase figura 3.3). Se aprecia claramente las zonas en las que se encuentran los pares de pentagramas, separadas entre sí por unas zonas prácticamente llanas, indicadoras de la ausencia de contenido. Una vez obtenidas las coordenadas de los sistemas (almacenadas en un vector de estructuras que guardan los vértices de los rectángulos que acotan dichos sistemas), se prosigue en la tarea de detección de los compases. página 18
  • 20. Figura 3.3. Proyección horizontal de la imagen de la figura 3.1. A continuación se procede a la división de los pares de pentagramas. Esta división también se lleva a cabo en función de los resultados de la proyección horizontal. Como se observa en la figura 3.3, en la que cada pico (y su entorno) se corresponde con un pentagrama, hay una pequeña zona de separación entre un pentragrama y el siguiente. Basándonos en dicha separación, puede establecerse el rectángulo que delimita a un determinado pentragrama. En algunos casos, esta separación no es tan clara como se muestra en la figura. En dichas excepciones se procede a una división equitativa del área que encierra a los pentagramas. Para establecer las coordenadas que identifican a los compases de la partitura, se analiza la proyección vertical de los pentagramas obtenidos anteriormente. Figura 3.4. Pentagrama. página 19
  • 21. Figura 3.5. Proyección vertical de la imagen de la figura 3.4. Como se puede apreciar en la figura 3.5, es fácil identificar las barras de separación de los compases de un pentagrama (en este caso, el de la figura 3.4.). Descartando los picos generados por los extremos del pentagrama, se obtienen con facilidad los puntos de separación de compases. Una vez localizados estos elementos, se guardan en un vector de estructuras que alberga los vértices de las ventanas que delimitan a cada uno de los compases de la partitura sobre la que se trabaja. 3.3. Búsqueda de notas Esta fase es la más compleja, debido al mayor consumo de recursos (y tiempo) derivado de las constantes y continuas exploraciones que se realizan sobre cada uno de los compases en búsqueda de las notas musicales. En primer lugar, se van a “trazar” una serie de pistas virtuales en el compás sobre las que posteriormente se desplazará una máscara de la cabeza de una nota musical. El uso de dichas pistas se justifica por los siguientes motivos: 1) eficiencia: en lugar de recorrer una a una las posiciones de la matriz que contiene la imagen correspondiente al compás, sólo se buscarán las notas en unas determinadas filas en las que la probabilidad de hallar una nota es mayor, puesto que la disposición de las notas en un compás está limitada; y 2) mayor facilidad para asignar posteriores valores a las página 20
  • 22. posibles notas detectadas. Obviamente, algunas de estas pistas virtuales coinciden con las líneas del pentagrama. Para elegir estas pistas, nuevamente nos apoyamos en los resultados de la proyección horizontal del compás (figura 3.6). Figura 3.6. Proyección horizontal de un compás. Como referencia para establecer las pistas elegiremos la línea superior del pentagrama. Para trazar las demás pistas, se estudia la distancia media entre los picos que generan las líneas del pentagrama en la proyección horizontal y se estiman unas líneas intermedias. La figura 3.7 ilustra esta explicación y expone el resultado: Figura 3.7. Pistas virtuales trazadas sobre el compás de la figura 3.6. La siguiente tarea de esta fase es la que consume el mayor número de recursos de todo el proceso. Se posiciona una máscara (figura 3.8) en la primera pista virtual, y se produce un desplazamiento por las pistas inferiores. Durante este desplazamiento, se efectúa una comparación entre la región de la imagen de tamaño igual a la máscara elegida que rodea al punto en el que se desea saber si hay una nota, y la máscara de la cabeza de una nota musical. Se estudia el índice de solapamiento entre ambas regiones, y si supera un cierto umbral, se considerará candidata a nota musical. página 21 0 100 200 300 400 500 600 700 800 0 20 40 60 80 100 120
  • 23. Figura 3.8. Máscara empleada para efectuar las comparaciones. Los índices de solapamiento se almacenan en una matriz de tamaño MxN, siendo M el ancho (en píxels) del compás y N el número de pistas virtuales trazadas. Sobre esta matriz se comprobará si las posibles notas detectadas en el paso anterior son realmente tal, ya que en algunos casos se produce un alto índice de solapamiento entre la máscara y las barras que unen las plicas de las corcheas y semicorcheas. El número resultante de multiplicar las dimensiones de la matriz es indicativo del número de iteraciones realizadas por el algoritmo de comparación. A continuación se combinan los resultados de la proyección vertical del compás analizado y la matriz obtenida anteriormente. De la proyección se obtienen las coordenadas de las plicas de la notas (que se identifican estableciendo un umbral inferior al empelado para detectar las barras de separación de compases y adecuado para no confundirlo con otro tipo de información). El algoritmo posiciona en matriz que contiene los índices de solapamiento en las coordenadas correspondientes a las plicas y realiza un estudio en un entorno acotado alrededor de dichas coordenadas. Se selecciona la posición de la matriz con un mayor índice de coincidencias, y se marca como nota. La figura 3.9 muestra las notas detectadas en el compás de la figura 3.6. Figura 3.9. Detección de notas de un compás. La forma de identificar una nota es guardar su coordenada en el eje x (teniendo en cuenta que dicha coordenada es relativa al compás analizado) y el número de pista en la que ésta se encuentra. Esta información, junto con el índice de la pista virtual tomada como referencia (se debe recordar que la referencia es en todos los casos la línea superior de la pauta) será la que nos permita establecer el tono de cada nota. 3.4 Tono y duración La siguiente tarea consiste en asignar un valor que identifique el tono y la duración de la nota. Para asignar estos valores se ha elegido la nomenclatura propuesta en el artículo [11]. Se proponen varias notaciones diferentes, de las cuales se adoptan las notaciones implícita y diferencial. página 22
  • 24. En la notación implícita se indica mediante un valor numérico el valor en la escala de tonos de la nota en cuestión. La diferencia entre un tono y el siguiente se traduce en un incremento numérico de dos unidades, a excepción de los pasos de mi a fa y de si a do, entre los que sólo existe un semitono de diferencia, lo cual implica un incremento de una unidad. Por poner unos ejemplos, a la línea del pentagrama que coincide con la clave de sol en segunda, se le asigna el valor 24; a la línea de la clave de fa en cuarta, le corresponde el valor 12. La notación diferencial se basa en la notación implícita. Consiste en calcular la diferencia entre un tono y el siguiente. De este modo se consigue una abstracción de la tonalidad, preservando el patrón melódico. Para representar la duración de una nota, se codifica mediante una letra: n para las negras, c para las corcheas, s para las semicorcheas, f para las fusas, etc. Puesto que el objetivo del proyecto es la identificación o búsqueda de patrones melódicos, se ha prestado una menor atención a esta característica de las notas, ya que para el fin propuesto la duración es irrelevante. A continuación se muestra un ejemplo de codificación para el compás de la figura 3.10. Figura 3.10. Compás. Notación implícita: 19s 17s 19c 20c 22n 24n Notación diferencial: Ss -2s 2c 1c 2n 2n En la implementación se guardan en diferentes vectores la notación implícita y la diferencial, en ambos casos sin indicar la duración, que se almacena en otro vector independiente. Es lo que el autor del artículo tomado como referencia para esta notación denomina splitted implicit notation y splitted diferential notation, respectivamente. El resultado final del análisis es una estructura de datos compleja, en concreto un vector de n posiciones (siendo n el número de compases detectados en la partitura), que guarda la información relevante de cada uno de los compases contenidos en la partitura. página 23
  • 25. En lo que respecta a la tarea de encontrar patrones melódicos contenidos en las partituras analizadas, ésta se resume en un mera búsqueda de subcadenas de caracteres. Una vez halladas las subcadenas, se resaltan las coincidencias sobre la imagen de la partitura. Las figuras 3..11, 3.12 y 3.13 ilustran la metodología seguida Figura 3.11. Adquisición de imágenes. página 24
  • 26. Figura 3.12. Preprocesado y segmentación de la partitura. página 25
  • 27. Figura 3.13. Segmentación y detección de notas. página 26
  • 28. 4. Descripción informática En esta sección se comentarán los detalles más relevantes de la implementación y se realizará una descripción del modo de funcionamiento del sistema desarrollado. Este sistema se ha elaborado bajo las premisas de un desarrollo en espiral. El desarrollo en espiral consiste en una serie de iteraciones, en las cuales se implementa una nueva funcionalidad del proyecto, hasta que se llega a una versión final. Este desarrollo ofrece libertad para variar los requisitos, hecho frecuente en este tipo de desarrollos. También ofrece la posibilidad de estudiar las nuevas funcionalidades añadidas, y en caso de no adaptarse a los objetivos buscados, desechar los cambios. Cada una de estas iteraciones consta de las siguientes etapas: • Estudio de requisitos: los objetivos de un ciclo de desarrollo deben de ser identificados y especificados. • Valorar y reducir los riesgos: los riesgos son valorados y ciertas actividades son puestas en vigor para reducir los riesgos claves. • Desarrollar y validar: el sistema se desarrolla y es validado usando pruebas que testean el cumplimiento de los requisitos fijados. • Planificar: El proyecto es repasado y la próxima fase de la espiral es planificada. Figura 4.1. Desarrollo en espiral. página 27
  • 29. 4.1. Implementación El sistema se ha desarrollado bajo el entorno de programación MATLAB, del que ya se habló en la sección 1.2.1. Se han creado una serie de funciones que, llamadas en un orden o secuencia concreta, permiten el análisis de una partitura musical, así como efectuar búsquedas de patrones melódicos sobre ésta, según varios criterios (empleando la notación diferencial, la notación implícita o en función de la duración). A continuación se enumeran las funciones creadas por el alumno, y se realiza una breve descripción de las mismas, comentado sus parámetros y los datos o valores que retorna la función. En MATLAB se puede obtener esta misma información mediante el comando help, seguido del nombre de la función de la que se pretende conocer los detalles. El orden en el que se describen las funciones es el mismo en el que éstas son llamadas a la hora de llevar a cabo el análisis de la partitura. Esto se traduce en una mayor especificidad de las funciones listadas en última instancia, mientras que las que aparecen en primer lugar son de un carácter más general, y por ello, dependientes de los resultados de las funciones enumeradas en último lugar. 4.1.1. buscar_patron_notacion_diferencial Al ejecutar esta función, aparecerá el diálogo que permite elegir la imagen que contiene la partitura sobre la que se realizará el posterior análisis. Una vez seleccionada la imagen, se pasa la ruta de dicha imagen a las funciones que llevarán a cabo el análisis. Tras el análisis de la partitura, se mostrará una caja de texto (inputbox) solicitando el patrón en función al cual realizar la búsqueda. El formato del patrón de búsqueda es una secuencia de valores numéricos separados por espacios en blanco. Una vez halladas las coincidencias, se muestra la partitura, destacando las regiones donde se encuentran los parámetros establecidos en la búsqueda. En caso de que no se hallen coincidencias entre el patrón establecido y alguna sección de cualquier compás contenido en la partitura, se muestra un mensaje que advierte de la ausencia de coincidencias. Esta función carece de parámetros, tanto de entrada como de salida. 4.1.2. buscar_patron_notacion_estandar Esta función realiza las mismas tareas que la función anteriormente expuesta. La diferencia entre ambas radica en el criterio de búsqueda de las líneas melódicas. En este caso, el criterio de búsqueda se basa en la notación estándar. Una vez halladas las posibles coincidencias, éstas se destacan sobre la partitura analizada. Igualmente, carece de cualquier tipo de parámetros . página 28
  • 30. 4.1.3. buscar_patron_duracion Esta función desempeña las mismas tareas que las dos anteriores, con la salvedad de que el criterio de búsqueda es una secuencia de duraciones. Esta función tampoco retorna ningún valor, y carece de parámetros. 4.1.4. analizar El propósito de esta función es la obtención de las características identificativas de cada uno de los compases que conforman la partitura. Como parámetros de entrada recibe la ruta de la imagen que será analizada (obtenida previamente de un diálogo estándar de apertura de ficheros en una de las tres anteriores funciones). Esta función retorna un vector de estructuras con las siguientes campos: • imagen, que es a su vez una estructura que consta de cuatro campos (x1, y1, x2, y2), que corresponden a los vértices que delimitan el rectángulo que contiene al compás analizado. • clave, que indica que se trata de un compás en clave de SOL o en clave de FA. • referencia: indica el numero de la pista virtual que se ha tomado como referencia para el proceso de identificación de duración y tono. • notas: vector que contiene a su vez dos campos: pista (indica la pista virtual donde se detecto la nota), y x (coordenada en el eje x, con respecto a la coordenada x1 del campo imagen, donde esta ubicada la nota. • tono: vector que contiene información sobre el tono de las notas, utilizando la notación implícita anteriormente expuesta. • diferencial: vector en notación diferencial. • duracion: vector que contiene la duración de las notas. 4.1.5. preproceso En esta función se lleva a cabo el proceso de conversión de la imagen en escala de grises en una imagen binaria. Sobre la imagen binaria, se procederá a la eliminación de información irrelevante y al posterior análisis de la imagen. Dada una imagen de una partitura musical en niveles de grises, la función devuelve una estructura con dos campos: imagen, que contiene la imagen binaria carente de información irrelevante, y resultado, vector de estructuras con los campos x1, y1, x2, y2 (vértices de la región que delimita un compás), conteniendo todos los compases hallados en la imagen. página 29
  • 31. 4.1.6. eliminar_ruido Dada una imagen de una partitura musical (primer parámetro), esta función elimina de la imagen información irrelevante para el análisis de la partitura (título, numero de página, etc), basándose en los resultados obtenidos de la proyección horizontal de la partitura. Mediante un segundo parámetro, se indica si se ha de visualizar (valor 1) o no (valor 0) la imagen resultante. 4.1.7. separar_sistemas La función retorna un vector de estructuras que contiene los campos inicio y fin, que establecen el límite horizontal superior e inferior de la región que contiene un sistema (par de pentagramas), respectivamente. Como parámetro de entrada recibe la imagen binaria filtrada, retornada por la función eliminar_ruido. 4.1.8. separar_pentagramas Dada la imagen binaria carente de información irrelevante devuelta por la función eliminar_ruido, y el vector que contiene los puntos que delimitan los distintos sistemas de pentagramas, devuelto por la función separar_sistemas, esta función separa el par que compone el sistema en dos pentagramas, para realizar posteriormente análisis independientes de cada pentagrama. La información que devuelve la función es un vector de estructuras con dos campos, inicio y fin, que al igual que en el caso de la función anterior, establece los límites horizontales que determinan una región que, en este caso, contiene sólo un compás. 4.1.9. trocear_compases El objetivo de esta función es la obtención de cada uno de los compases contenidos en la partitura. Como parámetros recibe la imagen devuelta por la función eliminar_ruido y el vector que delimita los pentagramas observados en la partitura (retornado por la función separar_pentagramas). El resultado es un vector de estructuras con los siguientes campos: • x1, coordenada izquierda del rectángulo que acota al compás. • y1, coordenada superior del rectángulo. • x2, coordenada derecha de la región que delimita el compás. • y2, coordenada inferior dcha. (eje Y) del fin del compas Estas coordenadas delimitan la región que contiene cada uno de los compases. El orden en el que las regiones que contienen los compases se guardan en el vector es el mismo orden en el que éstos página 30
  • 32. se encuentran en la partitura. 4.1.10. maximos_locales Dado un vector numérico (primer parámetro), esta función selecciona todos aquellos valores que superan un cierto umbral (segundo parámetro) y no exceden un límite (tercer parámetro). El resultado es otro vector, que contiene los índices del vector inicial cuyos valores cumplen las condiciones mencionadas anteriormente. 4.1.11. amplitud_picos A partir de un vector y un umbral, ambos recibidos como argumentos de la función, ésta retorna otro vector de estructuras de todos aquellos “picos” del vector cuya amplitud supere un cierto umbral. Se denomina pico a una sucesión de valores numéricos, situados en el vector de forma consecutiva, que superan un cierto umbral. Esta función retorna un vector de estructuras con la siguiente información: • inicio, índice del vector en el que comienza el pico. • fin, índice del vector que coincide con el fin del pico. • maximo, valor máximo del pico • pto_maximo, índice del vector en el que se alcanza la cota del valor máximo del pico. 4.1.12. histograma Dada una imagen, esta función devuelve un vector que contiene la proyección horizontal (véase figura 3.3.) de dicha imagen. El segundo parámetro que recibe la función se emplea para mostrar (valor 1) o no (valor 0) una gráfica de dicho histograma. 4.1.13. vhist Esta función nos proporciona el vector que contiene la proyección vertical (véase figura 3.5.) de la imagen recibida como argumento. Mediante un segundo argumento, se indica si ésta función debe de visualizar, o no, una gráfica mostrando los resultados. 4.1.14. buscar A partir de la imagen de un compás (todas ellas contenidas en la estructura devuelta por la función encargada del preproceso de la partitura) y una máscara conteniendo la cabeza de una nota, usada para buscar las notas contenidas en el compás, devuelve una estructura con los siguientes campos: página 31
  • 33. • notas, que a su vez es un vector de estructuras que consta de dos campos: pista, que nos proporciona el número de pista virtual donde se encontró la nota, y x, que guarda la coordenada en el eje x donde se encontró la nota. • referencia, que guarda el número de pista virtual que se corresponde con la línea superior del pentagrama. Recordemos que esta línea es la que se emplea como referencia para la conversión del número de pista en el valor numérico correspondiente en la notación implícita. Esta referencia se obtiene en la función buscar_candidatos, comentada a continuación. • clave, es una valor que indica si el compás está en calve de sol o en clave de fa. 4.1.15. buscar_candidatos Dada una imagen de un compás, retorna un vector con las pistas virtuales que se corresponden con un tono musical, y el índice de la pista de dicho vector que se corresponde con la línea superior del pentagrama. El vector con las pistas virtuales es una serie de valores numéricos que indican la coordenada en el eje y, en la cual al trazar una linea recta horizontal se puede considerar que se corresponde con un tono de la escala musical. 4.1.16. eliminar_candidatos_consecutivos La función eliminar_candidatos_consecutivos se ocupa de eliminar del conjunto de candidatos a pistas virtuales (pasado como primer parámetro) todas aquellas que no guarden una cierta distancia (establecida mediante un segundo parámetro en la llamada a la función) con respecto al anterior candidato. Retorna el vector sin los valores que no guarden la distancia marcada. 4.1.17. aplicar_mascara Esta función recibe como argumentos la imagen de un compás, la máscara de la cabeza de una nota musical y el conjunto de pistas virtuales correspondiente al compás a tratar. La estructura resultante de ejecutar esta función es una matriz de tamaño M x N, siendo M el ancho de la imagen del compás, y N la longitud del vector de pistas virtuales, denominado pistas. Dicha matriz guarda el índice de solapamiento de la máscara con la sección de la imagen que se compara. Sobre esta matriz, la función buscar realiza las comprobaciones pertinentes para obtener la ubicación de las notas musicales. 4.1.18. convertir Dado un vector de notas, la clave de y la línea de referencia del compás analizado, todos estos datos obtenidos en la función buscar, la función se encarga de codificar en la notación implícita y diferencial la información de entrada. También proporciona un vector que contiene una secuencia de caracteres que expresan la duración de las notas contenidas en el compás. página 32
  • 34. En esta función se establece una correspondencia entre la línea en la que se detecta una nota y el valor correspondiente en la notación implícita. A partir de la notación implícita, la obtención de la notación diferencial es trivial. Para obtener el vector de duración, se procede a un escueto análisis de la morfología de la proyección vertical de la zona donde se encuentra una nota. 4.1.19. buscar_subsecuencia Esta función, a partir de un vector conteniendo una serie de valores y otro vector conteniendo la secuencia que se desea buscar en el primer vector, devuelve otro vector conteniendo los índices de las posiciones del primer vector a partir de las cuales coinciden las secuencias de valores. 4.2. Uso En esta sección se explicará detalladamente los pasos a seguir para que cualquier persona ajena al desarrollo de este sistema sea capaz de efectuar el análisis de una partitura. Este sistema se ha desarrollado bajo la versión para la plataforma WIN32 de la herramienta MATLAB. Por tanto, los detalles de uso se atienen a las características de los sistemas operativos basados en dicha plataforma. En primer lugar, se debe de ejecutar la aplicación MATLAB, ya que es la encargada de interpretar las funciones desarrolladas. Para ello, desde el menú Inicio, en la opción Ejecutar, escribimos matlab. Otra posibilidad es hacer doble click sobre el acceso directo que al instalar MATLAB se genera en el escritorio (figura 4.2), o bien, desde el menú Inicio, en la opción Programas, y en la carpeta del grupo de programas MATLAB, seleccionar matlab. Figura 4.2. Icono del programa MATLAB. Una vez lanzado MATLAB, nos encontraremos ante una ventana con una distribución similar a la que refleja la figura 4.3. En la misma figura aparecen destacadas las áreas más relevantes de cara a esta explicación. página 33
  • 35. Figura 4.3. Ventana principal de MATLAB. Se debe establecer como directorio de trabajo aquel que contenga las funciones creadas. Para modificar el directorio de trabajo, desde la ventana del directorio de trabajo se puede pulsar sobre el icono , que aparece a la derecha de la lista desplegable que contiene los últimos directorios de trabajo. En el cuadro de diálogo que aparece al pulsar sobre dicho botón, se elige el directorio deseado. Otra opción para modificar el directorio de trabajo es escribir en la ventana de comandos de MATLAB el comando cd seguido de la ruta del directorio que se desea establecer como directorio de trabajo. A continuación, se debe ejecutar una de las siguientes funciones empleadas para realizar la búsqueda de patrones melódicos: buscar_patron_notacion_estandar, buscar_patron_notacion_diferencial o buscar_patron_duracion, cuyos cometidos ya se han comentado en la sección anterior. Estas funciones realizan las mismas tareas, y sólo varía el criterio empleado a la hora de realizar la búsqueda de patrones melódicos. Este ejemplo de uso será ilustrado mediante la ejecución de la función que se basa en la notación diferencial para la búsqueda. En los otros dos casos, los pasos a seguir son idénticos. Para ejecutar el comando, basta con escribir el nombre de la función tras el prompt de la página 34
  • 36. ventana de comandos (que en el caso de esta versión de MATLAB son dos paréntesis angulares orientados a la derecha, >>, tal y como se muestra en la figura 4.4. ), y pulsar la tecla Intro. Figura 4.4. Inserción de un comando en MATLAB. Tras esta acción, aparece el cuadro de diálogo de la figura 4.5.: Figura 4.5. Cuadro de diálogo que permite la selección de la partitura a analizar. Se trata de un cuadro de diálogo Open estándar, en el que el usuario debe seleccionar el fichero que contiene la imagen a analizar. El formato de la imagen a analizar debe ser uno de los formatos asumibles por MATLAB (TIFF, PNG, BMP, JPEG, GIF, PCX, XWD, CUR, e ICO). Lo más usual (y lógico) es que la partitura este contenido en un fichero JPEG, PNG o BMP. Una vez seleccionado el fichero de imagen que contiene la partitura, se procederá al análisis de la partitura. En la ventana de comandos aparecen los resultados del análisis y los valores devueltos por las funciones relevantes, útiles para el programador de cara al estudio del correcto funcionamiento del programa, y a la par útiles para el usuario interesado en el análisis. página 35
  • 37. Concluido el análisis, aparecerá una caja de texto (figura 4.6.) en la que el usuario deberá introducir la secuencia que desea identificar en la partitura, teniendo en cuenta que el patrón de búsqueda debe hallarse en notación diferencial (puesto que en este ejemplo se está realizando una búsqueda atendiendo a dicho criterio). Figura 4.6. Cuadro de diálogo que permite establecer el patrón de búsqueda. Al aceptar la secuencia introducida, se procede a la búsqueda de la misma. Si se hallan coincidencias, se visualiza la partitura elegida, recuadrando en ésta las secciones de la misma que concuerdan con el patrón establecido. En caso de que no se encuentre ninguna coincidencia, aparece un mensaje que advierte de ello al usuario (figura 4.7). Figura 4.7. Message Box que advierte al usuario de que no se han encontrado coincidencias. Cuando el usuario, en el caso de que hubiera coincidencia de patrones, cierra la ventana que contiene a la figura que muestra las coincidencias, o en el caso de que no se hallaran coincidencias y el usuario acepte el mensaje de advertencia, observa un nuevo diálogo en el que se le pregunta si desea realizar una nueva búsqueda. En caso afirmativo, se repiten los pasos de solicitud de secuencia mediante el diálogo de la figura 4.5 y se realiza la nueva búsqueda sobre los resultados del análisis anterior. En caso de que el usuario no quiera llevar a cabo una nueva búsqueda, concluye la ejecución de la función, y puede introducir nuevos comandos en la ventana destinada a este fin de MATLAB. página 36
  • 38. 5. Resultados experimentales Las siguientes tablas reflejan los resultados del análisis de las partituras con las que se ha trabajado en este proyecto. En estas tablas aparecen el número de notas contenidas en cada compás y el número y tipo de los fallos. Los errores considerados son los siguientes: información que se ha toma como nota, cuando realmente no lo es (es lo que se denomina falso positivo, y ocurre, por ejemplo, cuando se detecta una nota en la barra de unión de dos semicorcheas); notas que no se han hallado (denominado falso negativo); los fallos de la duración de las notas halladas, y finalmente, los fallos cometidos en la obtención de la duración de las notas. Tabla 5.1. Resultados del análisis de la partitura 1 de la Invención 5. Partitura Inven c ió n 5, BWV776, 1 Co m p ás Núm e ro d e no tas Fals o s po sitivo s Falsos ne g ativ os Fallo s to no Fallo s durac ión 1 6 0 0 0 0 2 6 0 0 0 0 3 9 0 0 0 3 4 16 4 0 4 3 5 10 0 0 0 0 6 10 1 0 0 1 7 16 0 0 3 0 8 16 0 0 0 0 9 16 2 0 0 2 10 7 2 0 0 0 11 16 0 0 3 0 12 16 1 1 0 0 13 16 0 0 0 1 14 6 0 0 0 1 15 10 0 0 0 2 16 10 0 0 0 2 17 7 0 0 0 0 18 6 2 0 0 2 19 6 0 0 0 0 página 37
  • 39. Partitura Inven c ió n 5, BWV776, 1 Co m p ás Núm e ro d e no tas Fals o s po sitivo s Falsos ne g ativ os Fallo s to no Fallo s durac ión 20 16 1 0 0 1 21 16 0 0 0 0 22 16 3 0 0 4 23 16 0 0 1 3 24 16 0 0 3 3 25 16 2 0 0 5 26 7 0 0 0 1 27 6 0 0 0 0 28 10 0 2 0 1 TOTAL 324 18 3 14 35 El cuadro que aparece a continuación resume estadísticamente los resultados anteriores: Tabla 5.2. Estadísticas del análisis de la partitura 1 de la Invención 5. Can tida d Po rc en taje Falsos positivos 18 85,71 Falsos negativos 3 14,29 TOTAL fallos detección de notas 21 6,48 Fallos en la detección de tonos 14 4,62 Fallos en la detección de duraciones 35 11,55 Se han detectado correctamente el 93,52% de las notas. El porcentaje de falsos positivos y falsos negativos se calcula respecto a los fallos cometidos en la detección de las notas. En este caso en concreto, el 85,71 % de los errores cometidos fueron falsos positivos. Los fallos de duración y el tono se calculan sobre el total de notas correctamente detectadas. Tabla 5.3. Resultados del análisis de la partitura 2 de la Invención 5. Partitura In ve nc ió n 5, BWV776, 2 Co m pás Núm e ro d e no tas Fals o s po sitivo s Fals o s ne g ativ os Fallo s to no Fallo s durac ión 1 16 0 0 0 5 2 7 2 0 0 3 3 6 0 0 0 2 4 10 0 0 0 1 5 16 2 0 0 4 página 38
  • 40. Partitura In ve nc ió n 5, BWV776, 2 Co m pás Núm e ro d e no tas Fals o s po sitivo s Fals o s ne g ativ os Fallo s to no Fallo s durac ión 6 16 4 1 0 3 7 10 0 0 0 2 8 10 3 0 0 4 9 16 0 0 0 5 10 16 1 0 0 5 11 16 1 0 0 9 12 7 2 0 0 1 13 16 0 0 0 5 14 16 2 0 0 5 15 7 0 0 0 1 16 6 0 0 0 1 17 6 0 0 0 2 18 16 0 1 0 9 19 6 0 0 0 1 20 16 3 0 0 8 21 16 0 0 0 7 22 16 0 0 0 6 23 7 0 0 0 3 24 6 0 0 0 2 25 7 0 0 0 1 26 6 0 0 0 2 27 10 0 0 10 6 28 16 0 0 0 7 29 16 0 0 0 7 30 16 0 0 0 7 31 10 0 0 0 2 32 10 0 0 0 3 33 5 1 0 1 3 34 16 0 0 0 5 35 16 3 0 0 7 36 4 1 0 0 1 TOTAL 412 22 2 11 145 página 39
  • 41. Tabla 5.4. Estadísticas del análisis de la partitura 2 de la Invención 5. Can tida d Po rc en taje Falsos positivos 22 91,67 Falsos negativos 2 8,33 TOTAL fallos detección de notas 24 5,83 Fallos en la detección de tonos 11 2,82 Fallos en la detección de duraciones 145 37,18 Tabla 5.5. Resultados del análisis de la partitura 1 de la Invención 8. Partitura In ven c ió n 8, BWV779, 1 Co m p ás Núm e ro d e no tas Falsos p o sitivos Fals o s ne g ativ os Fallo s to no Fallo s durac ión 1 5 0 0 5 0 2 11 0 0 0 5 3 6 0 0 0 1 4 0 0 0 0 0 5 5 0 0 0 5 6 11 0 0 0 3 7 12 0 0 0 9 8 12 0 0 0 11 9 12 0 0 0 6 10 6 0 1 0 5 11 12 0 0 0 5 12 12 0 0 0 7 13 6 0 0 0 3 14 12 1 0 0 6 15 11 0 0 0 7 16 12 0 0 0 9 17 6 0 0 0 1 18 12 0 0 0 6 19 9 0 0 0 6 20 6 1 0 0 3 21 1 0 0 0 0 22 11 0 0 0 2 23 10 0 0 0 2 página 40
  • 42. Partitura In ven c ió n 8, BWV779, 1 Co m p ás Núm e ro d e no tas Falsos p o sitivos Fals o s ne g ativ os Fallo s to no Fallo s durac ión 24 5 0 0 0 0 25 5 0 0 0 0 26 11 0 0 0 5 27 12 0 0 0 6 28 11 0 0 0 5 29 6 0 0 0 1 30 6 1 0 0 3 TOTAL 256 3 1 5 122 Tabla 5.6. Estadísticas del análisis de la partitura 1 de la Invención 8. Can tida d Po rc en taje Falsos positivos 3 75 Falsos negativos 1 25 TOTAL fallos detección de notas 4 1,56 Fallos en la detección de tonos 11 1,98 Fallos en la detección de duraciones 145 48,41 Tabla 5.7. Resultados del análisis de la partitura 2 de la Invención 8. Partitura In ven c ió n 8, BWV779, 2 Co m p ás Núm e ro de no tas Falsos p o sitivos Falsos ne g ativ os Fallo s to no Fallo s durac ión 1 6 0 0 0 4 2 11 1 0 1 1 3 6 0 0 0 2 4 11 0 0 0 2 5 6 0 0 0 0 6 11 0 0 5 4 7 6 0 0 0 1 8 6 0 0 0 0 9 12 0 0 0 5 10 12 0 0 0 2 11 12 0 0 4 3 página 41
  • 43. Partitura In ven c ió n 8, BWV779, 2 Co m p ás Núm e ro de no tas Falsos p o sitivos Falsos ne g ativ os Fallo s to no Fallo s durac ión 12 6 0 0 0 0 13 12 0 0 0 8 14 12 1 0 0 5 15 6 0 0 0 4 16 6 0 0 0 2 17 6 0 0 0 1 18 12 2 0 0 7 19 6 0 0 0 0 20 12 0 0 0 4 21 12 0 0 0 4 22 12 0 0 0 6 23 6 0 0 0 2 24 12 0 1 11 0 25 12 0 0 0 7 26 6 0 0 0 1 27 12 0 0 0 6 28 12 1 0 2 0 29 12 0 0 0 0 30 6 0 0 0 0 31 11 1 0 0 4 32 9 0 0 0 0 33 6 0 0 0 0 34 1 0 0 0 1 35 12 0 0 0 1 36 11 1 0 0 2 37 10 0 0 0 1 38 1 0 0 0 0 TOTAL 340 7 1 23 90 página 42
  • 44. Tabla 5.8. Estadísticas del análisis de la partitura 2 de la Invención 8. Can tida d Po rc en taje Falsos positivos 7 87,5 Falsos negativos 1 12,5 TOTAL fallos detección de notas 8 2,35 Fallos en la detección de tonos 23 6,93 Fallos en la detección de duraciones 90 27,11 Tabla 5.9. Resultados del análisis de la partitura 1 de la Invención 10. Partitura Inven c ió n 10, BWV781, 1 Co m pás Núm e ro d e no tas Fals o s posit iv os Falsos ne g ativo s Fallo s to no Fallo s durac ió n 1 9 0 0 1 3 2 8 0 0 0 1 3 9 0 0 1 2 4 0 0 0 0 0 5 9 0 0 0 2 6 8 0 0 0 1 7 9 0 0 0 1 8 9 0 0 0 3 9 9 0 0 0 2 10 9 0 0 0 3 11 9 0 0 0 0 12 9 0 0 0 5 13 9 0 0 0 2 14 9 2 0 0 4 15 7 0 0 0 1 16 7 0 0 0 1 17 7 1 0 0 3 18 9 2 0 0 1 19 9 1 0 0 1 20 9 0 1 0 2 21 9 1 0 0 2 22 7 0 0 0 0 23 7 0 0 0 0 página 43
  • 45. Partitura Inven c ió n 10, BWV781, 1 Co m pás Núm e ro d e no tas Fals o s posit iv os Falsos ne g ativo s Fallo s to no Fallo s durac ió n 24 7 2 0 0 1 25 9 0 0 0 1 26 1 0 0 0 1 27 9 2 0 0 0 28 8 0 0 0 1 29 9 0 0 0 4 30 2 2 0 0 2 TOTAL 231 13 1 2 50 Tabla 5.10. Estadísticas del análisis de la partitura 1 de la Invención 10. Can tida d Po rc en taje Falsos positivos 13 6,06 Falsos negativos 1 92,86 TOTAL fallos detección de notas 14 7,14 Fallos en la detección de tonos 2 0,92 Fallos en la detección de duraciones 50 23,04 Tabla 5.11. Resultados del análisis de la partitura 2 de la Invención 10. Partitura In ve nc ió n 10, BWV781, 2 Co m pás Núm e ro d e no tas Falsos p o sitivos Falsos ne g ativo s Fallo s to no Fallo s durac ión 1 2 0 0 0 0 2 9 2 0 0 7 3 9 0 0 0 0 4 9 0 0 0 4 5 2 0 0 0 0 6 7 0 0 0 3 7 9 0 0 0 3 8 1 1 0 0 0 9 1 1 0 0 0 10 7 0 0 0 3 11 9 0 0 0 1 página 44
  • 46. Partitura In ve nc ió n 10, BWV781, 2 Co m pás Núm e ro d e no tas Falsos p o sitivos Falsos ne g ativo s Fallo s to no Fallo s durac ión 12 9 0 0 0 3 13 1 0 0 0 0 14 1 1 0 0 0 15 9 0 0 0 3 16 9 0 0 0 3 17 9 0 0 0 0 18 9 0 0 0 1 19 1 0 0 0 0 20 1 0 0 0 0 21 6 0 0 0 2 22 9 0 0 0 4 23 9 0 0 0 6 24 9 0 0 0 1 25 9 0 0 0 4 26 9 0 0 0 0 27 9 0 0 0 4 28 9 0 0 0 2 29 9 0 0 0 1 30 4 0 0 0 0 31 9 0 0 0 1 32 6 0 0 0 2 33 7 0 0 0 1 34 5 0 0 0 0 TOTAL 223 5 0 0 59 Tabla 5.12. Estadísticas del análisis de la partitura 2 de la Invención 10. Can tida d Po rc en taje Falsos positivos 5 100 Falsos negativos 0 0 TOTAL fallos detección de notas 5 2,24 Fallos en la detección de tonos 0 0 Fallos en la detección de duraciones 59 27,06 página 45
  • 47. Observando los resúmenes estadísticos, se tiene que, en media, se detectan correctamente el 95,73% de todas las notas contenidas en las partituras analizadas. Del total de notas halladas, un 2,87 % de las veces se comenten errores en el cálculo del tono de dichas notas. Los peores resultados se obtienen en la detección de las duraciones de las notas, donde el porcentaje de errores se eleva al 29 %. página 46
  • 48. 6. Conclusiones y trabajos futuros A continuación se exponen las conclusiones y futuras líneas de trabajo que se puedan derivar de este proyecto. 6.1. Conclusiones Este proyecto se inició sin tener claramente definido el objetivo final del mismo. El resultado expuesto es la evolución de los sucesivos objetivos fijados en las sucesivas reuniones de las personas implicadas en este proyecto. Pero se puede concluir que el resultado se aproxima al objetivo que dio origen a la propuesta de este proyecto. En todo sistema OCR (y por extensión, los sistemas OMR), el índice de fiabilidad, pese a ser muy elevado, no se asegura la completa corrección de los resultados que éstos proporcionan. Por tanto, el buscar un sistema OMR totalmente automático se puede considerar como una utopía. Partiendo de cero (el alumno desconocía la mayoría de conceptos musicales y el entorno MATLAB, y dada la ausencia de trabajos previos en la facultad que versen sobre esta temática), se ha obtenido un producto que, pese a distar de las funcionalidades que ofrecen sistemas OMR comerciales, proporciona unos resultados aceptables (el índice de fiabilidad supera el 95 %), si bien es verdad que en nuestro caso se omite parte de la información contemplada por los sistemas comercializados (como por ejemplo, silencios y alteraciones), entre otras limitaciones. Este proyecto ha servido para que el alumno sea consciente de la complejidad que conlleva el desarrollo de un sistema de reconocimiento óptico. También ha servido para que el alumno se desenvuelva con soltura en el manejo de la herramienta MATLAB, y adquirir una serie de conocimientos musicales básicos. 6.2. Líneas futuras Este proyecto puede ser considerado como pionero en este campo, puesto que en la Universidad Rey Juan Carlos no se había desarrollado ningún trabajo previo relacionado con los sistemas OMR. Este proyecto asienta las bases sobre las que desarrollar futuras mejoras o nuevos proyectos. Entre las futuras líneas, se pueden destacar las siguientes: página 47
  • 49. • Dotar de un interfaz gráfico a la aplicación, para que su uso sea más intuitivo y accesible para todo usuario. • Contemplar en los análisis características más complejas de las partituras musicales. En nuestro caso, sólo nos hemos centrado en la obtención de tonos y, en menor medida, en la obtención de la duración. Los sistemas OMR más completos también deben de reflejar otras informaciones contenidas en las partituras, como por ejemplo, silencios, alteraciones y pausas. • Mejorar el índice de aciertos en la detección de notas. Pese a que se ha obtenido unos buenos resultados mediante unas técnicas sencillas, éstos son susceptibles de mejoras. Aplicando metodologías más complejas, se puede incrementar la fiabilidad del sistema. • Mejorar el criterio de establecimiento de la duración. Como se observa en la sección de resultados experimentales, es en ese punto en el que se obtienen los peores resultados. Esto también es debido a que fue una funcionalidad añadida en última instancia, no contemplada en los objetivos iniciales del proyecto. • Desarrollar el sistema bajo una plataforma o programa open source. Por ejemplo, bajo sistemas operativos Linux, empleando la herramienta Octave. página 48
  • 50. Bibliografía [1] E. Sicard, An Efficient Method for Recognition of Printed Music. [2] K. Todd Reed y J.R Parker, Automatic Computer Recognition of Printed Music. [3] R. Randriamahefa, J.P Cocquerez, C. Fluhr, F. Pépin y S. Philipp, Printed Music Recognition. [4] R.C González y R.E Woods, Digital Image Processing, ED. Addison Wesley, 2002. [5] A. de la Escalera, Visión por computador: Fundamentos y Métodos, ED. Pearson- Prentice Hall, 2001. [6] J. González, Visión por computador, ED. Paraninfo, 2000. [7] G.A Baxes, Digital Image Processing: Principles and Applications, J. Wiley & Sons, 1994. [8] Apuntes de la Image Processing Toolbox de MATLAB de la asignatura Visión Artifical. [9] G. Orta Velázquez, 100 Biografías en la Historia de la Música, ED. Joaquín Porrúa, 1962 [10] N. Otsu, A Threshold Selection Method from Gray-Level Histograms, IEEE Transactions on Systems, Man, and Cybernetics, vol. 9, no. 1, pp. 62-66, 1979. [11] Proceedings of the Third International Conference WEB Delivering of Music [12] Prereau “Do-re-mi; A Program that Recognizes Music Notation”, Computer Human. Vol 9 pp25-29, 1975. [13] Matsushima y Toshiaki: “Automated recognition system for musical score – the vision system of wabot – 2”. Bulletin of science and engineering research laboratory, Waseda University nº 112, 1985-p 25.52. [14] J.W Roach y J.E Tatem, “Using domain knowledge in a low-level visual processing to interpret handwritten music: an experiment”. Pattern Recognition vol.21, nº1 – 1988 – p.33-34. página 49
  • 51. Anexo I Glosario de términos musicales • Acorde: Dos o más sonidos simultáneos. • Barra: Linea divisoria de compás. • Blanca: Figura de nota igual a media unidad. • Cifra indicadora: Fracción que va al comienzo de la partitura, después de la llave. • Clave: Llave que va al comienzo de la pauta y que sirve para dar el nombre a las líneas y espacios. • Compás: Período de tiempo igual a otros con que se marca el ritmo de una frase musical, cuya división natural viene indicada en el pentagrama por unas líneas verticales. • Contrapunto:Combinación simultánea de dos o más melodías. La palabra contrapunto viene del latín punctus contra punctum (punto contra punto) o nota contra nota. Ello significa una melodía contrapuesta a otra. Si bien el término es casi un sinónimo de polifonía (una textura musical que contiene simultáneamente dos o más melodías), ambas palabras difieren ligeramente en su uso habitual. La polifonía se refiere a las texturas en general (oponiendo la polifonía a la homofonía), mientras que el vocablo contrapunto suele reservarse para las técnicas de composición polifónica. • Corchea: Figura de nota equivalente a un octavo de la unidad. • Duración: indica si se trata de una nota redonda, corchea, semicorchea, etc. • Fuga: Composición musical de un solo tiempo y escrita en estilo polifónico, en la que un tema melódico se ve sistemáticamente sometido a la imitación melódica. La textura musical de una fuga descansa en el contrapunto (melodías entretejidas), y su rasgo estilístico más importante es el tratamiento del material temático por medio de la imitación. Esta característica es típica también del fugato, un pasaje que emplea técnicas de la fuga dentro de otra forma, por ejemplo, la sonata. Sin embargo, no necesariamente se ajustará en todos los detalles a una forma fija. La calidad de la fuga depende del partido que se saque del contrapunto riguroso de una única idea. Por ello, cualquier fuga responderá esencialmente a una fórmula abstracta, aunque se desviará de ella en cierto grado. página 50
  • 52. • Intervalo: Diferencia de altura entre dos tonos musicales oídos sucesiva o simultáneamente. En la armonía occidental, los nombres de los intervalos indican el número de notas de la escala diatónica (la escala de siete notas que usa los tonos de do a si) comprendidas en el intervalo. Así, el intervalo do-sol se denomina de quinta, ya que comprende cinco notas de la escala diatónica (los intervalos siempre se cuentan con ambos extremos incluidos). El unísono (del italiano, 'una sola nota') consiste en dos tonos idénticos (por ejemplo, dos voces que cantan el do central). La octava (del latín, octavus) es un intervalo entre dos notas separadas por 5 tonos y 2 semitonos (por ejemplo, del do central al do inmediatamente superior en la escala). Términos como quinta o tercera no resultan suficientemente precisos para definir completamente a los intervalos diatónicos, por lo que se añaden los términos calificativos de mayor, menor, perfecta, disminuida o aumentada. Los unísonos, octavas, cuartas y quintas pueden calificarse como intervalos perfectos. Su identidad acústica es tan fuerte que si su tamaño se viera alterado de forma perceptible, perderían su carácter esencial. Por ejemplo, se puede analizar una cuarta perfecta como do-fa para descubrir dos tonos enteros (do-re y re-mi) y un semitono (mi-fa). La escala diatónica también contiene el intervalo fa-si (de tres tonos enteros), que el oído percibe como radicalmente diferente de una cuarta perfecta. En este último caso, se denomina cuarta aumentada, ya que es mayor que la cuarta perfecta en un semitono. Los otros intervalos diatónicos (segundas, terceras, sextas y séptimas) aparecen en dos tamaños, uno de ellos mayor que el otro en un semitono. La tercera menor mi-sol (un semitono, mi-fa, más un tono entero, fa-sol) coexiste junto a la tercera mayor do-mi (dos tonos enteros, do-re y re-mi) al constituir juntos el acorde de do mayor . • Llave: Signo o clave que va al comienzo de la pauta. • Ligadura: Línea curva que colocada sobre las notas, éstas deben interpretarse muy unidas. • Negra: Figura de nota equivalente a un cuarto de unidad. • Nota: Figura, forma de representar los sonidos. • Octava: Ocho grados. Intervalo de cinco tonos y dos semitonos diatónicos. • Partitura: Notación musical de una composición en varias partes, en la que la música que debe ser interpretada por cada voz o instrumento está escrita en pentagramas separados. Los pentagramas se alinean uno debajo del otro. Una partitura completa muestra la música de todos los instrumentos; los músicos reciben individualmente unas partes separadas (particellas) que sólo muestran la música de su instrumento. • Pauta: Pentagrama. página 51
  • 53. • Pentagrama: Conjunto de cinco lineas y cuatro espacios sobre el que se escribe la música. • Punto: Colocado al lado derecho de una nota o silencio, aumenta la mitad de su valor. • Silencio: Signo que indica la suspensión del sonido. • Semitono: Mitad del intervalo de un tono. • Semicorchea: Figura de nota equivalente a un dieciseisavo de unidad. • Tono: Mayor distancia entre sonidos contiguos. • Tonalidad: Orden de las alteraciones en las escalas. página 52
  • 54. Anexo II Partituras empleadas En las siguientes páginas aparecen la partituras escaneadas sobre las cuales se han realizado los análisis de este proyecto fin de carrera. Mencionar que dichas imágenes son las que se han proporcionado inicialmente, sin tratamiento ni manipulación alguna mediante software. Se aprecian las imperfecciones de dichas partituras, como por ejemplo, el hecho de que éstas se encuentren con una cierta inclinación, o una alteración de los colores originales. página 53