music21

music21

Die Python-Bibliothek music21 wird auf der Projektseite des MIT Boston umfassend dokumentiert: Neben einem User Guide mit Kapiteln zu zahlreichen Themenbereichen gibt es eine umfangreiche Modul-Dokumentation sowie ein alphabetischer Index aller Themen und Befehle.
Gerade angesichts dieser sehr umfangreichen Dokumentation ist es sinnvoll, die wichtigsten Befehle, die sich auf computergestützte Analyseverfahren beziehen, gesondert aufzuführen und mit kurzen Beispielen zu beschreiben.

Im Folgenden werden die wichtigsten und nützlichsten Befehle in music21 aufgelistet. Komplexere Befehlsfolgen finden sich mit Beispielen in den Tutorials Noten.

(1) Umgang mit Dateien

Die folgenden Befehle laden die music21-Bibliothek und anschließend das Präludium C-Dur aus dem Wohltemperierten Klavier als Variable 'sBach'

 from music21 import *
 # Dieser Anfangsbefehl importiert die Python-Bibliothek music21
 
 sBach = converter.parse('https://analyse.hfm-weimar.de/database/04/BaJoSe_BWV846_COM_COM_DasWohltem_004_00816.xml')  	
 

Nun wird das Stück auf MuseSore angezeigt:

 sBach.show()			

So sieht man die Noteninformationen im musicxml-Format:

 sBach.show('text') 

Und so werden Noten als midi abgespielt:

 sBach.show('midi') 			

Auswahl von Takten / Stimmen:

 a = sBach.parts[0] 		
 # wählt die erste Stimme (hier: rechte Hand) als Variable 'a' 
 b = sBach.measures(4,7)		
 # wählt Takt 4 bis 7 als Variable 'b'
 c = sBach.parts[0].measures(2,4)	
 # wählt Takt 2 bis 4 der ersten Stimme als c
 Alternative: sBach.measures(2,4).show()
 # wählt aus und zeigt an.

Anzahl der Elemente anzeigen:

 len(sBach)	
 # nennt die Anzahl der Elemente auf der nächsttieferen Ebene
 len(sBach.flat)	
 # nennt die Anzahl aller enthaltenen Elemente, z.B. Noten

Speichern der Auswahl:

 sBach.write()
 a.write()	
 # Speichert die Variable 'sBach' oder 'a' (s. oben: die erste Stimme) als xml-File (Voreinstellung)
 # Es können auch andere Formate gewählt werden, z.B. 
 sBach.write('midi')
 # alternativer Befehl für die erste Stimme:
 sBach.parts[0].write()

(2) Ansicht von Graphiken:

 sBach.plot('pianoroll')		
 sBach.parts[2].plot('pianoroll')		
 # nur die zweite Stimme wird angezeigt
 sBach.measure(2,5).plot('pianoroll')	
 # nur Takt 2-5 werden angezeigt
 graph.plotStream(sBach) 			
 # = alternative Methode

 sBach.plot('histogram')			
 # Histogramm der Tonhöhenhäufigkeiten

(3) Schreiben von Noten

 n1 = note.Note('g4', type='quarter')
 n2 = note.Note('a4', type='quarter')
 n3 = note.Note('g4', type='half')
 # Noten werden measures verbunden („gestreamt“), measures zu parts und parts zu scores:
 m1 = stream.Measure()
 m1.append([n1, n2, n3])
 p1 = stream.Part
 p1.append([m1])
  • music21.txt
  • Zuletzt geändert: 2022/02/28 10:29
  • von martin