Home » Questions » Computers [ Ask a new question ]

How do I manage multiple audio playback devices on Windows Vista/7?

How do I manage multiple audio playback devices on Windows Vista/7?

I've got speakers (audio in) and headphones (USB headset with it's own soundcard) connected to my desktop computer. Under Windows 7, I can right-click the Audio Mixer and select Playback Devices and toggle between my these devices.

Asked by: Guest | Views: 354
Total answers/comments: 4
bert [Entry]

"The solution to all your nagging Windows automation problems: AutoIt!

Put this AutoIt and compile it

;-----Configuration-----
;The title of the sound config window.
Dim $ConfigWindowTitle = ""Sound""
;-----End of configuration----

Dim $ItemNumber = 1
If $CmdLine[0] >= 1 Then ;If we have a parameter...
$ItemNumber = $CmdLine[1] ;...we should press the button the specified number of times.
EndIf

Run(""control mmsys.cpl"") ;Run the sound control applet and hide it.

WinWaitActive($ConfigWindowTitle) ;Wait for it to be active before sending keystrokes.

Send(""{TAB}{TAB}{TAB}{TAB}"") ;Put the focus on the list

For $i = 1 to $ItemNumber Step 1
Send(""{DOWN}"")
Next

Send(""!s"") ;Press Alt + S to set the selected device as the default.
WinClose($ConfigWindowTitle)

Now create a shortcut, and in the Target put the path to the compiled executable. For an argument, put the number of the sound device in the list that you want to switch to. (to switch to the top item in the list, put 1, the second item in the list, put 2, etc). If you want a keyboard shortcut, use the Shortcut Key field in the shortcut's properties window.

I'd been looking for something to do what you wanted to do, and found that there's no programmatic way that you can switch audio devices in Vista/7. It's just not something that Microsoft decided that programmers need to do, so I make this script to automate the process. It's not the best since it pops up the window in order to change the device (necessary), but it makes it possible to create shortcuts to change the output device for your sound."
bert [Entry]

"@Dan Walker Nice solution, but not perfect ;)

This script uses the existence of a file to actually perform a toggle, so you can use the same shortcut to switch between playback devices. It's just a simple edit:

;-----Configuration-----
;The title of the sound config window.
Dim $ConfigWindowTitle = ""Sound""
;-----End of configuration----

Dim $ItemNumber = 1 ; The first itme in the audio list

If FileExists (""a"") Then; Use the existence of a file to know if we should toggle
FileDelete(""a"")
$ItemNumber = 3 ; The audio playback device you want to toggle to
Else
FileOpen(""a"", 1)
FileClose(""a"")
EndIf

Run(""control mmsys.cpl"") ;Run the sound control applet and hide it.

WinWaitActive($ConfigWindowTitle) ;Wait for it to be active before sending keystrokes.

Send(""{TAB}{TAB}{TAB}{TAB}"") ;Put the focus on the list

For $i = 1 to $ItemNumber Step 1
Send(""{DOWN}"")
Next

Send(""!s"") ;Press Alt + S to set the selected device as the default.
WinClose($ConfigWindowTitle)"
bert [Entry]

"@cptloop Default Audio Changer was pretty good, but annoyingly would not set a device as the default communications device after it had been set as the default device.

That lead me to find Audio Switcher, which has several added features:

Support for switching recording devices
Support for multiple hotkeys
Dual switch (swap the default and communications devices)
And more!

The only thing I don't like, is that it doesn't allow you to use a single hotkey to toggle between two devices, each needs to be configured with its own hotkey. That said, v2.0 is in development, and promises some feature improvements, as well as plugin support. They have also published the underlying API, so it is possible to create your own tailored solution.

Edit: As per xenolightning/AudioSwitcher_v1#607, the ability to toggle/cycle devices is already implemented in v2.0."
"@cptloop Default Audio Changer was pretty good, but annoyingly would not set a device as the default communications device after it had been set as the default device.

That lead me to find Audio Switcher, which has several added features:

Support for switching recording devices
Support for multiple hotkeys
Dual switch (swap the default and communications devices)
And more!

The only thing I don't like, is that it doesn't allow you to use a single hotkey to toggle between two devices, each needs to be configured with its own hotkey. That said, v2.0 is in development, and promises some feature improvements, as well as plugin support. They have also published the underlying API, so it is possible to create your own tailored solution.

Edit: As per xenolightning/AudioSwitcher_v1#607, the ability to toggle/cycle devices is already implemented in v2.0."
bert [Entry]

"Another good program to do this is Audio Router. It is a free (GPL) program with 64-bit and 32-bit OS versions. Here's the program's GitHub link:

Audio Router

Here's a simple GIF of how it's used:"