Skip to content

Playlists

Playlists in MZAP are stored in a SQLite database and provide persistent, ordered track lists for players.

Create a new playlist and add tracks from the media library, local files, or URLs (internet radio streams).

The Playlists tab has a From Folder button alongside Create Playlist and Import. Pick a root folder; MZAP registers it as a library folder, scans it recursively, and creates one playlist per subfolder that contains audio.

  • Each playlist is named after its leaf folder (SomeAlbum, not Artist - SomeAlbum). Duplicate names are allowed since the source folder is the identity.
  • The picked root folder itself is never turned into a playlist, even if it has audio files at the top level — only subfolders become playlists.

Re-running on the same root syncs in place

Section titled “Re-running on the same root syncs in place”

Run From Folder again on the same root and existing playlists are synced rather than duplicated:

  • Existing playlists are matched by their stored source folder, so renaming a playlist in the UI does not break sync.
  • New files in a subfolder are appended to the corresponding playlist.
  • Files removed from disk are removed from the playlist — but only tracks that originally came from the source folder; tracks you manually added from elsewhere are preserved.
  • Reorderings made in the UI are preserved; newly added tracks always append at the end.
  • Orphan playlists (whose source folder was deleted on disk) are left alone — remove them manually if you no longer want them.
  • Folder renames are not auto-detected: the old playlist becomes an orphan and a new one appears under the new name.

Bulk-create requires Admin (same as Import). The call is synchronous and waits for the scan + sync pass to complete; for already-scanned folders this is near-instant because unchanged files are skipped by modification time.

Each Playlist player has its own working current playlist. Editing a player’s queue — adding files or streams, removing or reordering tracks, changing the play mode, clearing it, or playing a radio station onto the player — affects only this working copy.

  • Editing never changes your saved playlists. If a player is playing one of your saved library playlists, the first edit forks a private working copy (shown with an Unsaved badge) and leaves the saved playlist untouched. To deliberately change a saved playlist, edit it from the Playlists tab instead.
  • No duplicate playlists. Opening the same playlist file repeatedly, or playing several radio stations onto a player, reuses the working playlist instead of creating a new identically-named one each time. Re-importing the same .m3u/.pls file re-syncs the existing library playlist rather than adding a copy.
  • Saving a player’s queue promotes the working playlist into a normal, visible library playlist (and writes the file when you save to file).

These per-player working playlists are hidden from the Playlists library list until you save them.

When you edit the queue of a player that is currently playing, the switch to the working copy is seamless: the currently-playing track is carried over unchanged, so playback continues without interruption — no audible gap, and no reconnect for a live stream. Only later track changes use the edited queue. Switching to a genuinely different playlist (Browse Playlists, scheduler) still reloads as expected.

A player shows the source of its current queue in two places — under the player name in the header (visible from any tab) and in the queue info bar above the track list:

  • 📄 File — loaded from or saved to an .m3u file; shows the filename, with the full path on hover.
  • 🎵 Library — a saved playlist from the app’s Playlists; shows its name.
  • Unsaved — a working queue that hasn’t been saved yet.

The toolbar above a player’s queue groups its actions for clarity and to prevent accidental data loss:

  • Add / source actions are grouped on the left: Load playlist from file, Add audio file, Load stream, Browse Playlists.
  • Save is a single dropdown button (download icon) with two choices:
    • Save to File… — exports the whole queue to an .m3u/.m3u8 file (desktop only).
    • Save to Playlists… — saves the whole queue into the app’s Playlists library (append to an existing playlist, or create a new one).
  • Clear Playlist (trash icon) sits at the far-right edge, separated from the other actions. Clearing the queue always asks for confirmation.

Each player with a playlist can use one of these modes:

  • Sequential — Play tracks in order
  • Shuffle — Random order
  • Repeat One — Loop the current track
  • Repeat All — Loop the entire playlist

MZAP can import playlists from standard M3U and PLS files. Importing the same file again re-syncs the existing playlist instead of creating a duplicate.

Double-clicking a track in a player’s playlist starts playback immediately, in a single action — even when the player is stopped. The status panel (“Now Playing” / “Paused” / “Stopped”) always reflects the player’s real state.

Clearing a player’s queue empties its working playlist and always asks for confirmation first; any saved library playlist is left intact, and you can add tracks again afterwards. Playback is not interrupted, but the bound player’s behavior depends on what it is playing:

  • A player playing a file finishes the current track, then stops automatically. Its track reference is cleared, so a later Play falls back to the (empty or reassigned) playlist.
  • A player playing an internet radio stream keeps playing — and keeps its station identity — until you stop it manually, since a stream has no natural end. Pause/Play and Stop/Play continue to work, and pressing Play after stopping reconnects the same station.

Once a player is stopped with nothing loaded, the “Now Playing” panel clears the stale title and shows “No audio loaded”. A player still playing keeps its title. Clearing a playlist while a player is playing shows a toast: “Playlist cleared. Playback continues until you stop it.”

Configure per-player crossfade duration for smooth transitions between playlist tracks.