音乐 21:从平坦的乐谱中获取 MIDI 语音的语音/程序/乐器?

时间:2021-04-18 22:39:46

标签: midi music21

我有一个简单的脚本,它使用 music21 来处理 MIDI 文件中的音符:

EIdException

有没有一种方法可以使用平坦的分数获得音符的发声/midi 程序?任何指针将不胜感激!

1 个答案:

答案 0 :(得分:1)

MIDI 通道和程序存储在 Instrument 实例中,因此请使用 getContextByClass(instrument.Instrument) 在流中查找最近的乐器,然后访问其 .midiProgram。

小心:

  • .midiChannel.midiProgram 是 0 索引的,因此 MIDI 通道 10 在 music21 等中将是 9,(我们正在讨论在下一个版本中更改此行为)
  • 如果您运行的不是最新版本,则某些信息可能会丢失(我们昨天就该主题合并了一个补丁),因此我建议从 git 中提取:pip install git+https://github.com/cuthbertLab/music21
  • 但是,如果文件是多轨文件,
  • .flat 会杀了你。如果您遵循我的建议,您将获得每条轨道上的最后一件乐器。 90% 的人在做 .flat 时实际上想要 .recurse()
相关问题