2017-03-06 8 views
2

Ich analysiere eine MIDI-Datei wie angegeben here. Mein Code sieht wie folgt aus:Music21: Erhalte alle Noten pro Instrument aus einer MIDI-Datei

from music21 import converter,instrument # or import * 
file = converter.parse('sample.mid') 
components = [] 
for element in file.recurse(): 
    components.append(element) 

Die components Liste nun Daten enthält wie folgt:

<music21.stream.Score 0x7f50314ca390>, 
<music21.stream.Part 0x7f50314caf10>, 
<music21.instrument.Instrument Acoustic Guitar>, 
<music21.instrument.Instrument Acoustic Guitar>, 
<music21.tempo.MetronomeMark allegro moderato Quarter=130.0>, 
<music21.meter.TimeSignature 4/4>, 
<music21.note.Note E>, 
<music21.note.Note B>, 
<music21.note.Note E>, 
<music21.note.Note B>, 
<music21.note.Note E>, 
<music21.note.Rest rest>, 
. 
. 
. 
<music21.chord.Chord B3 E3>, 
<music21.chord.Chord B3 E3>, 
<music21.chord.Chord B3 E3>, 
<music21.chord.Chord B3 E3>, 
<music21.chord.Chord B3 E3>, 
<music21.chord.Chord B3 E3>, 
<music21.chord.Chord D4 F#3>, 
<music21.chord.Chord D4 F#3>, 
<music21.chord.Chord D4 F#3>, 
. 
. 
. 
<music21.stream.Part 0x7f50309b99d0>, 
<music21.instrument.Instrument Electric Guitar>, 
<music21.instrument.Instrument Electric Guitar>, 
<music21.meter.TimeSignature 4/4>, 
<music21.note.Rest rest>, 
<music21.note.Note E>, 
<music21.note.Note F#>, 
<music21.note.Note G>, 
<music21.note.Note A>, 
<music21.note.Note G>, 
<music21.note.Note E>, 
<music21.note.Rest rest>, 

Mein Ziel ist es, Noten entmischen nach jedem Instrument, die in einem Tag wie <music21.instrument.Instrument Electric Guitar> aufgeführt ist. Wie erreiche ich das?

Antwort

1

Ich denke, Sie wollen die instrument.partitionByInstrument() Funktion, die Ihren Strom in verschiedene Teile je nach dem Instrument trennen wird.

+0

Vielen Dank für Ihre Antwort. Ich schätze es sehr. Jedoch habe ich die einen Fehler am stoßen während der Ausführung die folgenden: Instrumente = instrument.partitionByInstrument (Datei) StreamException: das Objekt (, id() = 140306780864464) bereits gefunden in diesem Stream (, id() = 140306889172688) – sri

+0

Ich bitte um irgendwelche Vorschläge zu diesem Thema – sri