2010-07-31 29 views
3

好吧,這個可能會離開左邊的區域,但我要試試。以編程方式創建Pad的聲音

墊是一種環境電子聲音,這種'嗡嗡'。類似 this

如何在代碼中生成此代碼?使用Processing,OpenFrameworks,C,Objective-C或C++。請記住,我沒有編程這麼久。

如果這會導致答案,我將非常感動!

好的...走吧!

回答

5

我從來沒有聽說過在這裏應用的術語「襯墊」,但它聽起來像合成器官的聲音,演奏主要和絃。作爲一個開始,爲了表示單個音符,您可以在音符的基本頻率(比如440Hz,如果我們正在談論一個A專業)生成正弦波,並且接下來的幾個倍數(880,1760) ,3520)並將它們與一些(遞減的)權重相加。然後添加以相同方式渲染的和絃(C#和E)的其他音符。

如果這聽起來對您有用至今,我可以根據需要進行擴展。編輯:通過「一些(遞減)權重」,我的意思是增加倍音倍數,例如,

F = 440; // Hz 
tone[t] = A * sin(t/F) + B * sin(t/(2*F)) + C * sin(t/(3*F)); // + etc, perhaps 

哪裏,或許,

A = 1.0; 
B = 1.0/2.0; 
C = 1.0/3.0; 

或一些這樣的事情。對於ADSR濾波器(看起來如此),您將在您選擇的「攻擊」期間將生成的波形乘以從0增加到1的放大倍數,然後在「衰減」期間下降到某個數值你選擇(也許是0.7),然後當你「釋放」持續音符時線性下降到0。

對於回聲/混響,您可以稍微延遲地將波形加回到自身中。

D = 4410; // 10 msec at 44.1 kHz., as an example value 
tone[t] += 0.5 * tone[t-D]; 
+0

是的,這是非常有用的。我已經在處理中實施它,並且它開始聽起來不錯。一些事情:1.你的意思是「一些減重」? 2.我聽說長時間的攻擊,釋放階段和大聲的延遲也會有所幫助,但不知道從哪裏開始編程。有什麼建議? – 2010-07-31 16:29:16

2

我不能幫你出具體的代碼示例,但我會說一些類似於你這個聲音樣本可以與FM(調頻)合成來完成。在你編寫任何代碼之前,你可能想要從互聯網上下載任何軟件FM合成器(有許多免費的,有些作爲獨立的應用程序,有些作爲VST插件)並且做一點實驗,如果你可以的話產生你想要的聲音,寫出相應的代碼。 (到那個時候,你很可能會知道你需要什麼樣的振盪器,頻率等組合)。

2

如果你在聲音編程方面沒有完成,你應該看看java的聲音,因爲它很容易學習和使用。我知道你已經標記了C *,但我不知道是否有這樣簡單的API等。

創建一個聲音基本上是grumdrig說的,你「只是」必須以這樣一種方式結合不同的波,你喜歡這種聲音。;-)