Bloque II Experimentamos con las notas. Herramientas musicológicas avanzadas Introducción a music21 [6.1] ¿Cómo estudiar este tema? [6.2] Introducción [6.3] Instalación [6.4] Tutorial básico de music21 [6.5] Trabajamos desde cero con las notas TEMA 6 [6.6] Resumen TEMA 6 – Esquema 2 Trabajamos desde cero con las notas Operaciones básicas Introducción a la instalación Sintaxis de tinynotation Extracción de elementos Procesado del corpus de music21 Tutorial Básico de music21 Compases Partes Matemáticas y Física Aplicadas a la Música Esquema Matemáticas y Física Aplicadas a la Música Ideas clave 6.1. ¿Cómo estudiar este tema? Continuamos el bloque 2 dedicado a herramientas musicológicas avanzadas. En este segundo tema instalaremos y empezaremos a trabajar con music21 sobre Python. No existe nada publicado en castellano al respecto, pero hay bastante información en inglés en la web de music21 http://web.mit.edu/music21/ Para este tema recomendamos leer los capítulos 1 y 2 de la guía de usuario de music21. 6.2. Introducción Music21 es una librería de Python que facilita enormemente el cálculo sobre partituras o elementos musicales. Desde el punto de vista musicológico es una herramienta más que interesante para extraer parámetros y conclusiones de partituras de épocas diversas. Posee un «corpus» de obras accesible directamente para facilitar los cálculos, pero cualquier partitura en los formatos más habituales (MusicXML, hundrum, MIDI…) puede ser analizada. 6.3. Instalación La instalación es bastante sencilla y multiplataforma. Comentaremos la instalación sobre Windows (la más habitual) pero el alumno puede usar otra si su sistema operativo es diferente. Para descargar la última versión hay que ir a https://code.google.com/p/music21/downloads/list Recomendamos descargar el .exe al ser la instalación muy sencilla. TEMA 6 – Ideas clave 3 Matemáticas y Física Aplicadas a la Música Si no dispones de un editor de MusicXML, puedes bajarte e instalar de forma gratuita Finale notepad 2012 desde http://www.finalemusic.com/products/finale-notepad/ o MuseScore de http://musescore.org/es Para comprobar que todo está correctamente instalado nos vamos PyScripter y escribimos: from music21 import corpus sBach = corpus.parse('bach/bwv7.7') sBach.show() Al ejecutar estas 3 líneas de código el sistema debería levantar nuestro editor de partituras (Finale notepad, o el que tengamos asociado a MusicXML) y mostrar la siguiente pantalla. TEMA 6 – Ideas clave 4 Matemáticas y Física Aplicadas a la Música Para «jugar» con la base de datos de partituras simplemente hay que cambiar «bach/bwv7.7» con lo que queramos acceder. La librería está en: http://web.mit.edu/music21/doc/systemReference/referenceCorpus.html Si quisiéramos acceder a un fichero en local, solo tendríamos que cambiar corpus.parse por converter.parse especificando la ruta. 6.4. Tutorial básico de music21 Vamos a modificar las líneas de código anteriores para ver algunas posibilidades de music21. Imaginemos que queremos extraer solo una parte, la del soprano: from music21 import corpus sBach = corpus.parse('bach/bwv7.7') sBach.parts[0].show() TEMA 6 – Ideas clave 5 Matemáticas y Física Aplicadas a la Música O un compás, el 3: from music21 import corpus sBach = corpus.parse('bach/bwv7.7') sBach.measure(3).show() O el compás 3 del contralto solamente: from music21 import corpus sBach = corpus.parse('bach/bwv7.7') sBach.parts[1].measure(3).show() O una nota, la tercera del contralto del compás 3: from music21 import corpus sBach = corpus.parse('bach/bwv7.7') sBach.parts[1].measure(3).notes[3].show() TEMA 6 – Ideas clave 6 Matemáticas y Física Aplicadas a la Música O reducir a acordes la partitura: from music21 import corpus sBach = corpus.parse('bach/bwv7.7') sBach.chordify().show() Por supuesto podemos aunar la potencia de Python con music21. Veamos un ejemplo algo más complejo. Imaginemos que queremos hacer una melodía con la primera nota de cada compás del soprano en este coral de Bach: #importamos todas las librerías de music21 from music21 import * sBach = corpus.parse('bach/bwv7.7') #contenedor de objetos music21 s=stream.Stream() #Cogemos los compases del soprano compases=sBach.parts[0].getElementsByClass(stream.Measure) #iteramos através de cada compás y cogemos la primera nota for compas in compases: s.append(compas.notes[0]) TEMA 6 – Ideas clave 7 Matemáticas y Física Aplicadas a la Música #mostramos el resultado s.show() El resultado: NOTA: la función getElementsByClass es muy útil para coger todos los elementos de un tipo determinado, en este caso compases. La clase especificada en este caso, stream.Measure, hace referencia a los compases. 6.5. Trabajamos desde cero con las notas Dejemos de momento el corpus de music21 para escribir una melodía desde cero. Lo podemos hacer de varias maneras. Lo más sencillo es através de notación tinyNotation. Básicamente consiste en escribir el nombre de la nota seguido de su duración. Si la duración no cambia, la siguiente nota coge la duración anterior. from music21 import * #escribimos un string en el formato tinynotation tinynotation="tinynotation: 3/4 c4 d8 f g16 a g f#" TEMA 6 – Ideas clave 8 Matemáticas y Física Aplicadas a la Música #convertimos music21 notasMusic21=converter.parse(tinynotation) #mostramos el resultado notasMusic21.show() Para saber más de esta notación: http://web.mit.edu/music21/doc/moduleReference/moduleTinyNotation.html#music 21.tinyNotation.TinyNotationStream el resultado: También podemos escribir notas directamente con parámetros de music21. Es algo más complicado, pero más potente desde el punto de vista de la programación. Veamos un ejemplo. from music21 import * #declaramos el stream, dos notas y un silencio s = stream.Stream() n1 = note.Note() n2 = note.Note() r1 = note.Rest() #definimos nuestra nota 1 n1.pitch.name = 'E4' TEMA 6 – Ideas clave 9 Matemáticas y Física Aplicadas a la Música n1.duration.type = 'half' #definimos nuestra nota 2 n2.pitch.name = 'F4' n2.duration.type = 'quarter' #definimos nuestro silencio r1.quarterLength = 1 #lo ponemos todo en el stream s.append(n1) s.append(n2) s.append(r1) #mostramos el resultado s.show() TEMA 6 – Ideas clave 10 Matemáticas y Física Aplicadas a la Música El resultado: 6.6. Resumen En este tema hemos empezado a ver las posibilidades de music21 como librería de Python. Las posibilidades de análisis y creación musical son enormes. Reconocemos que para el alumno con poca experiencia en programación puede ser algo complicado al principio, pero no te preocupes. Es cuestión de práctica, curiosidad, estudio y un poco de paciencia. Las dos siguientes semanas continuaremos profundizando en Python y music21. TEMA 6 – Ideas clave 11 Matemáticas y Física Aplicadas a la Música Lo + recomendado No dejes de leer… music21: A Toolkit for Computer-Aided Musicology and Symbolic Music Data Artículo de ISMIR sobre music21. Accede al artículo a través del aula virtual o desde la siguiente dirección web: http://dspace.mit.edu/handle/1721.1/84963 No dejes de ver… Music21 ScoreFollower Demo Interesante el desarrollo realizado sobre music21 para el paso de página de partituras. Accede al vídeo a través del aula virtual o desde la siguiente dirección web: https://www.youtube.com/watch?v=4lNYqGYnjog TEMA 6 – Lo + recomendado 12 Matemáticas y Física Aplicadas a la Música + Información A fondo Music21 Te recomendamos leer alguno de los artículos de music21 en academia.edu. Accede al artículo a través del aula virtual o desde la siguiente dirección web: http://www.academia.edu/Documents/in/Music21 TEMA 6 – + Información 13 Matemáticas y Física Aplicadas a la Música Test 1. El siguiente programa: A. Muestra un coral del Bach en xml dentro del corpus de music21. B. No funciona. C. Muestra todas las obras de Bach en orden cronológico. D. Muestra solo el primer compás del coral. 2. El siguiente programa: A. Muestra el tercer compás del soprano. B. Muestra el segundo compás del contralto. C. Muestra el tercer compás del contralto. D. Da error. 3. La siguiente secuencia se puede escribir como: A. tn="tinynotation: 2/4 c8 d e f" B. tn="tinynotation: 2/4 c4 d e2 f" C. tn="tinynotation: 3/4 c4 d e f" D. tn="tinynotation: 2/4 c4 d4 c2 e2" TEMA 6 – Test 14 Matemáticas y Física Aplicadas a la Música 4. El siguiente programa produce la siguiente salida: A. B. C. D. TEMA 6 – Test 15 Matemáticas y Física Aplicadas a la Música 5. El siguiente programa produce la siguiente salida: A B C D TEMA 6 – Test 16