8

我在网上搜索过,但没有发现任何有趣的东西。也许我做错了什么。

我正在寻找用 C、C++ 甚至 Objective-C 编写的声音合成 API,它可以合成不同类型的波,效果是可选的。

4

6 回答 6

10

这是用于 FM(频率调制)合成的完整库/工具包:

链接1 链接 2

如果您有时间...从头开始创建简单的声音合成实际上是一项有趣的工作。如果您创建一个包含 256 个 16 位样本的小缓冲区,这些样本代表正弦。锯齿、块或脉冲,您可以将它们复制到不断循环的实时音频缓冲区(例如一个小缓冲区(例如 16kb))。通过保持在播放位置之前,并不断用新值填充缓冲区,您可以创建声音输出。您可以使用小缓冲区以有趣的方式组合这些(最简单的就是将它们加在一起(加法合成))。

可以通过小缓冲区使用更大或更小的采样步长来控制音调的频率。在将样本放入输出缓冲区之前,可以通过缩放样本来控制幅度。

尝试这个非常有趣!

如果你已经完成了这一步,你可以添加更复杂的效果,如过滤器(低通、高通等)和效果(混响、回声等)

R

于 2009-08-10T11:12:24.880 回答
4

你看过综合工具包(STK)吗?它在 C++ 中(我不认为 ObjC 是音频合成的正确语言,实际上是音频单元,Apple 自己的音频处理方式,包括生成器/过滤器/效果......在 C++ 中)。

STK 可以在 Mac OS X 和 iOS 上运行(支持 CoreAudio),但也可以在 Linux 和 Windows(Direct sound 和 ASIO)上运行,使用 RtAudio。它真的做得很好而且很轻,这些家伙花了很多时间思考它,它肯定会给你一个很大的开端。它可以处理大量不同的音频文件格式 + midi(希望 OSC 很快......)。

还有巨大的Create和 CLAM,其中包括 GUI 组件和许多其他您可能想要或不想要的东西。如果你只对声音合成感兴趣,我真的推荐 STK。

于 2011-10-03T14:42:11.277 回答
4

PortAudio 也是我们上学期在音频编程课程中使用的一个很棒的 C API。它提供了一个音频回调......你还需要什么!?

我还没有尝试将它与 Objective-C 中的任何内容结合起来,但是当我这样做时会报告。

于 2012-02-01T20:18:07.827 回答
2

在我看来,用 C/obj-C 编写音频合成算法相当困难。我建议使用PureData编写您的信号处理算法,然后使用ZenGardenlibpd在您的应用程序中嵌入和解释 pd 补丁。

于 2011-08-29T14:40:43.603 回答
1

另一个 C++ 库是 nsound:

http://nsound.sourceforge.net

可以使用 Generator 类或提供的 Sine 类生成任何类型的调制信号。每个时间步长都有自己的瞬时频率和相位偏移。

您还可以尝试使用 Python 模块快速构建算法原型,然后在 C++ 中实现。它可以从 Python 甚至 C++ 生成漂亮的 matplotlib 图!

于 2012-03-30T18:10:38.610 回答
0

你看过CSound吗?这是一个非常灵活的音频生成平台,可以处理从简单的波形生成到 FM 合成和各种滤波器的所有事情。它还提供 MIDI 支持,您可以通过编写自定义操作码来扩展它。有一个完整的 C API和几个 C++ API。

于 2009-08-10T11:27:28.923 回答