Descarga la aplicación para disfrutar aún más
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/
Compartir