我想在c++中开始一个项目,这将允许我使用float y = sin(2 * PI * f * t);
, FM合成等功能创建声音,以及其他更复杂的算法'。我在Mac OS X Lion上使用Xcode 4,但希望最终将该软件移植到Windows平台。我已经尝试了SFML 1.6和2.0,RTAudio和PortAudio库,但我无法用Xcode 4编译任何程序。一个窗口图形库和MIDI支持将是额外的,但我不需要它。
有没有你曾经成功使用过的库和方法?如果前面提到的库对你有用,你是如何让它在Xcode 4中编译的?
我为Windows和Mac创建了一个名为"Crosstalk"的c++音频库。
这是一个实时的c++音频引擎,允许你实时创建和路由音频系统。基本上,引擎会处理所有的音频路由,并为你提供一个创建系统组件的简单平台。"FM合成器"组件连接到"低通滤波器"连接到"音频设备"one_answers"文件记录器")。
它很容易使用。下面是一个如何播放mp3文件的示例(这些组件与引擎一起提供):
XtSystem system;
XtMp3Decoder mp3Decoder;
XtAudioDevice audioDevice;
long md = system.addComponent(&mp3Decoder);
long ad = system.addComponent(&audioDevice);
system.connOutToIn(md,0,ad,0);
system.connOutToIn(md,1,ad,1);
mp3Decoder.loadFile("../05 Tchaikovski-Swan Lake-Scene.mp3");
mp3Decoder.play();
包括在Crosstalk的例子Xcode和Visual Studio项目。
您可以在这里下载Crosstalk并查看API文档和许可详细信息:http://www.adaptaudio.com/Crosstalk
编辑(01-12-2012):
Crosstalk已经被一个叫做"DSPatch"的开源项目所取代。DSPatch本质上是Crosstalk背后路由引擎的升级版本,不再局限于音频处理。DSPatch允许您创建和路由几乎可以想象的任何类型的过程链,并且免费用于个人和专有用途:)
libsndfile可能对你有帮助
http://www.mega-nerd.com/libsndfile/