rae 1. tipo de documento 2. titulo desarrollo de un...

159
Universidad de San Buenaventura Bogotá 1 RAE 1. TIPO DE DOCUMENTO Trabajo de grado para optar al título de INGENIERO DE SONIDO. 2. TITULO DESARROLLO DE UN CONVERSOR DE WAV A MIDI PARA TRANSCRIPCIÓN MUSICAL DE CLARINETE. 3. AUTORES MYRIAN LUCRECIA CALVO TORRES, SALOMÓN DÍAZ DONADO 4. LUGAR Bogotá, D.C. 5. FECHA Noviembre de 2011 6. PALABRAS CLAVE Conversión, wav, MIDI, Detección de pitch, transcripción musical, Función de Autocorrelación. 7. DESCRIPCION DEL TRABAJO El presente trabajo describe el desarrollo de un software prototipo conversor de wav a MIDI para transcripción musical de clarinete. Es propuesto un algoritmo de segmentación de las notas musicales basado en frecuencia y en un umbral de intensidad, usando un método de detección de pitch de dominio temporal. También se presenta una forma de calcular el velocity , un algoritmo de cuantización,un calculador de tempo, y se escribe el archivo .mid, mediante la librería MIDI Toolbox. 8. LINEAS DE INVESTIGACION La línea de investigación en que se desarrolla el presente proyecto de investigación es: Tecnologías actuales y sociedad. La sub-línea de la facultad es: Procesamiento de señales digitales y/o analógicas. El presente proyecto de investigación se realiza dentro del campo de Análisis y procesamiento de señales. 9. FUENTES CONSULTADAS ANDERTON, Craig. The MIDI Protocol. Berkeley, California. CORDANTONOPULOS, Vanessa. Curso completo de Teoría de la Música. 2002. DANHAUSER, A. Teoría de la música. Editorial Ricordi; 2005. EEROLA, Tuomas; TOIVIAINEN, Petri. MIDI Toolbox: MATLAB Tools for Music Research. Department of Music, University of Jyväskylä. Finlandia. 2004 [Internet]: www.jyu.fi/hum/laitokset/musiikki/en/research/coe/materials/miditoolbox [consulta: Septiembre 2011] FORSBERG, Johan. “Automatic conversion of sound to the MIDI -format” 1998.

Upload: others

Post on 08-Mar-2021

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

1

RAE

1. TIPO DE DOCUMENTO Trabajo de grado para optar al título de INGENIERO DE SONIDO.

2. TITULO DESARROLLO DE UN CONVERSOR DE WAV A MIDI PARA TRANSCRIPCIÓN MUSICAL DE CLARINETE.

3. AUTORES MYRIAN LUCRECIA CALVO TORRES, SALOMÓN DÍAZ DONADO

4. LUGAR Bogotá, D.C.

5. FECHA Noviembre de 2011

6. PALABRAS CLAVE Conversión, wav, MIDI, Detección de pitch, transcripción musical, Función de Autocorrelación.

7. DESCRIPCION DEL TRABAJO

El presente trabajo describe el desarrollo de un software prototipo conversor de wav a MIDI para transcripción musical de clarinete. Es propuesto un algoritmo de segmentación de las notas musicales basado en frecuencia y en un umbral de intensidad, usando un método de detección de pitch de dominio temporal. También se presenta una forma de calcular el velocity , un algoritmo de cuantización,un calculador de tempo, y se escribe el archivo .mid, mediante la librería MIDI Toolbox.

8. LINEAS DE INVESTIGACION

La línea de investigación en que se desarrolla el presente proyecto de investigación es: Tecnologías actuales y sociedad. La sub-línea de la facultad es: Procesamiento de señales digitales y/o analógicas. El presente proyecto de investigación se realiza dentro del campo de Análisis y procesamiento de señales.

9. FUENTES CONSULTADAS ANDERTON, Craig. The MIDI Protocol. Berkeley, California. CORDANTONOPULOS, Vanessa. Curso completo de Teoría de la Música. 2002. DANHAUSER, A. Teoría de la música. Editorial Ricordi; 2005. EEROLA, Tuomas; TOIVIAINEN, Petri. MIDI Toolbox: MATLAB Tools for Music Research. Department of Music, University of Jyväskylä. Finlandia. 2004 [Internet]: www.jyu.fi/hum/laitokset/musiikki/en/research/coe/materials/miditoolbox [consulta: Septiembre 2011] FORSBERG, Johan. “Automatic conversion of sound to the MIDI-format” 1998.

Page 2: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

2

GERHARD, David. “Pitch Extraction and Fundamental Frequency: History and Current Techniques”. University of Regina. 2003 JYH-SHING, Roger Jang; YANG GAO, Ming. “ A Query-by-Singing System based on Dynamic Programming”, Computer Science Department, National Tsing Hua University, Hsinchu, Taiwan, 2000. JYH-SHING, Roger Jang. Audio Signal Processing and Recognition. KAWAHARA, Hidek; DE CHEVEIGNE, Alain. “YIN, a fundamental frequency estimator for speech and music”, 2002. KOSTEK, Bo˙zena. Perception-Based Data Processing in Acoustics. Editorial In-chief. 2005 MERINO DE LA FUENTE, Jesús Mariano. Las vibraciones de la música. Editorial Club Universitario. 2006. MIDDLETON, Gareth. “Pitch Detection Algorithms”. 2003 MOLINA REVERTE, Albert. Proyecto final de Carrera “Conversor wave a MIDI en tiempo real para guitarras eléctricas”, Escuela Universitaria de Ingeniería Técnica Industrial de Terrassa, Universidad Politécnica de Cataluña 2006. RIPE RODRIGUEZ, Andrés. Tesis de grado “Dispositivo conversor de nota musical a nota MIDI para bajo eléctrico”, Universidad de San Buenaventura Bogotá, 2008. RODRIGUEZ BLANCO, Alicia. Música. Editorial Editex. 2007. SEISDEDOS, Marcela. Apreciación Musical I. Argentina. Disponible en: http://apreciacionmusical1emba.blogspot.com/2010/10/el-clarinete.html

10. CONTENIDOS Algoritmos de Detección de pitch de dominio temporal y espectral. Función de Autocorrelación Algoritmo de segmentación Algoritmo para el cálculo del velocity Algoritmo de Cuantización Algoritmo para la detección del tempo Algoritmo para la creación del fichero MIDI mediante la librería MIDI Toolbox. Evaluación de cada algoritmo que compone el software

11. METODOLOGIA El presente proyecto sigue un enfoque Empírico-analítico, debido a que se ha realizado una investigación científica mediante la implementación y análisis de algoritmos para la detección de frecuencia, y la realización de pruebas para verificar su eficiencia en los resultados obtenidos.

12. CONCLUSIONES

El software desarrollado cuenta con un algoritmo de detección de pitch de dominio temporal, específicamente un algoritmo basado en autocorrelación, que presenta una eficiencia del 100%, superando la eficiencia de los métodos AMDF, SIFT, HPS y Cepstrum.

Page 3: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

3

La escritura del fichero MIDI, es realizada por la librería Midi Toolbox, generando un archivo .mid que funciona en todos los medios compatibles, la librería funciona únicamente en las versiones de matlab que van desde la 5.3 hasta las 7.3. El software conversor de wav a MIDI, posee una herramienta para calcular el tempo, cuya eficiencia calculada es del 90%. Dicha eficiencia varía de acuerdo la estabilidad rítmica del instrumentista y de quien realiza el cálculo. El cálculo del velocity logrado hace que el archivo MIDI resultante de la conversión sea más fiel al audio original, por lo cual al reproducirlos la intensidad de las notas corresponde a la intensidad en el archivo de audio original. El software conversor de wav a MIDI, contiene entre sus herramientas la opción de cuantizar la duración de las notas obtenidas en el análisis del archivo de audio de origen, para la correcta visualización de la partitura. El software conversor de wav a MIDI, posee una interfaz gráfica con diferentes herramientas que permiten al usuario realizar la conversión de forma rápida, sencilla y eficiente. El software desarrollado no funciona únicamente para el clarinete, sino también para otros instrumentos de viento, pues la configuración de los parámetros de conversión, y el algoritmo de detección de pitch empleado en el desarrollo del proyecto hacen posible la detección de las notas en la mayoría de los instrumentos, incluso puede ser usado en instrumentos percusivos para plasmar una idea rítmica. El software desarrollado funciona de forma correcta únicamente para audios mono, que contengan ejecuciones de una sola línea melódica, en general para instrumentos melódicos, o para instrumentos armónicos que ejecuten una melodía. No funciona para un audio que contenga varios instrumentos melódicos cuya ejecución conforme acordes, es decir más de una nota a la vez. Al realizar una conversión sobre un archivo de audio que contenga en toda su extensión, o en partes de ella, mas de una nota a la vez, el archivo .mid resultante de la conversión presenta errores, mostrando que el conversor identifica en la mayoría de los casos en que se presenta armonía, la nota cuya frecuencia sea mas alta, o la mas baja del acorde pero una octava por debajo de su frecuencia real.

Page 4: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

4

DESARROLLO DE UN CONVERSOR DE WAV A MIDI PARA

TRANSCRIPCIÓN MUSICAL DE CLARINETE

MYRIAN LUCRECIA CALVO TORRES SALOMÓN DÍAZ DONADO

UNIVERSIDAD DE SAN BUENAVENTURA FACULTAD DE INGENIERÍA

INGENIERÍA DE SONIDO BOGOTÁ D.C OCTUBRE

Page 5: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

5

2011 DESARROLLO DE UN CONVERSOR DE WAV A MIDI PARA

TRANSCRIPCIÓN MUSICAL DE CLARINETE

MYRIAN LUCRECIA CALVO TORRES SALOMÓN DÍAZ DONADO

PROYECTO DE GRADO

UNIVERSIDAD DE SAN BUENAVENTURA FACULTAD DE INGENIERÍA

INGENIERÍA DE SONIDO BOGOTÁ D.C OCTUBRE

Page 6: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

6

2011

CONTENIDO

INTRODUCCIÓN ............................................................................................................. 14

1. PLANTEAMIENTO DEL PROBLEMA ....................................................................... 15

1.1. ANTECEDENTES ................................................................................................. 15

1.2. DESCRIPCIÓN Y FORMULACIÓN DEL PROBLEMA. ...................................... 18

1.3. JUSTIFICACIÓN................................................................................................ 18

1.4. OBJETIVOS DE LA INVESTIGACIÓN .................................................................. 20

Objetivo General ....................................................................................................... 20

Objetivos Específicos ............................................................................................... 20

1.5. ALCANCES Y LIMITACIONES DEL PROYECTO ................................................ 21

1.5.1. Alcances ......................................................................................................... 21

1.5.2. Limitaciones .................................................................................................... 21

2. MARCO DE REFERENCIA ...................................................................................... 22

2.1. MARCO CONCEPTUAL ........................................................................................ 22

2.1.1. Audio ............................................................................................................. 22

2.1.2. Características de las señales de Audio ........................................................ 22

2.1.2.1 Amplitud ....................................................................................................... 22

2.1.2.2 Frecuencia ................................................................................................... 23

2.1.2.3 Armónico...................................................................................................... 23

2.1.2.4 Espectro en frecuencia ................................................................................ 23

2.1.2.5 Octava ......................................................................................................... 23

2.1.2.6 Pitch ............................................................................................................. 23

2.1.2.7 Detección de pitch mediante la función de autocorrelación .......................... 24

2.1.2.8 Frecuencia de muestreo .............................................................................. 24

2.1.2.9 Resolución en bits ........................................................................................ 25

2.1.3. Formatos de almacenamiento de archivos de audio ....................................... 25

2.1.3.1 Formato wav ................................................................................................. 25

2.1.4. MIDI ................................................................................................................ 26

2.1.4.1 Mensajes MIDI .............................................................................................. 26

2.1.4.2 Canales MIDI ............................................................................................... 27

2.1.4.3 Parámetros MIDI .......................................................................................... 28

Page 7: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

7

2.1.4.4 Ficheros MIDI ............................................................................................... 29

2.1.5. MIDI Tool box ................................................................................................. 34

2.1.6. Conceptos musicales básicos ........................................................................ 34

2.1.6.1 Pentagrama ................................................................................................. 34

2.1.6.2 Las notas musicales .................................................................................... 34

2.1.6.3 Los silencios ............................................................................................... 35

2.1.6.4 Las claves musicales ................................................................................... 36

2.1.6.5 El compás .................................................................................................... 36

2.1.7. Instrumentos musicales de viento ................................................................... 37

2.1.7.1 Instrumentos de Viento-Metal ...................................................................... 38

2.1.7.2 Instrumentos de Viento-Madera ................................................................... 38

2.1.7.3 El clarinete ................................................................................................... 39

2.1.7.4 Rango de frecuencias de los Instrumentos de Viento.................................... 41

2.2. MARCO TEÓRICO ............................................................................................... 42

2.2.1. Detección de Pitch .......................................................................................... 42

2.2.2. ALGORITMOS DE DETECCIÓN DE PITCH DE DOMINIO TEMPORAL ........ 44

2.2.2.1 ACF ( Autocorrelation Function / Función de Autocorrelación) ...................... 44

2.2.2.2 AMDF (Average Magnitude Difference Function/ Magnitud promedio de la Función Diferencia) ................................................................................................... 45

2.2.2.3 SIFT (Simplified inverse filtering technique/ Técnica de filtrado inverso simplificado).............................................................................................................. 46

2.2.3. ALGORITMOS DE DETECCIÓN DE PITCH DE DOMINIO ESPECTRAL....... 47

2.2.3.1 HPS (Harmonic Product Spectrum/ Producto del espectro armónico) ........... 48

2.2.3.2. CEPSTRUM ................................................................................................. 49

3. METODOLOGÍA ....................................................................................................... 50

3.1. ENFOQUE DE LA INVESTIGACIÓN ..................................................................... 50

3.2 LÍNEA DE INVESTIGACIÓN DE USB / SUB-LÍNEA DE FACULTAD / CAMPO TEMÁTICO DEL PROGRAMA ..................................................................................... 50

3.3. TÉCNICAS DE RECOLECCIÓN DE INFORMACIÓN ........................................... 51

HIPÓTESIS .................................................................................................................. 51

3.4. VARIABLES .......................................................................................................... 52

3.4.1. Variables Independientes................................................................................ 52

3.4.2. Variables Dependientes .................................................................................. 52

4. DESARROLLO INGENIERIL .................................................................................... 53

4.1. SELECCIÓN DEL MÉTODO DE DETECCIÓN DE PITCH .................................... 53

Page 8: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

8

4.2. DESARROLLO DEL SOFTWARE CONVERSOR WAV A MIDI PARA CLARINETE ............................................................................................................. 59

4.2.1. Fase de inicialización ...................................................................................... 59

4.2.1.1 Abrir un archivo de Audio ............................................................................. 60

4.2.1.2 Grabar un archivo de Audio .......................................................................... 61

4.2.1.3 Reproducción de un archivo de audio ........................................................... 64

4.2.2. Fase de Configuración de parámetros de conversión .................................... 65

4.2.2.1 Frecuencia Mínima ....................................................................................... 66

4.2.2.2 Frecuencia Máxima ....................................................................................... 68

4.2.2.3 Tempo .......................................................................................................... 68

4.2.2.4 Compás ........................................................................................................ 69

4.2.2.5 Cuantización ................................................................................................. 71

4.2.3. Fase de Conversión ........................................................................................ 73

4.2.3.1 Algoritmo para la detección de la frecuencia ................................................ 74

4.2.3.2 Algoritmo para el cálculo del velocity ........................................................... 86

4.2.3.3 Algoritmo para la cuantización ..................................................................... 87

4.2.3.4 Algoritmo para el cálculo del tempo: “calculador de tempo” .......................... 90

4.2.4. Fase de Finalización ....................................................................................... 93

4.2.4.1 Guardar archivo MIDI .................................................................................... 93

4.2.4.2 Algoritmo para la creación del fichero MIDI a partir de la librería “MIDI Tool box” .......................................................................................................................... 95

4.2.4.3 Reproducción del Archivo MIDI ..................................................................... 98

4.3. DESARROLLO DE LA INTERFAZ GRÁFICA ....................................................... 99

4.3.1. INTERFAZ GRÁFICA PRINCIPAL .................................................................. 99

4.3.1.1 Barra de herramientas ................................................................................ 100

4.3.1.2. Botones ..................................................................................................... 103

4.3.1.3 Gráfica de forma de onda ........................................................................... 105

4.3.1.4 Gráfica archivo MIDI ................................................................................... 105

4.3.2. INTERFACES GRÁFICAS SECUNDARIAS .................................................. 106

4.3.2.1 Grabar archivo de audio.............................................................................. 106

4.3.2.2 Calcular tempo ............................................................................................ 107

4.3.2.3 Parámetros de conversión. ......................................................................... 108

4.3.2.4 Acerca de WAV2MIDI CONVERTER .......................................................... 111

5. ANÁLISIS DE RESULTADOS................................................................................. 113

5.1. EVALUACIÓN ALGORITMO DE SEGMENTACIÓN........................................... 113

5.2. EVALUACIÓN ALGORITMO PARA LA DETECCIÓN DEL VELOCITY ........... 129

Page 9: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

9

5.3. EVALUACIÓN ALGORITMO PARA EL CÁLCULO DE TEMPO ...................... 133

5.4. EVALUACIÓN ALGORITMO DE CUANTIZACIÓN ............................................. 135

5.5. EVALUACIÓN DE LA ESCRITURA DEL FICHERO MIDI ................................ 136

CONCLUSIONES .......................................................................................................... 137

BIBLIOGRAFÍA .............................................................................................................. 139

Page 10: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

10

ÍNDICE DE FIGURAS

Figura 1. Figuras de las notas musicales y sus respectivos silencios............................. 35 Figura 2. El compás ...................................................................................................... 36 Figura 3. Instrumentos de Viento-Metal .......................................................................... 38 Figura 4. Instrumentos de Viento-Madera ....................................................................... 39 Figura 5. Clarinete .......................................................................................................... 40 Figura 6. Extensión de los clarinetes .............................................................................. 40 Figura 7. ACF- Función de autocorrelación ..................................................................... 45 Figura 8. AMDF- Magnitud promedio de la Función Diferencia ....................................... 46 Figura 9. Fases generales conversor Wav a MIDI .......................................................... 59 Figura 10. Fase de Inicialización ..................................................................................... 60 Figura 11. Fase de Configuración parámetros de conversión ...................................... 65 Figura 12. Fase de conversión ....................................................................................... 73 Figura 13. Fase de finalización ...................................................................................... 93 Figura 14. Interfaz gráfica principal ................................................................................. 99 Figura 15. Menú Archivo ............................................................................................... 100 Figura 16. Abrir Archivo de Audio ................................................................................. 100 Figura 17. Guardar Archivo MIDI .................................................................................. 101 Figura 18. Menú Herramientas ..................................................................................... 101 Figura 19. Menú Configuración ..................................................................................... 102 Figura 20. Menú Ayuda ................................................................................................. 102 Figura 21. Botones ....................................................................................................... 103 Figura 22. Barra de progreso proceso de conversión.................................................... 104 Figura 23. Gráfica forma de onda ................................................................................. 105 Figura 24. Gráfica Archivo MIDI .................................................................................... 105 Figura 25. Interfaz gráfica secundaria “Rec” ................................................................. 106 Figura 26. Interfaz gráfica secundaria “Calculador_Tempo” .......................................... 108 Figura 27. Interfaz Gráfica secundaria “Configuracion_Parametros_Conversion” ......... 109 Figura 28. Interfaz gráfica secundaria “About_us” ......................................................... 111 Figura 29. Segmentación basada en frecuencia y volumen, realizada por el algoritmo para la melodía 1 ........................................................................................................... 117 Figura 30. Representación en piano roll del archivo MIDI generado por el conversor para la melodía 1 ................................................................................................................... 119 Figura 31. Segmentación basada en frecuencia y volumen, realizada por el algoritmo para la melodía 2 ........................................................................................................... 119 Figura 32 Representación en piano roll del archivo MIDI generado por el conversor para la melodía 2 ................................................................................................................... 120 Figura 33. Segmentación basada en frecuencia y volumen, realizada por el algoritmo para la melodía 3 ........................................................................................................... 121 Figura 34. Representación en piano roll del archivo MIDI generado por el conversor para la melodía 3 ................................................................................................................... 122 Figura 35. Segmentación basada en frecuencia y volumen, realizada por el algoritmo para la melodía 4 ........................................................................................................... 123 Figura 36. Representación en piano roll del archivo MIDI generado por el conversor para la melodía 4 ................................................................................................................... 124

Page 11: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

11

Figura 37. Segmentación basada en frecuencia y volumen, realizada por el algoritmo para la melodía 5 ........................................................................................................... 125 Figura 38. Representación en piano roll del archivo MIDI generado por el conversor para la melodía 5 ................................................................................................................... 126 Figura 39. Segmentación basada en frecuencia y volumen, realizada por el algoritmo para la melodía 6 ........................................................................................................... 127 Figura 40. Representación en piano roll del archivo MIDI generado por el conversor para la melodía 6 ................................................................................................................... 128 Figura 41. Detección de velocity, realizada por el algoritmo para la melodía 1 ............. 130 Figura 42. Detección de velocity, realizada por el algoritmo para la melodía 2 ............. 130 Figura 43. Detección de velocity, realizada por el algoritmo para la melodía 3 ............. 131 Figura 44. Detección de velocity, realizada por el algoritmo para la melodía 4 ............. 131 Figura 45. Detección de velocity, realizada por el algoritmo para la melodía 5 ............. 132 Figura 46. Detección de velocity, realizada por el algoritmo para la melodía 6 ............. 132

Page 12: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

12

ÍNDICE DE TABLAS

Tabla 1. Mensajes MIDI . ................................................................................................ 27 Tabla 2. Expresiones usadas para indicar el tempo ......................................................... 28 Tabla 3. Figuras y duración de las notas musicales. ........................................................ 35 Tabla 4. Rango de frecuencias de los instrumentos musicales de Viento ........................ 41 Tabla 5. Resultados obtenidos en la detección de frecuencia, con los diferentes métodos de detección de pitch. ...................................................................................................... 55 Tabla 6. Eficiencia del calculador de tempo ................................................................... 135

Page 13: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

13

ANEXOS

Anexo 1 ......................................................................................................................... 141 Anexo 2 ......................................................................................................................... 144 Anexo 3 ......................................................................................................................... 149 Anexo 4 ......................................................................................................................... 154 Anexo 5 ......................................................................................................................... 156

Page 14: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

14

INTRODUCCIÓN

En la actualidad la herramienta MIDI es usada para múltiples propósitos durante

las etapas de preproducción y producción de un proyecto musical, haciendo uso

de controladores MIDI, secuenciadores y editores de partitura, incluso en la

ejecución musical en vivo a partir de muestras provenientes de bancos de sonidos.

La creación de una canción tiene su inicio en una idea musical, una melodía o

una sucesión de acordes que son plasmados en un papel o en una grabación

(herramienta usada por varios compositores) y que finalmente se convierte en una

obra maestra.

Siguiendo la línea de optimizar cada uno de los procesos en este campo

mediante el uso de la herramienta MIDI, es conveniente pensar en un sistema que

permita a compositores y músicos en general, decodificar la información musical

para llevar a cabo transcripciones automáticas en forma rápida y efectiva, de sus

composiciones, ideas musicales o fragmentos melódicos, partiendo de una

grabación de las mismas; esto con el objetivo de vincular la idea musical a un

secuenciador o de visualizarla en un editor de partitura.

Es por esto que se ha desarrollado un software prototipo conversor de wav a MIDI

para clarinete, que tiene como objetivo facilitar y agilizar la ejecución de los

procesos musicales anteriormente mencionados, y servir como referencia para

futuras investigaciones en el tema.

En el presente documento se describen cada uno de los procesos, fases de

investigación y desarrollo, llevados a cabo para el diseño y programación del

software prototipo conversor de wav a MIDI para clarinete.

Page 15: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

15

1. PLANTEAMIENTO DEL PROBLEMA

1.1. ANTECEDENTES

La investigación sobre la transcripción musical inició varias décadas atrás, en sus

primeros años se empezaron a desarrollar sistemas que procesaban las señales

de audio con el objetivo de obtener la partitura de la ejecución musical de la señal

analizada. A continuación se mencionan los avances más relevantes, a nivel

global, nacional e institucional.

Antecedentes globales

A finales de los años 70, exactamente en 1977, en la Universidad de Michigan, los

investigadores Piszczalski y Galler, desarrollaron el primer sistema de

transcripción musical monofónica, cuyo objetivo consistía en procesar una señal

de audio y generar una partitura. El proceso consistía en obtener la

representación de la señal en el dominio de la frecuencia y a través de un análisis

realizado a los componentes espectrales de la misma, determinar la frecuencia

fundamental. El sistema presentaba inconvenientes en el cálculo de la duración

de las notas y los silencios; además su efectividad se limitaba a instrumentos con

menos energía en sus armónicos. Aún así se consideró un éxito.

Ese mismo año, en la Universidad de Stanford, James A Moorer, desarrolló

exitosamente un sistema con el cual logró transcribir dúos de guitarra y violín,

