我在网上搜索过但没有发现任何有趣的东西。也许我做错了什么。
我正在寻找用C,C ++甚至Objective-C编写的声音合成API,它可以合成不同类型的波,效果是可选的。
答案 0 :(得分:9)
这是一个用于FM(调频)合成的完整库/工具包:
如果你有空闲时间......从头开始创建简单的声音合成实际上是一种有趣的尝试。如果您创建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)
答案 4 :(得分:1)
另一个C ++库是nsound:
可以使用Generator类或使用提供的Sine类生成任何类型的调制信号。每个时间步长都可以拥有自己的瞬时频率和相位偏移。
您还可以尝试使用Python模块快速构建算法原型,然后在C ++中实现。它可以从Python甚至从C ++生成漂亮的matplotlib图!
答案 5 :(得分:-1)
你看过CSound了吗?它是一个非常灵活的音频生成平台,可以处理从简单的波形生成到FM合成以及各种滤波器的所有内容。它还提供MIDI支持,您可以通过编写自定义操作码来扩展它。还有一个full C API和几个C ++ API。