1

我想从 music21 制作的音乐中提取一些特征,但我不知道该怎么做。

您可以在下面的代码中看到我知道如何提取以下特征;和弦、音符和音高。

但我无法弄清楚如何提取以下特征;弯曲、速度和持续时间。

我该怎么做?

def get_notes():
""" Get all the notes and chords from the midi files in the ./midi_songs directory """
notes = []

for file in glob.glob("midi_songs/*.mid"):
    midi = converter.parse(file)

    print("Parsing %s" % file)

    notes_to_parse = None

    try: # file has instrument parts
        s2 = instrument.partitionByInstrument(midi)
        notes_to_parse = s2.parts[0].recurse() 
    except: # file has notes in a flat structure
        notes_to_parse = midi.flat.notes

    for element in notes_to_parse:
        if isinstance(element, note.Note):
            notes.append(str(element.pitch))
        elif isinstance(element, chord.Chord):
            notes.append('.'.join(str(n) for n in element.normalOrder))

with open('data/notes', 'wb') as filepath:
    pickle.dump(notes, filepath)

return notes
4

0 回答 0