C / C ++ / Objective-C中的声音合成框架?

时间:2009-08-10 10:50:54

标签: audio synthesizer sound-synthesis

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

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

6 个答案:

答案 0 :(得分:9)

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

link1 link2

如果你有空闲时间......从头开始创建简单的声音合成实际上是一种有趣的尝试。如果您创建256个16位样本的小缓冲区,它们表示正弦。一个锯齿,块或脉冲,你可以将它们复制到一个不断循环的实时音频缓冲器(例如一个小缓冲器(比如16kb))。通过保持在游戏位置之前,并不断用新值填充缓冲区,您可以创建声音输出。 您可以使用小缓冲区以有趣的方式组合它们(最简单的方法是将它们加在一起(添加剂合成))。

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

非常有趣地试验这个!

如果你有这个步骤钉,你可以添加更复杂的效果,如滤镜(低通,高通等)和效果(混响,回声等)

[R

答案 1 :(得分:4)

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

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

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

答案 2 :(得分:4)

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

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

答案 3 :(得分:2)

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

答案 4 :(得分:1)

另一个C ++库是nsound:

http://nsound.sourceforge.net

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

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

答案 5 :(得分:-1)

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