用Python合成音符(带钢琴音色)

时间:2011-06-26 22:37:02

标签: python audio midi

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

import Piano

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

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

2 个答案:

答案 0 :(得分:17)

我的一个学生刚刚开始使用mingus这样做,所以这里有关于如何开始使用linux(ubuntu)的快速指南:

如果您还没有,请安装fluidsynth和mingus:

$ sudo apt-get install fluidsynth

$ sudo easy_install mingus

现在你应该能够打开python并输入:

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

这会从mingus导入必要的东西并初始化fluidynth以通过alsa(而不是默认的jack)播放。然后:

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

...你应该听到钢琴上弹奏的音符(参数是:音符编号,频道编号和速度)。

欲了解更多信息,请访问:

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

答案 1 :(得分:10)

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

  

mingus是程序员,音乐家,作曲家和研究人员用来制作和研究音乐的Python软件包。 mingus的核心是音乐理论,其中包括间隔,和弦,音阶和进步等主题

     

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