如何使用 python 根据音符音高拆分 midi 文件?

How to split midi file based on notes pitch using python?

如何使用 python 根据音高拆分 MIDI 文件?我尝试了 music21 库,但我真的不知道它是如何工作的...

试试这个代码:

import pretty_midi
import copy

pitch_cutoff = 65

mid = pretty_midi.PrettyMIDI('my_file.mid')
low_notes = copy.deepcopy(mid)
high_notes = copy.deepcopy(mid)

for instrument in low_notes.instruments:
    for note in instrument.notes:
        if note.pitch > pitch_cutoff:
            note.velocity = 0

for instrument in high_notes.instruments:
    for note in instrument.notes:
        if note.pitch < pitch_cutoff:
            note.velocity = 0

low_notes.write("low_notes.mid")
high_notes.write("high_notes.mid")

它使用 pretty_midi 模块将一个 midi 文件拆分为两个不同的文件。名为“high_notes.mid”的文件只会在您设置 pitch_cutoff 变量的内容上方有注释,而“low_notes.mid”只会在其下方有注释。只需将“my_file.mid”更改为您文件的任何名称并尝试一下。如果您有任何问题,请告诉我。