Increase granularity, range and curvature of the volume control slider

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?


Solution 1:

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>

Solution 2:

I don't have any solution for register tweaking under Windows 7, but if you want to boost the sound volume above 100% you might find this tool interesting. There is a free version available there which should work with most common Windows applications, including iTunes and YouTube.

Solution 3:

The easiest solution I've found is running sound output through EqualizerAPO and simply setting the pre-amp to -20dB.

Peace GUI will help you if you don't know how to edit the config file manually.

enter image description here

If you have problems running Equalizer APO, you probably need to uninstall your sound drivers and reinstall the Microsoft Windows default sound drivers.

Solution 4:

When you use the Windows volume control slider to put them 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.

I've noticed this in the past and have suffered the problem since I started using windows 7 -- that is, until tonight, when I obsessively started playing with options within the 'Volume Control Options' available in the right click 'Speakers' menu. In there, I had unchecked the option "All devices playing sound" and applied it and voila! My volume was restored to the way it should behave... Oddly enough, however, re-checking that option doesn't duplicate the aforementioned problem, so I have no idea if this problem will return after a reboot.

Anyhow, it seems to have done the trick, at least once. Hopefully, it'll never happen again. I thank you for inspiring me to again, obsessively, search for a resolution to this because this has been one maddeningly aggravating frustration that I had resolved to loathe about 7 for the rest of my days. In my quest to learn something new everyday, it seems I've achieved my goal, if only for today. YAY me.