【发布时间】:2015-01-09 00:51:18
【问题描述】:
我没有音频编程经验,而且 C++ 是相当低级的语言,所以我对它有一点问题。我使用从http://www.steinberg.net/en/company/developers.html 下载的 ASIO SDK 2.3。
我正在根据 SDK 中的示例编写自己的主机。
目前,我已经设法浏览了整个示例,并且看起来它正在工作。我有外部声卡连接到我的电脑。我已经成功地为这个设备加载了驱动程序,配置了它,处理了回调,将数据从模拟转换为数字等常见的东西。
还有我现在卡住的部分: 当我通过我的设备播放一些曲目时,我可以看到调音台(设备的软件)中的条形移动。所以设备以正确的方式连接。在我的代码中,我选择了带有在混音器中移动的条形名称的输入和输出。我还使用 ASIOCreateBuffers() 为每个输入/输出创建缓冲区。
如果我错了,现在纠正我: 当调用 ASIOStart() 并且驱动程序处于运行状态时,当我将声音信号输入到外部设备时,我相信缓冲区会充满数据,对吧?
我正在阅读文档,但我有点迷茫 - 如何访问设备发送到应用程序、存储在 INPUT 缓冲区中的数据?还是信号?我需要它来进行信号分析或将来记录。
编辑:如果我让它变得复杂,那么简而言之,我的问题是:如何从代码中访问输入流数据?我在文档中没有看到任何允许我这样做的对象/回调。
【问题讨论】:
-
我相信
boost-asio标签不适用于这个问题,你问的是音频相关的SDK,而不是异步io模块。 -
你说得对,我已经编辑过了,谢谢。
标签: c++ audio asio steinberg-asio