【问题标题】:What do DAWs programmed in C++ use for graphic rendering and audio output?用 C++ 编程的 DAW 使用什么来进行图形渲染和音频输出?
【发布时间】:2012-05-29 14:13:04
【问题描述】:

标题说明了一切 - 用 C++ 编写的数字音频工作站(如 Ableton)使用什么库或代码或任何东西来渲染其图形和播放音频?

在发现 C# + XNA 对于基于计算机的 daws 来说是一个糟糕的选择之后——我开发了节拍器之后几乎没有正确地“击中”它,当我修复它时,它会失控——我决定现在我会切换到 C++,因为 C++ 是一种中级语言,而 C# 是高级语言;也因为跨平台兼容性。

经过几次(使用极其不同的术语)Google 搜索后,我无法找到有关此主题的数据。谁能给我一些可以帮助我开始编写 DAW 的信息?

如果您想知道,我正在编写 DAW 主要是因为我需要一个 DAW,而且我喜欢拥有一个我可以自定义、更改做什么等的想法;也为了好玩。我倾向于编写像这样的真正高级和高级项目以获得乐趣,尽管我几乎没有完成任何... ;)

【问题讨论】:

    标签: c++ audio graphics render


    【解决方案1】:

    首先,完全有可能编写稳定的节拍器并正确处理任何语言的计时。例如,大量基于 Web 的基本 DAW 是用 Java 和 Flash 编写的。今天的 Google (moog) 涂鸦在 HTML5/Javascript 中运行(如果你有 chrome)。高级语言往往让您对垃圾收集等事情的控制较少,这通常意味着您无法实现低延迟,但除非您做错了什么,否则时间永远不会成为问题。

    现在,回答这个问题:

    大多数专业的商业 DAW 使用自己的库直接与系统提供的 API 交互。对于音频,在 linux 上,这意味着 OSS 或 Alsa; Mac OS X:核心音频; Windows 有很多音频 API,因为它们讨厌你。一些公司,比如 Avid,有他们的 API,因为他们也讨厌你,但他们的硬件与标准 API 兼容,因为他们并不真的讨厌你。

    对于图形:使用您的系统支持的任何图形库。对于可移植性,Qt 和 OpenGL 是不错的选择。我确定还有其他人。实际上并没有任何标准库来显示波形或任何东西——你自己做。正确有效地做到这一点并不容易,但这也不是火箭科学。就显示而言,您还可以毫无问题地选择使用高级语言。

    你也可以考虑使用http://www.openframeworks.cc/http://libcinder.org/

    对于音频,您可以使用非常流行的 PortAudio 库:http://www.portaudio.com/

    PortAudio 可在多种平台上运行,使用 C 语言编写,具有良好的社区支持,并且比任何一种现有 API 都更易于使用。

    【讨论】:

      【解决方案2】:

      确保您还查看了JuceRTAudioSTK。 为了回答您的问题,Juce 被许多商业插件和 DAW 编写者使用,而 Ableton 使用他们自己的一组库。

      【讨论】:

        【解决方案3】:

        Qt with OpenGL(通过 QGLWidget)用于快速更新视图,非常适合我的 DAW 应用程序...

        【讨论】:

        • 你用什么做音频输出?我需要知道要包含什么库,之后我不需要任何帮助
        • 我自己的应用程序输出到专有硬件设备,但 Qt 包含一个 QAudioOutput 类,如果您想保持可移植性,您可以使用它。否则,Bjorn 在上面有一些很好的建议。
        【解决方案4】:

        Ardour 将 GTK+ 用于 GUI,jack 用于音频。

        【讨论】:

          猜你喜欢
          • 2012-07-12
          • 2015-04-23
          • 2014-08-01
          • 1970-01-01
          • 1970-01-01
          • 2012-01-01
          • 1970-01-01
          • 2021-12-03
          • 2023-03-14
          相关资源
          最近更新 更多