【问题标题】:Open source MIDI libraries开源 MIDI 库
【发布时间】:2011-01-23 00:19:02
【问题描述】:

我想了解可用于对 MIDI 文件执行一些简单任务的开源库:

  1. 一次读取一个音符或和弦;
  2. 提取给定仪器以在新文件中单独重新编码;
  3. 允许生成“可自定义”的乐谱——我的意思是我应该能够使用库更改从 midi 生成乐谱的方式...我认为这需要与 Lilypond 或Musixtex。

我真的没有偏爱的语言,只要让应用跨平台不会太痛苦。欢迎其他建议——最好现在学习它,而不是在我已经编写了很多代码的时候。到目前为止,我一直在尝试挖掘 MuseScore 的(C++)源代码,但似乎 GUI 代码渗透到大多数文件中,虽然发现相关文件很容易,但我很难提取出我需要的东西(我是目前只针对命令行应用程序,稍后我会看到接口)。

有什么想法吗?

谢谢!

【问题讨论】:

  • 我大约在 6 年前对此进行了简要调查。 MIDI 文件规范并不难(如果我记得的话,有 3 种风格),但我永远无法完全理解他们使用的压缩方案,这涉及读取高位并了解将包含多少字节那块。我想这就是我成为前端编码员的原因。 :)

标签: midi


【解决方案1】:

如果你还在做这个项目,而且语言不是问题,你可以试试 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')

希望对您有所帮助。

【讨论】:

  • 感谢您的提醒。我完成了我想要构建的软件,但很高兴知道你的工具包存在,我可能有一天会需要它用于另一个应用程序。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多