procesando la señal en el dominio del tiempo a través de una serie de filtrados con

los que encontraba las notas que eran posteriormente agrupadas para escribir la

partitura.

Posteriormente, en el año 1979, se generó otro modelo de detección de pitch, el

modelo Terhardt, que analizaba los submúltiplos de los componentes espectrales

de la señal de audio, para determinar la frecuencia fundamental.

Page 16: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

16

En la década siguiente varios investigadores del departamento de música de la

universidad de Stanford, discutieron y trabajaron en el desarrollo de sistemas de

transcripción musical, algunos de los líderes en dicho periodo son Schloss (1985),

Foster (1982), Mont-Reynaud (1985), y Chafe (1985, 1986).

La mayoría de los sistemas desarrollados en la época mencionada eran efectivos

sólo para determinado rango de instrumentos, y presentaban inconvenientes

como la extrema sensibilidad al ruido, y la ineficacia para la transcripción musical

de un instrumento polifónico, limitación que existe aún en la actualidad.

En 1998, Johan Forsberg desarrolló lo que él denominó como un “sistema

experimental para representar en formato MIDI una señal de audio”1. Dicho

sistema operaba en el dominio de la frecuencia, realizando un análisis del

espectro mediante el cual determinaba los armónicos y el comportamiento en

frecuencia de la señal a través del tiempo para realizar el cálculo del tono y

escribir los eventos MIDI de inicio y final de nota, en un archivo MIDI de salida,

que podía visualizarse en un pianoroll.

Más recientemente, en el año 2006, en la Universidad Politécnica de Cataluña,

Albert Molina Reverte realizó un “Conversor wave a MIDI en tiempo real para

guitarras eléctricas”. El proceso inicia con la lectura del archivo wave, continua con

la detección de las notas mediante un algoritmo de detección de pitch de dominio

frecuencial que calcula la transformada de rápida de Fourier; y finaliza con la

escritura del fichero MIDI.

Adicionalmente, empresas como Yamaha y Roland han desarrollado interfaces de

conversión de nota musical a nota MIDI, como: ROLAND GI-10, GR33, VG-88,

AIX-101,GK3 y YAMAHA EZ-GA.

1 FORSBERG, Johan “Automatic conversion of sound to the MIDI-format” 1998.

Page 17: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

17

Existen también conversores wav a MIDI, que se comercializan en internet como

Solo Explorer, AmazingMIDI , Intelliscore Polyphonic, AKoff Music, y Composer.

Por su parte programas de audio como Logic y Melodyne, permiten a partir de un

archivo .wav, visualizar la partitura y exportar un archivo MIDI.

Antecedentes nacionales

Los estudiantes de música y artes de la Universidad Distrital Antonio Nariño,

llevaron a cabo la construcción de dispositivos de conversión analógica a nota

MIDI.2

Antecedentes Universidad de San Buenaventura

En el año 2008, Andrés Ripe Rodriguez , desarrolló como proyecto de grado un

“Dispositivo conversor de nota musical a nota MIDI para bajo eléctrico”. En dicho

proyecto, la detección de la frecuencia se realiza mediante un algoritmo basado en

autocorrelación. El proyecto tuvo como alcances su efectividad para otros

instrumentos como la guitarra eléctrica o teclados.

2 RIPE RODRIGUEZ, Andrés. Tesis de grado “Dispositivo conversor de nota musical a nota MIDI

para bajo eléctrico”, Universidad de San Buenaventura Bogotá, 2008.

Page 18: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

18

1.2. DESCRIPCIÓN Y FORMULACIÓN DEL PROBLEMA.

Los músicos en general hacen uso de la transcripción musical, que consiste en el

empleo de signos para representar los sonidos en una partitura. Corresponde a

una herramienta útil, el desarrollo de una aplicación que permita de forma rápida y

eficiente convertir un archivo que contenga la grabación de un instrumento

melódico en formato wav, a un archivo MIDI, que genere la visualización de una

partitura cuando se importe en un software editor de partitura. De esta forma, no

se altera en ningún sentido el proceso creativo musical en el caso de

compositores, y se agiliza la transcripción en general, proporcionando incluso a

aquellos neófitos en la materia una guía en su proceso de estudio musical.

¿Cómo diseñar una aplicación que realice la conversión de un archivo de audio

que contenga la grabación de un clarinete a un archivo MIDI?

1.3. JUSTIFICACIÓN

La implementación del protocolo MIDI en el campo de la producción musical, ha

permitido desde sus inicios agilizar y ejecutar diferentes procesos. El desarrollo

de una herramienta que facilite el estudio y la composición de piezas musicales se

hace necesaria en distintos campos de la actividad musical, por lo cual se requiere

del diseño y creación de una aplicación capaz de convertir un archivo de audio en

formato wav, a un archivo MIDI, cuyo desempeño satisfaga las necesidades de los

usuarios y deje un precedente para el implemento de nuevas funciones en el

sistema.

Se ha seleccionado el clarinete como el instrumento en el cual deben ser

ejecutadas las piezas musicales a convertir, debido a que en la ejecución de cada

nota a lo largo del rango en frecuencia del instrumento, la frecuencia fundamental

Page 19: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

19

presenta más energía que los armónicos, característica que facilita la detección de

las notas, en todos los algoritmos de detección de pitch.

Debido a que la detección de múltiples frecuencias simultáneas corresponde a un

problema no resuelto aún en la actualidad, se ha decidió limitar la conversión a

instrumentos monofónicos, siendo esta otra de las razones por las cuales se ha

seleccionado el clarinete como el instrumento más adecuado para los propósitos

del presente proyecto.

Como formato de audio de los archivos de origen, se ha seleccionado el formato

wav, por ser el más empleado en grabación y producción musical.

Page 20: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

20

1.4. OBJETIVOS DE LA INVESTIGACIÓN

Objetivo General

Desarrollar un software prototipo conversor WAV a MIDI para transcripción

musical de Clarinete.

Objetivos Específicos

Realizar un estudio de los diferentes métodos de detección de pitch y

seleccionar entre ellos el más adecuado de acuerdo a los propósitos del

proyecto.

Establecer un algoritmo base, que permita la detección de las frecuencias

haciendo uso de la plataforma de programación MATLAB.

Establecer un algoritmo base para la creación del fichero MIDI

correspondiente al archivo con extensión .mid, haciendo uso de la

herramienta MIDI Tool box de MATLAB.

Establecer un algoritmo que sirva para la detección del velocity.

Establecer un algoritmo que sirva para la detección del tempo.

Programar en MATLAB la aplicación que realice la lectura del archivo de

audio .wave, lleve a cabo la correspondiente detección de notas musicales,

realice la detección del velocity, detecte el tempo y finalmente genere el

archivo MIDI.

Page 21: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

21

1.5. ALCANCES Y LIMITACIONES DEL PROYECTO

1.5.1. Alcances

Realizar la detección de la tonalidad

La posibilidad de realizar la conversión de instrumentos polifónicos, es decir un

archivo de audio que contenga dos ó más notas simultáneas (instrumentos

armónicos).

1.5.2. Limitaciones

La función “writemidi” del MIDI Tollbox, empleada para la escritura del archivo

.mid, hace uso de archivos .mex, que sólo son compatible con las versiones

de Matlab que van desde la 5.3 hasta la 7.4; causando que la conversión

completa y la obtención del archivo MIDI, sólo sea posible en las versiones

mencionadas de Matlab.

Las conversiones sólo se realizan sobre señales monofónicas de

instrumentos, es decir sólo una línea melódica.

Para notas de la misma frecuencia ejecutadas de forma consecutiva, se

sumará el valor de las duraciones, y se escribirá en el fichero MIDI, como una

sola nota. Esto es producto de que el algoritmo de segmentación sólo está

basado en pitch.

Page 22: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

22

2. MARCO DE REFERENCIA

2.1. MARCO CONCEPTUAL

2.1.1. Audio

Audio analógico es la representación eléctrica de una señal sonora, generalmente

de sonidos audibles por el hombre. El audio digital es la representación de una

señal de audio analógica, realizada a una frecuencia de muestreo (muestras por

segundo), y a una resolución en bits definida.

2.1.2. Características de las señales de Audio

2.1.2.1 Amplitud

La amplitud es el valor máximo positivo o negativo que puede alcanzar una onda.

La amplitud se puede medir determinando la cantidad de fluctuación en la presión

del aire en un sonido, el valor de voltaje en una señal eléctrica o los datos

numéricos en una señal digital.

En el presente proyecto, el audio habiendo sido grabado mediante un micrófono o

línea, digitalizado mediante un conversor análogo-digital, y almacenado en un

formato .wav, es cargado en la plataforma Matlab mediante la función “wavread”,

que lee el archivo .wav y lo almacena en un vector “y”, representando sus valores

de amplitud muestra a muestra en valores de 1 a-1 y representando la frecuencia

mediante la distribución de los valores de amplitud que indica el vector “y”. En “fs”

se almacena la frecuencia de muestreo (puntos de muestra por segundo), y en

“nbits”, la resolución en bits.

[y, fs, nbits]=wavread(waveFile);

Page 23: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

23

2.1.2.2 Frecuencia

La frecuencia corresponde al número de ciclos por segundo realizados por una

onda (Hz); a mayor frecuencia un sonido se percibe más agudo, y a menor

frecuencia se percibe más grave.

2.1.2.3 Armónico

Un armónico es una frecuencia que es múltiplo de una fundamental. Para una

frecuencia de 440 Hz, sus dos primeros armónicos 880Hz y 1320Hz.

2.1.2.4 Espectro en frecuencia

El espectro en frecuencia es una representación de la distribución de las

amplitudes de cada componente en frecuencia de un sonido determinado.

2.1.2.5 Octava

La octava es un intervalo entre dos sonidos que corresponde a una relación de 2

a 1. En el ámbito musical, es la distancia que hay entre dos notas de un mismo

nombre correspondientes a dos series consecutivas, siendo una serie una

secuencia de notas como se expresa a continuación:

Do1-Re1- Mi1- Fa1-Sol1-La1-Si1

Y dos series consecutivas:

Do1-Re1- Mi1- Fa1-Sol1-La1-Si1-Do2-Re2-Mi2-Fa 2-Sol2-La2-Si2

2.1.2.6 Pitch

Pitch es la medida de la percepción subjetiva de la frecuencia, en otras palabras

que tan agudo o grave es un sonido. En el presente proyecto, el término pitch es

empleado para referirse a la nota MIDI (número de semitonos) correspondiente a

Page 24: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

24

la frecuencia detectada en cada segmento del audio analizado. El valor de pitch

MIDI, se calcula mediante la siguiente fórmula:

3 (1)

En la que 69 representa el LA central equivalente a 440Hz.

2.1.2.7 Detección de pitch mediante la función de autocorrelación

En el presente proyecto, la función de autocorrelación se emplea para detectar el

período fundamental del segmento de señal analizada, y así calcular la frecuencia,

que corresponde al inverso del período.

En la función de autocorrelación, la señal original es comparada con una versión

de sí misma retrasada en el tiempo para estimar la similitud entre ellas. Cuando el

grado de similitud es máximo, se ha encontrado el período fundamental.

2.1.2.8 Frecuencia de muestreo

La frecuencia de muestreo (Sample rate) es el número de muestras tomadas por

segundo de una señal continua para su representación digital en una señal

discreta.

3 JYH-SHING, Roger Jang; YANG GAO, Ming. “ A Query-by-Singing System based on Dynamic

Programming”, Computer Science Department, National Tsing Hua University, Hsinchu, Taiwan,

2000.

Page 25: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

25

2.1.2.9 Resolución en bits

Resolución en bits es el número de bits de datos utilizados para codificar cada

punto de muestra en un proceso de conversión analógica-digital. La resolución en

bits determina la precisión de un sampler, conversor u otros dispositivos digitales

en la representación de los cambios de amplitud de un sonido. A mayor resolución

más precisa es la representación digital de la señal original.

2.1.3. Formatos de almacenamiento de archivos de audio

Los formatos de audio digital, son las múltiples formas en la que se almacena el

audio en computadores y medios de almacenamiento digital. Los más conocidos

son wav, mp3, AIFF y wma.

2.1.3.1 Formato wav

Formato wav (Waveform Audio File Format/ Formato de archivo de forma de onda

de audio), es el formato de almacenamiento de audio digital desarrollado por

Microsoft e IBM para Windows, se pueden almacenar archivos mono y stereo, con

diferentes frecuencias de muestreo y resolución en bits. Es el formato estándar

empleado para la grabación y producción musical.

En el presente software se emplea el formato de audio wav y no otros como mp3,

AIFF, wma debido a que es el formato más usado en grabación y producción

musical.

Page 26: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

26

2.1.4. MIDI

El protocolo MIDI (Musical Instrument Digital Interface/Interfaz Digital para

instrumentos musicales), es un lenguaje, que permite a diversos dispositivos,

como computadores, secuenciadores, sintetizadores, y controladores, entre otros;

interpretar e intercambiar mensajes para la generación de sonidos.

2.1.4.1 Mensajes MIDI

Los mensajes MIDI están compuestos generalmente por un byte de estado y dos

bytes de datos. Los mensajes MIDI pueden ser mensajes de canal o mensajes de

sistema.

Los mensajes de canal son usados para controlar cada canal MIDI por

separado, dichos mensajes pueden ser de voz o de modo.

Los mensajes de voz indican al dispositivo las acciones realizadas por el usuario,

estos mensajes son:

Activación de nota (Note On), Desactivación de nota (Note Off), Postpulsación

polifónica (Polyphonic Key Pressure), Postpulsación monofónica de canal (Overall

pressure) Cambio de control (Control change), Cambio de programa (Program

Change), Pitch (Pitch bend).

Los mensajes de modo, afectan el modo de operación del canal MIDI, como

ajustar sus parámetros para recibir los mensajes de canal.

Los mensajes de sistema afectan al sistema en general, y no son asignados

a un canal en específico.

Page 27: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

27

Tabla 1. Mensajes MIDI 4 .

2.1.4.2 Canales MIDI

Son los canales empleados para la transmisión de datos, dichos datos pueden

transmitirse por todos los canales a la vez ó sólo por determinado número de ellos,

sin afectar la información transmitida en los demás. Existen 16 canales o voces

MIDI, cada uno de ellos independiente y asignable a un dispositivo.

4 MERINO DE LA FUENTE, Jesús Mariano. Las vibraciones de la música. Editorial Club

Universitario. 2006. p. 404.

Mensajes MIDI

Byte estado Descripción

1000cccc Desactivación de nota

1001cccc Activación de nota

1010cccc Postpulsación polifónica

1011cccc Cambio de control

1100cccc Cambio de programa

1101cccc Postpulsación monofónica de canal

1110cccc Pitch

11110000 Mensaje exclusivo del fabricante

11110001 Mensaje de trama temporal

11110010 Puntero posición de canción

11110011 Selección de canción

11110100 Indefinido

11110101 Indefinido

11110110 Requerimiento de entonación

11110111 Fin de mensaje exclusivo

11111000 Reloj de temporización

11111001 Indefinido

11111010 Inicio

11111011 Continuación

11111100 Parada

11111101 Indefinido

11111110 Espera activa

11111111 Reinico del sistema

Page 28: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

28

2.1.4.3 Parámetros MIDI

Velocity: Indica la intensidad de pulsación o ejecución, es decir que tan

fuerte se ha ejecutado una nota. A este parámetro se le asigna un valor de

0 a 127, siendo 0 la mínima intensidad y 127, la máxima. En el presente

proyecto, el velocity se halla a partir del cálculo de un vector de intensidad.

Tempo: Velocidad a la que se ejecuta una pieza musical, ésta se indica en

las partituras por una marca de bpm (beats per minute/golpes por minuto), o

por etiquetas asignadas a distintos valores como se muestra a

continuación.

Tempo bpm

Largo 40-60

Larghetto 60-66

Adagio 66-76

Andante 76-108

Moderato 108-120

Allegro 120-168

Presto 168-200

Prestissimo 200-208

Tabla 2. Expresiones usadas para indicar el tempo

Los golpes por minuto expresan la cantidad de negras que se ejecutan en

un minuto, 60bpm, indica que se ejecutan 60 negras en un minuto por lo

cual cada negra dura un segundo. El valor de la duración de cada negra se

puede hallar dividiendo 60 entre el tempo, como se expresa en la ecuación:

(2)

Page 29: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

29

2.1.4.4 Ficheros MIDI

Los datos MIDI pueden ser almacenados en ficheros, para ser reproducidos e

intercambiados en diferentes equipos.

Un archivo MIDI consta de los siguientes parámetros: inicio de nota, nota,

velocidad, duración y final de nota, y se acompaña de una cabecera para indicar el

formato MIDI y su estructura.

Las notas, el velocity y la duración son descritas en el fichero mediante un valor

dentro de una escala que va de 0 a 127.

En el caso de las notas 60 representa el Do central.

El velocity es el valor que indica que tan fuerte se ha ejecutado la nota, siendo 127

el más fuerte.

En el caso de la duración 0 equivale a la mínima y 127 a la máxima

El fichero está conformado por datos en formato binario de 8 bits que se

convierten a formato hexadecimal ASCII.5

Cada fichero está formado por secuencias y estas a su vez por paquetes. Cada

paquete contiene 4 caracteres que indican el tipo de paquete, 4 bytes que forman

un mensaje de 32 bits.

Se dispone de dos tipos de paquetes, como explica Albert Molina:

Header chunk

Track chunk

5 MOLINA REVERTE, Albert. Proyecto final de Carrera “Conversor wave a MIDI en tiempo real

para guitarras eléctricas”, Escuela Universitaria de Ingeniería Técnica Industrial de Terrassa, Universidad Politécnica de Cataluña 2006, p. 17

Page 30: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

30

El paquete Header chunk contiene los datos de la cabecera del

fichero MIDI y el Track chunk una cadena secuencial de datos MIDI

sobre alguno de los 16 canales MIDI disponibles. Un fichero MIDI

siempre empieza con un paquete de cabecera y uno o varios

paquetes de pista, organizándose de la siguiente forma:

MThd <length of header data>

<header data>

MTrk <length of track data>

<track data>

MTrk <length of track data>

<track data>

Header chunk

Los caracteres 'M' 'T' h' 'd' son escritos en su valor hexadecimal y la

longitud de los datos en esta cabecera, un ejemplo de cabecera es el

siguiente:

Formato de los datos:

struct MTHD_CHUNK

{

/* Cabecera de 8 bytes*/

char ID[4]; /* Espacio para 'M','T','h','d' */

/* Será de 6 bytes, contados desde este punto*/

/* 6 bytes */

};

Valor de los datos:

4D 54 68 64 MThd ID

00 00 00 06 Longitud de MThd es siempre 6.

00 01 Tipo de formato 1.

00 02 Hay 2 Mtrks.

Page 31: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

31

E7 28 Cada incremento de delta-time es un milisegundo.

Nótese que los primeros 4 bytes corresponden con los caracteres

ASCII „M‟ ‟T‟ ‟h‟ ‟d‟, y luego se indica una longitud de 6 bytes,

después de los cuales se puede buscar la siguiente cabecera.

Track chunk

El track chunk es donde se almacenan los datos de las melodías,

se trata de una cadena de eventos MIDI precedida por unos

valores denominados delta-time. La estructura de un Mtrk es la

siguiente:

struct MTRK_CHUNK

{

/* Aquí están los 8 bytes de cabecera que todo chunk debe tener */

char ID[4]; /*Este será 'M','T','r','k' */

/* Aquí van los bytes de datos */

};

<track data> = <MTrk event>+...

<MTrk event> = <delta-time> <event>

El delta time representa la cantidad de tiempo que transcurre antes

de otro evento, por ejemplo, si suceden simultáneamente, el valor

de delta time es cero. Un evento está compuesto por los siguientes

mensajes:

<event> = <MIDI event> | <sysex event> | <meta-event>

Donde MIDI event representa un evento MIDI, como la pulsación

de una nota. Sysex event envía mensajes exclusivos del sistema

MIDI, como un cambio de programa. Meta event especifica

Page 32: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

32

información no MIDI utilizada por los secuenciadores, como puede

ser el nombre de la pista6.

Escritura de las notas y finalización del fichero MIDI

La escritura de las notas en el archivo y el cierre del mismo se realiza como

explica Albert Molina:

Para escribir un evento MIDI que represente una pulsación de nota

se escribe lo siguiente:

<delta-time> <0x90> <pitch> <velocidad>

Siendo 0x90 el identificador de ACTIVACIÓN NOTA MIDI.

Para un mensaje de fin de nota se procede como sigue:

<delta-time> <0x80> <pitch> <velocidad>

Siendo 0x80 el identificador de DESACTIVACIÓN NOTA MIDI.

Para finalizar el fichero MIDI se indica que se ha terminado la

información de pista y esta información se transmite con el

parámetro meta-event de tipo final de pista:

FF 2F 00

Una vez introducidos todos estos datos se crea un fichero MIDI,

usualmente caracterizado con la extensión *.mid, que es posible

reproducir en cualquier aplicación musical que soporte formato

MIDI. Luego se puede asignar a las notas introducidas cualquier

tipo de sonido existente en un sintetizador.

A continuación se muestra un ejemplo de un fichero MIDI completo:

4D 54 68 64 MThd

00 00 00 06 la longitude del chunk MThd es siempre 6.

6 Ibid, p. 21,22.

Page 33: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

33

00 01 Formato 1.

00 02 2 MTrk chunks

E7 28 Cada incremento del delta-time, representa 1 milisegundo

4D 54 72 6B MTrk

00 00 00 14 longitud chunk (20)

00 delta time

FF 58 04 04 02 18 08 tonalidad

00 delta time

FF 51 03 07 A1 20 tempo

00 delta time

FF 2F 00 final de la psita

4D 54 72 6B MTrk

00 00 00 XX longitud chunk (XX) se calcula al final

00 delta time

90 24 40 inicio nota MIDI C2

86 7F delta time

80 24 30 fin nota MIDI C2

00 delta time

FF 2F 00 final de la pista

Se trata de un fichero MIDI que contiene 2 Mtrk. El primero de ellos

configura el tempo y la tonalidad en el secuenciador MIDI. El

segundo Mtrk escribe una nota MIDI de valor C2. La duración de la

nota viene especificada por la diferencia entre los delta-time

(escrito en formato variable-length). Los delta time que se escriben

posteriormente vendrán referenciados al Ultimo delta-time, es decir,

el delta time del End of Track (de valor 00) sucede a distancia 00

del delta time de fin de nota (de valor 86 7F)7.

7 Ibid p. 23, 24

Page 34: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

34

2.1.5. MIDI Tool box

La caja de herramientas MIDI es una recopilación de las funciones de análisis y

visualización de archivos MIDI en el entorno informático Matlab. Además de la

manipulación sencilla y funciones de filtrado, la caja de herramientas contiene

técnicas analíticas que son adecuadas para el análisis del contexto musical8.

Fue desarrollada por Petri Toiviainen y Tuomas Eerola, empleados del

departamento de música de la Universidad de Jyväskylä, en Finlandia.

La caja de herramientas está disponible de forma gratuita bajo la licencia GNU

General Public License, se ejecuta con Matlab 6 y 7.4 (para Windows y Mac OS X

incluso en los procesadores de Intel), también funciona en Matlab 5,3 a 7,4 para

Windows. La versión actual es la 1.0.1, publicada el 24 de enero de 20069.

2.1.6. Conceptos musicales básicos

2.1.6.1 Pentagrama

El pentagrama es una pauta trazada por 5 líneas, horizontales, paralelas,

equidistantes y de igual longitud, en donde se escribe la música. Este consta de 5

líneas y 4 espacios, que se enumeran de abajo hacia arriba.

2.1.6.2 Las notas musicales

Las notas son los signos que representan los sonidos y las duraciones en la

escritura musical. Según el lugar que ocupan en el pentagrama, se dan los

diferentes sonidos, y según las figuras de las notas las duraciones.

8EEROLA, Tuomas; TOIVIAINEN, Petri. MIDI Toolbox: MATLAB Tools for Music Research.

Department of Music, University of Jyväskylä. Finlandia. 2004 [Internet]: www.jyu.fi/hum/laitokset/musiikki/en/research/coe/materials/miditoolbox 9 Ibid

Page 35: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

35

Las figuras de las notas son 7:

Figura Valor

Redonda 1

Blanca 1/2

Negra 1/4

Corchea 1/8

Semicorchea 1/16

Fusa 1/32

Semifusa 1/64

Tabla 3. Figuras y duración de las notas musicales.

La unidad de duración es la redonda, en la tabla de figuras, cada figura de nota

dura la mitad de su anterior y el doble que la siguiente.

2.1.6.3 Los silencios

Los silencios son signos que representan la ausencia del sonido. Estos tienen el

mismo valor de duración de la figura de nota que representa su nombre, es decir,

un silencio de negra corresponde a la duración de una figura de negra.

Figura 1. Figuras de las notas musicales y sus respectivos silencios10

10

CORDANTONOPULOS, Vanessa. Curso completo de Teoría de la Música. 2002. p. 13.

Page 36: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

36

2.1.6.4 Las claves musicales

Las claves son signos que determinan el nombre de las notas que ocupan cada

