【发布时间】:2010-11-18 06:17:02
【问题描述】:
我在网上搜索过,但没有发现任何有趣的东西。也许我做错了什么。
我正在寻找用C、C++甚至Objective-C编写的声音合成API,它可以合成不同类型的波,效果是可选的。
【问题讨论】:
标签: audio synthesizer sound-synthesis
我在网上搜索过,但没有发现任何有趣的东西。也许我做错了什么。
我正在寻找用C、C++甚至Objective-C编写的声音合成API,它可以合成不同类型的波,效果是可选的。
【问题讨论】:
标签: audio synthesizer sound-synthesis
这是一个完整的 FM(频率调制)合成库/工具包:
如果您有时间...从头开始创建简单的声音合成实际上是一项有趣的工作。如果您创建一个包含 256 个 16 位样本的小缓冲区,这些样本代表正弦。锯齿,块或脉冲,您可以将它们复制到不断循环的实时音频缓冲区(例如一个小缓冲区(例如 16kb))。通过保持在播放位置之前,并不断用新值填充缓冲区,您可以创建声音输出。 您可以使用小缓冲区以有趣的方式组合它们(最简单的方法就是将它们加在一起(加法合成))。
可以通过小缓冲区使用更大或更小的采样步长来控制音调的频率。在将样本放入输出缓冲区之前,可以通过缩放样本来控制幅度。
尝试这个非常有趣!
如果您已经完成了这一步,您可以添加更复杂的效果,例如过滤器(低通、高通等)和效果(混响、回声等)
R
【讨论】:
您是否查看过综合工具包 (STK)?它在 C++ 中(我不认为 ObjC 是音频合成的正确语言,实际上是音频单元,Apple 自己的音频处理方式,包括生成器/过滤器/效果......在 C++ 中)。
STK 可以在 Mac OS X 和 iOS 上运行(支持 CoreAudio),但也可以在 Linux 和 Windows(Direct sound 和 ASIO)上运行,使用 RtAudio。它真的做得很好而且很轻,这些家伙花了很多时间思考它,它肯定会给你一个很大的开端。它可以处理大量不同的音频文件格式 + midi(希望 OSC 很快......)。
还有 Create 和巨大的 CLAM,它们包括 GUI 组件和许多其他您可能想要或可能不想要的东西。如果你只对声音合成感兴趣,我真的推荐 STK。
【讨论】:
PortAudio 也是我们上学期在音频编程课程中使用的一个很棒的 C API。它提供了一个音频回调......你还需要什么!?
我还没有尝试将它与 Objective-C 中的任何东西结合起来,但当我这样做时会报告。
【讨论】:
另一个 C++ 库是 nsound:
可以使用 Generator 类或提供的 Sine 类生成任何类型的调制信号。每个时间步长都有自己的瞬时频率和相位偏移。
您还可以尝试使用 Python 模块快速构建算法原型,然后在 C++ 中实现。它可以从 Python 甚至 C++ 生成漂亮的 matplotlib 图!
【讨论】:
你看过CSound吗?这是一个非常灵活的音频生成平台,可以处理从简单的波形生成到 FM 合成和各种滤波器的所有事情。它还提供 MIDI 支持,您可以通过编写自定义操作码来扩展它。还有一个 full C API 和几个 C++ API。
【讨论】: