Je suis en train d'analyser un fichier MIDI comme indiqué here. Mon code ressemble à ceci:Music21: Obtenir toutes les notes par instrument à partir d'un fichier MIDI
from music21 import converter,instrument # or import *
file = converter.parse('sample.mid')
components = []
for element in file.recurse():
components.append(element)
La liste components
contient maintenant des données comme suit:
<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>,
Mon but est de séparer les notes en fonction de chaque instrument qui figure dans une balise comme <music21.instrument.Instrument Electric Guitar>
. Comment puis-je y parvenir?
Merci beaucoup pour votre réponse. J'apprécie vraiment cela. Cependant je rencontre l'erreur lors de l'exécution suivantes: instruments = instrument.partitionByInstrument (fichier) StreamException: l'objet (, id() = 140306780864464) est déjà trouvé dans ce Stream (, id() = 140306889172688) –
sri
Je demande pour des suggestions sur ce – sri