línea y cada espacio en el pentagrama. Existen 3 claves básicas en la escritura

musical:

La clave de Sol (registro agudo)

La clave de Do (registro medio)

La clave de Fa (registro grave)

2.1.6.5 El compás

Los compases son cada una de los segmentos de pentagrama, estos son

delimitados por las barras, en donde se escriben las notas. El compás es

representado mediante una fracción, cuyo numerador expresa el número de

cuentas o golpes que hay en el compás y el denominador, el valor en duración de

cada de dichos golpes. Teniendo en cuenta la redonda como unidad.

Figura 2. El compás 11

En la fórmula del compás el dígito superior expresa el número de tiempos o

cuentas y el dígito inferior el valor de cada tiempo o cuenta expresada en el

número superior.

11

CORDANTONOPULOS, Vanessa. Curso completo de Teoría de la Música. 2002. p. 12.

Page 37: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

37

Para un compás de 4/4, el numerador expresa que hay cuatro tiempos, y el

denominador que cada uno de estos tiene una duración correspondiente a 1/4 de

la redonda, es decir una negra.

Un compás pude ser simple o compuesto.

Los compases simples: llamados también de división binaria, son aquellos

en los que cada tiempo equivale a un signo de valor simple (redonda,

blanca, negra o corchea), y por lo tanto sus tiempos son divisibles por

dos12.

Compases simples: 2/4 - 3/ 4 - 4/4

Los compases compuestos: llamados también de división ternaria, son

aquellos en los que cada tiempo equivale siempre a un signo de valor con

puntillo (redonda con puntillo, blanca con puntillo, negra con puntillo o

corchea con puntillo), y por lo tanto sus tiempos son divisibles por tres13.

Compases compuestos: 6/8 - 9/8 - 12/8

2.1.7. Instrumentos musicales de viento

Los instrumentos musicales de viento, también llamados aerófonos producen el

sonido a través de la vibración de la columna de aire contenida en su interior. Esta

familia de instrumentos se caracteriza por su gran diversidad tímbrica

La frecuencia producida por el instrumento depende de la longitud del tubo, a

menor longitud más agudo es el sonido. Para variar la longitud del tubo se

emplean pistones o llaves

12

DANHAUSER, A. Teoría de la música. Editorial Ricordi; 2005. p. 80 13

Ibid. p. 82

Page 38: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

38

2.1.7.1 Instrumentos de Viento-Metal

Son instrumentos construidos en bronce y otras aleaciones metálicas. Su boquilla

tiene forma de embudo. La longitud del tubo se controla mediante pistones y

válvulas. Algunos de los instrumentos más conocidos son la trompeta, trompa,

trombón y tuba.

Figura 3. Instrumentos de Viento-Metal14

2.1.7.2 Instrumentos de Viento-Madera

Denominados así por estar construidos en madera, sin embargo en la actualidad

algunos de ellos están hechos de metal.

Constan de varios agujeros a lo largo el tubo, que son tapados con los dedos o

mediante llaves.

Como explica Alicia Rodríguez, la boquilla puede ser:

14

RODRIGUEZ BLANCO, Alicia. Música. Editorial Editex. 2007. p. 76.

Page 39: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

39

Bisel: El aire vibra al romper en el corte del bisel produciendo

así el sonido. A este tipo pertenece la flauta dulce y traversa.

Lengüeta simple: es una caña fina y flexible que vibra por la

acción del soplo. A este tipo pertenecen el clarinete y el

saxofón.

Lengüeta doble: el sonido se produce por la vibración de dos

lengüetas o cañas. A este tipo pertenecen el oboe, el corno

inglés y el fagot15.

Figura 4. Instrumentos de Viento-Madera16

2.1.7.3 El clarinete

Esta construido a base de madera, consta de cinco partes de madera conectadas

por anillos metálicos: boquilla cabeza, cuerpo superior, cuerpo inferior y pabellón.

15

Ibid. p 75. 16

Ibid. p 75.

Page 40: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

40

Su registro intermedio es débil, sin embargo el alto es bastante claro. El más

empleado es el afinado en Si bemol.

Figura 5. Clarinete17

Extensión de los clarinetes:

Los clarinetes son de varios tamaños, pero el Sib y el La son los más usados en la

actualidad. Como todos los clarinetes tienen la misma digitación, diferentes

tamaños producen diferentes notas. Así, por ejemplo, el Do central en un clarinete

en Do sonará como está escrito, pero en un clarinete en Sib un Do central escrito

suena Sib. Esto es, porque es un instrumento transpositor 18.

Figura 6. Extensión de los clarinetes19

17

SEISDEDOS, Marcela. Apreciación Musical I. Argentina. Disponible en: http://apreciacionmusical1emba.blogspot.com/2010/10/el-clarinete.html 18

Ibid 19

Ibid

Page 41: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

41

2.1.7.4 Rango de frecuencias de los Instrumentos de Viento

A continuación se presenta una tabla en la que se detalla en rango de frecuencias

de los distintos instrumentos musicales de viento.

Instrumento Rango en Frecuencia (Hz) Rango en notas musicales

MADERA Saxo Soprano 261,63 - 2099 C4 - C7

Saxo Alto 138,59 - 1318,5 C#3 - E6

Saxo Tenor 103,89 - 622,25 G#2 - D#5

Clarinete Soprano 146,63 - 1568 D3 - G6

Clarinete Alto 97,94 - 830,61 G2 - G#5

Clarinete Bajo 73,416 - 622,25 D2 - D#

Oboe 233,08 - 1396,9 A#3 - F6

Corno Ingles 164,81 - 932,33 E3 - A#5

Fagot 58,270 - 622,25 A#1 - D#5

Flauta 261,63 - 2099 C4 - C7

METAL Corneta-Trompeta 164,81 - 932,33 E3 - A#5

Trombón y Bombardino 55 - 415,30 A1 - G#4

Tuba 49 - 578 G1 - D5

Tabla 4. Rango de frecuencias de los instrumentos musicales de Viento

Page 42: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

42

2.2. MARCO TEÓRICO

2.2.1. Detección de Pitch

La detección de pitch consiste en hallar la frecuencia fundamental de una señal de

audio analizando un segmento o segmentos de la señal completa.

La detección de pitch es usada para diferentes aplicaciones, como lo expresa

Roger Jang:

Reconocimiento melódico

Ubicación de una canción entre una base de datos de canciones, a partir

de cantar una melodía.

Transcripción musical automática

Reconocimiento de tono para lenguaje, mediante la identificación de cada

silaba en una expresión hablada.

Análisis prosódico para aplicaciones de texto escrito a hablado.

Pronunciación asistida para entrenamiento de la pronunciación de un

idioma.

Reconocimiento del habla20.

La forma general de realizar el análisis del audio para la detección de pitch

consiste en aplicar la técnica de “frame blocking”, como se describe a

continuación:

Se separa la señal en segmentos (frames) de 20ms o de valores cercanos

este valor.

Se halla el pitch de cada segmento.

Se elimina el pitch de los segmentos que correspondan a silencios.

20

JYH-SHING, Roger Jang. Audio Signal Processing and Recognition. 2005. p. 90

Page 43: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

43

Se suaviza la curva de pitch mediante filtros u otros métodos.

Para realizar el proceso de forma correcta es necesario determinar el tamaño de

cada segmento (frame size), teniendo en cuenta que éste debe ser tan largo como

para cubrir al menos dos períodos de la frecuencia buscada y que su tamaño debe

ser tal, que puedan captarse suficientes cambios de la señal en el tiempo. En el

proceso se permite el uso de sobreposición de muestras (overlap) entre cada

segmento y su adyacente, con el objetivo de reducir la discontinuidad entre cada

uno de ellos. Si se considera el rango de frecuencias manejadas por un clarinete

soprano, que va desde una frecuencia inferior, Finf=146.84 Hz, hasta una

frecuencia superior, Fsup=1568 Hz; y un audio del instrumento con una frecuencia

de muestreo, Fs=44100, el período fundamental adecuado en muestras para cada

frecuencia debe ser al menos: T=Fs/F, donde T es el período y F la frecuencia

buscada. Por lo tanto, Tinf= 332.326*2 muestras (valor redondeado), y

Tsup=28.125*2(valor redondeado). Para identificar cualquier frecuencia en el

rango en cuestión, se debe escoger un tamaño de segmento que tenga al menos

2 veces el período de la frecuencia inferior, pues este periodo contiene la cantidad

de muestras necesarias para identificar todas las frecuencias hasta la frecuencia

superior21.

Existen en la literatura muchos métodos usados para hallar la frecuencia

fundamental de un segmento de audio, los más conocidos pueden clasificarse

como algoritmos de dominio temporal y algoritmos de dominio espectral.

21 KOSTEK, Bo˙zena. Perception-Based Data Processing in Acoustics. Editorial In-chief. 2005.

p.53,54.

Page 44: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

44

2.2.2. ALGORITMOS DE DETECCIÓN DE PITCH DE DOMINIO TEMPORAL

Se han realizado diferentes estudios sobre este tipo de métodos a lo largo de los

años, tal como lo describe Kostek:

Los diferentes algoritmos de dominio temporal como AMDF, desarrollados por:

(Wize y otros 1976),(Quian y Kimaresan 1966; Talkin 1995; Ying y otros 1996) y

métodos modificados de AMDF (Chang y Su 2002; Dziubinski y Kostek 2004;

Kostek 2004a, 2004b; Medan y otros 1988; Meiet al 2001; Szczerba y Czyzewski

2005,Zhang y otros 2002); hallan el período mediante un análisis de cruces por

cero, ó de los picos y valles de la señal. Los algoritmos basados en

autocorrelación (Rabiner y Schafer 1978) funcionan de manera similar, operando

sin embargo, en la autocorrelación de la señal. Este enfoque se basa en el

supuesto de que la señal procesada es de tipo cuasi-periódica, y sus períodos

consecutivos son similares entre sí22.

2.2.2.1 ACF ( Autocorrelation Function / Función de Autocorrelación)

Este es un método en el dominio del tiempo, que estima la similitud entre la señal,

y su versión retrasada, a través de la función de autocorrelación:

(3)

Donde es el intervalo de tiempo en términos de puntos de muestreo. El valor de

que maximiza , en un intervalo especificado, es seleccionado como el

periodo en puntos de muestreo. La siguiente figura muestra su funcionamiento:

22

Ibid p. 52.

Page 45: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

45

Figura 7. ACF- Función de autocorrelación23

En otras palabras se mueve la versión retrasada n veces y se calcula el producto

interno de las partes superpuestas para obtener n valores de acf.

El máximo acf ocurre en el primer punto, lo que claramente no es lo buscado, por

esta razón se fijan en cero los valores alrededor del primer máximo, así es posible

identificar el segundo máximo, y con esto localizar el periodo en muestras24.

2.2.2.2 AMDF (Average Magnitude Difference Function/ Magnitud promedio

de la Función Diferencia)

El concepto de AMDF, es muy cercano al de ACF, excepto porque se calcula la

distancia, en lugar de la similitud entre la señal y su versión retrasada, como se

muestra en la siguiente fórmula:

(4)

23

JYH-SHING, Roger Jang. Audio Signal Processing and Recognition. 2005. p. 92. 24

Ibid. p. 92

Page 46: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

46

Donde es el intervalo de tiempo en términos de puntos de muestreo. El valor de

que minimiza en un intervalo especificado, es seleccionado como el

periodo en puntos de muestreo. La siguiente figura muestra su funcionamiento:

Figura 8. AMDF- Magnitud promedio de la Función Diferencia25

En otras palabras se mueve la versión retrasada n veces y se calcula la suma

absoluta de la diferencia de las partes superpuestas para obtener n valores de

amdf 26.

2.2.2.3 SIFT (Simplified inverse filtering technique/ Técnica de filtrado

inverso simplificado)

Es una versión simplificada de la técnica de filtrado inverso que reune las ventajas

de los métodos de la autocorrelación y cepstrum .Fue propuesto por J.D Markel en

1972. El SIFT busca la periodicidad de una señal estimada por filtrado inverso, y

25

Ibid. p. 102 26

Ibid. p. 102

Page 47: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

47

es uno de los métodos más comúnmente usados en equipos comerciales. Es

usualmente empleado en sistemas de reconocimiento de voz27.

2.2.3. ALGORITMOS DE DETECCIÓN DE PITCH DE DOMINIO ESPECTRAL

Los algoritmos de dominio espectral dependen de una transformación de dominio

temporal a espectral, demandando unos altos costes de computación. La FFT

(Fast Fourier Transform), sin embargo, puede ser aplicada efectivamente en los

procesadores actuales. En este tipo de algoritmos se puede diezmar la señal sin

perder fiabilidad de detección. Con ellos se tiene mayor control sobre la situación

de la energía de los armónicos, así como la relación entre ellos.

El problema principal de estos algoritmos es que un análisis simple del espectro

resultante no es suficiente para determinar el periodo fundamental, por lo que es

necesario un análisis posterior como la transformación a Cepstrum o el análisis de

los armónicos más destacados.

Los algoritmos de dominio espectral operan sobre el espectro de la señal, a

continuación se mencionan algunos de los estudios realizados sobre estos

métodos, y sus conclusiones generales:

