28

我想做一个创建 MIDI 声音的小应用程序。我从来没有在编程中处理过声音,所以我想从一些基本的并且有很好的文档的东西开始。我想坚持使用 Python,因为我对它最熟悉,并且最初不想让自己不知所措。

我的时间在 Windows 和 Ubuntu 之间分配了大约 50/50,所以在这两个平台上“正常工作”的东西真的很有帮助。

有什么建议么?

4

7 回答 7

33

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)

希望这可以帮助

于 2010-01-25T19:57:20.683 回答
10

我一直在寻找一个纯 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 上对其进行了测试

于 2009-10-05T23:08:14.280 回答
8

pyPortMidi是 PortMidi 的 Python 包装器,它被描述为“用于实时 MIDI 控制的跨平台 C 库”。我自己没用过,但看起来很有前途。明确提到能够实时发送 MIDI 数据。

于 2009-02-20T12:09:15.547 回答
7

如果您只需要生成 Midi 或处理 midi 文件,请尝试mingus,它是一个很棒的包,它还允许更高的抽象,例如和弦、和弦进行、音阶等。

于 2010-09-14T19:46:20.833 回答
5

我尝试了 wiki http://wiki.python.org/moin/PythonInMusic上列出的八个软件包。我发现music21(http://web.mit.edu/music21/)是那个

  • 最全面的
  • 最好的教程
  • 最容易安装在windows上

但至于您对简单的要求,我认为这不是最简单的。但我无法让任何其他程序以稳健的方式读取 MIDI 文件(我有各种奇怪而美妙的 MIDI 文件格式)

于 2013-03-19T20:39:40.167 回答
4

pyGame 1.9 中添加了 Midi 支持(输入和输出),虽然它主要处于开发阶段并且还没有很好的文档记录,但它可以工作。

pyGame 的后继者 pgreloaded(或 pygame2)也正在开发 Midi 支持。

另请注意,尽管 pyGame 的标题中有“游戏”,但它的用途远远超出了游戏设计。

于 2009-05-19T18:36:56.423 回答
-3

看看cSounds

于 2009-02-20T12:22:46.730 回答