【发布时间】:2015-12-09 01:35:51
【问题描述】:
我想制作一种软件,它可以从外部音频接口 (Focusrite Scarlett 2i2) 读取原始音频并在 C++ 中对其进行处理,然后再将其返回到接口进行播放。我目前运行的是 Windows 8,想知道如何以最小的延迟做到这一点?
我花了一段时间研究(增强)ASIO,但文档似乎相当糟糕。我也一直在考虑 OpenCL,但有人告诉我它很可能会有更高的延迟。理想情况下,我希望能够直接访问 Focusrite 驱动程序。
很抱歉,这是一个悬而未决的问题,但我在寻找有关音频编程的教育资料时遇到了一些麻烦,除了在由第三方插件设计套件(如 RackAFX)提供时操纵音频之外。如果有人能推荐一些有关此类低级内容的读物,我也将不胜感激。
【问题讨论】:
-
我也意识到我不太可能将最终产品的延迟降低到不明显的低水平,我只是想看看我能做到多近。
-
您还没有说您使用的是哪个平台。在 MacOSX 上,Firewire/Thunderbolt 设备的缓冲区延迟可以降低到 1 毫秒以下。对于 USB 来说,它会比这多一点。可以实现 5-10 毫秒的往返延迟,但这是以 CPU 利用率高为代价的。