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

Pat*_*t B 15 python audio midi

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

import Piano

pn = Piano()
pn.play([note, note, ..., note], duration)
Run Code Online (Sandbox Code Playgroud)

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

小智 17

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

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

$ sudo apt-get安装fluidynth

$ sudo easy_install mingus

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

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

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

>>> fluidsynth.play_Note(64,0,100)
Run Code Online (Sandbox Code Playgroud)

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

欲了解更多信息,请点击这里:

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


mik*_*iku 10

@Marcelos的一部分答案:http://code.google.com/p/mingus/

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

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