Easy way to switch default sound output device
Free and open-source: SoundSwitch
I use NirCMD, a nifty command-line tool which allows you to edit a lot of windows settings using a script.
In this case, that would be
nircmd.exe setdefaultsounddevice "USB Headset"
I use it to switch my main monitor to be my TV, and output the sound over HDMI to that device:
nircmdc.exe setprimarydisplay \\.\DISPLAY7
nircmdc.exe setdefaultsounddevice "SONY TV-4"
Use AutoIt
The main advantage is that you don't have to install any software. It works out-of-the-box. After you've created the tool place a shortcut on your desktop to toggle your devices.
How to set up
Create a new text file with notepad and copy & paste the code
Run("c:\windows\system32\control.exe mmsys.cpl") WinWaitActive("Sound") WinSetOnTop ("Sound","Sound", 1 ) send("{DOWN}") if ControlCommand("Sound", "", 1002, 'IsEnabled') Then ControlClick("Sound", "Set Default", 1002) $message = "Speakers" else send("{DOWN}") ControlClick("Sound", "Set Default", 1002) $message = "Headset" EndIf WinClose("Sound") TrayTip("", $message, 5) Sleep(2000)
Edit line 4 and 8
send("{DOWN}")
to your needs. The example code above only toggles between device #1 and #2. You have to edit two lines to your needs. See my explanations below.Replace "Speakers" and "Headset" with your correspondig device name or something similar
Later, this hint will be shown in your tray for 5 seconds if you toggle sound devicesOn non-English Windows versions you have to replace Set Default in line 6 and 10 with your localized button text
Save the file as something.au3
Download the zipped version of AutoIt and extract it. Go to subfolder Aut2Exe and start Aut2exe.exe to convert the .AU3 script to a .EXE file. You're done
Reference to all AutoIt commands
Or use AutoHotKey
It's basically the same, only with AutoHotKey. The key binding is done right in the script with #!z
which means, every time you pressy Alt+Win+z you switch between your device #1 and #2.
How to set up
Paste the code below to a text file and save it as
SoundToggle.ahk
#!z:: Run, c:\windows\system32\control.exe mmsys.cpl WinWaitActive, Sound WinSet, AlwaysOnTop, On, Sound Send, {DOWN} ControlGet, MyState, Enabled, , Button2 If (MyState = 1){ ControlClick, Button2, A } Else { Send, {DOWN} ControlClick, Button2, A } WinClose, Sound return
Download AutoHotKey (Unicode 32-bit) and extract
AutoHotKey.exe
Create a shortcut to that .EXE and modify the target line according to your own paths
"C:\myfolder\AutoHotkey.exe" "C:\myfolder\SoundToggle.ahk"
Move the shortcut to your startup folder
How to edit send("{DOWN}")
lines
Open your sound panel with Win+R and enter control mmsys.cpl sounds. You want to know how many times you have to press the DOWN key to get to your first sound device and how many times to press DOWN again to reach the second device.
For example, to toggle device #3 and #5 you have to press down three times send("{DOWN 3}")
and press down again two times send("{DOWN 2}")
more to reach the fifth device (3x down + 2x down = 5th device). You get the idea.