2011-06-26 239 views
10

我想要一个乐器库(例如,一个钢琴对象)的python实现,我可以用它来将音符列表和持续时间转换为声音。例如,像这样的东西:在Python中合成音符(用钢琴的声音)

import Piano 

pn = Piano() 
pn.play([note, note, ..., note], duration) 

是否有这样的python 2.7存在?如果没有,我想实施它。我目前有一些使用audiere的东西,但它只是正弦波,所以听起来很可怕。有没有办法挂钩到midi钢琴或类似的东西 - 我正在使用Windows 7?有没有我可能不期望的实施步骤?

+0

可能重复[如何合成的声音?](http://stackoverflow.com/questions/790960/how-to-synthesize-sounds) –

回答

8

@Marcelos答案的一个子集:http://code.google.com/p/mingus/

明格斯是使用Python的程序员,音乐家,作曲家和研究人员进行调查和音乐包。 音乐理论的核心是音乐理论,其中包括间隔,和弦,音阶和进步等主题

MIDI包可以保存和加载MIDI文件,并且 - 最后但并非最不重要 - 为所有容器和FluidSynth顺序器子类提供了一个通用的顺序器。 这使您可以直接从Python中播放所有数据结构,只需几行。大部分时序和MIDI代码已经被抽象出来,留下一个干净,相对简单的API。

+0

谢谢,这确实回答了这个问题。对于感兴趣的各方,我最终用[midiutil](http://code.google.com/p/midiutil/)创建了我想要的东西。 –

+0

这是一个很棒的图书馆。感谢你的回答! –

1

看看here比您曾经想要知道的关于在Python中播放音乐更多。

11

我的一个学生刚开始使用明格斯做就如何让Linux的打算只是这个所以这里的快速指南(Ubuntu的):

安装fluidsynth和明格斯,如果你没有他们已经:

$命令和apt-get安装fluidsynth

$须藤的easy_install明格斯

现在你应该能开蟒蛇类型:

>>> from mingus.midi import fluidsynth 
>>> fluidsynth.init('/usr/share/sounds/sf2/FluidR3_GM.sf2',"alsa") 

这将导入必要的东西从明格斯和初始化fluidsynth通过ALSA玩(不是杰克这是默认值)。然后:

>>> fluidsynth.play_Note(64,0,100) 

...你会听到一个音符演奏了钢琴(参数为:音符编号,通道数量和速度)。

欲了解更多信息,请浏览:

https://code.google.com/p/mingus/wiki/tutorialFluidsynth

+0

+1代码示例! – qed