Viewing Issue Advanced Details
ID Category [?] Severity [?] Reproducibility Date Submitted Last Update
09194 Sound Trivial Always 2 days ago 20 hours ago
Tester tenpar View Status Public Platform MAME (Official Binary)
Assigned To Resolution Open OS Windows 10/11 (64-bit)
Status [?] Driver
Version 0.278 Fixed in Version Build 64-bit
Fixed in Git Commit Github Pull Request #
Summary 09194: Using WASAPI doesn't bypass the kernel mixer
Description Normally, when sound is played in WASAPI, the peak meter of the OS playback device is unresponsive to avoid the kernel mixer, but when sound is played with WASAPI enabled in MAME, the peak meter responds (see attached image).
It appears that WASAPI is not enabled even if wasapi is set to sound in the mame.ini settings.
Steps To Reproduce 1. Set “wasapi” to sound in mame.ini.
2. Play a sound game with MAME while watching the peak meter of the audio output device on the sound setting screen of the OS.
Additional Information The same thing happened when used WASAPI with PortAudio.
Github Commit
Flags
Regression Version
Affected Sets / Systems
Attached Files
png file icon wasapi.png (674,587 bytes) 2 days ago Uploaded by tenpar
tenpar
Relationships
There are no relationship linked to this issue.
Notes
7
User avatar
No.23402
hap
Developer
1 day ago
PortAudio in MAME used to support WASAPI exclusive mode, not anymore after the rewrite.

MAME's WASAPI sound module doesn't support exclusive mode.
cuavas could tell you whether or not it's deliberate, and if it's TODO.
User avatar
No.23403
Robbbert
Moderator
1 day ago
This would seem to be a non-issue, but I'll leave it to cuavas to decide.
User avatar
No.23405
tenpar
Tester
1 day ago
The exclusive mode is more appreciated because the sound quality is degraded when going through the kernel mixer.
User avatar
No.23407
cuavas
Administrator
1 day ago
The sound quality isn’t degraded going through the mixer if you set the mixdown format to use a sample rate supported by the sound output hardware and the application produces sound at the mixdown format sample rate. There’s a slight reduction in latency with exclusive mode, but it’s not much

Supporting exclusive mode would require a completely separate sound module, and I don’t think it would be worth the maintenance burden. It would also require moving the audio stream mixing into MAME’s sound manager (or implementing it in the sound module itself), while we’re moving in the opposite direction towards having one stream per sound route and letting the sound API deal with mixing.
User avatar
No.23410
tenpar
Tester
1 day ago
Sorry if I misunderstood.

I read it as if you were considering mixing sounds output outside of MAME with MAME, but I don't see the need for that.
I think that sounds other than MAME can be ignored. I think that's what the exclusive mode is for.

However, I somehow understood that it would be difficult to change to exclusive mode now.
I tried changing AUDCLNT_SHAREMODE_SHARED to AUDCLNT_SHAREMODE_EXCLUSIVE in two places in wasapi_sound.cpp, built and started the game, and got the following error.
I guess various other modifications are needed.

Sound: Error initializing audio client interface for output stream :speaker on device
User avatar
No.23413
Robbbert
Moderator
22 hours ago
So, are you happy for this to be closed?
User avatar
No.23417
tenpar
Tester
20 hours ago
Personally, I would like WASAPI to have an exclusive mode, but I leave it to the developers to decide whether to close it or not.