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