12

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?

1
  • In addition to volumouse, you could also use 'volstep', if you would like to just have a 'drop-in' improvement to using the default volume hardware keys on a keyboard for instance, instead of having to get used to the new 'interface/use' that volumouse brings. sourceforge.net/projects/volstep Sep 5, 2018 at 13:48

3 Answers 3

4

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>
3
  • NirCmd has a bunch of other useful functions as well. Really nice to have on Windows, coming from a Linux environment where basically anything is possible from the command line.
    – Trevor Jex
    Aug 17, 2018 at 19:18
  • 1
    Nirsoft is an amazing software repo full of useful things, nircmd included. However this doesn't solve the user's issue. It's a problem of cheap USB sound cards making the Windows volume slider operating more like a linear slider than a logarithmic, which it should be, since it's dealing with audio. Using 'setsysvolme' or pretty much any option on nircmd won't fix it, since it's still setting the system volume to <something>, and anything above 0 will be already too loud. Mateen Ulhaq's answer is probably the user's best bet, although still not ideal, it works. Sep 5, 2018 at 13:39
  • Also, those 65535 steps are meaningless, unfortunately. The system doesn't provide that level of granularity, so in practice, it's just a less intuitive way of changing volume. For instance, I just tested on a couple of systems here, and all the way from nircmd.exe setsysvolume "0" until "502" means 100% mute, while 503 actually changes the system volume to 1%, which is fine on my desktop sound card, but - already too loud on a cheap USB sound card. =P And above 503, until 1005, no change at all in volume. Sep 5, 2018 at 13:42
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.

1

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.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .