开源MIDI库

时间:2010-03-03 01:07:47

标签: midi

我想知道可用于在MIDI文件上执行一些简单任务的开源库:

  1. 一次读取一个音符或一个音符的文件;
  2. 提取给定的工具以在新文件中单独重新编码;
  3. 允许产生“可自定义”的分数 - 我的意思是我应该能够改变使用图书馆从midi制作乐谱的方式......我认为这需要与Lilypond或Musixtex。
  4. 我没有真正的首选语言,只要使应用程序跨平台不太痛苦。欢迎其他建议 - 现在更好地学习它,而不是在我已经编写了大量代码时。到目前为止,我一直在尝试挖掘MuseScore的(C ++)源代码,但似乎GUI代码渗透到大多数文件中,虽然发现相关文件很容易,但我很难提取出我需要的东西(我是现在只针对命令行应用程序,我稍后会看到接口。)

    有什么想法吗?

    谢谢!

2 个答案:

答案 0 :(得分:2)

好吧,我刚刚开始,但是this(在Python中)似乎很有希望。

答案 1 :(得分:2)

如果您仍在处理项目并且语言不是问题,您可以尝试Python的跨平台music21,它可以将midi文件解析为Note,Chord,Instrument等对象,让你操纵分数,然后R / T回到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')

希望有所帮助。