【发布时间】:2018-12-23 01:42:02
【问题描述】:
我正在尝试编写一个专业的音乐/音频处理应用程序,并且我希望能够以非常低的级别与音频输入/输出进行交互 - 理想情况下,我可以将效果应用于音频输入和输出这是实时的,类似于 Logic、Ableton 等程序。
我编写了一个非常基本的程序,它可以检测音频端点设备并可以使用 MMDevice 接口更改它们的音量,但这与我想要的功能相去甚远。
我从 Microsoft 文档中了解到四个核心音频 API 是:
- MMDevice
- WASAPI
- 设备拓扑
- 端点卷
但似乎其中任何一个都没有我需要的功能。我认为我需要能够在给定时间设置膜位置的级别与扬声器进行交互。
这甚至可能吗?如果是这样,我可以用什么来做到这一点?
【问题讨论】:
-
也许 XAudio2 可以满足您的需求。
-
现代操作系统几乎阻止了所有人直接访问底层硬件。其中一部分是自卫,当您获得该级别的系统控制时,可以完成许多令人讨厌的事情,并且很大一部分是抽象出硬件中的差异。如果您需要做一些无法融入抽象的事情,您可能必须深入研究 Windows 驱动程序的黑暗秘密。
-
通常专业音频软件使用 Steinberg 的 ASIO 技术。您可以在Steinberg's 3rd Party Developer 网站上下载 ASIO SDK。它是免费的,但附带您必须签署的许可协议。
标签: c++ windows visual-studio audio