Skip to main content
Version: Next

Audio Playback

Zaparoo Core can play audio files on their own, without an emulator or separate media player. This is handled by a built-in native audio launcher that plays files through the same audio output Core uses for scan feedback sounds.

Use it to play a single track, a folder of music as a playlist, or background music that keeps playing while you launch and play games.

Supported files

The native audio launcher handles the Audio system and plays these formats:

  • .wav
  • .mp3
  • .ogg
  • .flac

Audio files indexed under an Audio or Music folder are launched through it automatically. You can also launch any audio file directly by its path:

**launch:/media/fat/music/chiptunes/intro.mp3

Media slots

Playback is split into two slots:

SlotUse
primaryThe default slot. Games and other media launch here.
backgroundA separate slot for audio that plays alongside whatever is in the primary slot.

Commands act on the primary slot unless you set a slot. Add ?slot=background (or the short form ?slot=bg) to target the background slot instead.

The background slot is what makes background music possible: a game runs in the primary slot while music plays in the background slot at the same time.

Background music

Start background music from a single track:

**launch:/media/fat/music/album/track01.flac?slot=background

Or play a whole folder as a background playlist:

**playlist.play:/media/fat/music/album?slot=background

While background music plays you can keep scanning game tokens as usual. They launch in the primary slot without clearing the background slot, so the music stays loaded.

Pause on launch

By default, background music automatically pauses when a game launches in the primary slot and resumes when the game quits. This keeps the music from competing with a game's own audio.

To keep background music playing through game launches, turn this off for the Audio system in the config file:

[[systems.default]]
system = "Audio"
pause_on_launch = false

If you manually start background music while a game is already running, Core treats that as intentional and does not pause it when the game quits.

Looping

Background playlists can repeat. Add a repeat argument when you load the playlist:

**playlist.play:/media/fat/music/album?slot=background&repeat=all

Use repeat=all to loop the whole playlist or repeat=one to loop the current track. The default is repeat=off.

Controlling playback

Use the control command, or the media.control API method, to control audio. The native audio launcher supports:

ActionEffect
toggle_pausePause or resume
pausePause
resumeResume
stopStop playback
fast_forwardSeek forward
rewindSeek backward

To control background audio, add the slot:

**control:toggle_pause?slot=background

fast_forward and rewind seek by 10 seconds by default. Set a custom amount with the seconds advanced argument:

**control:fast_forward?slot=background&seconds=30

Volume

Native audio playback uses the same volume setting as scan feedback sounds, set with volume in the config file.