6

I'm trying to find a way to quickly change speaker configuration between 5.1 and stereo in Windows 7; anything that I will be able to make a shortcut of on the desktop for quick access.

The issue arises from bluray discs with PCM tracks. In those cases, unless Windows has the speakers configured as 5.1, it won't be sent to the amplifier via Arcsoft's TMT3. However, when using winamp I want a stereo configuration so that it passes directly to the amp.

I believe I can do it with autohotkey but that has a rather steep learning curve and I'll leave it as a last resort.

Is there a built-in Windows command or other method to change speaker configuration?

6 Answers 6

3

Soundswitch may be a solution, as it can switch between two speaker configurations for your current active playback device.

2
  • Excellent! This looks like a compiled autohotkey so it confirms my suspicion that no dedicated utility does this. An initial test didn't switch outputs but the site claims it can, so I'll play with it a bit more in the morning. Sep 12, 2010 at 21:41
  • 1
    I'm the author of Soundswitch. It's a compiled AutoIT script. The source is available. Feb 20, 2011 at 1:40
8

Ok, I did some investigation into this question because I was getting annoyed at going through the config menu. I play games so if I don't switch it to stereo for headphone use the audio is all messed up in-game.

Step 1: Grab process monitor, a program from sysinternals that monitors a bunch of stuff, including registry access from targeted processes. http://technet.microsoft.com/en-us/sysinternals/bb896645

Step 2: Run process monitor and open up the config menu in the playback devices panel. In the process mon there is a little target toolbar icon, pick this up and drag it to the config window. It will now look at that window and only pick up events from that process. You'll need to set the filters to only look at registry items, and clear the log. See this pic (since I can't post pictures in replies yet):

enter image description here

Step 3: Go set the config you want, so in the picture I'll set it to 5.1 surround. Then look in the process monitor window, you'll see access to registry keys of the form: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\MMDevices\Audio\Render{SOME LONG GUID}\Properties That will be your device, now right click on the entry in process monitor and click 'Jump to...' and it will open up the registry editor.

Step 4: Make sure you are in the '{GUID}/Properties' key in the registry editor and goto File>export, then export as a registry key with a descriptive name (audio_surround.reg or whatever).

Step 5: Switch to the other config using the speaker setup panel and export the registry again, with a descriptive name (audio_stereo.reg).

Now you should have two .reg files that you can double-click on to set your config to be stereo or surround. There is definitely an easier way, but it requires windows programming knowledge to get the GUID of the audio device, and then actually understand what the heck those registry values mean. But it's a start if anyone wants to roll with it!

3
  • This looks like it works. Good reverse engineering thinking there. I am, however, without my surround speakers at the moment, which is why I think the receiver doesn't recognise 5.1 being passed into it from the PC and remains in the 2.1 configuration. Oct 16, 2011 at 17:01
  • Actually, this doesn't work. As soon as you reboot, Windows changes everything including the device IDs and the values that are written to the registry.
    – Damien
    Aug 17, 2013 at 12:29
  • @Damien: Hmm, don't have this problem with my setup, which is using Asus drivers for a realtek device.
    – eresonance
    Jan 27, 2014 at 23:46
1

Found this for my problem... the VBScript didn't work in Windows 7 so I made my own in AutoIT v3

I made 2 little scripts, it works only for creative X-Fi

Switch to 2.0:

Run("C:\Program Files (x86)\Creative\AudioCS\CTAudCS.exe")
WinWaitActive("Configuratiescherm voor geluid")
Send("{TAB 3}")
Send("{RIGHT}")
Send("{TAB 2}")
Send("{ASC 050}")
Send("{TAB}")
Send("{ENTER}")

Switch to 5.1:

Run("C:\Program Files (x86)\Creative\AudioCS\CTAudCS.exe")
WinWaitActive("Configuratiescherm voor geluid")
Send("{TAB 3}")
Send("{RIGHT}")
Send("{TAB 2}")
Send("{ASC 053}")
Send("{TAB}")
Send("{ENTER}")

