Logo Studenta

Evidencia 4 - Reporte de práctica (Analizador Léxico-Sintáctico musical) ERICK ESPINOSA CAJUN

¡Estudia con miles de materiales!

Vista previa del material en texto

Instituto Tecnológico Superior 
Progreso 
Dirección General 
Subdirección Académica 
 
 
 
Boulevard Tecnológico de Progreso S/N por 62, Progreso, Yucatán. C.P. 97320 
Tels. 969 934 3023, tecnm.mx | progreso.tecnm.mx 
 
 
 
INSTITUTO TECNOLÓGICO 
SUPERIOR PROGRESO 
 
INGENIERÍA EN SISTEMAS COMPUTACIONALES 
 
ASIGNATURA 
Lenguaje y Autómatas 2 
 
DOCENTE 
Holzen Atocha Martínez García 
 
TRABAJO 
Evidencia 4 - Reporte de práctica (Analizador 
Léxico/Sintáctico musical) 
 
PRESENTA 
Erick Espinosa Cajun 
 
 
Progreso Yucatán, 20 de 09 de 2023. 
 
 
 
Instituto Tecnológico Superior 
Progreso 
Dirección General 
Subdirección Académica 
 
 
 
Boulevard Tecnológico de Progreso S/N por 62, Progreso, Yucatán. C.P. 97320 
Tels. 969 934 3023, tecnm.mx | progreso.tecnm.mx 
 
 
 
Objetivo: Aplica herramientas computacionales para generar símbolos y 
tokens que deriven en salidas congruentes durante las etapas de análisis 
léxico y sintáctico del proceso de traducción computacional. 
 
 
 
 
 
 
 
 
 
 
Instituto Tecnológico Superior 
Progreso 
Dirección General 
Subdirección Académica 
 
 
 
Boulevard Tecnológico de Progreso S/N por 62, Progreso, Yucatán. C.P. 97320 
Tels. 969 934 3023, tecnm.mx | progreso.tecnm.mx 
 
Introducción: 
 
 Este reporte documenta mi experiencia en el desarrollo de un Analizador 
Léxico/Sintáctico Musical como parte de mi práctica profesional. Durante este proyecto, 
tuve la oportunidad de aplicar mis conocimientos en programación y teoría musical para 
crear una herramienta que puede analizar y comprender estructuras musicales en 
archivos de partituras digitales. 
 
La música es una forma de expresión artística rica y compleja que involucra elementos 
como notas, ritmo, acordes y estructura. El desarrollo de un analizador léxico/sintáctico 
musical es esencial para descomponer y entender estas estructuras de manera 
programática. Este proyecto tiene aplicaciones prácticas en la industria musical, como 
la generación automática de arreglos musicales, la identificación de patrones en 
composiciones o la creación de herramientas de ayuda para músicos y compositores. 
 
 
 
 
Instituto Tecnológico Superior 
Progreso 
Dirección General 
Subdirección Académica 
 
 
 
Boulevard Tecnológico de Progreso S/N por 62, Progreso, Yucatán. C.P. 97320 
Tels. 969 934 3023, tecnm.mx | progreso.tecnm.mx 
 
 
 
 
Material y equipo: el equipo que use es AMD Ryzen 5 4600H with Radeon 
Graphics 3.00 GHz,RAM: 8:00GB , Windows 11, Python versión: 3.11.5 
 
 
 
 
Instituto Tecnológico Superior 
Progreso 
Dirección General 
Subdirección Académica 
 
 
 
Boulevard Tecnológico de Progreso S/N por 62, Progreso, Yucatán. C.P. 97320 
Tels. 969 934 3023, tecnm.mx | progreso.tecnm.mx 
 
 
procedimiento 
para comenzar el desarrollo de esta practica tuvimos que investigar sobre las partiduras 
musicales y el tipo de librería que se debe usar en el lenguaje de programación 
PYTHON, en primera instancia inicie una búsqueda de las partiduras de una canción en 
la página: https//abcnotation.com/ en la cual debemos descargar el archivo en el 
formato XML porque la la extensión de Python music 21 lo que hace es convertir las 
partiduras musicales a html para que el lenguaje pueda leer el archivo. 
Se pone esta estructura en Python: 
 
Primero se importo la biblioteca musi21 lo cual es una biblioteca que es utilizada para 
trabajar con notación y análisis musicales. 
Lo segundo se usa el método: 
partitura music21.converter. parse("C:\MUISCAWE\SACAAHI.xml") para poder cargar la 
partidura que hayamos descargado de la pagina asignada por el profesor, lo 
consiguiente es cargar el archivo de la partidura que esta en el formato XML desde la 
ubicación donde lo descargamos. 
El tercer paso es mostrar el formato MIDI lo cual esto significa que se reproducirá como 
una secuencia de sonidos utilizando el sintetizador MIDI. 
El 4 paso se utiliza un bucle for para iterar a través de todos los elementos musicales 
que son notas en la partitura. partitura.flat se utiliza para "aplanar" la partitura, lo que 
significa que todas las notas se tratan como una secuencia plana, independientemente 
de su ubicación en la estructura jerárquica de la partitura. 
 
 
 
 
Instituto Tecnológico Superior 
Progreso 
Dirección General 
Subdirección Académica 
 
 
 
Boulevard Tecnológico de Progreso S/N por 62, Progreso, Yucatán. C.P. 97320 
Tels. 969 934 3023, tecnm.mx | progreso.tecnm.mx 
 
 
Y por último obtenemos la altura de cada nota en notación América. Para cada nota en 
la partitura, se obtiene su altura en notación americana (por ejemplo, "C4" para el do de 
la cuarta octava). La propiedad elemento.pitch contiene información sobre la altura de la 
nota. Y finalmente se ejecuta la nota. 
 
Con base en el ejercicio anterior el profesor nos dio indicaciones sobre como podemos 
crear nuestra propia partidura basándonos en la notación americana, continuación se 
mostrará como se realizó. 
 Como primer paso: se usa import music21: la biblioteca music21 para poder utilizar 
sus funciones y clases. 
 
Como segundo paso: melodia = music21.stream.Stream(): Crea un objeto Stream vacío 
llamado melodia. Un Stream en music21 es una estructura que puede contener notas, 
acordes y otros elementos musicales. 
 
Como tercer paso: tonalidad = music21.key.Key('B', 'minor'): Define la tonalidad de la 
melodía como Si menor (B menor) utilizando la clase Key de music21. Esto establece la 
tonalidad en la que se escribirán las notas. 
 
Como cuarto paso: melodia.insert(0, tonalidad): Inserta la tonalidad en el inicio de la 
melodía. 
 
Como quinto paso: duracion_total_segundos = 20 y bpm = 60 / 
duracion_total_segundos: Establece la duración total de la melodía en 20 segundos y 
calcula el valor de tempo en pulsaciones por minuto (bpm) necesario para que la 
melodía tenga esa duración. En este caso, el tempo se establece para que la melodía 
dure exactamente 20 segundos y melodia.insert(0, 
 
 
 
Instituto Tecnológico Superior 
Progreso 
Dirección General 
Subdirección Académica 
 
 
 
Boulevard Tecnológico de Progreso S/N por 62, Progreso, Yucatán. C.P. 97320 
Tels. 969 934 3023, tecnm.mx | progreso.tecnm.mx 
 
music21.tempo.MetronomeMark(number=bpm)): Inserta la marca de metrónomo en el 
inicio de la melodía con el tempo calculado. 
 
 
escala = music21.scale.MinorScale('B'): Define la escala menor de Si (B menor) 
utilizando la clase MinorScale de music21. 
 Y por ultimo paso: duraciones y notas: Estas listas definen las duraciones y las notas 
que se utilizarán para generar la melodía. Las duraciones están en relación con el 
tempo y las notas están en la escala de B menor. 
En el bucle for duracion, nota_nombre in zip(duraciones, notas), se recorren las listas 
duraciones y notas al mismo tiempo. Para cada par de valores, se crea una nota con el 
nombre especificado en nota_nombre y se le asigna la duración correspondiente según 
el valor en duracion. Las notas se agregan a la melodía. 
melodia.show('midi'): Finalmente, se reproduce la melodía en formato MIDI utilizando el 
método show con el argumento 'midi'. 
 
 
 
Instituto Tecnológico Superior 
Progreso 
Dirección General 
Subdirección Académica 
 
 
 
Boulevard Tecnológico de Progreso S/N por 62, Progreso, Yucatán. C.P. 97320 
Tels. 969 934 3023, tecnm.mx | progreso.tecnm.mx 
 
 
 
 
 
 
Resultado: 
La práctica compilada arrojó resultados significativos. La descarga de 
partituras desde la web demostró ser una forma eficiente de acceder a una 
amplia gama de composiciones musicales, desde piezas clásicas hasta 
composiciones contemporáneas. La reproducción en el reproductor de 
música proporcionó una experiencia auditiva enriquecedora, lo que facilitó 
la apreciación y el estudio de las partituras. 
 
Además, se observó que la capacidad de personalización del reproductor 
de música permitíaadaptar la interpretación musical según las preferencias 
del oyente o el músico en formación. Esto resultó especialmente útil para 
practicar e interpretar las partituras con mayor comodidad. 
 
 
 
Instituto Tecnológico Superior 
Progreso 
Dirección General 
Subdirección Académica 
 
 
 
Boulevard Tecnológico de Progreso S/N por 62, Progreso, Yucatán. C.P. 97320 
Tels. 969 934 3023, tecnm.mx | progreso.tecnm.mx 
 
conclusión: 
 
El desarrollo de esta práctica en la creación de un Analizador Léxico/Sintáctico Musical 
ha sido una experiencia enriquecedora y educativa. Durante el proceso, se ha abordado 
una serie de pasos fundamentales para comprender y trabajar con partituras musicales 
en el lenguaje de programación Python, específicamente utilizando la biblioteca 
music21. 
 
En primer lugar, se llevó a cabo una investigación exhaustiva para comprender las 
partituras musicales y las librerías necesarias en Python para este proyecto. Se 
identificó la necesidad de descargar partituras en formato XML desde el sitio web 
seleccionado (https://abcnotation.com/) y se explicó cómo Python, a través de la 
biblioteca music21, puede convertir estas partituras en un formato legible. 
 
Se describieron los pasos clave del proceso, que incluyeron la importación de la 
biblioteca music21, la carga de la partitura desde el archivo XML, la representación de 
la partitura en formato MIDI para su reproducción y la iteración a través de las notas 
musicales para obtener su altura en notación americana. 
 
Además, se proporcionó un ejemplo adicional donde se creó una melodía personalizada 
utilizando music21. Este ejemplo demostró cómo definir la tonalidad, establecer la 
duración total y el tempo de la melodía, y crear una secuencia de notas en función de 
una escala musical específica. 
 
 
 
 
 
 
Instituto Tecnológico Superior 
Progreso 
Dirección General 
Subdirección Académica 
 
 
 
Boulevard Tecnológico de Progreso S/N por 62, Progreso, Yucatán. C.P. 97320 
Tels. 969 934 3023, tecnm.mx | progreso.tecnm.mx 
 
referencia: 
 
 
• What is Music21? — Music21 documentation. (s. f.). 
https://web.mit.edu/music21/doc/about/what.html 
 
 
• Music21: A toolkit for Computer-Aided Musicology. (s. f.). 
http://web.mit.edu/music21/ 
https://web.mit.edu/music21/doc/about/what.html
http://web.mit.edu/music21/

Continuar navegando