2011-06-26 276 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