C++编程的 DAW 用于图形渲染和音频输出



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

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

经过几次(术语非常不同的)谷歌搜索,我无法找到有关此主题的数据。谁能给我信息来帮助我开始编写 DAW?

如果你想知道,我正在写一个DAW,主要是因为我需要一个,我喜欢拥有一个可以自定义,改变什么做什么等等的想法;也是为了好玩。我倾向于写一些真正高级和高级的项目,尽管我几乎没有完成任何项目...... ;)

首先,完全可以编写稳定的节拍器并正确处理任何语言的计时。例如,许多基本的基于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 在 May 平台上运行,用 C 编写,良好的社区支持,比任何现有的 API 都更易于使用。

确保你也看看Juce,RTAudio和STK。为了回答您的问题,Juce 被许多商业插件和 DAW 编写者使用,Ableton 使用他们自己的库集。

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

Ardour使用GTK+表示GUI,使用插孔表示音频。

最新更新