【问题标题】:Audio/MIDI C++ library for a real-time application用于实时应用程序的音频/MIDI C++ 库
【发布时间】:2011-08-02 12:17:14
【问题描述】:

正如我已经说过的in another thread,我正在从事一个与音频实时图形编程相关的项目(例如 Pure Data、Max/MSP、Reaktor)。

我在 Internet 上进行了一天的研究,寻找一个好的(维护良好、文档齐全且高度可移植的)C++ 库,用于与音频和 MIDI 进行低级交互,但我仍然无法确定库。

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

我也试试:

  • STK,我不喜欢它的文件组织方式。
  • Juce,我觉得这对我来说太多了,我只需要一个简单的硬件集成
  • OpenAL,我没看懂它的架构,它依赖于ASIO/ALSA/CoreAudio...?我可以访问 MIDI 端口吗?

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

谢谢

【问题讨论】:

  • 您可能只考虑音频功能并单独实现 MIDI。 MIDI 并不太复杂,而且延迟已经很低了。
  • OpenAL 在多平台方面非常出色。它没有 MIDI,但使用一个专门的 MIDI 库应该没有问题。
  • 仅供参考,Portaudio 社区通过他们的邮件列表非常活跃,他们也非常开放的反馈和问题。

标签: c++ audio real-time midi openal


【解决方案1】:

我使用过 PortAudio/PortMidi 和 Juce,两者都取得了很好的效果。我正在将一个项目从 PortMidi 切换到 Juce,因为对于我的使用来说,所有其他应用程序框架的东西最终都非常有用(而且根据我的经验,它坚如磐石。)。 YMMV。

【讨论】:

    【解决方案2】:

    我还推荐 openFramworks:http://www.openframeworks.cc/ 它适用于各种媒体、交互……它有一个非常易于使用/理解的 API,它也有很好的文档记录。只需点击上面的链接并查看它。

    祝你好运,Audiodroid

    【讨论】:

      【解决方案3】:

      我创建了一个名为“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();
      

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

      编辑(01-12-2012):

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

      【讨论】:

        【解决方案4】:

        this tutorial series 中有一篇关于reacting to MIDI data 的帖子。它还涵盖了其他主题,例如综合等。

        【讨论】:

        • VST/AU 开发的好教程!实际上我的问题与另一个主题有关......无论如何,非常感谢,它看起来很有趣而且写得很好!
        猜你喜欢
        • 2011-12-28
        • 1970-01-01
        • 1970-01-01
        • 2020-09-22
        • 1970-01-01
        • 2010-12-17
        • 2011-06-15
        • 1970-01-01
        • 2011-04-15
        相关资源
        最近更新 更多