La biblioteca Python music21 está ampliamente documentada en la página del proyecto del MIT Boston: Además de una Guía del usuario con capítulos sobre numerosos temas, hay una extensa Documentación de módulos así como un Índice alfabético de todos los temas y comandos.
Especialmente en vista de esta extensa documentación, tiene sentido enumerar los comandos más importantes por separado y describirlos con breves ejemplos.
Aquí se enumeran los comandos más importantes y útiles de music21. Se pueden encontrar secuencias de comandos más complejas con ejemplos en las Notas de los tutoriales.
(1) Manejo de archivos
Los siguientes comandos cargan la biblioteca music21 así como el Preludio en Do mayor del Clave bien temperado como variable 'sBach'.
from music21 import * # Este comando inicial importa la biblioteca de Python music21 sBach = converter.parse('https://analyse.hfm-weimar.de/database/04/BaJoSe_BWV846_COM_COM_DasWohltem_004_00816.xml')
Ahora la pieza se muestra en MuseSore:
sBach.show()
Así se ve la información de la partitura en formato musicxml:
sBach.show('texto')
Y así es como se reproducen las notas como midi:
sBach.show('midi')
Selección de barras / piezas:
a = sBach.parts[0] # selecciona la primera voz (aquí: mano derecha) como variable 'a'. b = sBach.medidas(4,7) # selecciona las medidas 4 a 7 como variable 'b' c = sBach.parts[0].measures(2,4) # selecciona los compases 2 a 4 de la primera voz como variable 'c' Alternativa: sBach.measures(2,4).show() # selecciona y muestra.
Muestra el número de elementos:
len(sBach) # muestra el número de elementos en el siguiente nivel inferior len(sBach.flat) # nombra el número de todos los elementos contenidos, por ejemplo, notas
Guardar la selección:
sBach.write() a.write() # Guarda la variable 'sBach' o 'a' (ver arriba: la primera voz) como archivo xml (por defecto) # También se pueden elegir otros formatos, por ejemplo sBach.write('midi') # comando alternativo para la primera voz: sBach.parts[0].write()
(2) Ver gráficos:
sBach.plot('pianoroll') sBach.parts[2].plot('pianoroll') # sólo se muestra la segunda voz sBach.measure(2,5).plot('pianoroll') # sólo se muestran las barras 2-5 graph.plotStream(sBach) # = método alternativo sBach.plot('histograma') # Histograma de frecuencias de tono
(3) Escribir notas
n1 = note.Note('g4', type='quarter') n2 = note.Note('a4', type='quarter') n3 = note.Note('g4', type='half') # Las notas están conectadas ("streamed") a los compases, los compases a las partes y las partes a las partituras: m1 = stream.Measure() m1.append([n1, n2, n3]) p1 = stream.Part p1.append([m1])