2013-10-29 68 views
5

我正在研究將吉他和絃轉換爲班卓琴和絃的應用程序,並且在構建對象時,我還想製作一種音頻「打印語句「這很快發揮了我選中/書寫的和絃。在蟒蛇中從頻率,和絃播放流式音效

我發現自己非常困惑於如何在沒有某種混合工作的情況下使用Python同時播放多個聲音,或者包含所有pygame或寫入文件。

我正在尋找的東西,可以...

  1. 採取頻率 - 就像440產生A,880來產生的,一個八度---作爲一個迭代
  2. 無需寫入磁盤即可播放,也可以通過MIDI設備播放。

我已經制定功能,可以從煩惱到的頻率,給儀器調絃轉換,並在這些基礎,我想說:

fretboard.play([440, 880]) 

,聽到提示音。或者如果我可以指定時間...

fretboard.play([(440,1), (880,1)]) 

要同時聽到每一秒鐘。

簡單地得到這種聲音的最佳方法是什麼,並希望如果我想創建一些原始旋律,讓我可以對其中的幾個進行排序?

此外,如果這僅僅是一種完全不同的編程,並且如果它看起來像我的問題是天真的(「嘿mittenchops,你需要了解更多關於渠道!」),請讓我知道,特別是如果你可以指導我獲得良好的學習資源。

回答

1

在早期尋找Python的聲音分析的同時,我偶然發現了這個網站PythonInMusic,它有很多Python的音樂軟件鏈接。

回過頭來看,我認爲我會嘗試用來實時輸出midi音符的第一件事叫做PyFluidSynth。這是一個Python的midi合成器。以下是他們網站的一些示例代碼:

import time 
import fluidsynth 

fs = fluidsynth.Synth() 
fs.start() 

sfid = fs.sfload("example.sf2") 
fs.program_select(0, sfid, 0, 0) 

fs.noteon(0, 60, 30) 
fs.noteon(0, 67, 30) 
fs.noteon(0, 76, 30) 

time.sleep(1.0) 

fs.noteoff(0, 60) 
fs.noteoff(0, 67) 
fs.noteoff(0, 76) 

time.sleep(1.0) 

fs.delete() 

希望能幫助您指出正確的方向!

+1

酷,謝謝!這是一個死了的項目還是什麼?我成功下載並安裝了它,然而,即使按照從https://code.google複製的示例進行操作。COM/P/pyfluidsynth /,我得到 ''' 進口時間 進口fluidsynth FS = fluidsynth.Synth(): 回溯(最近通話最後一個): 文件 「」,1號線,在 AttributeError的:「模塊」對象有沒有屬性「合成器」 ''' – Mittenchops

+1

你需要確保你已經安裝FluidSynth太(不只是PyFluidSynth) 下面是一篇文章的鏈接如何做到這一點在Windows :http://stackoverflow.com/questions/5783913/python-synthesize-midi-with-fluidsynth 一個d在Linux/OSX上更新它的鏈接(因爲在「需求」部分下列出了一個:http://sourceforge.net/apps/trac/fluidsynth/ – user1475777

+0

這些是MIDI音符,但不是頻率。嘗試將任意頻率轉換爲MIDI音符數字會產生'ArgumentError:參數3::錯誤類型' – endolith

1

如果你在窗戶上,你可以使用舊控制檯上使用的方法來同時播放多個音符 - 而不是同時播放例如C,E和G, C然後E然後G非常快,可能會保持在最後的音符(最好是補品)。這給出了和絃的效果,但如果你想演示吉他或班卓琴上不同的和絃聲音(包括不同方式演奏相同和絃之間的差異),它可能不夠好。但是,這種方法是可行的(至少在Windows上),而不使用標準庫之外的任何東西。

示例代碼:

import winsound 
import time 

def chord(root_frequency): 
winsound.Beep(int(root_frequency), 60) 
winsound.Beep(int(root_frequency*1.25), 60) 
winsound.Beep(int(root_frequency*1.5), 60) 
winsound.Beep(int(root_frequency*2), 100) 

while True: 
    chord(261.626) 
    time.sleep(0.35) 
    chord(261.626) 
    time.sleep(0.05) 
    chord(233.082) 
    time.sleep(0.35) 
    chord(233.082) 
    time.sleep(0.05) 
    chord(207.652) 
    time.sleep(0.35) 
    chord(207.652) 
    time.sleep(0.05) 
    chord(195.998) 
    time.sleep(0.35) 
    chord(195.998) 
    time.sleep(0.05)