• Some users have recently had their accounts hijacked. It seems that the now defunct EVGA forums might have compromised your password there and seems many are using the same PW here. We would suggest you UPDATE YOUR PASSWORD and TURN ON 2FA for your account here to further secure it. None of the compromised accounts had 2FA turned on.
    Once you have enabled 2FA, your account will be updated soon to show a badge, letting other members know that you use 2FA to protect your account. This should be beneficial for everyone that uses FSFT.

Where does Windows store the Sound "defaults"?

Coldblackice

[H]ard|Gawd
Joined
Aug 14, 2010
Messages
1,156
In the Windows "Sound" device settings, where is the "Speaker Configuration" default setting for a device stored? Or, how does Windows decide what to automatically set this to to (initially)?


-----------------------
Anytime I turn a computer monitor off or reboot, Windows resets my sound device's (7950 HDMI) configuration back to a Stereo speaker setup with a Default Format of 16bit/44KHz, which really kills my sound. I then have to manually open up the Windows Sound Devices panel, click configure on my HDMI/Receiver device (which is the default device), and then manually set it to a 7.1 Surround setup, with all optional speakers enabled, and as full-range speakers, too. I then have to go and set the Default Format back to 24bit/48KHz, because Windows keeps resetting it to 16bit/44KHz.

(I watch more Bluray movies on my computer than I listen to music, so I pick this setting to have less net transcoding overall)

If I don't adjust these -- particularly my "Speaker Configuration" setting -- my sound levels get cut to crap, and massively so.



SETUP

I output my computer's sound through my 7950's HDMI, which feeds into a Yamaha RX-V667 receiver that outputs to a 2.1 speaker setup connected to it.

Now, you may be thinking -- "Well, duh, Windows keeps resetting it to a 2-channel stereo setup... you have a 2-channel stereo setup!"

The reason I set it to 7.1 is because I've found it preferable to "cut" Windows out of the audio processing as much as possible. Meaning, I don't want Windows trying to decide which audio channels to output or combine or whatever, especially when the receiver then has to decide and process this; I'd much rather have Windows just send out the full, unadulterated signal, with all enhancements disabled, and leave the deciding and processing up to my receiver.

Essentially, it's cutting out an unnecessary "middleman" from the process, leaving the bulk of the brain-work up to the device that is best up for the job in determining which channels to output or combine or process -- the receiver. (While I do bitstream my movie's, I realize that Windows still does have a hand in the audio handling process, despite my cutting out)

So I'm trying to stop Windows from resetting these settings. Unfortunately, I haven't been able to stop this from happening. I can't determine why Windows is doing this, how it's "deciding", and where it's storing the data. I apparently can't set my own default settings, either. I have to manually set these settings each a few times daily.



RELATED QUESTIONS/THOUGHTS TO ASSIST ANY SUGGESTIONS

-How is Windows "deciding" on these default settings (a Stereo setup + 16bit/44KHz)? Are they just base/automatic settings applied for any/all sound devices when initially connected? Or is Windows somehow "reading" information from my receiver that I have a 2.1 speaker setup connected?

-Where are these default settings being pulled from (or stored)? The operating system (like a registry key)? The 7950 drivers?

-When you manually change the speaker configuration in the Windows Sound panel, where does Windows store or write that information to? How does it remember (well, until a monitor turns off or the system reboots)? Would it be possible to write a script/task/program that could make sure my desired settings are always applied (7.1 Surround + 24bit/48KHz)?
 
Well, I've made a bit of progress.

I loaded up Process Monitor and watched everything that happened behind the scenes when I changed the Default Format. I found that rundll32.exe is the "messenger" doing the work, and accessing specific registry keys. The section in the registry where these keys are stored is:

Code:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\MMDevices\Audio\Render\{39de53a5-eb32-44e2-a457-eca85387442b}\Properties

In this section, I found references to .inf files. After opening these up and cross-referencing properties and keys in Google, I believe I've found the key that pertains to the Default Format setting:

Code:
;; PKEY_AudioEngine_OEMFormat:  Specifies the default format that is used for rendering/capturing.
PKEY_AudioEngine_OEMFormat = "{E4870E26-3CC5-4CD2-BA46-CA0A9A70ED04},3"

So I guess next, I need to decipher how exactly the binary in this key correlate with specific default sample rates/bit depths. I've been comparing the differences of this key to when I have a different format selected (like the default 16bit/44KHz), and I can see the various locations in the key's binary data where the binary is different, but I don't know how to "decipher" them. I'm sure Microsoft has it documented somewhere, but I haven't found it yet.

By knowing that this is the key, however, I suppose it's not really necessary to find/know what the specific binary values are, as long as I just keep the entire key (somehow) statically set to the 24bit/48KHz format equivalent. I still haven't figured out how to do this yet, either.

Just a bit more info, for anyone who ever happens to stumble on this same pickle of a problem.



EDIT

Each endpoint has two property stores; the "endpoint property store" displayed above, and the "effects property store." The endpoint property store is exposed to applications, but the effects property store is limited to:

1) the audio driver

2) the audio engine

3) the Sound control panel.

So only the user can view / change settings in the effects property store, and that only through the Sound control panel.

The PKEY_AudioEngine_DeviceFormat property contains in fact the sampling rate settings (in a WAVEFORMATEXTENSIBLE struct) that are configured in the sound device control panel. The IPropertyStore interface allows to read and set the property as well. But when I do this (you need elevated rights for this) the changed settings are not written correctly: As a result the audio device control panel will hang when you later on open the respective recording devices property tab.

An analysis shows that the sampling rate is stored in registry key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\MMDevices\Audio\Capture\{device GUID}\Properties]. There are two values "{f19f064d-082c-4e27-bc73-6882a1bb8e4c},0" and "{e4870e26-3cc5-4cd2-ba46-ca0a9a70ed04},0" that are used for storing the settings. In fact these values are binaries containing an unknown header and the WAVEFORMATEXTENSIBLE struct.

When I change the settings using the control panel, both values will be changed. When I change the settings using the property store interface, only one of the two values is changed. I consider this as a Vista bug. Later on the respective control panel tab is hanging. A reboot of Vista does not help, unplug and replug of the device does not help either. The only way to repair this is to uninstall the device using the device manager, unplug and replug it. Then the device is installed again correctly.

http://social.msdn.microsoft.com/Fo.../thread/e2e9858f-9bf5-4400-8a4e-570fa3285aad/
 
Last edited:
Back
Top