RtAudio 或 PortAudio,该使用哪一个?

发布于 2024-10-20 04:20:04 字数 439 浏览 2 评论 0原文

我正在考虑 RTAudio + RTMidiPortAudio + PortMidi 用于需要实时音频和 midi 处理的新项目。有使用这两个库经验的人可以推荐其中一个吗?为什么? 与 C API 相比,我更喜欢 C++ API,但这不足以让我做出决定。

I'm considering RTAudio + RTMidi and PortAudio + PortMidi for a new project that requires realtime audio and midi procesing. Can anyone with experience using both libraries recommend one over the other? why?
I prefer a C++ API over a C API but this is not enough for me to make a decision.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

泼猴你往哪里跑 2024-10-27 04:20:04

很长一段时间以来,我一直在锁定与这种需求的完美匹配。
现在我更喜欢

  • 端口音频:

    • (+) 在 Windows 上,支持 asio、DirectSound、MME、WASAPI(头疼)
    • (+) 在 Linux 上,支持 ALSA、OSS、Pulse、JACK
    • (+) 在 Mac 上,支持 Core Audio
    • (+) 非常活跃的项目,一些优秀的专家正在开发它)。
    • (+) 被许多非常成功的应用程序使用 + C++ 不是原生的,但有一个绑定集成到主分支(我认为是从去年开始)
    • (+) libsdnfile 非常可靠(非常棒)
    • (-) 它不是原生 C++
    • (-) 项目、配置、集成非常烦人
    • (-) 适用于多个平台(debian、osx、7:我自己的经验)
    • (-) 在谷歌搜索答案时,大部分文档都很糟糕,而且大多已经过时且相互矛盾
  • rt audio

    • (+) 在 Windows 上,支持 asio、DirectSound、WASAPI(截至 2014 年 10 月 4 日)
    • (+) 在 Linux 上,支持 ALSA、OSS、Pulse、JACK
    • (+) 在 Mac 上,支持 Core Audio
    • (+) 原生 C++,
    • (+) 很容易上手
    • (-) 不太活跃
    • (-) 大部分文档都很糟糕,而且大多已经过时且相互矛盾
      当谷歌搜索答案时

  • Qt:

    • (-) 很重,不完全是我想要的
    • (-) 实时音频支持是最新的且不稳定
    • (+) 如果您使用 QtCreator,则易于使用(如果使用带有 Visual 的 QtAddon,则使用起来会更少,而使用 xcode 则使用起来会更少)
    • (+) MIDI 集成
  • Juce:

    • 类java设计
    • 很重,不完全是我想要的
    • 简单,而且运行良好(使用专业音频)
    • 集成midi,aiff、wave、flac文件读取

I have been locking for the perfect match with that need for a quite long time.
For now I prefer

  • port audio:

    • (+) on Windows, supports asio, DirectSound, MME, WASAPI (with header headaches)
    • (+) on Linux, supports ALSA, OSS, Pulse, JACK
    • (+) on Mac, supports Core Audio
    • (+) very active project,and some good gurus are developing it).
    • (+) used by many very successful apps + the C++ is not native but there is a binding that is integrated to the main branch (since last year i think)
    • (+) It's really reliable with libsdnfile (which is great)
    • (-) It's not native c++
    • (-) the projects, configure, integration is pretty annoying
    • (-) working well for multiple platforms (debian, osx, seven : my own experience)
    • (-) much of the documentation sucks and is mostly outdated and contradictory when googling for answers
  • rt audio

    • (+) on Windows, supports asio, DirectSound, WASAPI (as of 10-04-2014)
    • (+) on Linux, supports ALSA, OSS, Pulse, JACK
    • (+) on Mac, supports Core Audio
    • (+) native c++,
    • (+) really easy to get into it
    • (-) not so much active
    • (-) much of the documentation sucks and is mostly outdated and contradictory
      when googling for answers

other solutions :

  • Qt :

    • (-) heavy, not exactly what i'm looking for
    • (-) real time audio support is recent and not stable
    • (+) easy to use if you use QtCreator (and less if using QtAddon with visual, and less with xcode)
    • (+) midi integrated
  • Juce:

    • java like design
    • heavy, not exactly what i'm looking for
    • simple, and working pretty well (used professional audio)
    • midi integrated, file reading of aiff and wave, and flac
始终不够爱げ你 2024-10-27 04:20:04

这是 Linux 音频开发列表中出现的相关主题。我为我的新应用程序采取的方法是为 jack 编写代码并在 linux+jack 中进行所有调试,然后对我最终发布的端口使用 RTAudio。

万岁!

使用portaudio获取jack采样率和缓冲区大小

Here's a relevant thread that came up on the Linux audio devel list. The approach I'll take for my new app(s) is to code for jack and do all my debugging in linux+jack and then use RTAudio for the ports I end up releasing.

Salud!

Getting jack sample rate and buffersize with portaudio

初吻给了烟 2024-10-27 04:20:04

PortAudio Java 绑定过于简单化。例如,您无法为设备访问设置独占模式或共享模式,这是一种耻辱,因为它实际上会减少您 7 毫秒的延迟 - 特别是当您在 Windows 10 下捕获麦克风输入(通常不需要共享访问)时。如果计算输出,您会损失 14 毫秒 RTT 来监控麦克风/其他设备。

RtAudio 现在似乎有 WASAPI 支持,但我不确定它是否比 PortAudio 更好。但是有 Java 绑定吗?我知道,这个问题没有被问到,但仍然......:)

另一个相当新的项目是 XtAudio。它将设备的独占和共享访问作为不同的设备集暴露给前端,并且通常似乎具有更好的 API 支持。不过,我认为它不支持 MIDI。

The PortAudio Java bindings are oversimplified. For example, you cannot set exclusive mode or shared mode for device access, which is a shame because it effectively steals 7ms of less latency from you -- especially if you capture microphone input (where usually no shared access is necessary) under Windows 10. If you count in output, you lose out on 14 ms RTT for monitoring your mic/stuff.

RtAudio seems to have WASAPI support now, but I'm not sure if it's better than PortAudio's. But are there Java bindings? Wasn't asked in the question, I know, but still ... :)

Another, rather new project is XtAudio. It exposes exclusive and shared access to devices as different sets of devices to the frontend and in general seems to have a better API support. Don't think it supports MIDI tho.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文