Sobre el proyecto

Music Player es un daemon, servidor y cliente de música extensible escrito en Rust, distribuido como un único binario sin dependencias de tiempo de ejecución. Está diseñado en el espíritu de MPD y Mopidy. La reproducción está impulsada por el motor de audio del firmware Rockbox (mediante los crates rockbox-playback, rockbox-dsp y rockbox-metadata), con soporte para más de 40 formatos, incluidos MP3, FLAC, Vorbis, Opus, MP4/AAC/ALAC, WavPack, APE, WMA y chiptunes. La cadena DSP ofrece presets de EQ, crossfade y ReplayGain, con buffering de nivel gapless y streaming HTTP nativo. El daemon indexa la biblioteca musical en SQLite con búsqueda de texto completo FTS5, mantenida en sincronización automáticamente mediante triggers de base de datos. Expone la biblioteca a través de gRPC (tonic, con grpc-web habilitado), GraphQL (con GraphiQL), eventos WebSocket y una interfaz web. El mismo binario actúa tanto como servidor como cliente: la primera invocación inicia el daemon y las siguientes se conectan a él. Las interfaces de usuario incluyen: - Una interfaz de terminal (ratatui) con un buscador difuso estilo fzf, una línea de estado inspirada en neovim y una superposición de ayuda. - Una interfaz web (React 19, TanStack Query, Jotai, Tailwind v4) con posición de reproducción en vivo mediante suscripciones GraphQL, adaptable hasta el ancho de un teléfono. - Una aplicación de escritorio Slint con skins personalizables y un daemon integrado, que comparte los mismos skins, fuentes y componentes que la interfaz web. Funciones adicionales: - Explorar y transmitir desde servidores Subsonic/Navidrome y Jellyfin. - Hacer cast a Chromecast y renderizadores UPnP/DLNA, o controlar otro daemon de Music Player. - Búsqueda y exploración de radio por internet (Radio Browser + TuneIn) con marcadores y una vista a pantalla completa de reproducción actual. - Scrobbling en Rocksky mediante el AT Protocol. - Sincronización con AT Protocol para marcadores de radio y canciones favoritas entre dispositivos. - Huella acústica mediante Chromaprint, que identifica archivos por su audio y nombra los mal etiquetados a partir de AcoustID/MusicBrainz. - Analíticas de escucha impulsadas por DuckDB, que importan el historial de Spotify, Last.fm y Rocksky (deduplicado entre fuentes) para el análisis de sesiones, saltos y deriva de gustos. - Salida de audio flexible: dispositivo del sistema (cpal), stdout, FIFO, socket Unix o socket TCP. La instalación está disponible mediante script de instalación con curl, npm, Homebrew (incluida una cask de macOS para la aplicación de escritorio), repositorios APT y DNF, AUR, Nix flakes y binarios precompilados para macOS (arm64/x86_64) y Linux (amd64/arm64). La configuración reside en ~/.config/music-player/settings.toml, y cada clave puede sobrescribirse mediante variables de entorno MUSIC_PLAYER_*.