Current version

v1.10.4 (stable)

Navigation

Main page
Archived news
Downloads
Documentation
   Capture
   Compiling
   Processing
   Crashes
Features
Filters
Plugin SDK
Knowledge base
Contact info
 
Other projects
   Altirra

Archives

Blog Archive

Tweaking the volume taper in Windows XP

For some reason, all of the laptops I've owned have had a problem with volume. Specifically, the volume adjustment buttons don't have enough granularity, so the bottom five ticks correspond to silent, loud, louder, loudest, and 11. I can combat this by turning down the mixer source line volumes instead, but I've had the misfortune of discovering software vendors that decided to solve their customer support problems by making their programs shove the MIDI volume all the way up on startup. I miss my old SoundBlaster 16 ASP, which had a good old fashioned volume knob on the back that programs couldn't touch no matter how many I/O ports they tweaked.

Fortunately, a while ago, after reading a post from Larry Osterman about volume in Windows, I played around with some curves and came up with the following Registry patch to set a nicer volume taper:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Multimedia\Audio\VolumeControl]
"EnableVolumeTable"=dword:00000001
"VolumeTable"=hex:00,00,00,00,30,00,00,00,65,00,00,00,9f,00,00,00,e0,00,00,00,\
  28,01,00,00,77,01,00,00,d0,01,00,00,31,02,00,00,9d,02,00,00,15,03,00,00,99,\
  03,00,00,2c,04,00,00,cf,04,00,00,82,05,00,00,4a,06,00,00,26,07,00,00,1b,08,\
  00,00,2a,09,00,00,55,0a,00,00,a1,0b,00,00,11,0d,00,00,a8,0e,00,00,6b,10,00,\
  00,5e,12,00,00,87,14,00,00,eb,16,00,00,91,19,00,00,80,1c,00,00,c0,1f,00,00,\
  59,23,00,00,54,27,00,00,be,2b,00,00,a1,30,00,00,0a,36,00,00,08,3c,00,00,aa,\
  42,00,00,03,4a,00,00,27,52,00,00,2a,5b,00,00,25,65,00,00,32,70,00,00,6f,7c,\
  00,00,fd,89,00,00,00,99,00,00,9f,a9,00,00,08,bc,00,00,6b,d0,00,00,ff,e6,00,\
  00,ff,ff,00,00

Usual disclaimers apply; you screw up your system, your fault. Unfortunately, I can't find the little C program I wrote to generate this taper, but I remember it was something like a 5th order polynomial. Someone can probably throw it into Excel and reverse engineer it or something. After all the Vista bashing from a couple of days ago, I should at least report that this wasn't necessary in Vista, which already had a much nicer taper with the x64 driver I installed.

One issue I haven't been able to crack is the volume of the emulated PC speaker. For some reason the beep tends to be VERY loud on laptops, even louder than the wave audio. If I could find a display as bright as the beep was loud I'd have a Windows XP driven stun grenade. I've only found two crappy solutions: one is to disable the beep service (which for some reason isn't in the services UI but can be accessed with "net stop beep"), and the other is the power saving options for the integrated sound, which on my new laptop has an option to disable the PC speaker.

Comments

This blog was originally open for comments when this entry was first posted, but was later closed and then removed due to spam and after a migration away from the original blog software. Unfortunately, it would have been a lot of work to reformat the comments to republish them. The author thanks everyone who posted comments and added to the discussion.