我正在尝试阅读midi文件并使用python midi生成另一个带有音符的midi。代码如下:
pattern = midi.read_midifile(IN_PATH+file)
out_p = midi.Pattern()
out_t = midi.Track()
out_p.append(out_t)
for track in pattern:
for e in track:
if not(isinstance(e, midi.NoteEvent) and e.channel!=9):
out_t.append(e)
eot = midi.EndOfTrackEvent(tick=1)
out_t.append(eot)
midi.write_midifile(OUT_PATH+file, out_p)
基本上,我只附加鼓音符和其他MIDI事件。然而,移动其他音符会导致一些时间问题,因为当我将它们加载到DAW上时,鼓音符似乎与网格不对齐。我尝试使用pattern.make_ticks_abs
,但它没有用。
如何在没有计时问题的情况下删除不需要的笔记?
答案 0 :(得分:0)
存在相反的问题,即删除所有鼓行,但是解决方案是(使用漂亮的midi)
import pretty_midi as pm
sound = pm.PrettyMIDI("MyMidiSong.midi")
# check all songs, remove the not in case you want to remove all drums
# instead of including all drums
drum_instruments_index = [i for i, inst in enumerate(sound.instruments) if not inst.is_drum]
# remove all non drums, from the sorted such that no conflicting indexes
for i in sorted(drum_instruments_index, reverse=True):
del sound.instruments[i]
sound.write('MyDrumOnlyMidi.midi')
希望这对某人来说是一个可接受的解决方案