libsdl-org / SDL_mixer

An audio mixer that supports various file formats for Simple Directmedia Layer.
zlib License
419 stars 141 forks source link

Pause music pauses all sounds: audio:pauseBackgroundTrack mutes all sound in windows #128

Open SDLBugzilla opened 3 years ago

SDLBugzilla commented 3 years ago

This bug report was migrated from our old Bugzilla tracker.

Reported in version: 1.2.12 Reported for operating system, platform: Windows 7, x86

Comments on the original bug report:

On 2013-03-22 09:30:03 +0000, Maarten Peters wrote:

I'm one of the developers of CorsixTH (http://code.google.com/p/corsix-th/) and we use SDL_mixer for the in-game sounds and music.

We're currently having the problem that when we pause the music througt the ''jukebox'' in-game (Options>Jukebox) we also don't here the sounds from patients and doctors (like doors, ringing of the phone etc.) See here: http://code.google.com/p/corsix-th/issues/detail?id=1503&q=music.

One of our developers has disabled this option, because of this bug: http://code.google.com/p/corsix-th/source/detail?r=2055. Make the changes at audio.lua undone and you see this bug to occur.

On 2013-03-23 16:10:49 +0000, Sam Lantinga wrote:

Is this problem specific to Windows 7? Is midiOutSetVolume() setting the system wide volume? If that's the case, the only solution I can think of is to use the built-in timidity support for software midi instead.

On 2013-03-23 16:28:22 +0000, Maarten Peters wrote:

No, this bug also occurs on Windows Vista. I asked the question to one of the other developers.

On 2013-03-23 17:31:03 +0000, Maarten Peters wrote:

The answer: Yes it is and it was a known issue. I think the set volume in that funtion may not be necessary but there was a comment that it works around another bug.

On 2013-03-24 05:03:30 +0000, Maarten Peters wrote:

''Our pause function does set the volume to work around another bug. I don't know if the other bug still exists so maybe we can get rid of just that line.'' Maybe this resolves our problem?

On 2019-08-21 10:30:03 +0000, Vitaly Novichkov wrote:

midiOutSetVolume()

Yeah, for this thing I have this ticket: https://bugzilla.libsdl.org/show_bug.cgi?id=3495 The only way to fix this - make a workaround: instead of touching midiOutSetVolume() call, send MIDI volume to all channels and apply a factor to ALL volume change events (CC7). So, this will need tracking of all CC7 are passing to correctly send the changed volume to MIDI output.

slouken commented 2 years ago

Related to #213