Install AutoIT v3 and put this in a .au3 file. or compile it to a exe

0

The following works for Creative X-FI. I'm sure the same concept could be adapted to work with Windows default. Enter the following in Notepad, save as 2-1.vbs. To make a 5.1 shortcut, change the 2 in WshShell.SendKeys("{2}" ) into a 5, save as 5-1.vbs Again, this is for Creative X-FI.

Option Explicit

Dim WshShell
Set WshShell = CreateObject("WScript.Shell" )
'
'
' ----> Lines that begin with ' are disabled, just foot notes.
'
' Start up the Audio Console
WshShell.CurrentDirectory = "C:\Program Files (x86)\Creative\AudioCS\"
WshShell.Run "CTAudCS.exe"
' lets open the console
While WshShell.AppActivate("Audio Control Panel") = FALSE
wscript.sleep 200
WshShell.AppActivate "Audio Control Panel"
Wend
'
' send some keystrokes to get the speaker settings box activated
'
'
WshShell.SendKeys("{TAB}{TAB}{TAB}{RIGHT}{TAB}{TAB}" )

'
' set the speaker selection to 2.1
'
WshShell.SendKeys("{2}" )
'
' exit Audio Control Panel -panel
'
WshShell.SendKeys("{TAB}{ENTER}" )

WScript.Quit(0)
0

Another solution is to use a utility from Nir Sofer (NirSoft) — SoundVolumeView (it's freeware, like all the others on his site). It can be used to view and set various properties of all sound components in the system. Basically it has UI, but also has command-line support. Additionally there is a console only version of SoundVolumeView — SoundVolumeCommandLine (svcl.exe).

Among other parameters it can switch speaker configuration in Windows. For example, to switch to Stereo (Full-range speakers are off) you can use the following command (you need to change the device name according to your system):

"<Path to SoundVolumeView>\SoundVolumeView.exe" /SetSpeakersConfig "Sound Blaster Z\Device\Speakers\Render" 0x3 0x3 0x0

Then you can create a shortcut with this command or use a third-party utility like AutoHotkey.

SoundVolumeView window

Here is an excerpt from the help:

/SetSpeakersConfig [Device Name] [Channel Mask] [Optional Speakers] [Full Range Speakers]

Sets the desired speakers configuration (Stereo, Quadraphonic, 5.1 Surround, 7.1 Surround, and so on). The [Channel Mask], [Optional Speakers] and [Full Range Speakers] parameters are integer values that represent the speakers configuration. You can use Hexadecimal numbers in these parameters by specifying '0x' prefix.
You don't have to deeply understand the meaning of these values. Simply set the desired speakers configuration from the user interface of Windows, and then copy the 3 values from the 'Speakers Config' column.

Here's some examples:

Set the speakers configuration to Stereo (With all speakers selected):

SoundVolumeView.exe /SetSpeakersConfig "Realtek High Definition Audio\Device\Speakers\Render" 0x3 0x3 0x3

Set the speakers configuration to Quadraphonic (With all speakers selected):

SoundVolumeView.exe /SetSpeakersConfig "Realtek High Definition Audio\Device\Speakers\Render" 0x33 0x33 0x33

Set the speakers configuration to 5.1 Surround (With all speakers selected):

SoundVolumeView.exe /SetSpeakersConfig "Realtek High Definition Audio\Device\Speakers\Render" 0x3f 0x3f 0x3f

-1

You can try used program Volume², it have function change audio devices with keyboard hotkeys

1
  • 1
    The little information at that link indicates that it does some stuff with hot keys, but nothing discusses changing the mode as described in the question. Link-only answers are discouraged in general because the link can break, leaving the answer useless. For software recommendations, the objective is an actual solution rather than listing a tool (the standards have been tightened since this question was posted). Please see this link on recommending software: meta.superuser.com/questions/5329/…
    – fixer1234
    Mar 27, 2015 at 7:09

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .