Windows – Increase granularity, range and curvature of the volume control slider

audiowindows 7windows-registry

There is a common problem for USB speakers (such as Logitech SBS-150 in my case, for which Logitech provides no solution) and headphones- they are too loud. When you use the Windows volume control slider to put them to 1, they are still too loud (and there is really not much difference between 1 and 100), and of course 0 makes no sound, so you are stuck choosing either loud or no sound at all.

The above seems to indicate that the logarithm is applied twice to the linear 1-100 values from the slider, once by Windows and once by the speakers, which results in a curve that quickly reaches saturation. Windows 7 of course offers no way to adjust whether the logarithm is applied.

Another problem is when the user wants to increase the volume above 100. (Yes, yes, it may damage your speakers, blah blah. Irrelevant.)

It seems that it would solve a lot of problems if I could just set what values each point on the volume slider is supposed to correspond to, instead of Windows applying a log function itself. (At that point it doesn't matter if the log is applied, as you can insert an exponent function yourself to negate the log.)

The closest thing I have found is this page, which describes precisely what I want, but unfortunately it works only on Windows XP and not Windows 7; I was not able to locate the registry key in Windows 7 (I may have simply not looked hard enough, though).

Also helpful is Volumouse which lets you specify the step size for volume- this easily allows you to set the volume to a point between 1 and 0. This does accomplish the task of at least letting you decrease the volume, but 99% of the range is still essentially useless. Moreover, increasing or decreasing the spacing of steps is not how you deal with a logarithmic/exponential response curve.

So the question is, how can I do in Windows 7 what the registry method above does in Windows XP? Where is the registry key? Alternatively, how does Volumouse set volume to arbitrary values?

Best Answer

If you can stand a command line, NirCmd from NirSoft offers a solution to specify volume by decibel:

 nircmd.exe setsubunitvolumedb "Speakers" "Wave" -20

See Nir's blog on the subject.


Also this command will adjust your main system volume

 nircmd.exe setsysvolume <0-65535>

And this one adjusts it up or down by steps you define:

 nircmd.exe changesysvolume [-]<0-65535>