ZynAddSubFX/PADsynth
外觀
(從 PADsynth 合成演算法 重定向)





即使它的想法比其他演算法簡單得多,這個演算法也能生成非常優美的音色。它生成一個可以用於樂器的完美迴圈的波表樣本。它可以輕鬆地生成合奏、合唱、金屬聲(鈴聲)和其他許多音色。
該演算法是公有領域的。此頁面包含一些可在您的專案或產品中使用的公有領域 C/C++ 實現原始碼。
該演算法在 ZynAddSubFX 的 PADsynth 模組中實現,您可以下載它來親自聽聽它可以生成多麼優美的音色。
該演算法的原始碼可以免費用於在許多軟體/硬體合成器中實現。如果您的合成器使用大量樣本,您可以使用該演算法生成許多即用型樣本。
這些音訊示例是由 ZynAddSubFX 生成的。所有樂器的波表都是由該演算法生成的。這些示例分為兩類
在本類別中,使用了一些效果。這些效果可以是混響、相位器等。大多數情況下,唯一的音效是混響。
|
|
|
| 無法收聽這些檔案?請參見 媒體幫助. | |
本類別中所有的樂器都是“幹”的。沒有混響,沒有其他效果。
|
|
|
| 無法收聽這些檔案?請參見 媒體幫助. | |
- 請記住,生成的波表是完美迴圈的
- 將波表用於樂器時,在每個 NoteOn 時,從隨機位置開始,而不是從開頭開始。這樣可以避免在每次按鍵時聽到相同的聲音
- 您可以使用相同的波表生成立體聲聲音,方法是在左右聲道播放相同的波表,但位置不同。最佳方法是使左右聲道之間的差異為 N/2
- 為不同的音高生成不同的波表,並使用最接近所需音高的波表
- 在執行演算法之前,根據基頻對諧波的幅度陣列進行上取樣或下采樣。在這種情況下,我們需要設定一個引數 “base_frequency”,它表示陣列保持不變的頻率。
示例:我們有 A_orig[]={1,2,1,3,0,0,1,0} 並且 base_frequency 等於 440 Hz
以下是一些情況
- A[] for 440 Hz:與 A_orig[] 相同
- A[] for 220 Hz:將 A_orig[] 上取樣 2 倍
所以:A[]={1, 1, 1.5, 2, 1.5, 1, 2, 3, 1.5, 0, 0, 0, 0.5, 1, 0.5, 0}
(原始 A_orig 幅度以粗體顯示)
- A[] for 880 Hz:將 A_orig[] 下采樣 2 倍
所以:A[]={1.5, 2, 0, 0.5}
- A[] for F Hz:將 A_orig[] 乘以 440/F。
即使這個想法非常簡單,但結果的聲音非常自然,因為它根據諧波的頻率而不是諧波的編號來保持頻譜恆定。這遵循了我在文件中描述的一些關於合成的原理的第 4 點。
- 源文字:此頁面的原始內容(包括影像、音訊等)是根據公共領域釋出的。
