我想开始编写合成器。我估计我需要使用声卡,所以我开始谷歌。过了一会儿,发现了很多选择:
- 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 下了决心。