跳转到内容

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 点。
  • 源文本:此页面的原始内容(包括图像、音频等)是根据公共领域发布的。


华夏公益教科书