【问题标题】:Extracting drum notes from midi using python midi使用 python midi 从 midi 中提取鼓音符
【发布时间】:2017-12-04 07:16:11
【问题描述】:

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

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

【问题讨论】:

  • 您想将所有音轨合并成一个输出音轨吗?
  • 不一定

标签: python midi


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-23
    • 1970-01-01
    相关资源
    最近更新 更多