5

I am parsing a MIDI file as instructed here. My code looks like this:

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

The components list now contains data as follows:

<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>,

My aim is to segregate notes according to each instrument which is listed in a tag like <music21.instrument.Instrument Electric Guitar>. How do I achieve this?

Community
  • 1
  • 1
sri
  • 744
  • 7
  • 20

1 Answers1

2

I think you'll want the instrument.partitionByInstrument() function, which will separate your stream into different parts according to the instrument.

  • Thanks a lot for your response. I really appreciate it. However I am encountering the an error while executing the following: instruments = instrument.partitionByInstrument(file) StreamException: the object (, id()=140306780864464) is already found in this Stream (, id()=140306889172688) – sri Mar 07 '17 at 05:16
  • I request for any suggestions on this – sri Mar 17 '17 at 12:46