Fix MAME audio interruptions without hiding slow emulation on Android
Measure emulation speed first. If it falls below 100%, reduce the proven CPU or graphics load; a larger audio buffer cannot create missing compute time. If speed is stable and only audio breaks up, test a small increase in the port's supported audio latency, keep throttle and speed at normal values, and compare one repeatable scene.
Do this in order
- 01
Record the Android device, port and MAME version, game short name, sound module if shown, thermal state, display refresh, and a repeatable scene.
- 02
Reset speed to 1.0, keep throttle enabled, close overlays and background work, then display or log emulation speed.
- 03
If speed drops below full rate with the audio fault, test one reversible performance change and compare the same scene.
- 04
If speed remains stable, raise supported audio latency by one small step; do not copy a desktop value into a port that uses another sound backend.
- 05
Return latency to default if delay grows without removing interruptions, and test Android output routing, Bluetooth, and the port's audio driver separately.
- 06
Save only the narrow setting that survives a cold relaunch, then repeat on a lighter title to distinguish device-wide and driver-specific limits.
Decision and diagnostic table
| Evidence | Most likely boundary | Safe response |
|---|---|---|
| Speed below 100% with crackle | Compute or thermal limit | Reduce measured workload |
| Speed stable; short dropouts | Buffer underrun | Test slightly more latency |
| Only Bluetooth path fails | Android output route | Compare device speaker/wired |
| Changing speed changes pitch | Intentional speed control | Restore 1.0 |
Buffering cannot replace emulation time
MAME documents audio latency as a buffer trade-off: smaller values reduce delay but demand better performance, while larger values can reduce underruns at the cost of delay. Some sound modules do not support the option.
When emulation itself is slow, the audio generator cannot keep real time. Diagnose CPU, graphics, heat, or background scheduling before treating every crackle as a buffer problem.
Throttle and speed are not performance fixes
Throttle normally prevents MAME from exceeding original hardware speed. The speed factor changes the target rate and also changes sound pitch; setting it below 1.0 masks the performance requirement rather than fixing normal play.
Use a fixed scene and default rate for comparisons. A port-specific frame-skip or renderer change is useful only when it measurably restores full emulation speed.
Android adds an output path
Bluetooth buffering, device routing, battery policies, and a wrapper's chosen audio backend can fail even when the emulated machine is on time. Compare the device speaker or a wired path before editing core-wide settings.
Document what the Android port actually exposes. Unsupported upstream flags should remain a diagnostic reference, not a configuration promise.
Performance testing does not change content rights. Use your own lawful dump or an explicitly authorized test release, and never distribute game, BIOS, CHD, sample, artwork, or music data with a benchmark.