开始音频编程的最佳方式?

时间:2013-05-27 15:38:40

标签: audio asio

我想开始编程合成器。我估计我需要使用声卡,所以我开始谷歌。过了一会儿,发现了很多选择:
- WaveOut API - 我听说这个已经过时了,所以我废弃了这个 - WASAPI - 看起来有点太低了我想要的水平。
- DirectSound,XAudio,XAudio2 - 看起来相当不错,但我希望延迟尽可能小。
- Asio - 看起来就像我想要的那样!

我找到了几个教程和源代码,让我开始进行音频编程。遗憾的是,only one I got to work使用了waveOpen API,我不想使用它。

然后我找到this tutorial,这似乎完全符合我的需要。 令人惊讶的是,本教程是使用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,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'

     

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

当我尝试编译时,我收到了很多 Rosie 错误: the errors I get, duh

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

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

提前致谢,如果您认为我的问题很长或很无聊,请对不起!

编辑:感谢您的反应。我遇到了ASIOHost API by TropicalProgrammer。不知道它是否有用,但看起来很有希望。我现在正在调查它。可能有更好的选择,但我必须承认我目前已经在ASIO上设定了自己的想法。

2 个答案:

答案 0 :(得分:2)

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

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

对于ASIO,已经构建了许多支持音频的应用程序,这主要是因为在Windows的后续版本中常规音频API的传统缺点 - 特别是在涉及延迟或高通道数的情况下。在Windows上,ASIO使用专用驱动程序用于音频硬件并绕过主机操作系统的音频堆栈。我怀疑Juce会为你照顾这个。

答案 1 :(得分:0)

不是一个非常有用的答案,但我决定选择XAUDIO2。我不会说它很容易使用,但至少有可用的教程(我使用this one,但微软也有一个系列)。