首页 > 解决方案 > 使用 Music21(或替代方法)从 MIDI 中提取休止符并写入单独的 MIDI 轨道

问题描述

我正在尝试将一个简单的单通道、单乐器 MIDI 文件解析为音符和休止符。我知道“休息”不是直接编码成 MIDI,而是缺少 NoteOn/NoteOff 对。

我要做的是从第一个(也是唯一的)MIDI 通道(0)读取数据,并使用 Python 中的 Music21 提取音符和休止符。一旦我这样做了:

  1. 我将把笔记留在频道 0
  2. 我将在单独的通道通道 1 上将其余部分编码为正常的 NoteOn/NoteOff 对。我还可以在此处捕获其余部分的持续时间。

然后,我可以使用这些数据在稍​​后构建的前端中显示音符和休止符。

所以我的问题:

  1. Music21 适合这个吗?或者有没有更简单的方法?
  2. 如果 Music21 合适,这样做的好策略是什么?
  3. 我目前正在使用从 URL 下载示例 MIDI 文件,requests并尝试使用requests.content. 这合适吗?

感谢您的帮助,我对 Music21 库很陌生!

标签: pythonmidimusic21

解决方案


music21 肯定会从 MIDI 文件创建音符和休止符。你还有什么进一步的目标?

import music21
parsed = music21.converter.parse('source.mid')
for elem in parsed.flat.notesAndRests:
    print(elem)
    print(elem.pitch.name)
    print(elem.quarterLength)

推荐阅读