我想做一个创建 MIDI 声音的小应用程序。我从来没有在编程中处理过声音,所以我想从一些基本的并且有很好的文档的东西开始。我想坚持使用 Python,因为我对它最熟悉,并且最初不想让自己不知所措。
我的时间在 Windows 和 Ubuntu 之间分配了大约 50/50,所以在这两个平台上“正常工作”的东西真的很有帮助。
有什么建议么?
MIDIUtil 库(托管在Google Code 上)可以满足您的需求:从纯 Python 库中编写 MIDI 文件。关于它的好处(并且完全公开:我是作者)是您不必跟踪较低级别的 MID 事件,例如 note-on 和 note-off:它会为您处理它们。
作为写笔记的示例,您可以执行以下操作:
MyMIDI = MIDIFile(1)
track = 0
channel = 0
pitch = 60
time = 0
duration = 1
volume = 100
MyMIDI.addNote(track,channel,pitch,time,duration,volume)
希望这可以帮助
我一直在寻找一个纯 Python 库来生成 MIDI 文件,mxm 的 Python MIDI 库就是这样。
从这个 dzone 片段中,有一个上述库的单文件版本,smidi.py(这里的要点是为了后代)
用法很简单:
>>> import smidi
>>> m = smidi.MidiOutFile('out.mid')
>>> m.header()
>>> m.start_of_track()
>>> m.update_time(0)
>>> m.note_on(note=0x40) # single note
>>> m.update_time(192)
>>> m.note_off(note=0x40) # stop it after 192
>>> m.update_time(0)
>>> m.end_of_track()
>>> m.eof()
大概可以在 Windows 上运行(因为原始示例C:\out.mid
用作输出文件名),并且我已经在 OS X 上对其进行了测试
pyPortMidi是 PortMidi 的 Python 包装器,它被描述为“用于实时 MIDI 控制的跨平台 C 库”。我自己没用过,但看起来很有前途。明确提到能够实时发送 MIDI 数据。
如果您只需要生成 Midi 或处理 midi 文件,请尝试mingus,它是一个很棒的包,它还允许更高的抽象,例如和弦、和弦进行、音阶等。
我尝试了 wiki http://wiki.python.org/moin/PythonInMusic上列出的八个软件包。我发现music21(http://web.mit.edu/music21/)是那个
但至于您对简单的要求,我认为这不是最简单的。但我无法让任何其他程序以稳健的方式读取 MIDI 文件(我有各种奇怪而美妙的 MIDI 文件格式)
pyGame 1.9 中添加了 Midi 支持(输入和输出),虽然它主要处于开发阶段并且还没有很好的文档记录,但它可以工作。
pyGame 的后继者 pgreloaded(或 pygame2)也正在开发 Midi 支持。
另请注意,尽管 pyGame 的标题中有“游戏”,但它的用途远远超出了游戏设计。
看看cSounds。