我正在尝试修复一个围绕 portmixer 的 Audacity 错误。输出/输入级别可使用 mac 版本的 portmixer 设置,但并非总是在 windows 中。我正在调试 portmixer 的窗口代码,试图让它在那里工作。
使用 IAudioEndpointVolume::SetMasterVolumeLevelScalar 设置主音量对于板载声音效果很好,但使用专业的外部 USB 或 RME Fireface 400 等火线接口,输出音量不会改变,尽管它反映在该设备的 Window 声音控制面板中,以及在系统混音器中。
此外,在我们的程序之外,更改系统混音器的主滑块(在任务栏中)没有任何效果 - 声卡输出相同(完整)级别,无论系统说它处于什么级别。更改输出级别的唯一方法是使用硬件开发人员随卡提供的定制应用程序。
IAudioEndpointVolume::QueryHardwareSupport 函数返回 ENDPOINT_HARDWARE_SUPPORT_VOLUME 所以它应该能够做到这一点。
许多设备上的输入和输出都存在这种行为。
这可能是Window的错误吗?
可以通过模拟(缩放)输出来解决此问题,但这不是首选,因为它在功能上并不相同 - 最好让音频接口进行缩放(特别是如果它涉及前置放大器,则用于输入)。