2

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

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

经过几次(使用极其不同的术语)谷歌搜索后,我无法找到关于这个主题的数据。谁能给我帮助我开始编写 DAW 的信息?

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

4

4 回答 4

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 都更易于使用。

于 2012-05-23T22:44:36.047 回答
1

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

于 2012-06-20T23:24:34.527 回答
0

用于快速更新视图的 Qt 与 OpenGL(通过 QGLWidget)适用于我的 DAW 应用程序......

于 2012-05-23T03:46:32.387 回答
0

Ardor使用 GTK+ 作为 GUI,使用插孔作为音频。

于 2012-06-20T23:29:13.780 回答