locked
Why does Windows 7 display volume sliders for inputs that have no volume controls? RRS feed

  • 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 Eerde
    Tuesday, September 28, 2010 3:57 PM
  • The introduction of a digital capture volume is by design

    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.

    * implement a USB volume function (perhaps with a very small range)

    This is a possibility for some products, but not others. I'll look into it.

    * 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 Eerde
    Wednesday, 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
  • Tuesday, January 11, 2011 3:26 PM