Asked by:
Why does Windows 7 display volume sliders for inputs that have no volume controls?
General discussion
-
Designing USB audio interfaces, I've noticed a strange discrepancy between XP and Win7:
With this USB IC, there is no way to change the input gain, so there is no gain control presented to the computer. Windows XP and OS X display this correctly, leaving the input control grayed out, but Windows 7 gives the user a volume control anyway, which is just a digital gain, and defaults it to a high gain, so it's essentially just adding noise and decreasing the dynamic range. Why does Win7 do this? Can I do something in the USB hardware to prevent it?Tuesday, September 28, 2010 2:28 PM
All replies
-
The introduction of a digital capture volume is by design, but the defaulting to a high gain is a bug. Potential workarounds:
* implement a USB volume function (perhaps with a very small range)
* tell the user to their software volume in the Sound CPL (there's a "decibels" view)
* ship some add-on software that zeros the software volume (using IAudioEndpointVolume)
Matthew van EerdeTuesday, September 28, 2010 3:57 PM -
Accidental or intentional? The devices have hardware volume controls, so the redundant control in Windows does nothing but confuse users while degrading their signal quality. It defaults to +30 dB in one product, resulting in complaints due to the resulting high noise level in "professional" equipment.The introduction of a digital capture volume is by design
This is a possibility for some products, but not others. I'll look into it.* implement a USB volume function (perhaps with a very small range)
* tell the user to their software volume in the Sound CPL (there's a "decibels" view)
This is what we're currently doing. Adding notes to the website and manuals telling users how to switch to decibel view and "set it as close to 0 dB as possible". Seems like Vista and Win7 have different scales here, and while Vista can go to 0 dB, Win7 only can be adjusted to "-0.4 dB".
Thanks
Tuesday, September 28, 2010 4:26 PM -
Intentional. If there is no KSPROPERTY_AUDIO_VOLUMELEVEL in the signal path (for either capture or render), then WASAPI will inject a CAudioVolume APO into the device pipe. This allows IAudioEndpointVolume to work on all audio endpoints, regardless of whether the driver exposes a volume control.
> The devices have hardware volume controls
Is it possible to expose these to the OS?
EDIT: for completeness, I should mention that for capture streams ISimpleAudioVolume also controls the KSPROPERTY_AUDIO_VOLUMELEVEL setting or the CAudioVolume APO (that is, session volume is implemented in the device pipe.)
Matthew van EerdeWednesday, September 29, 2010 4:03 PM -
Is it possible to expose these to the OS?
No, they're potentiometers. :)
Will the default level be changed in the future? If the default setting didn't affect the signal, it would be much less of an issue.
Thursday, September 30, 2010 7:16 PM -
The manufacturer has changed the firmware to present a volume control, but with only one possible value. It seems to work in Windows 7 (there's a slider with value 0 dB, but it can't be moved) and OS X (there's a slider with 0 dB, but if you move it, it snaps back to the beginning). In XP, the slider is grayed out.
You mentioned "a very small range". Do you see any problems with a range of 0?
Thursday, October 14, 2010 8:11 PM -
Here are two other threads with other people having the same issues:
Tuesday, January 11, 2011 3:26 PM