1

我想开始编写合成器。我估计我需要使用声卡,所以我开始谷歌。过了一会儿,发现了很多选择:
  - WaveOut API - 我听说这个已经过时了,所以我放弃了这个。
  - WASAPI - 对于我想要的来说,似乎有点太低了。
  - DirectSound、XAudio、XAudio2 - 看起来相当不错,但我希望尽可能少的延迟。
  - Asio - 看起来正是我想要的!

我确实找到了一些教程和源代码来帮助我开始音频编程。可悲的是,我工作的唯一一个使用的是我不想使用的 waveOpen API。

然后我找到了这个教程,它似乎非常适合我的需求。令人惊讶的是,本教程是我在使用 ASIO 时可以找到的唯一可用的资源(好吧,因为我无法让它工作,所以不那么可用)。问题是,我无法让它工作。当我运行演示时,我得到一个“应用程序已停止工作”的错误,然后是控制台输出:

未处理的异常:System.BadImageFormatException:无法加载文件或程序集“BlueWave.Interop.Asio,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null”或其依赖项之一。试图加载格式不正确的程序。文件名:BlueWave.Interop.Asio.Test.TestConsole.Main(String[] args) 处的“BlueWave.Interop.Asio,版本=1.0.0.0,文化=中性,PublicKeyToken=null”

警告:程序集绑定日志记录已关闭。要启用程序集绑定失败日志记录,请将注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) 设置为 1。注意:与程序集绑定失败日志记录相关的一些性能损失. 要关闭此功能,请删除注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog]。

当我尝试编译时,我得到了很多Rosie错误: 我得到的错误,呃

这是在我手动将 msvcr90.dll 和 msvcd90.dll 放在 C:\Windows\System32 中之后(我无法让它们以任何其他方式安装)。哦,是的,当然我在这之前安装了 ASIO4ALL。

所以,这不是一个真正的问题,但我只是在寻求一般性建议。我认为让 asio 工作应该不难,但同时链接到另一个学习 ASIO API 的资源会很棒,以及任何其他建议。(也许只是去尝试让 Xaudio2 工作更容易?我不知道......)

在此先感谢,如果您认为我的问题读起来很长或很无聊,请见谅!

编辑:感谢您的反应。我遇到了TropicalProgrammer 的 ASIOHost API。不知道它是否有任何好处,但它看起来很有希望。我目前正在研究它。可能有更好的选择,但我不得不承认,我目前已经对 ASIO 下了决心。

4

2 回答 2

2

我建议看一下Juce,它是一个双重许可的音频框架,用于编写音频插件和主机应用程序。已经使用它构建了相当多的商业应用程序。

由于您的目标是构建合成器,因此阻力最小的路径是将其构建为 VST 插件。JUCE 提供了一个主机应用程序,负责管理操作系统的音频 API、良好的文档和大量示例。您需要做的就是为您的合成器实现渲染回调。

至于 ASIO,已经用它构建了许多专业音频应用程序,主要是因为 Windows 后续版本上的普通音频 API 的传统缺点 - 特别是在延迟或高通道数方面。在 Windows 上,ASIO 使用音频硬件的专用驱动程序并绕过主机操作系统的音频堆栈。我怀疑 Juce 会为你解决这个问题。

于 2013-05-27T19:05:49.707 回答
0

不是一个真正有用的答案,但我决定使用 XAUDIO2。我不会真的说它很容易使用,但至少有可用的教程(我使用这个,但微软也有一个可用的系列)。

于 2013-05-31T21:19:49.640 回答