开源MIDI库

3
我想了解一些可以用于处理MIDI文件的开源库,包括以下简单任务:
  1. 逐个音符或和弦读取文件;
  2. 提取给定乐器并将其单独重新编码到新文件中;
  3. 允许生成“可定制”的乐谱——我指的是我应该能够使用库更改从midi生成乐谱的方式……我认为这将需要与Lilypond或Musixtex交互。
我没有特定的语言偏好,只要跨平台应用不太麻烦即可。欢迎其他建议——最好现在学习,而不是等到我已经写了很多代码再学习。到目前为止,我一直试图深入研究MuseScore(C++)源代码,但似乎GUI代码渗透到大部分文件中,尽管找到相关文件很容易,但很难提取我所需的内容(我现在只针对命令行应用程序,以后再考虑界面)。有什么想法吗?
谢谢!

我大约6年前简要调查了这个问题。MIDI文件规范并不难(如果我没记错的话,有3种类型),但我从未完全理解它们使用的压缩方案,其中涉及读取高位比特并理解该块中将有多少字节。我想这就是为什么我是一个前端编码人员的原因。 :) - Robusto
请查看此问题:https://dev59.com/fXVD5IYBdhLWcg3wXaYd - sean e
2个回答

2
如果您仍在进行项目,并且语言不是问题,您可以尝试Python的跨平台music21,它可以将midi文件解析为Note、Chord、Instrument等对象,让您操作乐谱,然后将其转换回MIDI或输出到Lilypond等(完全透明披露,我是该工具包的作者;但我不知道其他任何语言中的工具能够接收MIDI并输出Lilypond,同时让您有机会在此期间处理MIDI元素)。
示例代码可以破坏MIDI文件中的所有乐器声音,然后播放它并从中制作lilypond.pdf:
 import music21
 mf = music21.converter.parse('pathToMidiFile.mid')
 for x in mf.recurse():
     if 'Instrument' in x.classes:
         x.midiProgram = (x.midiProgram * 2) % 128
 mf.show('midi')
 mf.show('lily.pdf')

希望这可以帮助你。

感谢提醒。我已完成我想要构建的软件,但知道你的工具包存在是好的,将来可能需要用在另一个应用程序中。 - Anthony Labarre

2

我刚刚开始接触,但是这个(使用Python)似乎很有前途。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接