About this project
Music Player is an extensible music daemon, server, and client written in Rust, distributed as a single binary with zero runtime dependencies. It is designed in the spirit of MPD and Mopidy.
Playback is powered by the Rockbox firmware's audio engine (via rockbox-playback, rockbox-dsp, and rockbox-metadata crates), supporting 40+ formats including MP3, FLAC, Vorbis, Opus, MP4/AAC/ALAC, WavPack, APE, WMA, and chiptunes. The DSP chain provides EQ presets, crossfade, and ReplayGain, with gapless-grade buffering and native HTTP streaming.
The daemon indexes the music library into SQLite with FTS5 full-text search, kept in sync automatically by database triggers. It exposes the library over gRPC (tonic, grpc-web enabled), GraphQL (with GraphiQL), WebSocket events, and a web UI. The same binary acts as both server and client — the first invocation starts the daemon, subsequent ones connect to it.
User interfaces include:
- A terminal UI (ratatui) with an fzf-style fuzzy finder, neovim-inspired status line, and help overlay.
- A web UI (React 19, TanStack Query, Jotai, Tailwind v4) with live playback position via GraphQL subscriptions, responsive down to phone width.
- A skinnable Slint desktop app with an embedded daemon, sharing the same skins, fonts, and components as the web UI.
Additional features:
- Browse and stream from Subsonic/Navidrome and Jellyfin servers.
- Cast to Chromecast and UPnP/DLNA renderers, or control another music-player daemon.
- Internet radio search and browsing (Radio Browser + TuneIn) with bookmarks and a fullscreen now-playing view.
- Rocksky scrobbling over the AT Protocol.
- AT Protocol sync for radio bookmarks and liked songs across devices.
- Acoustic fingerprinting via Chromaprint, identifying files by audio and naming poorly tagged ones from AcoustID/MusicBrainz.
- Listening analytics powered by DuckDB, importing Spotify, Last.fm, and Rocksky history (deduplicated across sources) for session, skip, and taste-drift analysis.
- Flexible audio output: system device (cpal), stdout, FIFO, Unix socket, or TCP socket.
Installation is available via curl install script, npm, Homebrew (including a macOS cask for the desktop app), APT and DNF repositories, AUR, Nix flakes, and prebuilt binaries for macOS (arm64/x86_64) and Linux (amd64/arm64). Configuration lives in ~/.config/music-player/settings.toml, with every key overridable via MUSIC_PLAYER_* environment variables.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.