USB audio interfaces and system audio levels in Windows
Articlestldr; schedule nircmd to repeatedly set audio levels to desired levels.
I use a GoXLR Mini as a USB audio interface for my Windows machine. Although it is marketed to gamers, I find it to be a fantastic audio interface that is more fully-featured than my previous combination of a medium-range USB Audio Interface and channel strip (Audient iD22 + Aphex Channel). That setup sounded fantastic, but for me, the GoXLR has been a better audio setup overall. I use for the following features:
- Output for studio monitor speakers on my desk, with dedicated volume slider
- Output for headphones, with dedicated volume slider (Sony WH-1000XM4, wired)
- Pre-amp for a Shure SM7B microphone, which requires high gain
- Mixer for an aux input from a 2nd computer
- General mixer, providing multiple virtual sound devices for recording, chat, and broadcast
USB audio devices like the Go XLR usually work well, but sometimes, Windows gets in the way. These interfaces like to be at fixed levels in the OS because they offer better levels adjustments. In the OS, I want both output and recording input levels to be at 100%; the audio interface is used for input and output levels. Windows, because it wants to be clever, changes system volume and microphone input levels seemingly at random. I frequently find that my output volume has been set to some random level. I joined a video chat earlier today and was unable to be heard because Windows had changed my microphone level to 10%.
There is no easy way to get to the interface to change mic level, so this is a huge pain in the butt (right click on the volume icon in the taskbar; select Sound; go to Recording tab; select the mic and click “Properties”; go to Levels tab; set to 100%).
To solve this, I now have a scheduled task that uses nircmd to set output and default input levels both to 100%:
c:\bin\nircmdc.exe setsysvolume 65535
c:\bin\nircmdc.exe setsysvolume 65535 "default_record"
nircmdc uses the console for output, and there is a way to schedule the running of batch scripts without a popup appearing.