跳轉到內容

ZynAddSubFX/PADsynth

0% developed
來自華夏公益教科書,開放的書籍,開放的世界
諧波結構編輯器
振盪器結構編輯器
包絡線和 LFO 振幅編輯器
包絡線和 LFO 頻率編輯器
包絡線和 LFO 濾波器編輯器
  1. 演算法
  2. 輸入和輸出
  3. 實現

即使它的想法比其他演算法簡單得多,這個演算法也能生成非常優美的音色。它生成一個可以用於樂器的完美迴圈的波表樣本。它可以輕鬆地生成合奏、合唱、金屬聲(鈴聲)和其他許多音色。

該演算法是公有領域的。此頁面包含一些可在您的專案或產品中使用的公有領域 C/C++ 實現原始碼。

該演算法在 ZynAddSubFXPADsynth 模組中實現,您可以下載它來親自聽聽它可以生成多麼優美的音色。

該演算法的原始碼可以免費用於在許多軟體/硬體合成器中實現。如果您的合成器使用大量樣本,您可以使用該演算法生成許多即用型樣本。

使用此演算法的樂器的音訊示例

[編輯 | 編輯原始碼]

這些音訊示例是由 ZynAddSubFX 生成的。所有樂器的波表都是由該演算法生成的。這些示例分為兩類

帶效果

[編輯 | 編輯原始碼]

在本類別中,使用了一些效果。這些效果可以是混響、相位器等。大多數情況下,唯一的音效是混響。

不帶效果

[編輯 | 編輯原始碼]

本類別中所有的樂器都是“幹”的。沒有混響,沒有其他效果。

技巧和建議

[編輯 | 編輯原始碼]
  1. 請記住,生成的波表是完美迴圈的
  2. 將波表用於樂器時,在每個 NoteOn 時,從隨機位置開始,而不是從開頭開始。這樣可以避免在每次按鍵時聽到相同的聲音
  3. 您可以使用相同的波表生成立體聲聲音,方法是在左右聲道播放相同的波表,但位置不同。最佳方法是使左右聲道之間的差異為 N/2
  4. 為不同的音高生成不同的波表,並使用最接近所需音高的波表
  5. 在執行演算法之前,根據基頻對諧波的幅度陣列進行上取樣或下采樣。在這種情況下,我們需要設定一個引數 “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 點。
  • 源文字:此頁面的原始內容(包括影像、音訊等)是根據公共領域釋出的。


華夏公益教科書