- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试修复围绕 portmixer 的 Audacity 错误。输出/输入级别可以使用 mac 版本的 portmixer 设置,但在 Windows 中并不总是如此。我正在调试 portmixer 的窗口代码,试图让它在那里工作。
使用 IAudioEndpointVolume::SetMasterVolumeLevelScalar 设置主音量对于板载声音效果很好,但是使用专业的外部 USB 或火线接口(interface),如 RME Fireface 400,输出音量不会改变,尽管它反射(reflect)在 Window 的声音控制面板中对于那个设备,也在系统混音器中。
此外,在我们的程序之外,更改系统混音器的主 slider (在任务栏中)没有任何效果 - 声卡输出相同(完整)的级别,而不管系统所说的级别。更改输出级别的唯一方法是使用硬件开发人员随卡提供的自定义应用程序。
IAudioEndpointVolume::QueryHardwareSupport 函数返回 ENDPOINT_HARDWARE_SUPPORT_VOLUME,因此它应该能够执行此操作。
许多设备上的输入和输出都存在这种行为。
这可能是 Windows 的错误吗?
可以通过模拟(缩放)输出来解决此问题,但这不是首选,因为它在功能上并不相同 - 最好让音频接口(interface)进行缩放(尤其是输入,如果它涉及前置放大器)。
最佳答案
你所说的卡——比如 RME——根本不支持通过软件设置主控或任何其他级别,你对此无能为力。这不是 Windows 错误。有人可能会争辩说,返回 ENDPOINT_HARDWARE_SUPPORT_VOLUME 是一个错误,但这可能源于驱动程序级别,而不是 Windows 本身。
到目前为止,我找到的唯一解决方案是将调试器(或添加 dll Hook )连接到供应商提供的软件,并查看它发出的 DeviceIOControl
调用(那些是用来交谈的)到硬件),同时在供应商软件中设置音量。对每张卡都这样做很难,但可能值得为几张专业卡做。特别是对于 Audacity,对于开源音频软件来说,它实际上并没有那么糟糕,所以我可以想象如果他们的卡上的音量可以用它来设置,一些人会非常高兴。 (当时我们只使用 RME Multiface 我花了很多时间来弄清楚 DeviceIOControl 调用,但最终这绝对是值得的,因为我可以为矩阵中的任何点设置以 dB 为单位的音量)
关于c++ - 为什么我不能使用 IAudioEndpointVolume::SetMasterVolumeLevelScalar 为 USB/Firewire 音频接口(interface)设置主音量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4362526/
我是 C++ 新手,但我想知道如何使用 IAudioEndpointVolume 接口(interface)来获取系统音量信息。我不知道我需要包含和使用什么。我已经看过这里http://msdn.mi
我编写了一个作为 Windows 服务运行的 C++ 应用程序来限制 Windows 7 计算机的容量。用户可以为不同的日期和时间指定不同的规则,服务将平滑地改变音量。为了实现这一点,我使用了 IAu
考虑这个程序: #include #include #include #include #include int main() { IAudioEndpointVolume *wh;
我正在尝试编写一个应用程序来控制 Windows 7 上的系统音量,但我找不到任何关于 IAudioEndpointVolume 在 .NET 类库中的位置的文档。完整路径是什么? 最佳答案 Core
我正在尝试修复围绕 portmixer 的 Audacity 错误。输出/输入级别可以使用 mac 版本的 portmixer 设置,但在 Windows 中并不总是如此。我正在调试 portmixe
我是一名优秀的程序员,十分优秀!