gpt4 book ai didi

python - 使用python midi从midi中提取鼓音符

转载 作者:行者123 更新时间:2023-12-03 17:16:27 33 4
gpt4 key购买 nike

我正在尝试读取一个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但它没有用。

如何在没有时间问题的情况下删除不需要的音符?

最佳答案

有相反的问题,即删除所有鼓线,但解决方案是(使用漂亮的 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')

希望这是某人可接受的解决方案

关于python - 使用python midi从midi中提取鼓音符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44844581/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com