Hi,
I have a problem with my Soundblaster Live and Wine. When running Windows Applications, they often set the mixer level for the PCM channel to 100%. However, the Soundblaster Live under Linux tends to sound a bit dirty at these levels, you have to use values under 80%.
Is there anything I can do to tell wine to let this value unchanged? I am using ALSA and the OSS module of wine. Is anyone even aware of this problem?
Thanks, Tony.
Hi,
Constantin Bergemann wrote:
Hi,
I have a problem with my Soundblaster Live and Wine. When running Windows Applications, they often set the mixer level for the PCM channel to 100%. However, the Soundblaster Live under Linux tends to sound a bit dirty at these levels, you have to use values under 80%.
Is there anything I can do to tell wine to let this value unchanged? I am using ALSA and the OSS module of wine. Is anyone even aware of this problem?
This is most likely caused by DirectSound. Currently calling DirectSoundCreate() has the side-effect of setting the sound volume to 100%. In fact anything that causes the creating of a primary buffer does that so that some applications repeteadly reset the volume to 100% which is very annoying.
Based on my test it's also wrong. On Windows starting a DirectSound application does not change the volume. One way to verify this is with the DirectSound regression test. Do:
set WINETEST_INTERACTIVE=1 dsound_crosstest.exe dsound
This should play the test tones at the current volume. When the same test is run in Wine it first sets the volume to the max and then plays the tones.
The attached hack should fix this problem but probably not in the right way. I'm not sure of the exact Windows behavior. I believe it just initializes the DirectSound volume to whatever is the current volume. That means we should query the current volume from wineoss and set it that way. We should really add a trace in the dsound test to make it possible to test that theory.