(McAulay y Quatieri 1990, d'Alessandro, 1995; Ahn y Holmes 1997).

(Noll, 1967),(Kunieday otros 1996) – Basados en el supuesto de que la frecuencia

fundamental de la de la señal y sus armónicos están representados por algunos

de los picos del espectro28.

27

Ibid. p. 109 28

Opcit. KOSTEK. p. 53.

Page 48: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

48

2.2.3.1 HPS (Harmonic Product Spectrum/ Producto del espectro armónico)

El espectro de la señal de entrada debe constar de una serie de picos, lo que

corresponde a la frecuencia fundamental y sus componentes armónicos que son

múltiplos enteros de la frecuencia fundamental.

Al comprimir el espectro determinado número de veces (disminución de la

resolución), y compararlo con el espectro original, se pueden ver los picos de los

armónicos más fuertes. El primer pico en el espectro original coincide con el

segundo pico en el espectro comprimido por un factor de dos, que coincide con el

tercer pico en el espectro comprimido por un factor de tres. Por lo tanto, cuando

los espectros de varios se multiplican entre sí, el resultado es la frecuencia

fundamental.

En el método, primero se divide la señal de entrada en segmentos mediante la

aplicación de una ventana de Hanning, donde se les da el tamaño de la ventana

como argumento de entrada. Para cada ventana, se utiliza la transformada de

Fourier de corto tiempo, para convertir la señal de entrada desde el dominio del

tiempo al dominio de frecuencia. Una vez que la señal de entrada está en el

dominio de la frecuencia, se aplica la técnica de producto del espectro armónico

de cada ventana. El HPS implica dos pasos: reducción de la resolución y la

multiplicación. Para disminuir la resolución, se comprime el espectro dos veces en

cada ventana de muestreo: la primera vez, se comprime el espectro original por

dos y la segunda vez, por tres. Una vez hecho esto, se multiplica el espectro de

los tres juntos y se encuentra la frecuencia, que corresponde al pico (valor

máximo). Esta frecuencia representa la frecuencia fundamental de esa ventana en

particular29.

29 MIDDLETON, Gareth. “Pitch Detection Algorithms”. 2003. p. 4,5

Page 49: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

49

2.2.3.2. CEPSTRUM

El nombre cepstrum deriva de invertir las cuatro primeras letras de spectrum.

La señal original se transforma mediante una transformada rápida de Fourier

(FFT) y el espectro resultante se convierte en una escala logarítmica.

Este espectro en escala logarítmica se transforma utilizando el mismo algoritmo de

la FFT para obtener la potencia cepstrum. La potencia cepstrum revierte al

dominio del tiempo y muestra los picos correspondientes al período de la

frecuencia.

(5)

La frecuencia fundamental es estimada de la misma forma que en el método de

autocorrelación30.

30 GERHARD, David. “Pitch Extraction and Fundamental Frequency: History and Current

Techniques”. University of Regina. 2003. p.12

Page 50: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

50

3. METODOLOGÍA

3.1. ENFOQUE DE LA INVESTIGACIÓN

El presente proyecto sigue un enfoque Empírico-analítico, debido a que se ha

realizado una investigación científica mediante la implementación y análisis de

algoritmos para la detección de frecuencia, y la realización de pruebas para

verificar su eficiencia en los resultados obtenidos. Logrando desarrollar un

algoritmo que permite la transcripción musical del clarinete.

3.2 LÍNEA DE INVESTIGACIÓN DE USB / SUB-LÍNEA DE FACULTAD / CAMPO

TEMÁTICO DEL PROGRAMA

La línea de investigación en que se desarrolla el presente proyecto de

investigación es: Tecnologías actuales y sociedad, ya que con su desarrollo

se espera brindar soluciones efectivas a los problemas con que se

enfrentan quienes están vinculados con la producción musical,

especialmente durante el estudio o la composición de piezas musicales.

La sub-línea de la facultad es: Procesamiento de señales digitales y/o

analógicas; ya que ya que se pretenden realizar diferentes procesos sobre

una señal de audio como filtrado, cuantización, entre otros, para convertirlo

en un archivo MIDI.

El presente proyecto de investigación se realiza dentro del campo de

Análisis y procesamiento de señales.

Page 51: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

51

3.3. TÉCNICAS DE RECOLECCIÓN DE INFORMACIÓN

En este proyecto, con el fin de cumplir con los diferentes, objetivos general y

específicos, se dispone la recolección de información de la siguiente forma:

Por medio del software MATLAB, son analizados diferentes métodos de detección

de pitch, estableciendo un algoritmo base que permita su respectiva aplicación y

posterior evaluación, para poder seleccionar entre ellos el más adecuado para el

clarinete.

Se establece un algoritmo que permite la detección del velocity. Son realizadas las

pruebas pertinentes sobre segmentos de audio, para así evaluar el algoritmo

propuesto.

Es evaluado el método propuesto de detección de tempo, realizando pruebas

teniendo en cuenta la información musical plasmada en los audios, el compás, la

acentuación y las figuras ejecutadas en cada grabación.

HIPÓTESIS

Llevando a cabo un análisis de los diferentes algoritmos de detección de pitch,

velocity y de cálculo de tempo, proponiendo un algoritmo base para cada función,

realizando las pruebas y comparaciones del desempeño de cada uno teniendo en

cuenta las características musicales del instrumento al que está destinada la

aplicación, estableciendo la creación del fichero MIDI a partir de la herramienta

MIDI Tool Box, y finalmente realizando la programación respectiva en MATLAB,

es posible desarrollar una aplicación que permite convertir un archivo de audio en

formato wav, de un instrumento melódico, en este caso el clarinete, a un archivo

con extensión .mid .

Page 52: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

52

3.4. VARIABLES

3.4.1. Variables Independientes

La calidad de la grabación, teniendo en cuenta la captura y los demás

procesos realizados en la generación del archivo de audio a convertir.

La calidad, limpieza y métrica de las ejecuciones musicales grabadas

para su posterior conversión.

La correcta configuración de los parámetros de conversión ingresados

por el usuario, necesarios para llevar a cabo el proceso de conversión.

3.4.2. Variables Dependientes

Grabaciones con un una baja relación señal a ruido, pueden causar que

el conversor identifique como notas musicales segmentos que

correspondan a silencio.

Para una correcta identificación de la frecuencia, se requiere que las

notas sean claras, que no estén acompañadas de sonidos generados

por los mecanismos del instrumento, ni por fallas en la ejecución por

parte del instrumentista (ruidos, golpes, entre otros). Pues esto puede

ocasionar que se identificaran como notas sonidos que no hacen parte

de la verdadera ejecución del instrumento.

Una inadecuada configuración de los parámetros de conversión, puede

ocasionar errores en la detección del pitch, la conversión y por tanto en

los resultados obtenidos para la escritura del archivo MIDI.

Page 53: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

53

4. DESARROLLO INGENIERIL

4.1. SELECCIÓN DEL MÉTODO DE DETECCIÓN DE PITCH

Para la selección del método de detección de pitch, son preseleccionados y

analizados, los métodos más conocidos, citados en la gran mayoría de

publicaciones acerca del tema, según la investigación realizada para el presente

proyecto. Teniendo en cuenta las características de los métodos descritas en el

marco teórico, que son el resultado de un gran número de estudios realizados y

documentados por diferentes autores a lo largo de las últimas décadas, los

métodos seleccionados son:

ACF (Autocorrelation Function/ Función de Autocorrelación)

AMDF (Average Magnitude Difference Function/ Magnitud Promedio de la

Función de Diferencia)

SIFT (Simplified inverse filtering technique/ Técnica de Filtrado Inverso

Simplificado)

HPS (Harmonic Product Spectrum/Producto del Espectro Armónico)

CEPSTRUM

Para el presente proyecto se realiza un estudio comparativo entre los 5 métodos

de pitch seleccionados. El análisis se realiza sobre una grabación de un clarinete

ejecutando la escala de Si bemol (Bb) mayor desde un Re3 (D3) hasta un Mi

bemol 6 (Eb6). Por medio del software MATLAB, se evalúa el desempeño de cada

uno de los métodos, mediante la aplicación de los algoritmos base propuestos en

Page 54: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

54

el libro “Audio Signal Processing and Recognition31”. Según sus resultados, se

selecciona el más adecuado y eficiente para los propósitos del proyecto.

La evaluación del desempeño de los métodos se realiza de la siguiente forma:

Teniendo en cuenta que en el presente proyecto, posterior al proceso de

detección de pitch, se necesita desarrollar un algoritmo de segmentación, que

corresponde a establecer el inicio y final de las notas, es decir, el momento en el

que estas ocurren y sus duraciones, es necesario tener en cuenta la mínima

duración de una nota. Sabiendo que las señales en general son más o menos

estables en períodos cortos de tiempo, por ejemplo entre 20 y 30 ms32, y que la

figura de nota o la duración de la ejecución musical más rápida está en el orden

de los 10 milisegundos, correspondiente a una semifusa en tresillo a un tempo de

250 bpm; se escoge un tiempo de análisis de 20 ms, pues este valor se encuentra

en el intervalo mencionado, y corresponde a una duración de nota de dos veces la

ejecución más rápida, permitiendo identificar la mayoría de duraciones musicales

posibles.

Se analizan con cada método 20 ms de cada una de las notas de la escala

ejecutada por el clarinete, para un total de 23 notas. La frecuencia obtenida con

cada método, se compara con la obtenida mediante un análisis en frecuencia

realizado en el software Adobe Audition. De acuerdo al número de aciertos y

errores de cada uno de los métodos en la detección de la frecuencia, se determina

su eficiencia.

En la siguiente tabla se detallan los resultados obtenidos para cada método.

En la primera columna se encuentran las notas musicales ejecutadas, en la

segunda la frecuencia ideal de cada nota y en la tercera, la frecuencia real

31

JYH-SHING, Roger Jang. Audio Signal Processing and Recognition. 32

Ibid p.12

Page 55: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

55

producida por el instrumento. En las siguientes columnas se encuentran las

frecuencias halladas con cada uno de los métodos. Las casillas resaltadas en

amarillo corresponden a errores en el cálculo de las frecuencias, las casillas sin

resaltar, a los aciertos.

Nota Frecuencia ideal

(Hz) FFT Adobe Audition

(Hz) AMDF (Hz) ACF (Hz) SIFT (Hz) CEPSTRUM

(Hz) HPS (Hz)

D3 146,83 145,94 72,89 146,02 145,06 145,54 100

Eb3 155,56 154,2 77,232 154,73 154,73 155,28 100

F3 174,61 174,7 87,32 175 175 50 50

G3 196 198,64 66,21 199,54 200,45 50,05 200

A3 220 223,5 74,61 225 223,85 50 100

Bb3 233,08 235,39 78,46 235,82 234,57 235,82 100

C4 261,63 264,25 66,11 265,66 268,9 267,27 100

D4 293,66 294,05 73,5 295,97 288,23 290,13 300

Eb4 311,13 311,95 62,37 312,76 312,76 312,76 300

F4 349,23 352,75 70,56 355,64 355,64 355,64 350

G4 392 395,25 65,91 397,29 397,29 397,29 400

A4 440 441,21 63 441 445,45 445,45 450

Bb4 466,16 467,07 66,71 469,14 469,14 469,14 400

C5 523,25 522,95 65,43 525 518,82 525 150

D5 587,33 589,86 73,74 588 588 588 600

Eb5 622,25 625,15 69,44 630 621,12 621,12 150

F5 698,46 708,39 64,37 711,29 711,29 711,29 700

G5 783,99 793,92 61,08 787,5 397,29 397,29 400

A5 880 890,2 81,06 900 445,45 900 450

Bb5 932,33 940,31 85,46 938,29 469,14 469,14 950

C6 1046,5 1044,2 61,42 1050 1050 525 1050

D6 1174,66 1180,3 62,11 1191,89 393,75 393,75 600

Eb6 1244,51 1269,9 66,81 1260 424,03 50 650

Tabla 5. Resultados obtenidos en la detección de frecuencia, con los diferentes métodos de

detección de pitch.

Método AMDF

Los resultados obtenidos, reflejan una eficiencia del método del 0%, al no

obtener ningún acierto en la detección de la frecuencia. Por lo tanto no es

adecuado para la identificación de las notas.

Page 56: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

56

Método ACF

El método muestra una eficiencia del 100%, acertando en la identificación

de todas las notas de la escala, lo que lo convierte en un candidato para el

algoritmo de conversión.

Método SIFT

Los resultados obtenidos, reflejan una eficiencia del 78.26%, acertando en

18 de las 23 notas analizadas, y arrojando errores en las frecuencias por

encima F5 (698,46 Hz).

Método CEPSTRUM

El método presenta una eficiencia del 65,22%, acertando 15 de las 23

notas, y reflejando mejores resultados en el cálculo de las frecuencias

pertenecientes al registro medio del clarinete.

Método HPS

Presenta una eficiencia del 43,48%, acertando solamente 10 de las 23

notas analizadas a lo largo del registro del instrumento, lo que lleva a su

eliminación entre las opciones para la detección de pitch del algoritmo de

conversión.

En general los métodos de detección de pitch son susceptibles al tamaño del

segmento analizado (frame size), los métodos de dominio temporal suelen

funcionar mejor en segmentos cortos; por el contrario, los de dominio espectral

tienen un mejor rendimiento en segmentos largos33. Es por esto que en el análisis

la mayoría de los métodos muestran resultados muy pobres en la detección, pues

33 KOSTEK, Bo˙zena. Perception-Based Data Processing in Acoustics. Editorial In-chief. 2005. p.

53,54

Page 57: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

57

todos han sido implementados usando un segmento de 20ms, hecho que favorece

el análisis solo para algunos de ellos.

Es realizada una prueba adicional analizando dos notas Re3 (D3) y La3 (A3),

usando todos los métodos y variando el tamaño del segmento desde 5ms hasta

100ms. El audio es analizado comenzando un punto x ubicado en

aproximadamente la mitad de la duración de la nota, hasta el tamaño del

segmento que se indique en cada caso. Es decir, para un tamaño de segmento

(frame size) de 5 ms, se analiza la nota, desde el punto x hasta 5 ms después;

para un frame size de 20ms, se analiza desde el punto x hasta 20 ms después.

Este proceso se realiza con todos los métodos, detectando la frecuencia con

tamaños de segmento que van desde 5 ms hasta 20 ms, por lo cual cada nota

tiene 96 valores por método (Ver Anexo 1). A continuación se resumen los

resultados obtenidos.

AMDF identifica correctamente el Re3 para segmentos de audio

cuyo tamaño se encuentre en el intervalo de 6 ms hasta 13ms, para

todos los demás valores falla.

La nota La3 es identificada correctamente utilizando valores de

frame size que van de 5 ms hasta 8 ms y desde 35 ms hasta 100 ms.

Los resultados muestran que AMDF es un algoritmo muy susceptible

al tamaño del segmento analizado, descartándolo totalmente de la

selección.

ACF identifica correctamente Re3, para tamaños de segmento desde

9 ms hasta 100 ms. La nota La3 es identificada correctamente desde

6 ms hasta 100 ms.

La prueba reafirma que ACF es un algoritmo apropiado para las

necesidades del proyecto, debido la estabilidad y eficiencia

Page 58: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

58

mostrada en la identificación de las frecuencias de las notas, en

segmentos pequeños y grandes.

SIFT muestra ser tan estable como ACF en este rango de

frecuencias, su problema aparece en la identificación de las notas

más altas, como se evidencia en la prueba anterior.

CEPSTRUM identifica correctamente Re3 en segmentos desde 20

ms hasta 79 ms, con un acierto en 7 ms, para todos los demás

valores falla. Identificando La3, CEPSTRUM acierta en valores de

13, 15, 17 y 18 ms, y desde 21ms hasta 100ms. Por la inestabilidad y

poca eficiencia del método, se descarta de la selección.

HPS tiene varios aciertos identificando Re3, en segmentos

pequeños, correspondientes a 8, 27 y 28 ms. Los valores se

estabilizan desde 40 ms en adelante, pero para distintos valores de

frame size, no identifica correctamente la frecuencia. Identificando

La3 muestra un comportamiento semejante, pero con mas aciertos

desde 26 ms en adelante.

Todas las pruebas realizadas muestran que de los métodos analizados, ACF es el

algoritmo más eficiente en la identificación de pitch, más estable por ser menos

susceptible al tamaño de los segmentos y por lo tanto el algoritmo más adecuado

para la realización del proyecto.

Page 59: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

59

4.2. DESARROLLO DEL SOFTWARE CONVERSOR WAV A MIDI PARA

CLARINETE

El software comprende cuatro fases generales, a través de las cuales de

desarrolla el proceso de conversión:

Figura 9. Fases generales conversor Wav a MIDI

4.2.1. Fase de inicialización

En la apertura del programa las variables adquieren sus valores predeterminados

y se hacen globales, de esta forma pueden ser invocadas en todas las subpartes

que constituyen la interfaz gráfica y el programa.

Así mismo, en cada una de las secciones del programa principal, y de los

subprogramas, se inicia el código haciendo globales las variables que son

empleadas en dicha sección.

Page 60: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

60

Para iniciar el proceso, el usuario puede elegir abrir un archivo de audio o grabar

uno, el cual es almacenado y graficado para su posterior procesamiento y

reproducción.

Figura 10. Fase de Inicialización

4.2.1.1 Abrir un archivo de Audio

Al abrir un archivo de audio, se despliega una ventana que permite al usuario

acceder a la ubicación del archivo de audio que desea importar, mediante la

función “uigetfile”, que permite cargar archivos desde cualquier ubicación del disco

duro o de medios de almacenamiento externos. Este proceso se ejecuta en el

programa como se ve a continuación.

[FileName Path]=uigetfile({'.wav'},'Cargar audio');

Una vez se obtiene el nombre y la dirección del archivo, se procede a

almacenarlos en la variable “dir”, mediante la función “strcat”, función que se

encarga de enlazar horizontalmente los elementos de los vectores con caracteres,

en este caso “FileName” que almacena el nombre del archivo, y “Path” que

almacena la dirección.

Page 61: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

61

dir=strcat(Path,FileName);

Posteriormente, mediante la función “wavread”, el archivo de audio es leído,

almacenando sus características en tres vectores distintos. En el vector columna

“y”, en un rango de -1 a 1, se almacenan los valores de amplitud a lo largo del

audio. En el vector “fs”, se almacena la frecuencia de muestreo, y en el vector

“nbits”, la resolución en bits.

[y,fs,nbits]=wavread(dir);

Inmediatamente después se grafica la forma de onda del audio cargado en el

campo axes(formadeonda) de la interfaz gráfica, de la siguiente manera:

L=length(y);

t=(0:L-1)*(1/fs);

axes(handles.formadeonda)

plot(t,y)

title('Señal de entrada en tiempo (Seg)');

4.2.1.2 Grabar un archivo de Audio

Al seleccionar esta opción, el programa inicializa otro GUI de nombre “Rec”, en el

que se ejecuta el proceso de grabación, y que es llamado desde el GUI principal,

de la siguiente forma:

Rec()

El usuario debe ingresar el valor en segundos de la duración que considera tendrá

el audio a grabar, dicha duración se obtiene y almacena, mediante la siguiente

línea de código:

Page 62: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

62

duracion=str2double(get(handles.duracion_grabacion,'String'))

;

Siendo, “duracion_grabacion” el campo de texto asignado para la digitación del

valor por parte del usuario, y “duración”, la variable en la que se almacena el

mismo.

Se verifica entonces, que el valor obtenido sea numérico, de no ser así, se

generará un aviso de error y se asignara como duración el valor mínimo permitido,

que corresponde a 3 seg. Este es almacenado en la variable que posee el valor

final “duracion_audio_grabado”, de la siguiente manera.

if isnan(duracion)

errordlg('El valor debe ser numérico, se establece el valor

mínimo, si desea puede cambiarlo','ERROR')

set(handles.duracion_grabacion,'String',3);

duracion=3;

duracion_audio_grabado=duración;

end

Para que el valor sea permitido debe ser mayor a 3 seg e inferior a 240 seg, si el

valor no cumple con dichos requisitos, el programa alertara que existe un error, y

reiniciará la captura de los datos, como se detalla a continuación.

if (duracion<3)

errordlg('La duración debe tener un valor mínimo de 3

seg','ERROR')

set(handles.duracion_grabacion,'String',0);

end

if (duracion>240)

Page 63: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

63

errordlg('La duración debe tener un valor máximo de 240

seg','ERROR')

set(handles.duracion_grabacion,'String',0);

end

Si los datos son válidos, el programa almacenará el valor en la variable final

“duracion_audio_grabado”:

if ((duracion>2)&&(duracion<241))

duracion_audio_grabado=duracion;

end

Al presionar el botón “Rec” , se determina la frecuencia de muestreo en la variable

“Fs”.

Fs=44100;

Mediante la función “wavrecord”, se almacena el archivo de audio en el vector

“audiograbado”, con una duración equivalente al valor almacenado en la variable

“duracion_audio_grabado”, una frecuencia de muestreo correspondiente al valor

almacenado en “Fs”n y en un solo canal para monofónico (1=mono, 2=stereo).

wavrecord(Número de muestras,Frecuencia de muestreo,# de canales);

audiograbado=wavrecord(duracion_audio_grabado*Fs,Fs,1);

Posteriormente el archivo es escrito con extensión “.wav”, mediante la función

“wavwrite”, con las características con que fue grabado. Es almacenado en la

carpeta de origen con el nombre “Grabación”.

wavwrite(audiograbado,Fs,'Grabación.wav');

Page 64: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

64

El archivo grabado es ahora leído mediante la función “wavread”, y almacenado en

el vector “y”, para su visualización, reproducción y posterior análisis y conversión.

El proceso de visualización de la forma de onda se realiza de la misma manera

que en la sección “Abrir archivo de audio”.

[y, fs]=wavread('Grabación.wav');

Al finalizar el proceso de cargar o grabar un archivo de audio, se hace la variable

“audiocargado” igual a 1, esta variable es usada posteriormente en el programa

para validar que el archivo de audio haya sido cargado o grabado

4.2.1.3 Reproducción de un archivo de audio

Para reproducir un archivo de audio, el programa verifica que ya haya sido

cargado o grabado, de ser así, es reproducido mediante la función “sound”. En

caso contrario aparece un aviso que indicará que existe un error y solicitará sea

cargado el archivo de audio.

if audiocargado==1

sound(y,fs);

else

errordlg('Debe cargar el archivo de audio','ERROR')

end

Page 65: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

65

4.2.2. Fase de Configuración de parámetros de conversión

Figura 11. Fase de Configuración parámetros de conversión

Al seleccionar esta opción, el programa inicializa otro GUI de nombre

“Configuracion_Datos_Conversion”, en el que se ejecuta el proceso de adquisición

de datos requeridos en la conversión, y que es llamado desde el GUI principal, de

la siguiente forma:

Configuracion_Datos_Conversion()

Al inicializar el subprograma las variables implicadas en el mismo adquieren sus

valores predeterminados.

Page 66: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

66

4.2.2.1 Frecuencia Mínima

El usuario debe ingresar la frecuencia mínima de la tesitura del instrumento

ejecutado en el archivo de audio, en el campo de texto asignado para esto.

frecminima=str2double(get(handles.frecmin,'String'));

Este valor es obtenido del campo de texto “frecmin” mediante la función “get”, y

almacenado en la variable “frecminima”.

Se verifica inicialmente que el valor sea numérico, de lo contrario se informará de

la existencia de un error, y se reiniciará la captura de datos.

if isnan(frecminima)

errordlg('El valor debe ser numérico','ERROR')

end

El valor debe ser superior a 26 e inferior a 4301, debido a que este es el rango de

frecuencia de los instrumentos musicales. Adicionalmente debe ser inferior y

diferente a la frecuencia mayor, y se sugiere que este separado de la frecuencia

mayor, mínimo una octava. Si el valor ingresado por el usuario, cumple con los

requisitos, es almacenado en la variable final “fmin”, como se muestra a

continuación.

if isnan(frecminima)

errordlg('El valor debe ser numérico','ERROR')

end

if ((frecminima>26)&&(frecminima<4301))

frecuenciamin=frecminima;

else

errordlg('El valor debe estar entre 27 y 4301','ERROR')

set(handles.frecmin,'String',0);

Page 67: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

67

frecuenciamin=0;

aviso1=1

end

if ((fmax~=0)&&(frecuenciamin<fmax))

fmin=frecuenciamin;

end

if ((fmax==0))

fmin=frecuenciamin;

end

if((fmax~=0)&&(frecuenciamin>fmax)&&(aviso1==0))

errordlg('La frecuencia mínima debe ser menor que la

máxima','ERROR')

set(handles.frecmin,'String',0);

frecuenciamin=0;

aviso=1

else

fmin=frecuenciamin;

end

if((frecuenciamin==fmax)&&(aviso1==0)&&(aviso==0))

errordlg('La frecuencia mínima y la máxima no pueden ser

iguales','ERROR')

set(handles.frecmin,'String',0);

frecuenciamin=0;

aviso4=1

else

fmin=frecuenciamin;

end

if (fmin<fmax)

if ((fmin>fmax/2)&&(aviso==0)&&(aviso1==0)&&(aviso4==0))

Page 68: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

68

warndlg('La frecuencia mínima y la máxima están separadas

menos de una octava, lo que puede ocasionar errores en la

conversión','AVISO');

end

end

4.2.2.2 Frecuencia Máxima

El usuario debe ingresar la frecuencia máxima de la tesitura del instrumento

ejecutado en el archivo de audio, en el campo de texto asignado para esto.

frecmaxima=str2double(get(handles.frecmax,'String'));

Este valor es obtenido del campo de texto “frecmax” mediante la función “get”, y

almacenado en la variable “frecmaxima”.

Se verifica que el valor sea numérico, que sea mayor a la frecuencia mínima y se

sugiere que este separado de esta mínimo una octava.

El código es equivalente al de la frecuencia mínima.

4.2.2.3 Tempo

El usuario debe ingresar el valor del tempo de la pieza musical del archivo de

audio en el campo de texto “tempoingresado“. El valor se obtiene mediante la

función “get”, y es almacenado en la variable “tempoingresado” como se expresa

en la siguiente línea de código:

tempoingresado=str2double(get(handles.tempoingresado,'String'

));

Se verifica que el valor sea numérico, y que este entre 40 y 250, si el valor cumple

con los requisitos se almacena en la variable final “tempofin”.

Page 69: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

69

if isnan(tempoingresado)

errordlg('El valor debe ser numérico','ERROR')

end

if ((tempoingresado>39)&&(tempoingresado<251))

tempo=tempoingresado;

else

errordlg('El valor debe estar entre 40 y 250','ERROR')

set(handles.tempoingresado,'String',0);

tempo=0;

% return;

end

global tempofin

tempofin=tempo;

4.2.2.4 Compás

El compás, factor que controla el ritmo, es introducido en los campos “numerador“

y “denominador“ por el fraccionario que expresa el mismo . Los valores se

obtienen mediante la función “get”, y son almacenados en las variables “num” y

“den”. Como se expresa en las siguientes líneas de código:

num=str2double(get(handles.numerador,'String'));

den=str2double(get(handles.denominador,'String'));

Se verifica que los argumentos de entrada sean numéricos y que los valores estén

entre 2 y 126 para el numerador, ya que es el rango permitido en los editores de

partitura; y para el denominador que sea alguno de los siguientes valores 2, 4, 8,

16, 32 ó 64 (valores correspondientes a todos los compases existentes en la

escritura musical usados por softwares editores de partituras como Sibelius y

Page 70: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

70

Finale). Si los valores son válidos se almacenan en las variables finales

“numeradorcompas”, “denominadorcompas”.

Para el numerador:

if isnan(num)

errordlg('El valor debe ser numérico','ERROR')

end

if ((num>1)&&(num<126))

numcompas=num;

else

errordlg('El valor debe estar entre 2 y 126','ERROR')

set(handles.numerador,'String',0);

numcompas=0;

end

global numeradorcompas

numeradorcompas=numcompas;

Para el denominador:

if isnan(den)

errordlg('El valor debe ser numérico','ERROR')

end

if((den==2)||(den==4))||(den==8)||(den==16)||(den==32)

||(den==64))

dencompas=den;

else

errordlg('El valor debe ser par y estar entre 2 y

64','ERROR')

set(handles.denominador,'String',0);

Page 71: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

71

dencompas=0;

end

global denominadorcompas

denominadorcompas=dencompas;

4.2.2.5 Cuantización

El usuario debe elegir cuantizar o no el audio grabado para su conversión a MIDI.

Si desea hacerlo, debe seleccionar la opción “Cuantizar”, dando click sobre el

Radio Button. De lo contrario no debe presionar nada.

if (get(hObject,'Value') == get(hObject,'Max'))

cuantizacion=1;

else

cuantizacion=0;

end

global cuantizar

cuantizar=cuantizacion;

Al seleccionar la opción “cuantizar”, el usuario debe elegir en el menú desplegable

“Cuantización en” el valor de la figura según la cual desea cuantizar. De no

hacerlo se cuantizará por defecto en 1/16.

El valor seleccionado es almacenado en la variable “mindur”, y es usado

posteriormente en el proceso de conversión.

global mindur

valorminimafigura=get(handles.menuminimafigura,'value');

switch valorminimafigura

case 1

mindur=16;

Page 72: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

72

case 2

mindur=1;

case 3

mindur=2;

case 4

mindur=3;

case 5

mindur=4;

case 6

mindur=6;

case 7

mindur=8;

case 8

mindur=12;

case 9

mindur=16;

case 10

mindur=24;

case 11

mindur=32;

case 12

mindur=48;

case 13

mindur=64;

case 14

mindur=96; end

Page 73: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

73

4.2.3. Fase de Conversión

Figura 12. Fase de conversión

Al iniciar el proceso de conversión se llaman todas las variables globales

empleadas en otras secciones del programa y en la presente sección; y se verifica

que los parámetros de conversión requeridos hayan sido ingresados

correctamente., y el archivo de audio haya sido cargado. De ser así, iniciará la

conversión, de lo contrario se avisara que existe un error y se solicitará sean

cumplidos los requisitos:

if

((tempofin~=0)&&(fmin~=0)&&(fmax~=0)&&(vm~=1)&&(numeradorcomp

as~=0)&&(denominadorcompas~=0)&& (audiocargado~=0))

Proceso de conversión

Page 74: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

74

else

errordlg('Por favor ingrese los valores y verifique que su

archivo de audio este cargado','ERROR')

return;

end

A continuación se explican cada una de las partes que conforman el proceso de

conversión de Wav a MIDI:

4.2.3.1 Algoritmo para la detección de la frecuencia

Tal como se establece en los objetivos del presente proyecto, se ha desarrollado

un algoritmo que permite la detección de las frecuencias:

Al iniciar el proceso de conversión, es realizada una corrección de desplazamiento

DC, para eliminar componentes DC que puedan producir errores en el proceso de

conversión al estar alterados los niveles reales de amplitud de la señal. Este

proceso consiste en restar la media de la amplitud de la señal a cada muestra, si

la media es cero no hay componente DC en la señal, por lo tanto la señal se

mantiene intacta; de lo contrario la señal es alterada eliminándose el componente

DC existente. Esto significa que no se presentará ningún problema si es aplicado a

señales que no tengan componentes DC.

Este proceso es ejecutado en el programa mediante la función “mean” que calcula

la media del vector “y” (donde está almacenado el audio) como muestra la

siguiente línea de código:

y=y-mean(y);

Page 75: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

75

El algoritmo de conversión es realizado usando una técnica llamada

“frameblocking”, que consiste en analizar el audio en pequeños

segmentos(frames) del mismo, extrayendo la información requerida teniendo en

cuenta las variaciones en el comportamiento de la señal. Para llevar a cabo la

conversión son requeridas las frecuencias máxima y mínima del rango en

frecuencia que maneja el instrumento interpretado, luego las frecuencias son

convertidas a pitch mediante la fórmula:

pitch =round(69+12*log2(frequency/440))

Luego es sumada y restada una unidad a los valores de pitch resultantes y

convertidos de nuevo en frecuencia mediante:

frequency= 440*2.^((pitch-69)/12)

Esto con el fin de agregar un semitono hacia arriba a la frecuencia máxima y uno

hacia abajo de la frecuencia mínima, para evitar que ante una pequeña

desafinación por debajo o por encima del rango de análisis, alguna ejecución

musical no sea procesada como una nota.

frequency=fmax;

maxpitch =round(69+12*log2(frequency/440))+1

fmax= 440*2.^((maxpitch-69)/12)

frequency=fmin;

minpitch =round(69+12*log2(frequency/440))-1

fmin= 440*2.^((minpitch-69)/12)

maxFreq=fmax;

minFreq=fmin;

Teniendo las frecuencias de trabajo, son creadas dos variables marcadores, “n1” y

“n2”, que determinan las partes de la función de autocorrelación que son usadas.

Page 76: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

76

La función de autocorrelación busca hallar el período de la señal en cada frame,

para así hallar la frecuencia.

n1=round(fs/maxFreq); % Segmento de acf(1:n1) que no es usado

n2=round(fs/minFreq); % Segmento de acf(n2:end)que no es

usado

Antes de aplicar la técnica de “frameblocking”, son establecidos los parámetros de

análisis del proceso de conversión que son descritos a continuación:

El frameDuration es el valor en milisegundos de los segmentos de señal

analizados.

El frameSize es el número de muestras tomadas para formar la ventana de

análisis, es decir el frame.

Overlap es el número de muestras que se solapan entre el final de un frame

y en el inicio de otro. En general mas solapamiento da más puntos de

análisis, y por consiguiente resultados más suaves a través del tiempo pero

con un mayor costo computacional.

Teniendo en cuenta que las señales en general son más o menos estables en

períodos cortos de tiempo (20 - 30 ms), que la figura de nota o la duración de la

ejecución musical más rápida está en el orden de los 20 milisegundos y que la

función de autocorrelación necesita un “frameSize” que contenga tantos puntos de

ACF como muestras tiene 2 veces el período de la frecuencia buscada, se ha

escogido un “frameDuration” de 20ms para conversiones de audios de

instrumentos con una frecuencia mínima mayor o igual a 100 Hz, valor que

permite obtener suficientes puntos ACF para la correcta identificación de todas las

frecuencias en este rango Para instrumentos con frecuencias menores el

“frameSize” es descrito mediante la siguientes expresiones:

(Muestras) (6)

Page 77: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

77

ó

(Segundos) (7)

Las ecuaciones anteriores permiten hallar el valor de dos veces el período de la

frecuencia buscada, determinando el tamaño adecuado de cada frame para

frecuencias por debajo de 100 Hz. El “frameSize” resultante de la expresión se

puede hacer más grande que 30 ms para frecuencias por debajo de 66.66 Hz,

pero como la nota más baja ejecutada por un clarinete, instrumento para el que se

crea el algoritmo primordialmente, corresponde a 73.416 Hz (D2-Re2), el

“frameSize” calculado se ajusta perfectamente a los requerimientos del proyecto.

Para frecuencias mayores e iguales que 100 Hz el “frameSize” escogido es de 20

ms. En este caso el “FrameSize” no se halla igual que para frecuencias menores

que 100 Hz, ya que si se hace de la misma manera para estas frecuencias, el

tamaño del frame se hace menor a 20ms, saliendo del intervalo de tiempo en el

que las señales son estables, ocasionándose errores en la posterior identificación

de las notas por la existencia de pequeños cambios de frecuencia entre un

segmento de audio y otro adyacente.

Por otra parte se establece el “overlap” en cero para reducir el tiempo de

procesamiento, y así agilizar la ejecución total del algoritmo. Esto es expresado en

las siguientes líneas de código:

if minFreq<100

frameDuration=(((fs/minFreq)*2)/fs)*1000; % Duración en ms de

cada frame

else

frameDuration=20;

end

frameSize=round(frameDuration*fs/1000);%Duración en muestras

de cada frame

Page 78: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

78

overlap=0;

Con el propósito de aplicar frameblocking, se organizan los valores del vector

columna “y” (Audio) de acuerdo al “frameSize” y al overlap, mediante la función

“buffer”, en la matriz “frameMat”. Así “frameMat” se compone de tantas filas como

el “frameSize” indique y tantas columnas como la extensión del audio necesite

para almacenar sus valores (longitud de y/frameSize).

frameMat=buffer(y, frameSize, overlap);

Usando la función “size”, se almacenan en “frameNum” el número de columnas de

“frameMat”(número de frames).

frameNum=size(frameMat, 2);

Se realiza un cálculo del nivel de intensidad en cada frame, para el posterior

cálculo del “velocity” y para establecer un umbral que permita determinar que

partes del audio corresponden a las notas y que partes a silencio. Para esto, se

crea un for que va desde 1 hasta “frameNum” (número de columnas en frameMat),

la variable “frame” se va haciendo igual a cada columna de “frameMat”, luego se

suman los valores absolutos de cada frame para calcular el valor de intensidad en

cada uno de ellos. Cada valor es almacenado en un vector columna “volumen” que

tiene tantas filas como frames tiene el audio y que tiene en cada posición y en

orden el valor de intensidad.

for i=1:frameNum

frame=frameMat(:,i);

volume(i)=sum(abs(frame));

end

Se establece un umbral de intensidad:

volumeTh=max(volume)/8;

Page 79: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

79

Se procede ahora a usar la función de autocorrelación para crear un vector de

pitch que indique en cada posición la nota musical de cada frame. Para esto se

crea un for que va desde 1 hasta “frameNum” (número de frames), la variable

“frame” se va haciendo igual a cada columna de “frameMat” (donde está

reorganizado el audio):

for i=1:frameNum

% fprintf('%d/%d\n', i, frameNum);

frame=frameMat(:, i);

for a=1:frameSize

acf(a)=dot(frame(1:frameSize-a+1), frame(a:frameSize));

end

progressbar(0.0223+i*(pg));

acf(1:n1)=-inf;

acf(n2:end)=-inf;

[maxValue, maxIndex]=max(acf);

freq=fs/(maxIndex-1);

freqgrafic(i)=freq;

pitch(i)=round(freq2pitch(freq));

end

Dentro del ciclo es creado otro for que va desde 1 hasta “frameSize” (número de

filas de frameMat) donde es calculada la ACF. Esto se logra moviendo la versión

retrasada de la señal con respecto a la señal original n veces y calculando el

producto interno de las partes superpuestas, obteniendo así n valores de ACF,

como se expresa en las siguientes líneas de código:

for a=1:frameSize

acf(a)=dot(frame(1:frameSize-a+1), frame(a:frameSize));

end

Page 80: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

80

La expresión frame(1:frameSize-a+1) corresponde a la versión retrasada de la

señal que se mueve n veces, esta se va desplazando de izquierda a derecha; este

movimiento es logrado disminuyendo el límite superior del ventaneo, restándole

“a” a la variable “frameSize”. Al tiempo frame(a:frameSize), que corresponde a la

señal original, se mantiene inmóvil respecto a la otra, reduciendo el límite inferior

del ventaneo de análisis.

La operación antes descrita, es realizada un frame por ciclo, obteniéndose tantos

valores de ACF como muestras tiene cada frame. Para hallar la frecuencia de

cada frame, es necesario hallar el período en los valores de ACF, hallando el pico

más alto. El pico más alto de los valores ACF se encuentra evidentemente en el

principio, pues es donde la multiplicación da su valor más alto, porque en la

primera superposición de ventanas el grado de similitud es máximo; pero este

valor no corresponde al punto de ACF donde se encuentra el periodo de la

frecuencia buscada. Por esta razón se establecen en cero los valores alrededor

del primer máximo, usando el marcador “n1”:

acf(1:n1)=-inf;

El marcador “n2” es el límite superior del segmento de puntos de ACF que

contienen el pico máximo, por eso se hacen cero todas las muestras que se

encuentren después de este punto.

acf(n2:end)=-inf;

Ahora usando la función “max” se puede localizar el segundo máximo, que

corresponde al pico máximo que hay entre los marcadores ya mencionados:

[maxValue, maxIndex]=max(acf);

En la variable “maxValue” se almacena el valor máximo de ACF, y en “maxIndex”

la posición del vector ACF donde se encuentra este máximo. Para saber el periodo

Page 81: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

81

solo se debe saber el tiempo al que corresponde el punto de muestra de ACF

(hay tantos puntos de muestra de ACF como muestras tiene cada frame). Si la

frecuencia se muestreo es de fs= 44100 muestras/segundo, significa que cada

segundo se toman 44100 muestras de audio; si el pico es encontrado en una

posición x de ACF, solo basta calcular el período mediante:

(8)

Donde T es el período, x es la posición máxima de ACF, y fs la frecuencia de

muestreo. Para hallar el período de divide la posición de ACF entre la frecuencia

de muestreo.

Al ser la frecuencia el inverso del período, para hallar la misma se reemplaza la

fórmula del período como se muestra a continuación:

Donde F es la frecuencia hallada.

Debido a que la posición x del pico en ACF corresponde a un índice basado en 1,

la fórmula para el cálculo exacto de la frecuencia es:

F= fs / x-1;

frequency=fs/(maxIndex-1);

Page 82: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

82

Luego de calcular la frecuencia en Hz, se calcula la nota MIDI correspondiente a

dicha frecuencia mediante:

Pitch(i)=round(69+12*log2(frequency/440));

Luego para poder discriminar de forma eficiente la ejecución de las notas de los

segmentos del audio que contienen silencios, todas aquellos pitch cuya intensidad

calculada este por debajo de “umbral=nivelmaximo/8”, son llevadas a cero,

asegurándose de que la segmentación de las notas se lleve a cabo de forma

correcta como se muestra a continuación:

if(volume(i)<volumeTh)

freqgrafic(i)=0;

pitch(i)=0;

end

El ciclo se realiza frame por frame hasta culminar el vector “y”, de manera que

cada frame tenga su correspondiente pitch.

En la siguiente sección del código, es analizado el pitch y la amplitud de cada

frame, almacenada en los vectores “pitch” y “volume” respectivamente, para

poder crear un vector de notas que contenga la información de los instantes en

que comienzan y terminan las notas(duraciones) y de los silencios, en la extensión

de todo el audio. Para lograr esto es necesario un algoritmo de segmentación, que

es descrito a continuación:

Se establece una duración mínima teniendo en cuenta la mínima duración de nota

posible a ejecutar y el “frameSize” como se muestra:

minNoteDuration=0.0201;

Page 83: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

83

Son creadas tres variables, “notes” para las notas MIDI segmentadas,

“contiguales” para la cuenta de notas consecutivas iguales y “noteDur” para el

cálculo de la duración de las mismas:

notes=[]; % pre localización

contiguales=1; % valores iniciales para conteo de notas

noteDur=0; % valores iniciales para conteo de notas

Se inicia un for que va desde 2 hasta la longitud del vector de pitch, se calcula la

duración de la nota usando:

“duración de la nota= num de notas iguales * (duración de cada frame en seg)”,

Ó como se expresa, noteDur=contiguales*(frameDuration/1000).

Luego se verifica si la nota es diferente a la anterior y si la duración es mayor a la

duración mínima, si cumple la condición se almacena la nota anterior con su

duración en

notes=[notes,pitch(i-1),noteDur]

Y las variables “contiguales” y “noteDur” vuelven a sus valores iniciales. Si la

condición no se cumple, “contiguales” continua sumando notas iguales y el ciclo se

repite. Se necesitará que varias notas consecutivas sean iguales y así sumen la

suficiente duración en “noteDuration” para que cuando haya una nota nueva se

almacene la anterior en note con su respectiva duración y así sucesivamente

hasta la penúltima nota. Al final se escribe la última nota con su duración. Este

proceso se desarrolla en las siguientes líneas de código:

for i=2:length(pitch)

noteDur=contiguales*(frameDuration/1000); % cálculo de

duración de la nota

Page 84: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

84

if (pitch(i)~=pitch(i-1))&& noteDur>minNoteDuration % si la

nota es diferente a su anterior y mayor a la duración mínima

notes=[notes,pitch(i-1),noteDur]; % Creación de una nueva

nota

noteDur=0; se reinician las variables para iniciar cuenta de

nuevo

contiguales=1;

else

contiguales= contiguales+1; % se sigue sumando notas iguales

end

end

notes=[notes, pitch(i), noteDur]; % se crea la última nota

Ya teniendo el vector notes, que contiene en orden las notas con sus respectivas

duraciones, se empieza a crear la matriz “nmat”, que corresponde a la matriz

donde se representan las notas MIDI para la posterior escritura de archivo MIDI,

mediante la función “writemidi” que ofrece la librería MIDI Toolbox.

La “nmat” en su forma general es una matriz de 7 x “número de notas”, que

almacena la información MIDI de la siguiente forma:

ONSET DURATION MIDI MIDI VELOCITY ONSET DURATION

(BEATS) (BEATS) channel PITCH (SEC) (SEC)

La primera columna indica el comienzo de las notas en beats, la segunda columna

la duración de las notas que comienzan en los valores en beats de la columna 1.

La tercera columna denota el canal (1-16), y la cuarta el pitch MIDI, donde el Do

central (C4) es 60. La quinta columna es el velocity que describe que tan fuerte es

tocada la nota (0-127). Las últimas dos columnas corresponden a las primeras dos

(onset en beats, duration en beats) solo que expresado en segundos.

Page 85: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

85

Para crear las columnas 4, 6 y 7 de la “nmat”, se almacenan las posiciones

impares de notes en “MidiPitch”, las pares en “Durseg” (vector de duraciones de

cada nota en segundos) Y “Onseg”(vector de comienzos de nota en segundos) es

usada la función cumsum que permite sumar al valor de cada posición la suma de

los valores de las posiciones anteriores, almacenándose en cada posición el

momento en el que comienza cada nota.

MidiPitch=notes(1:2:end); % Se toman los valores impares=

notas MIDI

DurSeg=notes(2:2:end); % Se toman los valores pares=

duraciones

OnSeg=[0, cumsum(DurSeg)]; % Se suma en cada posición las

duraciones anteriores mas la posición

Teniendo ya los vectores correspondientes a las columnas 4, 6 y 7 de la “nmat”,

se prosigue a crear los vectores de las columnas 1 y 2, que corresponden a los

mismos valores que las columnas 6 y 7, pero expresados en beats, para

finalmente crear la matriz “nmat”. Para obtener los valores de los vectores

“OnBeats” y “DurBeats”, son usados los valores de “DurSeg” y de “OnSeg”, se

crea un for de 1 hasta la longitud del vector pitch final, dividiendo cada posición de

los vectores entre la duración en segundos de una negra de acuerdo al tempo de

la pieza musical. Para la columna 5, que corresponde al velocity, se toma un valor

provisional de 110. Se verifica posición por posición el vector de las notas, si el

pitch es diferente de cero, la nota se vincula a la “nmat” con sus respectivos

valores en las demás columnas. Para vincular los vectores a las columnas de la

“nmat” es usada la herramienta de concatenación vertical, por medio de

“nmat=[nmat;]”, lográndose así crear la matriz de notas MIDI del audio analizado.

for i=1:length(MidiPitch)

OnBeats = OnSeg(i)/(60/tempofin); % Comienzos en Beats

Page 86: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

86

DurBeats = DurSeg(i)/(60/tempofin); % Duraciones en Beats

channel = 1; % canal MIDI

vel = 110; % velocity provisional

if MidiPitch(i)~= 0

nmat=[nmat;OnBeats DurBeats channel round(MidiPitch(i)) vel

OnSeg(i) DurSeg(i)];% Concatenacion horizontal

end

end

4.2.3.2 Algoritmo para el cálculo del velocity

Tal como se ha establecido en los objetivos del presente proyecto, se ha

desarrollado un algoritmo para el cálculo del velocity, que se detalla a

continuación:

Con el fin de lograr una conversión más fiel al audio, es desarrollado un algoritmo

para el cálculo del velocity basado en el cálculo de la intensidad de cada frame

explicado anteriormente.

Se crea un for de 1 hasta el número de notas o filas de “nmat”, se crean las

variables principio (i) y final (i), que determinan que posiciones del vector

“volumen” corresponden a cada nota, para luego hallar el máximo entre sus

posiciones y darle un valor de 0 a 127; logrando así asignarle un valor de velocity

que corresponda mas a la expresión del instrumentista nota a nota.

% Cálculo de Velocity

for i=1:size(nmat, 1)

principio(i)=round((nmat(i,6)*fs)/frameSize);

final(i)=round(((nmat(i,6)+(nmat(i,7)))*fs)/frameSize);

maximoglobal=max(volume);

Page 87: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

87

if principio(i)==final(i)& principio(i)~=1

principio(i)= principio(i)-1;

end

volmaxnote(i)=max(volume(principio(i)+1:final(i)));

velcalc(i)=round((volmaxnote(i)*128)/maximoglobal);

nmat(i,5)=velcalc(i);

end

4.2.3.3 Algoritmo para la cuantización

Para poder llevar a cabo la visualización del archivo MIDI en un software editor de

partituras, previo a la escritura del mismo, se decide implementar un algoritmo que

permita cuantizar las duraciones de las notas plasmadas en la “nmat”. Para esto

se establece una duración mínima (“mindur”) de cuantización, de acuerdo a las

figuras de las notas como se explica en el apartado de parámetros de conversión.

El algoritmo busca acercar el valor de las duraciones al valor de nota más

cercano, múltiplo de la mínima duración. En la variable “minfiguronote” se

establece la duración mínima con base en la duración con que se lleva a cabo la

cuantización; se crea una nueva matriz para cuantización. Cada posición de la

columna 7 de la “nmat”(“duración de las notas”) es comparada con

“minfiguronote”, si es menor que esta, “minfiguronote” es dividida entre la

duración de la nota, el resultado es redondeado, y “minfigurenote” es dividido

ahora entre este valor, almacenándose en “quantizetime”, y luego haciendo esta

posición igual a “quantizetime”. Si la duración es menor, es dividida entre

“minfiguronote”, luego redondeado este valor, y multiplicado por “figurenote”,

almacenándose en “quantizetime” y luego haciéndose la posición igual a este

valor.

nmatnueva=nmat;

Page 88: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

88

minfiguronote=(4*((60/tempofin)/mindur));

for i=1:size(nmat, 1)

if nmatnueva (i,7)<=minfiguronote

quantizatime= minfiguronote/round(minfiguronote/ nmatnueva

(i,7));

nmatnueva (i,7)= quantizatime;

else

quantizatime= minfiguronote*(round(nmatnueva (i,7)/

minfiguronote) );

nmatnueva (i,7)= quantizatime;

end

end

Es creada una nueva matriz de cuantización con el fin de controlar paso a paso

cada proceso. Esta nueva matriz conserva la cuantización de la columna 7 y se

prosigue a cuantizar en ella la columna 6.La primera fila de la columna 6 se

cuantiza igual que todas las filas de la columna 7. Los valores cuantizados de las

demás filas de la columna 6 se obtienen a partir de sumar a la primera fila ya

cuantizada el valor de duración de la columna 7 de la misma fila, y así

sucesivamente hasta llegar a la última nota.

%cuantización vect on

nmatcuantizada=nmatnueva;

if nmatcuantizada (1,6)<=minfiguronote

quantizatimevecton=minfiguronote/round(minfiguronote/chalomat

(i,6));

nmatcuantizada (1,6)= quantizatimevecton;

else

quantizatimevecton=minfiguronote*(round(nmatcuantizada

(1,6)/minfiguronote));

Page 89: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

89

nmatnueva(1,6)= quantizatimevecton;

end

for i=2:size(nmat, 1)

if nmat(i,6)==nmat(i-1,6)+nmat(i-1,7)

nmatcuantizada (i,6)= nmatcuantizada (i-1,6)+

nmatcuantizada (i-1,7);

else

quantizatimevecton1= minfiguronote*(round(nmatcuantizada

(i,6)/minfiguronote) );

nmatcuantizada i,6)= quantizatimevecton1;

end

end

Las columnas 1 y 2 se obtienen a partir de la columna 6 y 7, dividiendo sus valores

entre la duración en segundos de una negra en el tempo de la pieza musical.

%cuantización columna 1 nmat

for i=1:size(nmatcuantizada, 1)

nmatcuantizada (i,1)= nmatcuantizada (i,6)/(60/tempofin);

end

%cuantización columna 2 nmat

for i=1:size(nmatcuantizada, 1)

nmatcuantizada i,2)= nmatcuantizada (i,7)/(60/tempofin);

end

nmatcuantizada (i,2)= nmatcuantizada (i,7)/(60/tempofin);

end

Finalmente se escribe el archivo MIDI mediante cuantizado o sin cuantizar según

la elección del usuario, mediante la función “writemidi” de MIDI Tool box:

Page 90: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

90

writemidi(nmat, 'nombredelarchivo.mid', 120, tempofin,4,4)

writemidi(nmatcuantizada,'nombredelarchivo.mid',120,tempofin,

4,4)

4.2.3.4 Algoritmo para el cálculo del tempo: “calculador de tempo”

Atendiendo a lo establecido en los objetivos del presente proyecto, se ha

desarrollado un algoritmo para el cálculo del tempo, como se describe a

continuación:

Existe la posibilidad de calcular el tempo de una canción mediante la herramienta

de “Calculador de tempo”, que se puede llamar desde la sección de configuración

de parámetros de conversión, pulsando el botón “calculador de tempo”, o

seleccionándola en el menú herramientas.

Este subprograma se inicia desde el GUI principal, de la siguiente manera

Calculador_Tempo()

Al presionar el botón “tap“ en el calculador de tiempo la variable “c “,mediante la

función clock, se convierte en un vector de seis posiciones correspondientes a:

c = [año mes dia hora minute segundos]

c = clock;

La variable “t” se hace igual a la posición 6 del vector, correspondiente a la

columna de segundos :

t=c(1,6);

Se crea una variable contador que se encarga almacenar en ella las veces que el

botón “tap“ es pulsado:

Page 91: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

91

contador=contador + 1

Cada vez que se presiona el botón “tap“ , el vector “matrizsegs“ toma el valor de

t(segundos) en cada una de sus posiciones según vaya indicando el contador,

creándose de esta manera un vector que registra en orden cronológico, el tiempo

en segundos en que sucede cada pulsación :

matrizsegs(contador)=t;

El algoritmo empieza a calcular el tempo cuando el contador marca más de una

pulsación. Se calcula la diferencia de tiempo entre cada pulsación y su anterior(a

partir de la segunda)y se almacena en el vector “dift”. Si la diferencia entre una

pulsación es mayor que 1.5 segundos o menor que 0.24, tiempos que

corresponden al máximo y mínimo de duración de una negra a 40 BPM y a 250

BPM, las variables se hacen cero y se comienza el proceso de nuevo. Esto evita

errores en el cálculo del tempo ya sea por una pulsación insuficientemente regular,

demasiado rápida o lenta, o porque alguna pulsación se realiza al finalizar un

minuto y la siguiente al comenzar el siguiente, produciéndose así una diferencia

negativa.

Con el fin de controlar el tamaño del vector “matrizsegs“, y evitar así un aumento

paulatino en el tiempo de ejecución del algoritmo, cada1 5 pulsaciones las variable

contador ,el vector “matrizseg” y el vector “dift” se hacen cero y el proceso

comienza de nuevo.

if contador>1

for i=2:contador

difT(i-1)=matrizsegs(i)-matrizsegs(i-1)

if difT(i-1)>1.5||difT(i-1)<0.24 ||contador>15

contador=0

matrizsegs=[];

difT=[];

return;

Page 92: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

92

end

end

tempocalculado=round(60/mean(difT))

end

Finalmente si el contador es mayor que dos y el proceso logra pasar los

condicionales sin retornar al principio el tempo calculado se imprime en el campo

“tempocalculado”.

if contador>2

set(handles.tempo_calculado,'String',tempocalculado);

end

Page 93: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

93

4.2.4. Fase de Finalización

Esta fase comprende el proceso de escribir el archivo MIDI, Guardarlo, y

Reproducirlo. Antes de realizar la escritura del archivo MIDI, debe seleccionarse el

nombre y dirección con la que se desea guardar.

Figura 13. Fase de finalización

4.2.4.1 Guardar archivo MIDI

Antes de finalizar la conversión, aparece una ventana en la cual el usuario debe

elegir el nombre y ubicación con la cual desea guardar el archivo MIDI. Esta

ventana se crea a partir de la función “uiputfile” , que permite exportar archivos a

cualquier ubicación del disco duro o de medios de almacenamiento externos. El

nombre del archivo es almacenado en el vector “archivo”, y la dirección, en el

vector “ruta”

Como se muestra:

Page 94: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

94

[archivo,ruta]=uiputfile('*.mid','archivo .mid');

Posteriormente se determina la extensión del archivo, y se almacena en la variable

“extension”:

extension=archivo((length(archivo)-3):end);

Se determina que si el usuario escribe el nombre del archivo con otra extensión,

esta sea reemplazada por “.mid”

if (extension~='.mid')

archivo=[archivo '.mid'];

end

Finalmente se hace la variable “nombrearchivosalida” igual a 1, para que en el

proceso de escritura se pueda iniciar, al existir ya un nombre y ruta de ubicación

para el archivo MIDI.

nombrearchivosalida=1;

También es posible exportar el archivo MIDI, con otro nombre y dirección después

de culminada la conversión, mediante la opción “Guardar Archivo MIDI”, ubicada

en el menú archivo. El código es equivalente al que se ha presentado.

Page 95: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

95

4.2.4.2 Algoritmo para la creación del fichero MIDI a partir de la librería “MIDI

Tool box”

Siguiendo los objetivos establecidos en el presente proyecto, se ha desarrollado

un algoritmo para la creación del fichero MIDI, a partir de la librería “MIDI Tool

box”. Determinado proceso se detalla en el actual apartado.

Configuración de la librería “MIDI Tool box”

Para poder realizar el proceso de escritura, graficación y reproducción del archivo

MIDI, es necesario instalar en Matlab la librería “MIDI Tool box” de la siguiente

manera:

Seleccionar la opción “Set Path” del menú “File”, en la ventana que se abre

seleccionar la opción “Add Folder”, ubicar la librería y seleccionar “save”.

Escritura del Archivo MIDI.

Existe una matriz con valores cuantizados (nmatcuantizada), y una con los

valores originales del archivo de audio (nmat). El programa escribirá el archivo

MIDI con la matriz correspondiente, a lo decidido por el usuario en la configuración

de los parámetros de conversión.

Inicialmente se verifica la existencia de un nombre y dirección para guardar el

archivo.

Se escribirá el archivo MIDI, mediante la función “writemidi”, de la librería “MIDI

Tool box”, según la siguiente estructura.

writemidi(matriz,nombre,tpq,tempo,numerador

compas,denominador compas);

En el campo “matriz”, se especifica el nombre de la matriz cuyos valores formaran

el archivo MIDI.

Page 96: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

96

En el campo “nombre”, se especifica el nombre y/o dirección en la cual es

guardado el archivo MIDI.

El campo “tpq”, corresponde a las pulsaciones por cuarto de nota, el presente

software determina 120 como valor por defecto.

El campo “tempo”, corresponde al valor de tempo, con el cual desea escribirse el

archivo MIDI.

En el campo “numerador compas”, se especifica el valor del numerador del

compás con el cual desea escribir el archivo MIDI, para su posterior uso en un

software editor de partitura.

En el campo “denominador compas”, se especifica el valor del denominador en el

compás con el cual se desea escribir el archivo MIDI.

Por otra parte, se grafica el archivo MIDI, mediante la función “pianoroll”, que

posee la siguiente estructura:

pianoroll(matriz,'name','sec')

Matriz cuantizada

Si el usuario ha decidido cuantizar, la matriz con la cual se escribe el archivo MIDI,

es “nmatcuantizada”. Los demás campos de escritura

(nombre,120,tempo,numerador compás, denominador compás), se reemplazan

por las variables que contienen los valores establecidos por el usuario

previamente, en la configuración de datos para la conversión, tal como se muestra

a continuación.

if ((cuantizar==1)&& (nombrearchivosalida==1))

writemidi(nmatcuantizada, [ruta archivo], 120,

tempofin,numeradorcompas,denominadorcompas);

pm=1; %guardo la variable para saber cuál de las 2 matrices

reproduzco en el play MIDI

Page 97: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

97

pmidi=pm;

figure(3)

pianoroll(nmatcuantizada,'name','sec')

end

También se establece una variable “pmidi”, que adquiere un valor de 1 si se ha

cuantizado y cero si se han conservado los valores del archivo de audio original;

para la posterior reproducción del archivo MIDI.

Matriz no- cuantizada

Si el usuario ha decidido cuantizar, la matriz con la cual se escribe el archivo MIDI,

es “nmat”.

if ((cuantizar==0)&& (nombrearchivosalida==1))

writemidi(nmat, [ruta archivo], 120,

tempofin,numeradorcompas,denominadorcompas);

nmat

pm=0;

pmidi=pm;

figure(3)

pianoroll(nmat,'name','sec')

end

Al finalizar la escritura se hace la variable “procesoculminado” igual a 1, para su

uso en la sección “Reproducirmidi”

procesoculminado=1;

Page 98: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

98

4.2.4.3 Reproducción del Archivo MIDI

Al iniciar esta función se hacen globales todas las variables empleadas en la

misma.

global pmidi nmat nmatcuantizada procesoculminado

Se verifica que el proceso de conversión haya concluido, mediante la variable

“procesoculminado”, que adquiere el valor de 1, si ya se ha realizado la

conversión. De no ser así, aparece una ventana que informa que existe un error y

solicita sea realizada la conversión.

if (procesoculminado==0)

errordlg('Debe realizar primero la conversión','ERROR')

end

Si se cumplen los requisitos para la conversión, el programa procede a evaluar el

valor de la variable “pmidi”, para establecer si se emplea para la reproducción la

matriz con valores cuantizados o la matriz con valores originales.

Si “pmidi” equivale a 1, se emplea la matriz cuantizada; si equivale a cero, se

emplea la matriz no cuantizada.

Para la reproducción se emplea la función “playsound”, de la librería “MIDI Tool

box”, según la siguiente estructura;

playsound(matriz);

El código empleado se presenta a continuación:

if ((pmidi==1)&&(procesoculminado==1))

playsound(nmatcuantizada);end

if ((pmidi==0)&&(procesoculminado==1))

playsound(nmat);

end

Page 99: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

99

4.3. DESARROLLO DE LA INTERFAZ GRÁFICA

Para la realización de la interfaz gráfica del programa, se ha empleado el editor

GUI de Matlab. Se desarrolló una interfaz gráfica principal, y cuatro interfaces

secundarias que interactúan con la primera. La función de 3 de las interfaces

secundarias, es primordialmente la adquisición de datos, cuyos valores se

establecen en variables globales, lo cual permite que sean empleadas en todas las

secciones del programa.

4.3.1. INTERFAZ GRÁFICA PRINCIPAL

Nombre : “Wav2MIDI_Converter”,

Esta Interfaz posee una barra de herramientas, creada a partir del componente

“Menú Editor”. Dicha barra de herramientas consta de 4 Menús desplegables, que

poseen cada uno diferentes opciones para realizar distintas funciones. A

continuación se detallan cada uno de los menús y sus opciones.

Figura 14. Interfaz gráfica principal

Page 100: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

100

4.3.1.1 Barra de herramientas

Menú Archivo

Consta de dos funciones explicadas en la sección donde se detalla el algoritmo.

Figura 15. Menú Archivo

Abrir archivo de audio: Permite seleccionar un archivo que se encuentre

en cualquier ubicación del disco duro, o en dispositivos de almacenamiento

externos, para importarlo al programa.

Figura 16. Abrir Archivo de Audio

Page 101: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

101

Guardar archivo MIDI: Permite guardar el archivo MIDI, generado por el

programa después de finalizada la conversión, con el nombre y ubicación

deseados.

Figura 17. Guardar Archivo MIDI

Menú Herramientas

Al igual que el menú anterior, está constituido por dos funciones, explicadas

detalladamente, en la sección de descripción del algoritmo.

Figura 18. Menú Herramientas

Grabar Archivo de audio: Al seleccionar esta opción se abre la interfaz

gráfica secundaria “Rec”, dentro de la cual se lleva a cabo el proceso de

grabación de un archivo de audio.

Page 102: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

102

Calcular Tempo: Con esta opción se abre la interfaz gráfica secundaria

“Calculador_Tempo”, en la cual se calcula el tempo de una melodía,

haciendo uso de una serie de pulsaciones ejecutadas por el usuario.

Menú Configuración.

Figura 19. Menú Configuración

Parámetros de conversión: Esta opción abre la interfaz gráfica

secundaria “Configuracion_Parametros_Conversion”, en la cual el usuario

ingresa el valor de los parámetros requeridos para realizar la conversión.

Esta función se explica detalladamente en la sección de descripción del

algoritmo.

Menú Ayuda

En este menú, se encuentran las opciones que le brindan al usuario información

acerca del uso del software.

Figura 20. Menú Ayuda

Page 103: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

103

Manual: Se abrirá el manual del presente software en formato pdf. Esto se

hace mediante la función “winopen”, como se muestra en la siguiente línea

de código:

winopen('manual.pdf');

Tabla del rango de frecuencias de los instrumentos musicales: Se

abrirá un archivo pdf, con una gráfica en la que se describe el rango en

frecuencia de diferentes instrumentos musicales.

winopen('Rango_de_frecuencias_de_instrumentos.pdf');

Acerca de Wav2MIDI Converter: Al seleccionar esta opción aparece la

interfaz gráfica secundaria “About_us”, que contiene información de los

autores del presente software.

4.3.1.2. Botones

La interfaz gráfica principal consta de 3 botones, del tipo “Push Button” del editor

GUI de Matlab, empleados para realizar diferentes funciones, mencionadas a

continuación y descritas detalladamente en la sección de descripción del

algoritmo.

Figura 21. Botones

Page 104: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

104

Botón reproducir audio.

Al oprimir este botón, se reproducirá el archivo cargado en el software, si no

se ha cargado ningún archivo, el programa le solicitará que lo haga.

Botón Introducir parámetros de conversión.

Al oprimir este botón se abre la interfaz gráfica secundaria

“Configuracion_Parametros_Conversion”, en la cual el usuario ingresa el

valor de los parámetros requeridos para realizar la conversión.

Botón convertir.

Al oprimir este botón, el programa realizará la conversión de Wav a MIDI del

archivo de audio cargado, el programa verifica que hayan sido ingresados

todos los datos requeridos, de no ser así se generará una alerta. Al finalizar

la conversión, se abrirá una figura que contiene la grafica del archivo MIDI.

Durante el proceso de conversión, aparece una barra de progreso que

indica el porcentaje del proceso, y el tiempo restante para su finalización.

Figura 22. Barra de progreso proceso de conversión

Page 105: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

105

Botón reproducir MIDI.

Al oprimir este botón, se reproducirá el archivo MIDI generado por el

software, si no se ha realizado la conversión, el programa solicitará que se

haga.

4.3.1.3 Gráfica de forma de onda

La interfaz gráfica posee un componente axes del editor GUI de Matlab, en el que

se gráfica en el dominio del tiempo, la forma de onda importada o grabada.

Figura 23. Gráfica forma de onda

4.3.1.4 Gráfica archivo MIDI

Al finalizar el proceso de conversión, aparece una gráfica del archivo MIDI.

Figura 24. Gráfica Archivo MIDI

Page 106: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

106

4.3.2. INTERFACES GRÁFICAS SECUNDARIAS

La descripción detallada de los procesos ejecutados en cada interfaz secundaria,

se encuentra en la sección en la que se explica el algoritmo.

4.3.2.1 Grabar archivo de audio

Nombre: “Rec”

El programa abrirá una interfaz de usuario, en la que se podrá realizar la

grabación de una ejecución musical. Para iniciar el proceso de grabación, debe

ser ingresado el valor en segundos de la duración de la grabación a realizar, dicho

valor debe encontrarse entre 3 seg y 240 seg. Posteriormente se pulsa el botón

“REC”, y se ejecuta la pieza musical. Se pulsa el botón “ACEPTAR” para finalizar.

Figura 25. Interfaz gráfica secundaria “Rec”

Page 107: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

107

Elementos empleados

Esta interfaz cuenta con dos elementos “Static Text”, del editor GUI de Matlab, uno

de ellos empleado para indicarle al usuario que se encuentra en la aplicación

“Grabar un archivo de audio”, y el otro para indicar que se debe ingresar el valor

de “Duración de la grabación (Seg)”

Por otra parte cuenta con un elemento “Edit Text”, en el cual el usuario debe

ingresar el valor de la duración en segundos que considera tendrá la grabación.

Finalmente se cuenta con dos componentes “Push Button”, que corresponden a 2

botones. El primero de ellos es el botón “Rec”, que al ser pulsado da inicio a la

grabación; y el segundo “Aceptar”, que cierra la interfaz gráfica.

4.3.2.2 Calcular tempo

Nombre: “Calculador_Tempo”

Esta interfaz permite calcular el tempo de la melodía deseada; para esto, se debe

pulsar el botón “TAP” al ritmo de la ejecución musical, el valor calculado de tempo

aparece en el espacio de texto que se encuentra en la parte inferior de ventana.

El valor calculado no es asignado a los datos de conversión, si se desea asignarlo,

debe ser ingresado en la ventana de la función “Parámetros De Conversión”, del

menú Configuración.

Page 108: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

108

Figura 26. Interfaz gráfica secundaria “Calculador_Tempo”

Elementos empleados

Está constituida por 2 elementos “Static Text”, uno empleado para informarle al

usuario que debe pulsar el botón al ritmo de la melodía, y otro para señalar el

campo de texto en donde aparece el valor calculado para el tempo.

Cuenta también con 3 elementos “Push Button”, que corresponden a los

siguientes botones:

Botón TAP: Al ser pulsado consecutivamente, envía información al

software, que permite calcular el valor del tempo.

Botón Reproducir: Permite reproducir el archivo de audio a convertir, para

facilitar que el usuario detecte el beat.

Botón Cerrar: Cierra la aplicación para calcular el tempo.

4.3.2.3 Parámetros de conversión.

Nombre: “Configuracion_Parametros_Conversion”

Page 109: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

109

En esta interfaz se deben ingresar los valores requeridos para realizar la

conversión. A continuación se describe detalladamente la forma y el rango de

valor de cada dato a ingresar.

Figura 27. Interfaz Gráfica secundaria “Configuracion_Parametros_Conversion”

FRECUENCIA

Frecuencia Mínima

Corresponde al valor de la frecuencia mínima emitida por el instrumento grabado

en el archivo de audio a convertir. Dicha frecuencia debe oscilar entre 27 Hz y

4301Hz. La frecuencia mínima debe ser menor que la frecuencia máxima, e

inferior por lo menos 1 octava a la frecuencia máxima, es decir que debe ser

equivalente por lo menos a la mitad de la frecuencia máxima.

Page 110: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

110

Frecuencia Máxima.

Corresponde al valor de la frecuencia máxima emitida por el instrumento grabado

en el archivo de audio a convertir. Dicha frecuencia debe oscilar entre 54 Hz y

4301Hz. La frecuencia máxima debe ser mayor que la frecuencia mínima, y que

superior por lo menos 1 octava a la frecuencia mínima, es decir que debe ser

equivalente por lo menos al doble de la frecuencia mínima.

Tempo.

Corresponde al valor de tempo al que se encuentra ejecutada la melodía que se

desea convertir. Dicho valor debe oscilar entre 40bpm y 250bpm.

Compás.

Corresponde al valor del compás con el cual se desea escribir el archivo MIDI.

CUANTIZACIÓN.

Opción Cuantizar

Si se desea que el archivo MIDI sea cuantizado, se debe seleccionar la casilla

cuantizar.

Menú “cuantización en”.

Se debe seleccionar del menú “cuantización en”, el valor de la figura según la cual

se desea cuantizar. De no hacerlo se cuantizará por defecto en 1/16.

Elementos empleados

La interfaz cuenta con 5 elementos del tipo “Static Text”, empleados para indicar el

lugar en el cual deben ser ingresados los valores de frecuencia mínima, frecuencia

Page 111: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

111

máxima, tempo, compas y cuantización. Igualmente se hace uso de 5 elementos

del tipo “Edit Text”, en los cuales el usuario debe ingresar los valores ya

mencionados: frecuencia mínima, frecuencia máxima, tempo, numerador compas

y denominador compas.

Consta también de:

Un elemento “Radio Button”, que el usuario debe activar si desea que el

archivo sea cuantizado.

Un elemento “pop-up menu”, que permite al usuario seleccionar el valor

según el cual desea cuantizar.

Dos elementos “Push Button”, que corresponden al botón “calcular tempo”

que accede a esa sección del programa; y al botón “Aceptar”, que cierra la

interfaz.

4.3.2.4 Acerca de WAV2MIDI CONVERTER

Nombre: “About_us”

Es una interfaz que proporciona información sobre los autores del software.

Figura 28. Interfaz gráfica secundaria “About_us”

Page 112: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

112

Elementos empleados

Consta básicamente de elementos “Static_Text”, en los cuales se indica el nombre

del programa y los nombres de los autores.

Page 113: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

113

5. ANÁLISIS DE RESULTADOS

Son analizados seis audios de un clarinete, interpretando seis melodías:

Canción infantil “Los pollitos”

Escala en Bb

“Zelda´s Lullaby”

Fragmento Chirimía

Mario Bros

Cumpleaños

5.1. EVALUACIÓN ALGORITMO DE SEGMENTACIÓN

Se realiza el proceso de conversión de wav a MIDI de cada uno de los audios del

clarinete, mediante el conversor desarrollado en el proyecto, obteniéndose el

respectivo .mid de cada uno de los archivos .wav.

Son tabulados los valores de la matrices de eventos MIDI (nmat) de cada archivo

.mid resultante de la conversión. Es también realizado un análisis de cada audio,

a través del software Adobe Audition, usando la ventana de edición, las

herramientas de edición, transporte y análisis en frecuencia, para llevar a cabo la

identificación de los comienzos y finales de la cada una de las notas, sus

duraciones y su frecuencia, calculando luego su respectiva nota MIDI (MIDI

PITCH). Los valores obtenidos son tabulados en una nueva matriz de eventos

MIDI, para su comparación con la matriz producida por el software conversor de

wav a MIDI.

La eficiencia del algoritmo de segmentación se evalúa de acuerdo al número de

notas existentes en el audio y al número de notas identificadas correctamente,

teniendo en cuenta su nombre, inicio y duración. La matriz tabulada de acuerdo al

Page 114: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

114

análisis con Adobe Audition, contiene valores obtenidos mediante la aplicación

manual de un algoritmo de segmentación basado en energía y en frecuencia. De

acuerdo a la forma de onda se van identificando visualmente los cambios de nivel

que sugieran el inicio y final de las notas. Paralelamente se aplica un algoritmo

basado en frecuencia, pues se usa la herramienta análisis en frecuencia segmento

a segmento, para identificar cambios en frecuencia que determinen el comienzo y

el final de las notas. Combinando ambos métodos se obtienen los valores

correspondientes a una descripción musical detallada del audio de la pieza, en

otras palabras, una transcripción musical, en valores reales, reflejando de forma

fiel, la ejecución original del instrumentista. Adicionalmente es tabulada una matriz

con las notas ideales, pitch MIDI y duraciones ideales. De esta forma se crea una

referencia para la comparación y evaluación de los valores obtenidos en la matriz

de eventos MIDI mediante el software conversor, determinándose que tan fiel es la

conversión al audio original, comparando la matriz obtenida con el conversor con

la de Adobe, y asegurándose que los datos tabulados en estas matrices estén

correctos, teniendo en cuenta la matriz de valores ideales.

La eficiencia se calcula de la siguiente forma:

(9)

La identificación de la nota se considera correcta, si la nota MIDI, es decir su

nombre y la octava en la que se ubica corresponden a la ejecución de la nota

principal o nota central, definiéndose nota central a la nota mostrada en la matriz

de valores ideales. La notas no centrales, son notas cuya duración es menor que

la duración de la figura de nota mas pequeña al tempo de ejecución de la pieza, y

son producto de la expresión del instrumentista. Estas últimas, no son

consideradas errores, pues el conversor sigue segmento a segmento el

Page 115: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

115

comportamiento del audio, determinando la frecuencia en intervalos de tiempo de

40 ms, por lo tanto estas notas reflejan lo que realmente sucede en el audio y que

no deterioran la calidad de la conversión, sino que la hacen mas fiel al audio

original, haciendo mas natural su sonoridad. Como ya se ha mencionado antes,

los propósitos del proyecto son la visualización de la partitura del archivo .mid y la

vinculación del mismo a secuenciadores, es por eso que el algoritmo de

segmentación del conversor, esta configurado para detectar suficientes notas no

centrales como para que al importar el .mid en cualquier secuenciador, o al

reproducirlo en cualquier software reproductor, suene lo mas natural posible, y

para que al ser importado en un sotfware editor de partitura, la partitura se

visualice correctamente. Un exceso o una escasez extrema de notas no centrales

deteriora la calidad del .mid , tanto para la visualización de la partitura como para

su reproducción. Pueden haber notas no centrales de duración menor a este

intervalo, que sean descartadas por el conversor, y que si aparezcan en el análisis

por inspección en Adobe Audition, caso que no es considerado un error, pues la

ausencia de estas notas, en el resultado de la conversión es producto de la

configuración del algoritmo de segmentación, y de acuerdo a esto no afectan

negativamente la conversión.

Además de cumplir con lo anteriormente mencionado, el inicio y la duración de las

notas de la matriz generada por el conversor, deben presentar una desviación

inferior a 40 ms, con respecto a la obtenida mediante el análisis en Adobe

Audition, siendo este valor, la duración más pequeña que detecta el software:

(10)

Definiendo desviación, como el valor absoluto de la diferencia entre el valor de

obtenido en la matriz generada por el conversor y la elaborada mediante

inspección en adobe Audition.

Page 116: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

116

(11)

Para el cálculo de la desviación, en las matrices obtenidas por inspección se

suman los valores de duración de las notas no centrales a sus respectivas notas

centrales, dejando como inicio, el de la nota que suceda primero. También se

suman las duraciones de las notas consecutivas con el mismo pitch que no

presenten ningún silencio entre ellas, ya que se conoce que el algoritmo de

segmentación del conversor, está basado primordialmente en frecuencia, y por lo

tanto sólo identifica una nota si su pitch es diferente al anterior.

Como se explica anteriormente, el objetivo del análisis comparativo de estas

matrices (nmat –conversor y nmat-inspección manual en adobe), es evaluar la

correcta detección de las notas, inicios y duraciones de las mismas, para

determinar la eficiencia del algoritmo de segmentación y la fidelidad de la

conversión. El análisis se inicia comparando la matriz generada por el conversor

con la obtenida mediante Adobe Audition, en las tablas de las matrices, los

segmentos resaltados en amarillo corresponden a notas detectadas sólo en

alguno de los métodos. Los segmentos resaltados en rojo corresponden a errores;

y las casillas resaltadas en gris corresponden a los máximos valores de desviación

(Ver las tablas de las matrices en el Anexo 2). En este paso se calculan las

desviaciones, para evaluar la fidelidad con el audio original. Posteriormente se

compara la matriz generada por el conversor con la matriz ideal, confirmando la

correcta detección de las notas y sus duraciones, identificando las notas centrales.

Finalmente es calculada la eficiencia del algoritmo de segmentación, como se

explica anteriormente. Adicionalmente se verifica la correspondencia entre el

resultado de la conversión y el audio original. También se presentan las gráficas

que detallan la segmentación realizada por el algoritmo, la forma de onda del

audio, el vector de intensidad (volumen) calculado, frecuencia con su respectiva

pitch MIDI, y la representación del archivo MIDI resultante de la conversión para

cada melodía en un piano roll.

Page 117: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

117

En el análisis, las matrices son nomencladas como se describe a continuación:

M1: Matriz ideal

M2: Matriz Adobe Audition

M3: Matriz Conversor

Canción infantil “Los pollitos”

Figura 29. Segmentación basada en frecuencia y volumen, realizada por el algoritmo para la melodía 1

Para realizar la conversión del .wav, son ingresados como parámetros de

conversión, una frecuencia mínima de 130, una frecuencia máxima de 1570, un

tempo de 80 bpm y un compás de 4/4.

Al comparar M2 y M3, se puede observar que el algoritmo del conversor suma las

duraciones de las notas que son ejecutadas de forma consecutiva y tienen el

mismo pitch, razón por la cual el número de notas de la matriz generada por el

Page 118: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

118

conversor es menor al de la matriz obtenida por inspección en el análisis realizado

en adobe Audition.

Al comparar M2 y M3 se presenta una diferencia en el numero de notas de cada

una, debida a la presencia de notas consecutivas de igual pitch sin silencio entre

ellas, que como se explica anteriormente, son tomadas como una sola nota, cuya

duración es equivalente a la suma de sus duraciones individúales. Se evidencia

similitud entre los inicios de nota, y las duraciones de las mismas presentadas en

las dos matrices. Siendo la desviación máxima para la detección del inicio de nota,

de aproximadamente 0,03 segundos, y la promedio de 0,010 segundos. Para la

detección de la duración de las notas la desviación máxima es de 0,03 segundos y

la promedio de 0,012 segundos. Esto demuestra una correcta detección de inicios

y duraciones de las notas.

En las matrices obtenidas, se puede evidenciar que el software calcula

perfectamente el pitch, ya que acierta en todas las notas, teniendo en cuenta las

notas centrales de la matriz ideal (M1).

La figura 29 muestra el seguimiento que hace el algoritmo de segmentación, a lo

largo de todo el audio, identificando el pitch de cada nota, y determinando sus

inicios y duraciones. Es posible ver la coherencia de la forma de onda con la

segmentación realizada por el conversor.

Al escuchar y comparar el archivo .mid resultante de la conversión, con el archivo

de audio original, se confirma la fidelidad de la conversión.

Por lo anterior se concluye que la eficiencia de la segmentación en la conversión

de esta melodía es del 100%.

Page 119: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

119

Figura 30. Representación en piano roll del archivo MIDI generado por el conversor para la melodía 1

Escala en Si bemol Mayor (Bb)

Figura 31. Segmentación basada en frecuencia y volumen, realizada por el algoritmo para la melodía 2

Page 120: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

120

Los parámetros de conversión son: frecuencia mínima de 130, frecuencia máxima

de 1570, tempo de 70 bpm y el compás de 4/4.

Se evidencia una correcta detección de los inicios de nota y las duraciones de las

mismas en M3, al coincidir con las obtenidas por inspección en M2. La diferencia

promedio en la detección de los inicios de nota es de 0,011 segundos y la máxima

de 0,03 segundos. En la detección de las duraciones la diferencia máxima es de

0,04 segundos, y la promedio de 0,011 segundos. La matriz ideal confirma los

resultados.

Al igual que la melodía anterior, todas las notas han sido detectadas

correctamente, pues las notas centrales en m3 coinciden con todas las notas en

M1. La figura 31 confirma la correcta segmentación de las notas.

Al escuchar y comparar el archivo .mid resultante de la conversión, con el archivo

de audio original, se confirma la fidelidad de la conversión.

Por lo anterior se concluye que la eficiencia de la segmentación en la conversión

de esta melodía es del 100%.

Figura 32 Representación en piano roll del archivo MIDI generado por el conversor para la melodía 2

Page 121: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

121

“Zelda´s Lullaby”

Figura 33. Segmentación basada en frecuencia y volumen, realizada por el algoritmo para la melodía 3

Los parámetros de conversión son: frecuencia mínima de 130, frecuencia máxima

de 1570, tempo de 100 bpm y el compás de 3/4.

La detección de los inicios de nota y sus duraciones es correcta, al presentarse

una diferencia máxima de 0,031 segundos y una diferencia promedio de 0,012

segundos en las duraciones. En los inicios de nota la diferencia máxima es de

0,018 segundos, y la promedio de 0,01 segundos. Los resultados muestran

valores menores a 0.04 segundos, por lo cual, se puede concluir que la

segmentación es fiel al audio original.

Las notas centrales de M3, son iguales a las de M1, demostrando que todas las

notas son detectadas correctamente.

Page 122: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

122

A diferencia de los audios anteriores, que son grabaciones de un clarinete real,

este audio es el audio generado a partir de un archivo .mid de la melodía, es por

eso que la forma de onda en la figura 33, muestra contornos diferentes a las

formas de onda de las melodías anteriores, sus trazos son muy definidos, y poco

naturales. En los demás parámetros los trazos de las graficas describen el mismo

comportamiento. En la figura también se confirma una correcta segmentación.

Al escuchar y comparar el archivo .mid resultante de la conversión, con el archivo

de audio original se refleja total fidelidad.

Los resultados de la segmentación, reflejan una eficiencia del 100%.

Figura 34. Representación en piano roll del archivo MIDI generado por el conversor para la melodía 3

Page 123: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

123

Fragmento Chirimía

Figura 35. Segmentación basada en frecuencia y volumen, realizada por el algoritmo para la melodía 4

Al comparar M2 y M3, es posible observar una diferencia entre el número de notas

detectadas, siendo mayor el número de notas detectadas en M2. Sin embargo,

todas las notas centrales son correctamente detectadas, dicha diferencia se debe

a la existencia de notas de expresión cuya duración es inferior a 40 ms, intervalo

mínimo de detección del algoritmo, por lo cual esto no representa un error. Hay un

caso especial en que la nota detectada en M2, es diferente de M3, ambas

atacando en el mismo instante, en el segundo 22.64, la diferencia es causada por

la diferencia de métodos de detección de pitch, Adobe Audition usa un algoritmo

de dominio espectral, mientras que el conversor un algoritmo de dominio temporal.

La detección de los inicios de nota y duraciones, es correcta, al presentarse una

desviación máxima en los inicios de nota de 0,028 segundos, y una promedio de

Page 124: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

124

0,009. Para las duraciones de las notas, la desviación máxima corresponde a

0,038 segundos y la promedio de 0,013 segundos.

Al comparar M3 con M1, se evidencia que todas las notas centrales iguales, por lo

cual, la detección de las notas es correcta.

El algoritmo de segmentación presenta una eficiencia del 100%.

Figura 36. Representación en piano roll del archivo MIDI generado por el conversor para la melodía 4

Page 125: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

125

Mario Bros

Figura 37. Segmentación basada en frecuencia y volumen, realizada por el algoritmo para la melodía 5

Los parámetros de conversión empleados son: frecuencia mínima de 130,

frecuencia máxima de 1570, tempo de 110 bpm y el compás de 4/4.

En la comparación de M2 y M3, se evidencia una diferencia entre el número de

notas detectadas. Esto no representa un error, ya que se debe a que el algoritmo

de segmentación toma como una sola nota aquellas notas sucesivas de igual pitch

que no tengan silencios entre ellas.

El algoritmo de segmentación descarta la nota del segundo 8.4, correspondiente a

un pitch de 67, por tener una duración menor a 0.04 segundos, que es la duración

mínima tomada como nota. La configuración del algoritmo hace que esta duración

sea sumada a la siguiente nota, que ataca aproximadamente 0.02 segundos

después, y por ser esta una nota central, se convierte en un error.

Page 126: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

126

La detección de pitch presenta una eficiencia de 95,65%, al acertar 22 de 23

notas. Adicionalmente, la desviación máxima en la detección de los inicios de nota

corresponde a 0,02 segundos, y la promedio a 0,005 segundos. Por su parte, la

detección de la duración de nota presenta una desviación promedio de 0,022

segundos y una máxima de 0,101 segundos. Esta última no cumple el requisito de

ser inferior a 0,04 segundos, pero no se considera un error, debido a que se

presenta en una nota que se encuentra antes de un silencio, y que se extiende

aumentando su duración, la cual no es percibida por el conversor, debido a que su

nivel de intensidad es inferior al nivel establecido como umbral para la detección

de una nota.

Figura 38. Representación en piano roll del archivo MIDI generado por el conversor para la melodía 5

Page 127: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

127

Cumpleaños

Figura 39. Segmentación basada en frecuencia y volumen, realizada por el algoritmo para la melodía 6

Los parámetros de conversión son: frecuencia mínima de 130, frecuencia máxima

de 1570, tempo de 90 bpm y el compás de 4/4.

Al comparar M2 y M3, es posible observar una diferencia entre el número de notas

detectadas, siendo mayor el número de notas detectadas en M2. La diferencia

existente se debe a la presencia de una nota de expresión que tiene una duración

inferior a 40 ms, intervalo de duración mínimo para la detección de una nota, se

entiende entonces que esto no corresponde a un error.

La detección de los inicios de nota presenta una desviación máxima de 0,04

segundos y una promedio de 0,258 segundos. En la detección de las duraciones

de nota, la desviación máxima es de 0,04 segundos, y la promedio de 0,014

segundos.

Page 128: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

128

La comparación de las matrices M3 yM1, refleja igualdad en todas las notas

centrales, por lo cual se concluye que en este caso el algoritmo de segmentación

presenta una eficiencia del 100%.

Figura 40. Representación en piano roll del archivo MIDI generado por el conversor para la melodía 6

Para la evaluación del algoritmo también son realizadas pruebas con archivos de

audio que contienen ejecuciones musicales interpretadas en otros instrumentos,

como bajo, saxofón, congas y palmas. Para todas ellas la conversión se realiza

eficientemente.

Page 129: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

129

5.2. EVALUACIÓN ALGORITMO PARA LA DETECCIÓN DEL VELOCITY

El termino velocity corresponde a la fuerza con que son ejecutadas las notas, en el

presente proyecto esta es calculada con base en un vector de volumen, que a su

vez es calculado de acuerdo al vector donde se almacenan los diferentes valores

que representan las amplitudes de cada muestra. A continuación se presentan las

figuras que muestran la forma de onda del audio de cada una de las melodías, el

volumen calculado, y el velocity para cada nota.

El cálculo del velocity es evaluado de acuerdo a la coherencia de la curva de

velocity con los niveles de volumen, y de amplitud que muestra cada figura para

cada melodía. En este caso no se calcula un porcentaje de eficiencia, por no tener

un patrón de referencia directo con el cual comparar, solo los valores de donde

proviene el cálculo del mismo velocity. Además de la evaluación de acuerdo a la

grafica, el velocity es examinado auditivamente, para verificar la correspondencia

entre el audio original y el archivo .mid resultante de la conversión. Las tablas de

las notas con su respectivo velocity generadas por el conversor, son presentadas

en el Anexo 4.

Page 130: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

130

Canción infantil “Los pollitos”

Figura 41. Detección de velocity, realizada por el algoritmo para la melodía 1

Escala en Bb

Figura 42. Detección de velocity, realizada por el algoritmo para la melodía 2

Page 131: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

131

“Zelda´s Lullaby”

Figura 43. Detección de velocity, realizada por el algoritmo para la melodía 3

Fragmento Chirimía

Figura 44. Detección de velocity, realizada por el algoritmo para la melodía 4

Page 132: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

132

Mario Bros

Figura 45. Detección de velocity, realizada por el algoritmo para la melodía 5

Cumpleaños

Figura 46. Detección de velocity, realizada por el algoritmo para la melodía 6

Page 133: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

133

La curva de velocity de cada melodía, sigue cada una de las variaciones de

volumen y de amplitud, mostradas respectivamente en la curva de volumen y en la

forma de onda del audio representada en cada figura. Se puede ver que cualquier

aumento y/o disminución, de alguna de las otras dos curvas se ve reflejado en la

curva de velocity, hecho que demuestra que el cálculo del velocity es acertado.

Adicionalmente todos los archivos de audio y los archivos MIDI corresponden

auditivamente en la intensidad con que son percibidas las notas.

5.3. EVALUACIÓN ALGORITMO PARA EL CÁLCULO DE TEMPO

El calculador de tempo es evaluado calculando el tempo de cada una de las

melodías analizadas anteriormente. Cada melodía es cargada en el software

conversor, para reproducirla y posteriormente calcular el tempo correspondiente.

Para determinar la eficiencia del calculador de tempo, el cálculo del tempo es

realizado 10 veces para cada melodía, los tempos son comparados luego con el

tempo conocido, al que fue grabada cada pieza musical, para determinar un

porcentaje de eficiencia.

Canción infantil “Los pollitos”

Tempo: 80bpm

El calculador acierta en todos los intentos, por lo cual su eficiencia en este

caso es del 100%.

Escala en Si bemol Mayor (Bb)

Tempo: 70bpm

El calculador acierta en todos los intentos, por lo cual su eficiencia en este

caso es del 100%.

Page 134: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

134

“Zelda´s Lullaby”

Tempo: 100bpm

El calculador acierta en todos los intentos, por lo cual su eficiencia en este

caso es del 100%.

Fragmento Chirimía

Tempo: 90bpm

El calculador acierta 8 de 10, calculando un tempo errado en el tercer

intento con un tempo de 91 y en el séptimo con 89, ambos con una

diferencia de solo una unidad.

Por lo tanto la eficiencia en este caso corresponde al 80%.

Mario Bros

Tempo: 110bpm

EL calculador acierta 7 de 10, presentando errores en el 1 3 y 5 intento, con

tempos de 109, 111, 113 respectivamente

Por lo tanto la eficiencia en este caso corresponde al 70%.

Cumpleaños

El calculador de tempo acierta 9 de 10, teniendo un error de una unidad en

el intento 8, con un tempo de 91.

Por lo tanto la eficiencia en este caso corresponde al 90%.

A continuación se muestra una tabla, con los datos de la eficiencia obtenida en el

cálculo del tempo para todas las melodías.

Page 135: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

135

Melodía Eficiencia (%)

Canción Infantil "Los Pollitos" 100

Escala en Si bemol Mayor 100

Zelda´s Lullaby 100

Fragmento Chirimía 80

Mario Bros 70

Cumpleaños 90

Tabla 6. Eficiencia del calculador de tempo

La eficiencia promedio del calculador de tempo es del 90%. Los valores de tempo

incorrectos, no distan más de 3 unidades del tempo correcto, por lo cual se cumple

el objetivo planteado en el presente proyecto.

El cálculo del tempo en la herramienta desarrollada en el presente proyecto,

depende tanto de la calidad de la ejecución del instrumentista en la grabación,

como de la métrica o la estabilidad rítmica de quien lo calcule.

5.4. EVALUACIÓN ALGORITMO DE CUANTIZACIÓN

Se realiza la conversión de tres melodías, como se explica en el apartado anterior,

ésta vez cuantizando la duración de las notas de acuerdo a la figura de nota de

menor duración en cada melodía:

Canción infantil “Los pollitos” Cuantizada a 1/16

Escala en Si bemol Mayor (Bb) Cuantizada a 1/4

Zelda´s Lullaby” Cuantizada a 1/8

Page 136: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

136

La matriz de eventos MIDI (nmat) generada por el algoritmo, es comparada con

una matriz tabulada a partir de las duraciones ideales de las notas ejecutadas en

la grabación original, a partir de la transcripción de la pieza musical. (Ver las tablas

en el Anexo 4). Los resultados obtenidos se resumen a continuación:

Teniendo en cuenta que las duraciones de las notas que son ejecutadas de forma

consecutiva y tienen el mismo pitch son sumadas, se evidencia una similitud del

100% en los valores de las duraciones e inicios de nota expresados en las dos

matrices analizadas, cuando no existen notas de igual pitch consecutivas, para las

tres melodías analizadas.

5.5. EVALUACIÓN DE LA ESCRITURA DEL FICHERO MIDI

Cada uno de los archivos MIDI generados por las conversiones de sus archivos de

audio de origen, es verificado en Matlab, mediante la función “readmidi” de la

librería Midi Toolbox, que permite obtener la matriz de eventos MIDI a partir de un

archivo .mid, y verificar que esta sea igual a la calculada antes de crear el archivo

.mid. Luego es visualizado en el piano roll mediante la función “pianoroll”, y

reproducido mediante la función “playmidi”, ambas de la librería Midi Toolbox.

Adicionalmente cada archivo .mid es probado reproduciéndolo en “Windows Media

Player”, con el objetivo verificar su correcto funcionamiento. También se importa

en el secuenciador “Reason” y se reproduce haciendo uso de sus herramientas y

con diferentes bancos de instrumentos.

Todos los archivos generados por el conversor funcionan de forma perfecta en

todos los programas usados, por lo que se concluye que la creación de los

archivos .mid es ejecutada correctamente.

Page 137: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

137

CONCLUSIONES

El software desarrollado cuenta con un algoritmo de detección de pitch de dominio

temporal, específicamente un algoritmo basado en autocorrelación, que presenta

una eficiencia del 100%, superando la eficiencia de los métodos AMDF, SIFT,

HPS y Cepstrum.

La escritura del fichero MIDI, es realizada por la librería Midi Toolbox, generando

un archivo .mid que funciona en todos los medios compatibles, la librería funciona

únicamente en las versiones de matlab que van desde la 5.3 hasta las 7.3.

El software conversor de wav a MIDI, posee una herramienta para calcular el

tempo, cuya eficiencia calculada es del 90%. Dicha eficiencia varía de acuerdo la

estabilidad rítmica del instrumentista y de quien realiza el cálculo.

El cálculo del velocity logrado hace que el archivo MIDI resultante de la conversión

sea más fiel al audio original, por lo cual al reproducirlos la intensidad de las notas

corresponde a la intensidad en el archivo de audio original.

El software conversor de wav a MIDI, contiene entre sus herramientas la opción de

cuantizar la duración de las notas obtenidas en el análisis del archivo de audio de

origen, para la correcta visualización de la partitura.

El software conversor de wav a MIDI, posee una interfaz gráfica con diferentes

herramientas que permiten al usuario realizar la conversión de forma rápida,

sencilla y eficiente.

El software desarrollado no funciona únicamente para el clarinete, sino también

para otros instrumentos de viento, pues la configuración de los parámetros de

Page 138: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

138

conversión, y el algoritmo de detección de pitch empleado en el desarrollo del

proyecto hacen posible la detección de las notas en la mayoría de los

instrumentos, incluso puede ser usado en instrumentos percusivos para plasmar

una idea rítmica.

El software desarrollado funciona de forma correcta únicamente para audios

mono, que contengan ejecuciones de una sola línea melódica, en general para

instrumentos melódicos, o para instrumentos armónicos que ejecuten una

melodía. No funciona para un audio que contenga varios instrumentos melódicos

cuya ejecución conforme acordes, es decir más de una nota a la vez.

Al realizar una conversión sobre un archivo de audio que contenga en toda su

extensión, o en partes de ella, mas de una nota a la vez, el archivo .mid resultante

de la conversión presenta errores, mostrando que el conversor identifica en la

mayoría de los casos en que se presenta armonía, la nota cuya frecuencia sea

más alta, o la más baja del acorde pero una octava por debajo de su frecuencia

real.

Page 139: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

139

BIBLIOGRAFÍA

ANDERTON, Craig. The MIDI Protocol. Berkeley, California.

CORDANTONOPULOS, Vanessa. Curso completo de Teoría de la Música. 2002.

DANHAUSER, A. Teoría de la música. Editorial Ricordi; 2005.

EEROLA, Tuomas; TOIVIAINEN, Petri. MIDI Toolbox: MATLAB Tools for Music

Research. Department of Music, University of Jyväskylä. Finlandia. 2004

[Internet]: www.jyu.fi/hum/laitokset/musiikki/en/research/coe/materials/miditoolbox

[consulta: Septiembre 2011]

FORSBERG, Johan. “Automatic conversion of sound to the MIDI-format” 1998.

GERHARD, David. “Pitch Extraction and Fundamental Frequency: History and

Current Techniques”. University of Regina. 2003

JYH-SHING, Roger Jang; YANG GAO, Ming. “ A Query-by-Singing System based

on Dynamic Programming”, Computer Science Department, National Tsing Hua

University, Hsinchu, Taiwan, 2000.

JYH-SHING, Roger Jang. Audio Signal Processing and Recognition.

KAWAHARA, Hidek; DE CHEVEIGNE, Alain. “YIN, a fundamental frequency

estimator for speech and music”, 2002.

KOSTEK, Bo˙zena. Perception-Based Data Processing in Acoustics. Editorial In-

chief. 2005

MERINO DE LA FUENTE, Jesús Mariano. Las vibraciones de la música. Editorial

Club Universitario. 2006.

Page 140: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

140

MIDDLETON, Gareth. “Pitch Detection Algorithms”. 2003

MOLINA REVERTE, Albert. Proyecto final de Carrera “Conversor wave a MIDI en

tiempo real para guitarras eléctricas”, Escuela Universitaria de Ingeniería Técnica

Industrial de Terrassa, Universidad Politécnica de Cataluña 2006.

RIPE RODRIGUEZ, Andrés. Tesis de grado “Dispositivo conversor de nota

musical a nota MIDI para bajo eléctrico”, Universidad de San Buenaventura

Bogotá, 2008.

RODRIGUEZ BLANCO, Alicia. Música. Editorial Editex. 2007.

SEISDEDOS, Marcela. Apreciación Musical I. Argentina. Disponible en:

http://apreciacionmusical1emba.blogspot.com/2010/10/el-clarinete.html

Page 141: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

141

Anexo 1

FrameSize AMDF ACF SIFT CEPSTRUM HPS

Duración (ms) D3 A3 D3 A3 D3 A3 D3 A4 D3 A4

5 441 223,858 219,403 237,097 250,568 689,063 50 50 0 0

6 197,758 223,858 208,019 227,32 250,568 689,063 317,266 294 0 166,415

7 146,026 223,858 156,94 230,89 149,492 223,858 143,182 142,718 142,718 142,718

8 146,026 223,858 150 226,154 149,492 223,858 124,929 331,579 124,929 124,929

9 146,026 111,929 148,485 227,32 149,492 223,858 111,083 110,804 111,083 111,083

10 146,026 111,929 149,492 225 149,492 223,858 100 100 100 100

11 145,545 111,929 146,512 226,154 144,118 223,858 218,317 90,9278 90,9278 90,9278

12 145,545 111,929 147,492 225 144,118 223,858 83,5227 294 83,3648 83,3648

13 145,545 111,929 146,512 225 144,118 223,858 218,317 223,858 76,9634 153,927

14 72,8926 74,6193 147 225 145,066 223,858 71,3592 71,5909 71,4749 142,95

15 72,8926 74,6193 146,512 225 145,066 223,858 66,6163 223,858 66,6163 133,233

16 72,8926 74,6193 146,512 226,154 145,066 223,858 62,4646 62,4646 62,4646 124,929

17 72,8926 74,6193 146,512 225 145,066 223,858 58,8 223,858 58,8 235,2

18 72,8926 74,6193 146,026 225 145,066 223,858 218,317 223,858 55,5416 222,166

19 72,8926 74,6193 146,512 225 145,066 223,858 52,5626 52,6253 52,6253 105,251

20 72,8926 74,6193 146,026 225 145,066 223,858 145,545 50 100 100

21 72,8926 74,6193 146,026 223,858 145,066 223,858 145,545 222,727 95,2484 47,6242

22 72,8926 74,6193 146,026 225 145,066 223,858 146,026 222,727 90,9278 227,32

23 72,8926 74,6193 146,026 225 145,066 223,858 145,545 222,727 86,9822 217,456

24 72,8926 74,6193 146,512 223,858 145,545 223,858 145,545 222,727 83,3648 83,3648

25 72,8926 74,6193 146,026 225 145,545 223,858 145,545 222,727 79,9637 119,946

26 72,8926 74,6193 146,026 223,858 145,545 223,858 145,545 222,727 153,793 230,689

27 72,8926 74,6193 146,026 225 145,545 223,858 146,026 223,858 148,111 222,166

28 72,8926 74,6193 146,026 223,858 145,545 223,858 145,545 222,727 142,834 214,251

29 72,8926 74,6193 146,026 225 145,545 223,858 145,545 223,858 137,92 68,9601

30 72,8926 74,6193 146,026 223,858 145,545 223,858 145,545 223,858 66,6667 233,333

31 72,8926 74,6193 146,512 223,858 145,545 223,858 146,026 223,858 64,5208 225,823

32 72,8926 74,6193 146,026 223,858 145,545 223,858 145,545 223,858 437,562 218,781

33 72,8926 74,6193 146,026 223,858 145,545 223,858 145,545 223,858 151,546 90,9278

34 72,8926 74,6193 146,026 225 145,545 223,858 145,545 223,858 147,098 235,357

35 72,8926 223,858 146,026 223,858 145,545 223,858 145,545 223,858 142,811 228,497

36 72,8926 223,858 146,026 225 145,545 223,858 145,545 223,858 138,854 222,166

37 72,8926 223,858 146,026 223,858 145,545 223,858 145,545 223,858 432,353 216,176

38 72,8926 223,858 146,026 223,858 145,545 223,858 145,545 223,858 52,6253 131,563

39 72,8926 223,858 146,026 223,858 145,545 223,858 145,545 223,858 435,872 230,756

40 72,8926 223,858 146,026 223,858 145,545 223,858 145,545 223,858 150 225

Page 142: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

142

FrameSize AMDF ACF SIFT CEPSTRUM HPS

Duración (ms) D3 A3 D3 A3 D3 A3 D3 A4 D3 A4

41 72,8926 223,858 146,026 223,858 145,545 223,858 145,545 223,858 146,35 219,524

42 72,8926 223,858 146,026 223,858 145,545 223,858 145,545 223,858 142,873 214,309

43 72,8926 223,858 146,026 223,858 145,545 223,858 145,545 223,858 139,557 116,297

44 72,8926 223,858 146,026 223,858 145,545 223,858 145,545 223,858 136,392 227,32

45 72,8926 223,858 146,026 223,858 145,545 223,858 145,545 223,858 288,816 222,166

46 72,8926 223,858 146,026 223,858 145,545 223,858 145,545 223,858 434,697 217,348

47 72,8926 223,858 146,026 223,858 145,545 223,858 145,545 223,858 148,915 212,735

48 72,8926 223,858 146,026 223,858 145,545 223,858 145,545 223,858 145,82 229,145

49 72,8926 223,858 146,026 223,858 145,545 223,858 145,545 223,858 142,851 224,479

50 72,8926 223,858 146,026 223,858 145,545 223,858 145,545 223,858 140 220

51 72,8926 223,858 146,026 223,858 145,545 223,858 145,545 223,858 137,261 215,696

52 72,8926 223,858 146,026 223,858 145,545 223,858 145,545 223,858 57,6973 115,395

53 72,8926 223,858 146,026 223,858 145,545 223,858 145,545 223,858 150,963 226,444

54 72,8926 223,858 146,026 223,858 145,545 223,858 145,545 223,858 148,173 222,26

55 72,8926 223,858 146,026 223,858 145,545 223,858 145,545 223,858 145,425 218,137

56 72,8926 223,858 146,026 223,858 145,545 223,858 145,545 223,858 142,834 214,251

57 72,8926 223,858 146,026 223,858 145,545 223,858 145,545 223,858 438,544 228,043

58 72,8926 223,858 146,026 223,858 145,545 223,858 145,545 223,858 293,081 224,12

59 72,8926 223,858 146,026 223,858 145,545 223,858 145,545 223,858 440,661 220,331

60 72,8926 223,858 146,026 223,858 145,545 223,858 145,545 223,858 150 216,667

61 72,8926 223,858 146,026 223,858 145,545 223,858 145,545 223,858 147,546 229,517

62 72,8926 223,858 146,026 223,858 145,545 223,858 145,545 223,858 145,172 225,823

63 72,8926 223,858 146,026 223,858 145,545 223,858 145,545 225 142,873 222,246

64 72,8926 223,858 146,026 223,858 145,545 223,858 145,545 223,858 437,562 218,781

65 72,8926 223,858 146,026 223,858 145,545 223,858 145,545 223,858 292,257 215,347

66 72,8926 223,858 146,026 223,858 145,545 223,858 145,545 225 439,334 227,241

67 72,8926 223,858 146,026 223,858 145,545 223,858 145,545 225 149,239 223,858

68 72,8926 223,858 146,026 223,858 145,545 223,858 145,545 225 147,049 220,574

69 72,8926 223,858 146,026 223,858 145,545 223,858 145,545 225 144,923 217,384

70 72,8926 223,858 146,026 223,858 145,545 223,858 145,545 223,858 142,857 228,571

71 72,8926 223,858 146,026 223,858 145,545 223,858 145,545 225 436,634 225,359

72 72,8926 223,858 146,026 223,858 145,545 223,858 145,545 223,858 291,685 222,236

73 72,8926 223,858 146,026 223,858 145,545 223,858 145,545 225 438,397 219,199

74 72,8926 223,858 146,026 223,858 145,545 223,858 145,545 223,858 148,667 229,758

75 72,8926 223,858 146,026 223,858 145,545 223,858 145,545 225 146,644 226,632

76 72,8926 223,858 146,026 223,858 145,545 223,858 145,545 225 144,72 223,658

77 72,8926 223,858 146,026 223,858 145,545 223,858 145,545 225 142,845 220,76

78 72,8926 223,858 146,026 223,858 145,545 223,858 145,545 225 435,872 217,936

Page 143: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

143

FrameSize AMDF ACF SIFT CEPSTRUM HPS

Duración

(ms) D3 A3 D3 A3 D3 A3 D3 A4 D3 A4

79 72,8926 223,858 146,026 223,858 145,545 223,858 145,545 225 291,131 227,842

80 72,8926 223,858 146,026 223,858 145,545 223,858 72,7723 225 437,5 225

81 72,8926 223,858 146,026 223,858 145,545 223,858 72,7723 225 148,152 222,228

82 72,8926 223,858 146,026 223,858 145,545 223,858 72,7723 225 146,35 219,524

83 72,8926 223,858 146,026 223,858 145,545 223,858 72,7723 223,858 144,59 228,934

84 72,8926 223,858 146,026 223,858 145,545 223,858 72,8926 223,858 142,873 226,215

85 72,8926 223,858 146,026 223,858 145,545 223,858 72,8926 223,858 435,236 223,5

86 72,8926 223,858 146,026 223,858 145,545 223,858 72,7723 223,858 290,667 220,907

87 72,8926 223,858 146,026 223,858 145,545 223,858 72,8926 223,858 436,747 448,241

88 72,8926 223,858 146,026 223,858 145,545 223,858 72,8926 223,858 147,72 227,261

89 72,8926 223,858 146,026 223,858 145,545 223,858 72,8926 223,858 146,064 224,713

90 72,8926 223,858 146,026 223,858 145,545 223,858 72,8926 223,858 144,444 222,222

91 72,8926 223,858 146,026 223,858 145,545 223,858 72,8926 223,858 142,861 219,786

92 72,8926 223,858 146,026 223,858 145,545 223,858 72,8926 223,858 434,804 228,272

93 72,8926 223,858 146,026 223,858 145,545 223,858 72,8926 223,858 290,344 225,823

94 72,8926 223,858 146,026 223,858 145,545 223,858 72,8926 223,858 436,212 223,426

95 72,8926 223,858 146,026 223,858 145,545 223,858 72,8926 223,858 147,351 221,026

96 72,8926 223,858 146,026 223,858 145,545 223,858 72,8926 223,858 145,82 447,874

97 72,8926 223,858 146,026 223,858 145,545 223,858 72,8926 222,727 144,32 226,788

98 72,8926 223,858 146,026 223,858 145,545 223,858 72,8926 223,858 142,851 224,479

99 72,8926 223,858 146,026 223,858 145,545 223,858 72,8926 222,727 292,923 222,217

100 72,8926 223,858 146,026 223,858 145,545 223,858 72,8926 222,727 290 220

Page 144: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

144

Anexo 2

Canción Infantil “Los pollitos”

Valores Ideales Análisis en Adobe Audition Matriz generada por el conversor Desviación

Pitch MIDI

Inicio (seg)

Duración (seg)

Pitch MIDI

Inicio (seg)

Duración (seg)

Pitch MIDI

Inicio (seg)

Duración (seg) Inicio (seg)

Duración (seg)

70 6,00 0,38 70 6 0,354 70 6 0,34 0 0,014

72 6,38 0,38 72 6,354 0,38 72 6,34 0,38 0,014 0

74 6,75 0,38 74 6,734 0,347 74 6,72 0,36 0,014 0,013

75 7,13 0,38 75 7,081 0,388 75 7,08 0,38 0,001 0,008

77 7,50 0,75 77 7,469 0,744 77 7,46 1,48 0,009 0,024

77 8,25 0,75 77 8,213 0,76

79 9,00 0,38 79 8,96 0,382 79 8,94 0,38 0,02 0,002

82 9,38 0,38 82 9,341 0,358 82 9,32 0,38 0,021 0,022

79 9,75 0,38 79 9,7 0,39 79 9,7 0,36 0 0,03

82 10,13 0,38 82 10,09 0,396 82 10,06 0,42 0,03 0,024

77 10,50 0,75 77 10,486 0,778 77 10,48 1,5 0,006 0,013

77 11,25 0,75 77 11,264 0,735

75 12,00 0,38 75 11,999 0,398 75 11,98 1,54 0,019 0,009

75 12,38 0,38 75 12,392 0,393

75 12,75 0,38 75 12,785 0,36

75 13,13 0,38 75 13,145 0,38

74 13,50 1,13 74 13,525 0,92 74 13,52 0,92 0,005 0

72 15,00 0,38 72 15,03 0,344 72 15,02 0,34 0,01 0,004

74 15,38 0,38 74 15,373 0,38 74 15,36 0,38 0,013 0

72 15,75 0,38 72 15,75 0,337 72 15,74 0,34 0,01 0,003

74 16,13 0,38 74 16,083 0,412 74 16,08 0,42 0,003 0,008

70 16,50 1,13 70 16,495 0,95 70 16,5 0,98 0,005 0,03

Page 145: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

145

Escala en Si bemol Mayor (Bb)

Valores Ideales Análisis en Adobe Audition Matriz generada por el conversor Desviación

Pitch MIDI

Inicio (seg)

Duración (seg)

Pitch MIDI

Inicio (seg)

Duración (seg)

Pitch MIDI

Inicio (seg)

Duración (seg) Inicio (seg)

Duración (seg)

70 0,00 1,71 70 0,02 1,54 70 0 1,54 0,02 0

72 1,71 1,71 72 1,74 1,623 72 1,74 1,62 0 0,003

74 3,43 1,71 74 3,44 1,62 74 3,46 1,58 0,02 0,04

75 5,14 1,71 75 5,146 1,62 75 5,16 1,62 0,014 0

77 6,86 1,71 77 6,87 1,45 77 6,88 1,44 0,01 0,01

79 8,57 1,71 79 8,58 1,516 79 8,58 1,52 0 0,004

81 10,29 1,71 81 10,33 1,6 81 10,3 1,58 0,03 0,02

82 12,00 1,71 82 12,06 1,517 82 12,06 1,5 0 0,017

“Zelda´s lullaby”

Valores Ideales Análisis en Adobe Audition

Matriz generada por el conversor Desviación

Pitch MIDI

Inicio (seg)

Duración (seg)

Pitch MIDI

Inicio (seg)

Duración (seg)

Pitch MIDI

Inicio (seg)

Duración (seg) Inicio (seg)

Duración (seg)

59 0 1,2 59 0,018 1,209 59 0 1,24 0,018 0,031

62 1,2 0,6 62 1,227 0,604 62 1,24 0,6 0,013 0,004

57 1,8 1,2 57 1,829 1,23 57 1,84 1,2 0,011 0,03

55 3 0,3 55 3,054 0,274 55 3,04 0,3 0,014 0,026

57 3,3 0,3 57 3,326 0,299 57 3,34 0,3 0,014 0,001

59 3,6 1,2 59 3,625 1,203 59 3,64 1,2 0,015 0,003

62 4,8 0,6 62 4,828 0,602 62 4,84 0,6 0,012 0,002

57 5,4 1,8 57 5,432 1,797 57 5,44 1,78 0,008 0,017

59 7,2 1,2 59 7,23 1,202 59 7,22 1,22 0,01 0,018

62 8,4 0,6 62 8,432 0,59 62 8,44 0,58 0,008 0,01

69 9 1,2 69 9,022 1,197 69 9,02 1,2 0,002 0,003

67 10,2 0,6 67 10,222 0,597 67 10,22 0,6 0,002 0,003

62 10,8 1,2 62 10,82 1,209 62 10,82 1,22 0 0,011

60 12 0,3 60 12,029 0,306 60 12,04 0,3 0,011 0,006

59 12,3 0,3 59 12,334 0,31 59 12,34 0,32 0,006 0,01

57 12,6 1,8 57 12,644 1,726 57 12,66 1,7 0,016 0,026

Page 146: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

146

Fragmento Chirimía

Valores Ideales Análisis en Adobe Audition

Matriz generada por el conversor Desviación

Pitch MIDI

Inicio (seg)

Duración (seg)

Pitch MIDI

Inicio (seg)

Duración (seg)

Pitch MIDI

Inicio (seg)

Duración (seg) Inicio (seg)

Duración (seg)

74 6,00 0,33 74 5,962 0,38 74 5,96 0,38 0,002 0

75 6,33 0,33 75 6,343 0,325 75 6,34 0,32 0,003 0,005

77 6,67 0,33 77 6,669 0,327 77 6,66 0,34 0,009 0,013

74 7,00 0,33 74 6,996 0,361 74 7 0,36 0,004 0,001

75 7,33 0,33 75 7,358 0,311 75 7,36 0,3 0,002 0,011

77 7,67 0,33 77 7,67 0,294 77 7,66 0,3 0,01 0,006

80 7,964 0,064 80 7,96 0,04 0,004 0,024

81 8,00 1,17 81 8,028 1,144 81 8 1,16 0,028 0,016

80 9,17 0,17 80 9,173 0,175 80 9,16 0,18 0,013 0,005

79 9,33 1,00 79 9,348 0,952 79 9,34 0,92 0,008 0,032

72 11,33 0,33 72 11,288 0,341 72 11,3 0,32 0,012 0,021

74 11,67 0,33 74 11,63 0,331 74 11,62 0,34 0,01 0,009

75 12,00 0,33 75 11,961 0,329 75 11,96 0,32 0,001 0,009

73 12,291 0,023 73 12,28 0,04 0,011 0,017

72 12,33 0,33 72 12,314 0,321 72 12,32 0,3 0,006 0,021

74 12,67 0,33 74 12,635 0,343 74 12,62 0,36 0,015 0,017

75 13,00 0,33 75 12,979 0,321 75 12,98 0,3 0,001 0,021

79 13,33 1,17 79 13,3 1,123 78 13,28 0,04 0,02 0,037

79 13,32 1,12

78 14,50 0,17 78 14,423 0,222 78 14,44 0,22 0,017 0,002

77 14,67 1,00 77 14,646 0,983 77 14,66 0,96 0,014 0,023

70 16,67 0,33 70 16,676 0,311 70 16,68 0,3 0,004 0,011

72 17,00 0,33 72 16,998 0,328 72 16,98 0,32 0,018 0,008

74 17,33 0,33 74 17,316 0,34 74 17,3 0,34 0,016 0

70 17,67 0,33 70 17,656 0,317 70 17,64 0,32 0,016 0,003

72 18,00 0,33 72 17,973 0,339 72 17,96 0,34 0,013 0,001

74 18,33 0,33 74 18,313 0,306 74 18,3 0,3 0,013 0,006

77 18,67 1,17 77 18,619 1,117 77 18,6 1,14 0,019 0,023

76 19,83 0,17 76 19,736 0,214 76 19,74 0,22 0,004 0,006

75 20,00 1,00 75 19,951 0,878 75 19,96 0,84 0,009 0,038

77 21,67 0,33 77 21,676 0,294 77 21,68 0,26 0,004 0,034

77 22,00 0,33 77 22,027 0,28 77 22,04 0,26 0,013 0,02

79 22,33 0,33 79 22,308 0,324 79 22,3 0,32 0,008 0,004

81 22,67 0,33 81 22,632 0,329 81 22,62 0,34 0,012 0,011

82 23,00 0,33 82 22,961 0,322 82 22,96 0,3 0,001 0,022

77 23,33 0,33 77 23,327 0,318 77 23,32 0,32 0,007 0,002

75 23,67 0,33 75 23,646 0,34 75 23,64 0,34 0,006 0

74 24,00 0,33 74 23,986 0,274 74 23,98 0,26 0,006 0,014

77 25,00 0,33 77 24,990 0,344 77 25 0,32 0,01 0,024

79 25,334 0,006 80 25,32 0,04 0,014 0,008

80 25,341 0,028

81 25,369 0,014

82 25,33 0,33 82 25,383 0,272 82 25,36 0,26 0,023 0,012

77 25,67 0,33 77 25,720 0,264 77 25,72 0,26 0 0,004

74 26,00 0,33 74 25,984 0,325 74 25,98 0,32 0,004 0,005

76 26,309 0,002 77 26,3 0,3 0,009 0,002

77 26,33 0,33 77 26,311 0,300

78 26,611 0,005 78 26,6 0,04 0,011 0,007

79 26,616 0,014

78 26,630 0,014

79 26,642 0,012 81 26,64 0,04 0,002 0,008

80 26,649 0,020

82 26,67 0,17 82 26,669 0,196 82 26,68 0,16 0,011 0,036

Page 147: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

147

Mario Bros

ZValores Ideales Análisis en Adobe Audition Matriz generada por el conversor Desviación

Pitch MIDI

Inicio (seg)

Duración (seg)

Pitch MIDI

Inicio (seg)

Duración (seg)

Pitch MIDI

Inicio (seg)

Duración (seg) Inicio (seg)

Duración (seg)

74 4,36 0,14 74 4,323 0,168 74 4,32 0,32 0,003 0,017

74 4,50 0,14 74 4,491 0,169

74 4,77 0,14 74 4,761 0,149 74 4,76 0,16 0,001 0,011

70 5,05 0,14 70 5,025 0,14 70 5,02 0,14 0,005 0

74 5,18 0,14 74 5,165 0,185 74 5,16 0,18 0,005 0,005

77 5,45 0,27 77 5,466 0,218 77 5,46 0,22 0,006 0,002

65 6,00 0,14 65 6,025 0,194 65 6,02 0,18 0,005 0,014

70 6,55 0,14 70 6,549 0,23 70 6,56 0,2 0,011 0,03

65 6,95 0,14 65 6,95 0,21 65 6,96 0,14 0,01 0,07

62 7,36 0,14 62 7,34 0,2 62 7,36 0,12 0,02 0,08

67 7,77 0,14 67 7,775 0,165 67 7,78 0,14 0,005 0,025

69 8,05 0,14 69 8,03 0,21 69 8,04 0,18 0,01 0,03

68 8,32 0,14 68 8,28 0,17 68 8,28 0,14 0 0,03

67 8,45 0,14 67 8,45 0,221 68 8,42 0,04 0,03 0,101

68 8,46 0,08

65 8,73 0,14 65 8,73 0,082 65 8,74 0,06 0,01 0,022

74 8,86 0,14 74 8,842 0,167 74 8,84 0,16 0,002 0,007

77 9,14 0,14 77 9,082 0,181 77 9,08 0,18 0,002 0,001

79 9,27 0,14 79 9,263 0,181 79 9,26 0,18 0,003 0,001

75 9,55 0,14 75 9,514 0,151 75 9,52 0,14 0,006 0,011

77 9,68 0,14 77 9,665 0,155 77 9,66 0,16 0,005 0,005

74 9,95 0,14 74 9,978 0,152 74 9,98 0,14 0,002 0,012

70 10,23 0,14 70 10,2 0,146 70 10,2 0,14 0 0,006

72 10,36 0,14 72 10,346 0,114 72 10,34 0,12 0,006 0,006

69 10,50 0,14 69 10,46 0,18 69 10,46 0,16 0 0,02

Page 148: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

148

Cumpleaños

Valores Ideales Análisis en Adobe Audition

Matriz generada por el conversor Desviación

Pitch MIDI

Inicio (seg)

Duración (seg)

Pitch MIDI

Inicio (seg)

Duración (seg)

Pitch MIDI

Inicio (seg)

Duración (seg) Inicio (seg)

Duración (seg)

77 2,00 0,33 77 1,955 0,304 77 1,96 0,3 0,005 0,004

77 2,33 0,33 77 2,3 0,29 77 2,3 0,28 0 0,01

79 2,67 1,33 79 2,655 1,353 79 2,66 1,34 0,005 0,013

77 4,00 0,67 77 4,008 0,58 77 4 0,58 0,008 0

82 4,67 0,67 82 4,59 0,707 82 4,58 0,72 0,01 0,013

81 5,33 1,00 81 5,298 0,981 81 5,3 0,98 0,002 0,001

77 7,33 0,33 77 7,31 0,343 77 7,32 0,32 0,01 0,023

78 7,67 0,33 78 7,653 0,296 78 7,64 0,3 0,013 0,004

79 8,00 1,33 79 7,95 1,367 79 7,94 1,38 0,01 0,013

77 9,33 0,50 77 9,317 0,58 77 9,32 0,56 0,003 0,02

84 10,00 0,67 84 9,975 0,596 84 9,98 0,58 0,005 0,016

82 10,67 1,00 82 10,65 0,95 82 10,66 0,92 0,01 0,03

65 12,67 0,33 65 12,68 0,28 65 12,68 0,24 0 0,04

65 13,00 0,33 65 12,96 0,04 65 12,92 0,04 0,04 0

65 13 0,32 65 13 0,24 0 0,04

65 13,24 0,04

77 13,33 1,33 77 13,345 1,35 77 13,34 1,34 0,005 0,01

74 14,67 0,67 74 14,696 0,638 74 14,68 0,64 0,016 0,002

70 15,33 0,67 70 15,335 0,663 70 15,32 0,68 0,015 0,017

69 16,00 1,17 69 15,998 1,25 69 16 1,24 0,002 0,01

67 17,33 0,17 67 17,31 0,047 67 17,32 0,04 0,01 0,007

68 17,358 0,08 68 17,36 0,04 0,002 0,04

75 18,00 0,33 75 17,985 0,323 75 17,98 0,32 0,005 0,003

76 18,326 0,018 76 18,3 0,04 0,026 0,022

75 18,33 0,33 75 18,328 0,303 75 18,34 0,3 0,012 0,003

74 18,67 1,33 74 18,631 1,382 74 18,64 1,38 0,009 0,002

70 20,00 0,67 70 20,013 0,66 70 20,02 0,64 0,007 0,02

72 20,67 0,67 72 20,684 0,631 72 20,66 0,66 0,024 0,029

70 21,33 1,33 70 21,316 1,344 70 21,32 1,32 0,004 0,024

Page 149: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

149

Anexo 3

Canción infantil “Los pollitos”

Pitch MIDI Velocity

70 76

72 68

74 128

75 98

77 110

79 107

82 99

79 114

82 109

77 116

75 98

74 118

72 74

74 122

72 57

74 118

70 49

51 17

Escala en Bb

Pitch MIDI Velocity

70 55

72 70

74 104

75 128

77 117

79 79

81 107

82 67

Page 150: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

150

“Zelda´s Lullaby”

Pitch MIDI Velocity

59 116

62 128

57 65

55 66

57 63

59 124

62 127

57 68

59 122

62 126

69 104

67 113

62 117

60 118

59 119

57 67

Fragmento Chirimía

Pitch MIDI Velocity

74 83

75 86

77 57

74 39

75 64

77 47

80 51

81 97

80 52

79 67

72 82

74 52

75 77

73 38

72 58

74 53

75 68

Page 151: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

151

Pitch MIDI Velocity

78 51

79 91

78 54

77 54

70 128

72 71

74 58

70 89

72 58

74 50

77 69

76 60

75 55

77 72

77 61

79 94

81 115

82 67

77 70

75 96

74 63

77 68

80 86

82 115

77 63

74 42

77 64

78 38

81 85

82 82

Page 152: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

152

Mario Bros

Pitch MIDI Velocity

74 59

74 53

70 98

74 58

77 81

65 47

70 109

65 35

62 49

67 33

69 128

68 29

68 18

68 23

65 41

74 56

77 82

79 100

75 71

77 64

74 48

70 85

72 52

69 114

Page 153: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

153

Cumpleaños

Pitch MIDI Velocity

77 75

77 54

79 74

77 46

82 36

81 54

77 59

78 56

79 68

77 48

84 128

82 38

65 54

65 31

65 53

65 30

77 78

74 58

70 80

69 97

67 24

68 22

75 99

76 40

75 85

74 54

70 68

72 43

70 54

Page 154: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

154

Anexo 4

Canción Infantil “Los pollitos”

Valores Ideales Matriz cuantizada

Pitch MIDI Inicio (seg) Duración

(seg) Pitch MIDI Inicio (seg) Duración (seg)

70 6 0,375 70 6 0,375

72 6,375 0,375 72 6,375 0,375

74 6,75 0,375 74 6,75 0,375

75 7,125 0,375 75 7,125 0,375

77 7,5 0,75 77 7,5 1,5

77 8,25 0,75

79 9 0,375 79 9 0,375

82 9,375 0,375 82 9,375 0,375

79 9,75 0,375 79 9,75 0,375

82 10,125 0,375 82 10,125 0,375

77 10,5 0,75 77 10,5 1,5

77 11,25 0,75

75 12 0,375 75 12 1,5

75 12,375 0,375

75 12,75 0,375

75 13,125 0,375

74 13,5 1,125 74 13,5 0,9375

72 15 0,375 72 15 0,375

74 15,375 0,375 74 15,375 0,375

72 15,75 0,375 72 15,75 0,375

74 16,125 0,375 74 16,125 0,375

70 16,5 1,125 70 16,5 0,9375

Page 155: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

155

“Zelda´s Lullaby”

Valores Ideales Matriz cuantizada

Pitch MIDI Inicio (seg) Duración

(seg) Pitch MIDI Inicio (seg) Duración (seg)

59 0 1,2 59 0 1,2

62 1,2 0,6 62 1,2 0,6

57 1,8 1,2 57 1,8 1,2

55 3 0,3 55 3 0,3

57 3,3 0,3 57 3,3 0,3

59 3,6 1,2 59 3,6 1,2

62 4,8 0,6 62 4,8 0,6

57 5,4 1,8 57 5,4 1,8

59 7,2 1,2 59 7,2 1,2

62 8,4 0,6 62 8,4 0,6

69 9 1,2 69 9 1,2

67 10,2 0,6 67 10,2 0,6

62 10,8 1,2 62 10,8 1,2

60 12 0,3 60 12 0,3

59 12,3 0,3 59 12,3 0,3

57 12,6 1,8 57 12,6 1,8

Escala en Bb

Valores Ideales Matriz cuantizada

Pitch MIDI Inicio (seg) Duración

(seg) Pitch MIDI Inicio (seg) Duración (seg)

70 0,00 1,71 70 0,00 1,71

72 1,71 1,71 72 1,71 1,71

74 3,43 1,71 74 3,43 1,71

75 5,14 1,71 75 5,14 1,71

77 6,86 1,71 77 6,86 1,29

79 8,57 1,71 79 8,57 1,71

81 10,29 1,71 81 10,29 1,71

82 12,00 1,71 82 12,00 1,71

Page 156: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

156

Anexo 5

clear all mindur=16; tempofin=100; fmin=130; fmax=1570; waveFile='zelda´s_lullaby_m.wav'; [y, fs, nbits]=wavread(waveFile); progressbar(0.0025); y=y-mean(y); progressbar(0.0050); frequency=fmax; maxpitch =round(69+12*log2(frequency/440))+1 fmax= 440*2.^((maxpitch-69)/12) progressbar(0.0075); frequency=fmin; minpitch =round(69+12*log2(frequency/440))-1 fmin= 440*2.^((minpitch-69)/12) progressbar(0.01); maxFreq=fmax; minFreq=fmin; progressbar(0.0125); if minFreq<100 frameDuration=(((fs/minFreq)*2)/fs)*1000; % Duracion en ms de cada frame else frameDuration=20; end frameSize=round(frameDuration*fs/1000); overlap=0; n1=round(fs/maxFreq); % Segmento de acf(1:n1) que no sera usado n2=round(fs/minFreq); % Segmento de acf(n2:end)que no sera usado frameMat=buffer(y, frameSize, overlap); frameNum=size(frameMat, 2); volume=zeros(frameNum, 1); progressbar(0.0155); for i=1:frameNum frame=frameMat(:,i); frame=frame-median(frame); % DC bias volume(i)=sum(abs(frame)); % metodo 1 end volumeTh=max(volume)/8; pitch=0*volume; acf=zeros(frameSize, 1); progressbar(0.0223); pg=0.9762/frameNum; for i=1:frameNum

Page 157: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

157

frame=frameMat(:, i); for a=1:frameSize acf(a)=dot(frame(1:frameSize-a+1), frame(a:frameSize)); end progressbar(0.0223+i*(pg)); acf(1:n1)=-inf; acf(n2:end)=-inf; [maxValue, maxIndex]=max(acf); freq=fs/(maxIndex-1); freqgrafic(i)=freq; pitch(i)=round(69+12*log2(freq/440)); if(volume(i)<volumeTh)||(pitch(i)<minpitch)||(pitch(i)>maxpitch) freqgrafic(i)=0; pitch(i)=0; end end minNoteDuration=0.0201; clear notes contiguales=1; % valores iniciales para conteo de notas notes=[]; % prelocalizacion noteDur=0; % valores iniciales para conteo de notas for i=2:length(pitch) noteDur=contiguales*(frameDuration/1000); % calculo de duracion de la nota if (pitch(i)~=pitch(i-1))&& noteDur>minNoteDuration % si la nota es diferente a su anterior y mayor a la duracion minima notes=[notes,pitch(i-1),noteDur]; % Creacion de una nueva nota noteDur=0; % se resetean las variables para iniciar cuenta de nuevo contiguales=1; else contiguales= contiguales+1; % se sigue sumando notas iguales end end notes=[notes, pitch(i), noteDur]; % se crea la ultima nota MidiPitch=notes(1:2:end); % Se toman los valores impares= notas midi DurSeg=notes(2:2:end); % Se toman los valores pares= duraciones OnSeg=[0, cumsum(DurSeg)]; % Se suma en cada posicion las duraciones anteriores mas la posicion nmat=[]; % prelocalizacion de nmat for speed for i=1:length(MidiPitch) OnBeats = OnSeg(i)/(60/tempofin); % Comienzos en Beats DurBeats = DurSeg(i)/(60/tempofin); % Duraciones en Beats channel = 1; % canal MIDI vel = 110; % velocity provisional if MidiPitch(i)~= 0 nmat=[nmat;OnBeats DurBeats channel round(MidiPitch(i)) vel OnSeg(i) DurSeg(i)];% Concatenacion horizontal

Page 158: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

158

end end progressbar(0.99925); % Calculo de Velocity for i=1:size(nmat, 1) principio(i)=round((nmat(i,6)*fs)/frameSize); final(i)=round(((nmat(i,6)+(nmat(i,7)))*fs)/frameSize); maximoglobal=max(volume); if principio(i)==final(i)& principio(i)~=1 principio(i)= principio(i)-1; end volmaxnote(i)=max(volume(principio(i)+1:final(i))); velcalc(i)=round((volmaxnote(i)*128)/maximoglobal); nmat(i,5)=velcalc(i); end % Cuantizacion metodo 1 nmatnueva=nmat; minfiguronote=(4*((60/tempofin)/mindur)); for i=1:size(nmat, 1) if nmatnueva (i,7)<=minfiguronote quantizatime= minfiguronote/round(minfiguronote/ nmatnueva (i,7)); nmatnueva (i,7)= quantizatime; else quantizatime= minfiguronote*(round(nmatnueva (i,7)/minfiguronote) ); nmatnueva (i,7)= quantizatime; end end %cuantizacion columnas 6 y 7 nmatcuantizada= nmatnueva; if nmatcuantizada (1,6)<=minfiguronote quantizatimeOnseg= minfiguronote/round(minfiguronote/chalomat(i,6)); nmatcuantizada (1,6)= quantizatime; else quantizatimeOnseg= minfiguronote*(round(nmatcuantizada (1,6)/minfiguronote) ); nmatnueva(1,6)= quantizatime; end for i=2:size(nmat, 1) if nmat(i,6)==nmat(i-1,6)+nmat(i-1,7) nmatcuantizada (i,6)= nmatcuantizada (i-1,6)+ nmatcuantizada (i-1,7); else quantizatimeOnseg1= minfiguronote*(round(nmatcuantizada (i,6)/minfiguronote) ); nmatcuantizada (i,6)= quantizatimeOnseg1; end

Page 159: RAE 1. TIPO DE DOCUMENTO 2. TITULO DESARROLLO DE UN ...bibliotecadigital.usb.edu.co/bitstream/10819/1972/... · La línea de investigación en que se desarrolla el presente proyecto

Universidad de San Buenaventura Bogotá

159

end %cuantizacion columna 1 nmat for i=1:size(nmatcuantizada, 1) nmatcuantizada (i,1)= nmatcuantizada (i,6)/(60/tempofin); end %cuantizacion columna 2 nmat for i=1:size(nmatcuantizada, 1) nmatcuantizada i,2)= nmatcuantizada (i,7)/(60/tempofin); end %guardar archivo midi fin conversion progressbar(1);