我正在尝试编写一个软件合成器,以重现由 Moog 和 DX7 等经典合成器发出的声音。有谁知道这样的代码资源?谢谢。
12 回答
那里有很多 C/C++ 库,大多数不再更新。C# 的内容不多,但我见过几个。我还没有真正使用它们中的任何一个,所以我不能给出任何建议。
我会从Harmony Central开始,看看你是否在那里找到任何有用的东西。
或者,在 sourceforge.net 上搜索模拟合成有很多结果。
斯坦福大学的CCRMA可以成为音频软件的良好资源。 C++ (STK) 中的 Synthesis ToolKit看起来可以帮助您。
穆格和雅马哈 DX7 截然不同。DX7 使用 FM 合成,这很奇怪。与 Moog 等常见的 VCO/VCA/VCF 类似物非常不同。
很长一段时间以来,雅马哈一直在为自己的调频专利辩护,但我相信它们都已经过期了。卡西欧的相位失真类似于雅马哈的 FM,并设法避免了雅马哈的愤怒(据我所知)。
我会从选择其中一个开始。自从 Nord Lead 和 Access Virus 出现以来,Virtual Analog(模拟模拟合成器)就风靡一时。而且更容易思考。所以如果你想和时髦的人群一起走,我会走那条路。
从好的限带振荡器开始,制作一个包络发生器,做一个滤波器。如需灵感,请查看Welsh 的 Synthesizer Cookbook,了解如何使用双振荡器合成器制作各种声音。我将从实现这些补丁所需的最低功能开始。
FM 和 PD 很狂野。如果你走这条路,那就是将足够多的 FM 操作员以有趣的配置链接在一起,以获得一系列有趣的声音。警告:要避免 FM 中的混叠需要做很多工作。
Synthmaker 和 SynthEdit 将为您生成 VST 代码。SynthEdit 肯定会输出未编译的 C++ 源文件,而且是免费的。
最好的办法是查看KvR 的开发者论坛。他们将能够为您指明最佳开源 DSP/合成引擎的方向,以及一些您可以从中获得灵感的开源 VSTi 插件。不过,这一切都将在 C/C++ 中。目前托管代码中只有最基本的音频合成可用。
查看Python 音乐库问题的答案。虽然问题是“Python”,但 Python 是基于 C 构建的。因此,任何可从 Python 中使用的东西都将具有 C 库。
Chuck是我所知道的最好的,但它类似于 C++,而不是 C++。
我编写了一个简单的合成器库作为 iPhone 应用程序的一部分。也许它也可以满足您的合成器需求。也许不是。 http://mobilesynth.googlecode.com/svn/trunk/mobilesynth/Classes/synth/
这些教程(尤其是从第 8 部分开始)涵盖了用 C++ 编写经典减法合成器的所有部分:振荡器、包络、滤波器和 LFO。
我在BASS 库上取得了一些成功,但是当我上次使用它时,它的 .Net 支持有点粗糙。它主要是低级流编码等,但它确实支持一些 DX8 效果。
您可能想查看有关 CodeProject 的两篇文章。Leslie Stanford 用 C# 创建了一个 Synth 工具包(据我所知,它是完全托管的)。
C# Synth 工具包 - 第 I 部分 C# Synth 工具包 - 第 II 部分
另外,我刚刚发现这个 StackOverflow Question有一些很好的链接,虽然它与 Java 相关