java 创建数字音频工作站
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/4870740/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Creating a Digital Audio Workstation
提问by Jon Egeland
I am trying to write my own DAW, mostly just to learn about the mathematics of how signals are processed to get effects, but also for fun. (A rather large undertaking, but I have the time at the moment). I would like for it to work something like Propellerhead's Recordas in the rack especially.
我正在尝试编写自己的 DAW,主要是为了了解如何处理信号以获得效果的数学知识,但也是为了好玩。(一项相当大的任务,但我现在有时间)。我希望它能够像Propellerhead's Record那样工作,尤其是在机架中。
I'm running on a Mac, so I'm thinking of using Audio Units for the different parts, then Core Audio for the scaffolding parts. So, the whole thing would be written in C or Obj-C.
我在 Mac 上运行,所以我想为不同的部分使用音频单元,然后为脚手架部分使用核心音频。所以,整个事情将用 C 或 Obj-C 编写。
However, I haven't used either Audio Units or Core-Audio before, and the internet hasn't been any help for learning.
但是,我之前没有使用过 Audio Units 或 Core-Audio,互联网对学习没有任何帮助。
Does anyone know where I could learn about these? Or would Java (The only other language I'd feel comfortable using) be better, or is there something I've completely missed while trying to find the "easy" way to do this?
有谁知道我可以在哪里了解这些?或者Java(我觉得使用起来很舒服的唯一其他语言)会更好,还是在试图找到“简单”的方法来做到这一点时我完全错过了什么?
Thanks, Jon
谢谢,乔恩
回答by justin
if you want to write a DAW:
如果你想写一个 DAW:
at minimum, get your feet wet with an existing project. if i were to personally choose a project, i'd contribute to Ardour.
the signal processing in a DAW is relatively simple. you'll have to work with mixers, files, and graphics. if you're already comfortable writing apps, then you probably won't learn much (beyond the basics). of course, you could find an existing project and extend it with features which relate to what you want to learn; you could write plugs or visualizations for it.
至少,让你的脚接触现有的项目。如果我要亲自选择一个项目,我会为 Ardour 做出贡献。
DAW 中的信号处理相对简单。您将不得不使用混音器、文件和图形。如果您已经习惯于编写应用程序,那么您可能不会学到太多(超出基础知识)。当然,您可以找到一个现有的项目,并使用与您想学习的内容相关的功能对其进行扩展;你可以为它编写插件或可视化。
if prefer to work with signal processing:
如果更喜欢使用信号处理:
- AU or VST plugins will be a good intro - there are many existing projects which you may reference. eventually, you'll get tired of waiting for a host to load to test your program.
- AU 或 VST 插件将是一个很好的介绍 - 您可以参考许多现有项目。最终,您会厌倦等待主机加载来测试您的程序。
language:
语:
objc is not usable for realtime audio rendering.
java is very unusual for this application. there are actually wrappers for AUs and CoreAudio... but can't name one commercial Java AU for OS X.
most audio shops (that I know of) are using C++ - not C. (Hardware is different). this really seems like an odd omission from your list - most DAWs and plugins use C++, and that is the language you'd find the most examples in. if you're already comfortable with C and Java, I'd recommend coming to terms with C++ because that's the standard language in the industry when targeting desktops.
objc 不能用于实时音频渲染。
java对于这个应用程序来说非常不寻常。实际上有 AU 和 CoreAudio 的包装器......但不能为 OS X 命名一个商业 Java AU。
大多数音频商店(我所知道的)都在使用 C++ - 而不是 C。(硬件不同)。这看起来确实是您列表中的一个奇怪遗漏 - 大多数 DAW 和插件使用 C++,这是您可以找到最多示例的语言。如果您已经熟悉 C 和 Java,我建议您接受条款使用 C++,因为这是面向桌面的行业标准语言。
回答by irdbisa
Look at the cross platform C++ library JUCE, it is open source with the option to license the code (price isn't bad). Plenty of professional DAW and VST developers use it, I'm one of em.
看看跨平台 C++ 库 JUCE,它是开源的,可以选择授权代码(价格还不错)。许多专业的 DAW 和 VST 开发人员都在使用它,我就是其中之一。
Warning, this library is a lot of fun to play with. It renewed my interest in C++, which was no small feat.
警告,这个库很有趣。它重新唤起了我对 C++ 的兴趣,这可不是一件小事。
回答by aaronp
you are right-on in assuming that core-audio and audiounits could form the basis for a system (that may not need to be a fully-fledged DAW but may have some combination of multi-track audio recording, editing, playback, etc...) much easier than worrying about cross-platform concerns, massive all-encompassing frameworks like Juce, or ASIO and other os-bypassing hacks. i think you will find that audio programming is a specialized discipline and most folks here on stackoverflow are ill prepared to offer useful advice. Java is rather unsuitable, as is C#, as are interpreted languages FOR AUDIO, in particular for multichannel audio, DSP, etc. due to time contraints and the need to work on a rather low-level for many critical loops. you will find the documents you need on developer.apple.com (you'll have to make a login) and you can find shell-examples for your interest directly inside of xcode examples... good luck
您正确地假设核心音频和音频单元可以构成系统的基础(可能不需要是成熟的 DAW,但可能具有多轨音频录制、编辑、播放等的某种组合。 ..) 比担心跨平台问题容易得多,像 Juce 或 ASIO 和其他绕过操作系统的 hacks 等大规模的无所不包的框架。我想你会发现音频编程是一门专业的学科,stackoverflow 上的大多数人都没有准备好提供有用的建议。Java 和 C# 相当不合适,音频的解释语言也是如此,尤其是多声道音频、DSP 等,由于时间限制和需要在许多关键循环的相当低的级别上工作。你会在 developer.apple.com 上找到你需要的文件(你