Music21

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.

Los comandos más importantes de music21 en un vistazo

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])