首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用python midi从midi中提取鼓音符

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

Stack Overflow用户
提问于 2017-06-30 18:43:11
回答 1查看 628关注 0票数 5

我正在尝试读取midi文件,并仅使用python midi生成另一个带有鼓音符的midi。代码如下:

代码语言:javascript
复制
 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,但它不起作用。

如何在不出现时间问题的情况下删除不需要的注释?

EN

回答 1

Stack Overflow用户

发布于 2019-12-07 23:35:43

有相反的问题,删除所有鼓线,但解决方案是(使用漂亮的midi)

代码语言:javascript
复制
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')

希望这对某些人来说是一个可以接受的解决方案

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44844581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档