Change the audio device which the keyboard volume keys control

All we need is an easy explanation of the problem, so here it is.

I have Voicemeeter Banana running normally, this means that it is my default audio device in exclusive mode so most of my sound is routed through it. This gives me great control over the audio devices in my system, virtual or hardware.

I use the volume keys on my keyboard often. When I’m using Voicemeeter, the volume keys adjust the “Voicemeeter input” which does not change the levels through my headset at all. So to change the levels in my usb headset, I have to either go into the windows volume mixer, and adjust the master for the device there, or adjust it in voicemeeter. I prefer to use the windows adjustment, it goes from 0-100 in increments of 2, while voicemeeter goes from -60dB to +12dB. Plus windows has a small popup that shows the volume level, voicemeeter does not. My max volume is set to the level of my usb headset, meaning I have to turn my headset up to max, and control to taste from voicemeeter. This is dangerous when I’m not paying attention to voicemeeter, and accidentally play something at full volume (painful, not fun).

Voicemeeter allows me to hook the volume keys to the output assigned to my usb headset, but then I run into the problem of having to adjust voicemeeter.

I want to be able to change what audio device my keyboard volume keys control.

Now I know this is somewhat possible as my usb headset (no special drivers) has volume buttons that adjust the levels of the usb headset at a driver level, not my default device which is “Voicemeeter input” While my Keyboard keys adjust the level of “Voicemeeter input”

What commands are being sent by my keyboard and my headset? Is there a way to find out? Neither are using special drivers. Can I change those commands? Or at least change how my system reacts to them?

The ideal situation would be the ability to set the volume keys to change the levels of “USB audio device” while ignoring the default device, “VoiceMeeter Input”

I found Microsoft’s documentation on volume control but I can’t make heads or tails of it. Perhaps the answer is in here, if I knew what to look for.

How to solve :

I know you bored from this bug, So we are here to help you! Take a deep breath and look at the explanation of your problem. We have many solutions to this problem, But we recommend you to use the first method because it is tested & true method that will 100% work for you.

Method 1

Took some time looking around but I found a program which both lets you set the volume keys to control another Sound device & views an OSD with the volume when you change it.

Its called Volume2 (https://github.com/irzyxa/Volume2)

You can assign keys for managing the alternate sound device.
For example, I set my wireless headphones as default device (for calls) and my earphones as an alternate device (for music). I need to set shortcuts for alternate device and now I have vol up/down for headphones and shift + vol up/down for earphones.

It also lets you customize the OSD Displayed with different skins & colours, and Position & Transparency, it can be installed or be a portable version.

It’s easy to use & it can a lot of stuff I don’t use but others might want to.

Method 2

Voicemeeter is installed with MacroButtons Application allowing you to control anythings (any buttons or slider) on Voicemeeter with any keyboard Shortcut… see user manual: http://vb-audio.pagesperso-orange.fr/Voicemeeter/VoicemeeterBanana_UserManual.pdf

Method 3

I found a solution! I used a combination of nircmd and autohotkey.

I used Nircmd, for the device specific volume controls and autohokey for the macros.

this is my script:

Volume_Up::
    Run, nircmd.exe changesysvolume 1000 USBSpeakers 4
Return

Volume_Down::
    Run, nircmd.exe changesysvolume -1000 USBSpeakers 4
Return

Real simple, but the nircmd command took a bit of finicking as I had to rename my device to USBSpeakers and the ‘4’ was required but not super obvious, so there was a bit of trial and error.

I tried autohotkey’s built in volume control, but I could not get it to work for any device other than the default.

I will try to refine this solution further, as I’m currently using 3 different programs, ideally I’d like to just be using voicemeeter.

Note: Use and implement method 1 because this method fully tested our system.
Thank you 🙂

All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

Leave a Reply