用于实时应用的音频/ MIDI C++库

Kil*_*KRT 16 c++ audio midi real-time openal

正如我在另一个帖子中已经说过的那样,我正在开发一个与音频实时图形编程相关的项目(类似Pure Data,Max/MSP,Reaktor).

我在互联网上做了一天的研究,寻找一个好的(维护的,文档齐全的,高度可移植的)C++库,用于与音频和MIDI的低级交互,但我仍然无法决定一个库.

我正在考虑PortAudio + PortMIDI(PortMedia),但他们缺少文档(特别是PortMIDI),并且没有官方社区,只有邮件列表(我认为论坛社区非常重要!),同样(或最差)的情况RTAudioRTMidi库.

我也尝试一下:

  • STK,我不喜欢它的文件组织.
  • Juce,我认为它对我来说太过分了,我只需要简单的硬件集成
  • OpenAL,我不了解它的架构,它依赖于ASIO/ALSA/CoreAudio ......?我可以访问MIDI端口吗?

所以...我的问题是:你有任何实时音频/ MIDI的经验吗?你推荐我哪个图书馆?

谢谢

bgp*_*ter 6

我已经同时使用PortAudio/PortMidi和Juce两者都有很好的效果.我正在将项目从PortMidi切换到Juce,因为对于我的用途,所有其他应用程序框架的东西最终都非常有用(根据我的经验,它非常坚固.).因人而异.


小智 6

我创建了一个名为"Crosstalk"的C++音频库.

Crosstalk是一个实时C++音频引擎,允许您实时创建和路由音频系统(几乎是您尝试以图形方式实现的),并且它非常易于使用.

这是一个如何播放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();
Run Code Online (Sandbox Code Playgroud)

您可以在此处查看API文档和许可详细信息:http: //www.adaptaudio.com/Crosstalk

编辑(01-12-2012):

串扰已被一个名为" DSPatch " 的开源项目所取代.DSPatch本质上是Crosstalk背后的路由引擎的升级版本,不再局限于音频处理.DSPatch允许您创建和路由几乎任何类型的可想象的流程链,并且免费供个人和专有使用:)