【问题标题】:Creating a Digital Audio Workstation创建数字音频工作站
【发布时间】:2011-06-19 17:39:42
【问题描述】:

我正在尝试编写自己的 DAW,主要是为了了解如何处理信号以获得效果的数学知识,同时也是为了好玩。 (一项相当大的任务,但我现在有时间)。我希望它可以像Propellerhead's Record 这样在机架上工作。

我在 Mac 上运行,所以我正在考虑将音频单元用于不同的部分,然后将 Core Audio 用于脚手架部分。所以,整个事情将用 C 或 Obj-C 编写。

但是,我之前没有使用过 Audio Units 或 Core-Audio,并且互联网对学习没有任何帮助。

有人知道我在哪里可以了解这些吗? 或者 Java(我觉得使用起来很舒服的唯一其他语言)会更好,还是在尝试找到“简单”的方法时我完全错过了一些东西?

谢谢, 乔恩

【问题讨论】:

  • 如果您想了解数字信号处理/效果,我强烈建议您“只”编写 VST 插件。我目前也在做一个 DAW,我真的希望,我终于可以开始写效果了。 VST-plugin-programming 还将向您展示如何编写一个具有良好接口的 DAW 效果/插件。
  • 对于未来的访问者:另请查看web audio api。设置非常简单,Web 非常适合创建任何类型的 GUI。但不会运行 VST。

标签: java c audio


【解决方案1】:

如果你想写一个 DAW:

  • 至少,让您的脚湿透现有项目。如果我要亲自选择一个项目,我会为 Ardour 做出贡献。

  • DAW 中的信号处理相对简单。您必须使用混音器、文件和图形。如果您已经习惯于编写应用程序,那么您可能不会学到很多东西(除了基础知识)。当然,您可以找到一个现有项目,并使用与您想学习的内容相关的功能对其进行扩展;你可以为它编写插件或可视化。

如果更喜欢使用信号处理:

  • AU 或 VST 插件将是一个很好的介绍 - 您可以参考许多现有项目。最终,您会厌倦等待主机加载来测试您的程序。

语言:

  • objc 不能用于实时音频渲染。

  • java 对于这个应用程序来说是非常不寻常的。实际上有 AU 和 CoreAudio 的包装器......但不能为 OS X 命名一个商业 Java AU。

  • 大多数音频商店(据我所知)都在使用 C++,而不是 C。(硬件不同)。这似乎是您列表中的一个奇怪的遗漏 - 大多数 DAW 和插件使用 C++,这是您可以找到最多示例的语言。如果您已经熟悉 C 和 Java,我建议您接受使用 C++,因为这是针对桌面的行业标准语言。

【讨论】:

  • 感谢您的详细回复。我要使用 CoreAudio 和 AU。 (通过 C,我的意思是 C++。我想我只是脑子一片空白)。你有没有参考一些效果算法?或者关于如何产生不同效果的任何信息?再次感谢。
【解决方案2】:

看看跨平台 C++ 库 JUCE,它是开源的,可以选择许可代码(价格还不错)。 很多专业的 DAW 和 VST 开发人员都在使用它,我就是其中之一。

https://www.juce.com/

警告,这个库玩起来很有趣。它重新唤起了我对 C++ 的兴趣,这可不是一件小事。

【讨论】:

    【解决方案3】:

    您正确地假设核心音频和音频单元可以构成系统的基础(可能不需要是成熟的 DAW,但可能具有多轨音频录制、编辑、播放的某种组合等...)比担心跨平台问题、大规模的包罗万象的框架(如 Juce、ASIO 和其他操作系统绕过黑客)要容易得多。我想你会发现音频编程是一门专门的学科,而且 stackoverflow 上的大多数人都没有准备好提供有用的建议。 Java 和 C# 一样,不适合用于 AUDIO 的解释语言,特别是多声道音频、DSP 等,因为时间限制和许多关键循环需要在相当低的级别上工作。 您将在 developer.apple.com 上找到所需的文档(您必须登录),您可以直接在 xcode 示例中找到您感兴趣的 shell 示例... 祝你好运

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-14
      • 1970-01-01
      • 1970-01-01
      • 2017-06-09
      • 1970-01-01
      • 2013-08-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多