Android MAME audio and performance / 2026-07-30

Fix MAME audio interruptions without hiding slow emulation on Android

Decide whether crackles come from audio buffering, emulation below full speed, throttling, or Android background load before raising latency.

10 minute performance guideOfficial MAME 0.288 concepts; Android port sound modules and menu names may differ

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

  1. 01

    Record the Android device, port and MAME version, game short name, sound module if shown, thermal state, display refresh, and a repeatable scene.

  2. 02

    Reset speed to 1.0, keep throttle enabled, close overlays and background work, then display or log emulation speed.

  3. 03

    If speed drops below full rate with the audio fault, test one reversible performance change and compare the same scene.

  4. 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.

  5. 05

    Return latency to default if delay grows without removing interruptions, and test Android output routing, Bluetooth, and the port's audio driver separately.

  6. 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

EvidenceMost likely boundarySafe response
Speed below 100% with crackleCompute or thermal limitReduce measured workload
Speed stable; short dropoutsBuffer underrunTest slightly more latency
Only Bluetooth path failsAndroid output routeCompare device speaker/wired
Changing speed changes pitchIntentional speed controlRestore 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.

First-party sources

Related guides