我正在尝试编写自己的DAW,主要是为了了解如何处理信号以获得效果的数学,同时也是为了好玩。 (这是一项相当大的工作,但我现在有时间)。我希望它能像Propellerhead's Record一样工作,特别是在机架中。
我在Mac上运行,所以我正在考虑将音频单元用于不同的部件,然后使用Core Audio作为脚手架部件。所以,整个事情都是用C或Obj-C编写的。
但是,之前我没有使用音频单元或Core-Audio,互联网对学习没有任何帮助。
有谁知道我在哪里可以了解这些? 或者Java(我唯一能够使用的其他语言)会更好,或者在尝试找到“简单”的方法时,我是否完全错过了这些语言?
谢谢, 乔恩
答案 0 :(得分:10)
如果你想写一个DAW:
至少,现有项目让你的脚湿透了。如果我亲自选择一个项目,我会为Ardor做贡献。
DAW中的信号处理相对简单。你将不得不使用混音器,文件和图形。如果你已经习惯于编写应用程序,那么你可能不会学到太多东西(除了基础知识)。当然,您可以找到一个现有项目并使用与您想要学习的内容相关的功能进行扩展;你可以为它编写插件或可视化。
如果更喜欢使用信号处理:
语言:
objc不适用于实时音频渲染。
java对于这个应用程序非常不寻常。实际上有AU和CoreAudio的包装器......但是不能为OS X命名一个商业Java AU。
大多数音频商店(我所知道)都在使用C ++ - 而不是C.(硬件不同)。这似乎是你的清单中的一个奇怪的遗漏 - 大多数DAW和插件使用C ++,这是你发现最多的例子。如果你已经熟悉C和Java,我建议你来看看使用C ++,因为这是针对桌面时业界的标准语言。
答案 1 :(得分:5)
看看跨平台的C ++库JUCE,它是开源的,可以选择许可代码(价格还不错)。 很多专业的DAW和VST开发人员都使用它,我是其中之一。
警告,这个图书馆很有趣。它重新唤起了我对C ++的兴趣,这不是一件小事。
答案 2 :(得分:3)
你是正确的,假设核心音频和音频可以构成一个系统的基础(可能不需要是一个完全成熟的DAW,但可能有多轨音频录制,编辑,播放的组合等等......)比担心跨平台问题,大规模无所不包的框架(如Juce,ASIO和其他操作系统绕过黑客攻击)要容易得多。我认为你会发现音频编程是一门专门的学科,而且大多数人在stackoverflow上都不准备提供有用的建议。 与C#一样,Java非常不合适,因为时间限制以及需要为许多关键循环工作在相当低级别的工作,因此解释语言为FOR AUDIO,特别是对于多声道音频,DSP等。 你会在developer.apple.com上找到你需要的文件(你必须登录),你可以直接在xcode示例中找到你感兴趣的shell示例... 祝你好运