音频/ MIDI C++库的实时应用
正如我已经说过in another thread,我的工作有关的实时图形化编程,用于音频的项目(像纯粹的数据,最大/ MSP,Reaktor的) 。我对互联网做了一整天的研究,寻找一个良好的(维护的,有据可查的和高度可移植的)C++库,用于与音频和MIDI的低级交互,但是我仍然无法对图书馆下定决心。音频/ MIDI C++库的实时应用
我考虑PortAudio + PortMIDI(PortMedia),但他们缺乏文件(特别是PortMIDI),并没有正式的社区,只是一个邮件列表(我认为论坛社区是非常重要的!),相同(或最坏的情况)RTAudio和RTMidi库。
我也给一个尝试:
- STK,我dodn't喜欢它的文件组织。
- Juce,我认为它确实太多了,我只需要一个简单的硬件整合
- OpenAL,我不明白它的建筑,它依赖于ASIO/ALSA/CoreAudio的......?我可以访问MIDI端口吗?
所以...我的问题是:你有任何实时音频/ MIDI的经验吗?你推荐我哪个图书馆?
感谢
我用两个PortAudio/PortMidi和JUCE有两个很大的成效
。我在从PortMidi到JUCE,在切换项目的过程中,因为我使用所有其他应用程序框架的东西最终是非常有用的(在我的经验,这是坚如磐石的。)。因人而异。
我也推荐openFramworks:http://www.openframeworks.cc/这意味着适用于各种媒体,交互......,它有一个非常易于使用/理解的API,它也有很好的文档记录。只要按照上面的链接,并检查出来。
祝你好运,Audiodroid
我已经创建了一个C++命名为 “串扰” 音频库。
串扰是一个实时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();
您可以检查出的API文档和许可的细节在这里: http://www.adaptaudio.com/Crosstalk
EDIT(2012年1月12日):
串扰已被取代所谓的“DSPatch”一个开源项目。 DSPatch实质上是Crosstalk背后的路由引擎的升级版,不再仅限于音频处理。DSPatch允许您创建和路由几乎任何类型的可以想象的过程链,并免费供个人使用和专有使用:)
哇!这是一个伟大的图书馆!我唯一关心的是它的支持和维护。这似乎是非常普遍的目的,它可能是一个专业和一个缺点。无论如何伟大的工作! – 2013-10-06 08:44:25
在this tutorial series有一篇关于reacting to MIDI data的文章。它还涵盖其他主题,例如合成等。
伟大的VST/AU开发教程!其实我的问题与另一个话题有关......无论如何非常感谢,它似乎非常有趣,写得很好! – 2013-10-06 08:38:14
您可能会考虑只是音频功能并分别实现MIDI。 MIDI不是太复杂,而且延迟已经很低了。 – Brad 2011-04-10 16:50:00
当涉及到多平台时,OpenAL非常好。它没有MIDI,但使用仅用于MIDI的独立库应该没有问题。 – 2011-04-10 17:21:26
仅供参考Portaudio社区通过他们的邮件列表非常活跃,他们也非常开放,反馈和问题。 – 2012-04-08 02:32:51