À propos du projet

Music Player est un démon, serveur et client de musique extensible écrit en Rust, distribué sous forme d'un binaire unique sans dépendances d'exécution. Il est conçu dans l'esprit de MPD et Mopidy. La lecture est propulsée par le moteur audio du firmware Rockbox (via les crates rockbox-playback, rockbox-dsp et rockbox-metadata), prenant en charge plus de 40 formats dont MP3, FLAC, Vorbis, Opus, MP4/AAC/ALAC, WavPack, APE, WMA et les chiptunes. La chaîne DSP fournit des préréglages d'égaliseur, le fondu enchaîné et ReplayGain, avec une mise en mémoire tampon de qualité sans interruption et un streaming HTTP natif. Le démon indexe la bibliothèque musicale dans SQLite avec la recherche plein texte FTS5, maintenue automatiquement synchronisée par des déclencheurs de base de données. Il expose la bibliothèque via gRPC (tonic, grpc-web activé), GraphQL (avec GraphiQL), des événements WebSocket et une interface web. Le même binaire agit à la fois comme serveur et client — la première invocation démarre le démon, les suivantes s'y connectent. Les interfaces utilisateur comprennent : - Une interface terminal (ratatui) avec un chercheur flou de style fzf, une ligne d'état inspirée de neovim et une superposition d'aide. - Une interface web (React 19, TanStack Query, Jotai, Tailwind v4) avec position de lecture en direct via les abonnements GraphQL, responsive jusqu'à la largeur d'un téléphone. - Une application de bureau Slint personnalisable avec un démon intégré, partageant les mêmes habillages, polices et composants que l'interface web. Fonctionnalités supplémentaires : - Parcourir et diffuser depuis les serveurs Subsonic/Navidrome et Jellyfin. - Diffuser vers des récepteurs Chromecast et UPnP/DLNA, ou contrôler un autre démon music-player. - Recherche et navigation de radios Internet (Radio Browser + TuneIn) avec signets et une vue plein écran de la lecture en cours. - Scrobbling Rocksky via l'AT Protocol. - Synchronisation AT Protocol pour les signets radio et les morceaux aimés entre appareils. - Empreinte acoustique via Chromaprint, identifiant les fichiers par l'audio et nommant ceux mal étiquetés à partir d'AcoustID/MusicBrainz. - Analyses d'écoute propulsées par DuckDB, important l'historique Spotify, Last.fm et Rocksky (dédupliqué entre les sources) pour l'analyse des sessions, des sauts et de la dérive des goûts. - Sortie audio flexible : périphérique système (cpal), stdout, FIFO, socket Unix ou socket TCP. L'installation est disponible via un script d'installation curl, npm, Homebrew (y compris un cask macOS pour l'application de bureau), les dépôts APT et DNF, AUR, les flakes Nix et des binaires précompilés pour macOS (arm64/x86_64) et Linux (amd64/arm64). La configuration se trouve dans ~/.config/music-player/settings.toml, chaque clé pouvant être remplacée via les variables d'environnement MUSIC_PLAYER_*.