rox

Le lecteur d'aujourd'hui, pas celui d'hier.

Un lecteur de musique pour ceux dont la bibliothèque locale est grande et taguée avec soin. Les panneaux, tu les composes toi-même ; un thème, c'est un seul fichier, à donner à qui tu veux. Natif sur Linux, macOS et Windows.

Une fenêtre en moins d'une seconde

rox tient dans un seul binaire et démarre avant que tu n'aies lâché la souris.

Démarrage, mémoire et CPU au repos de sept lecteurs de musique sur une bibliothèque de 50 000 pistes
LecteurFenêtre affichéeEntièrement chargéMémoireCPU au repos
rox0,3 s2,3 s 134 MB 0,5 %
Elisa0,7 sne se stabilise jamais 206 MB 74 %
fooyin0,3 s18 s 364 MB 0 %
Quod Libet-19 s 384 MB 0,2 %
Strawberry0,3 s32 s 434 MB 0,8 %
Museeks-3 s 436 MB 0 %
Tauon8,7 s12 s 2,8 GB 0 %

J'ai mesuré tout cela moi-même, sur une seule machine (Ryzen 9 5950X, Linux/Wayland), avec la même bibliothèque de 50 000 pistes sur un SSD externe, chaque lecteur passé dans le même banc d'essai avec sa bibliothèque chargée. La mémoire est le PSS sur l'ensemble de l'arbre de processus. « Chargé » signifie que le CPU s'est stabilisé après le lancement ; le repos, c'est un lecteur en pause avec la fenêtre visible. DeaDBeeF se serait posé à 44 Mo et aurait gagné sur la mémoire, mais il n'a jamais eu de ligne : son analyseur MP3 part en segfault en plein import de cette bibliothèque, à chaque tentative. rox indexe les 50 000 pistes, y compris les fichiers tronqués sur lesquels il bute.

Ce qu'il y a dedans

Bibliothèque

Une bibliothèque qui tient la charge

Un scanner parallèle lit les tags complets, les durées réelles et le codec propre à chaque fichier, pas un survol d'en-tête. La surveillance des dossiers survit aux renommages, et rien ne disparaît en silence.

Ce qui casse à 50 000 pistes

Un tagage digne de confiance

Un éditeur complet, écritures atomiques, modifications par lots et rechercher-remplacer. Les notes vivent dans les fichiers eux-mêmes via FMPS et POPM. Recherche via MusicBrainz, iTunes et Deezer.

Face à Mp3tag

Les rips CUE se lisent comme des pistes

Un FLAC couvrant tout un disque, à côté de sa feuille cue, s'indexe en vraies lignes. Chaque segment se navigue, se scrobble, se trie et enchaîne sans blanc sur le suivant, exactement comme un fichier.

Comment fonctionnent les segments

Lecture

Lecture sans blanc

Un seul flux, avec lecture aléatoire, répétition, lire ensuite et répétition A-B. Un signet se pose d'une touche et reste sur la barre de position. Les touches multimédias et la lecture en cours fonctionnent sur les trois plateformes.

Dix bandes et du bit-perfect

Un égaliseur dans sa propre fenêtre, un fondu enchaîné qui laisse tranquilles les enchaînements voulus d'un album, et une sortie exclusive qui dit ce que le matériel a réellement accepté.

ReplayGain et bit-perfect

Trié à l'oreille

rox décrit tes pistes à partir de leur propre audio, tempo compris, et ordonne la suite par ressemblance. Tout tourne sur ta machine, sur tes fichiers, sans service dans la boucle.

Apparence

Des panneaux que tu composes

Une quarantaine de types de panneaux, de la bibliothèque et la file d'attente aux grilles d'artistes, au spectre et au VU-mètre. Duplique-en un avec sa configuration, enregistre-le comme préréglage, ou détache-le dans une fenêtre.

Face à Foobar2000

Des thèmes qui tiennent dans un fichier

Un espace de travail est un fichier portant disposition, palette, apparence et shaders. Les palettes peuvent se teinter d'après la pochette en cours et basculer clair ou sombre avec l'image.

Les huit livrés

Des visuels qui écoutent

Écris un shader WGSL sur un panneau ou sur toute la fenêtre, ou fais tourner des préréglages Milkdrop via projectM. Des signaux nommés issus du spectre circulent sur les entrées des shaders.

Shaders et signaux

Au quotidien

Paroles et historique

Synchronisées ou simples, depuis des fichiers annexes, des tags ou lrclib, avec un éditeur qui réécrit là où il a lu. Un journal d'écoute alimente le panneau d'historique, les statistiques et le scrobbling.

Des playlists qui survivent

Favoris, réorganisation par glisser, M3U, PLS et XSPF dans les deux sens, et playlists intelligentes qui relancent une requête enregistrée au lieu de figer un instantané. Les entrées survivent au départ et au retour d'un fichier.

Un binaire, pas d'installeur

Une archive tar, un DMG ou un zip, plus l'AUR et un flake Nix. Le mode portable garde la bibliothèque et les réglages dans un dossier à côté de l'exécutable.

Le télécharger

Au-delà de la fenêtre

Un socket, pas un serveur

JSON-RPC sur un socket local : transport, file d'attente, recherche et événements poussés. L'auth tient aux permissions de fichiers, rien n'écoute sur un port.

Ce que tu peux bâtir dessus

Le lecteur comme outils MCP

Un proxy à côté de l'application met le socket sur MCP : un client IA peut demander ce qui joue ou piloter la platine. Désactivé par défaut, revérifié à chaque appel.

Diffuse vers Icecast

Un client source pousse ce que rox joue en MP3 à ton point de montage. En sortie seulement : la face réseau est à Icecast, un serveur mort n'arrête jamais la lecture.

À toi d'en faire quelque chose

rox est livré avec huit espaces de travail, à un clic dans la fenêtre d'accueil. Chacun est un fichier unique portant la disposition, la palette et les shaders qu'il utilise : modifiable, cassable, transmissible. Les voir tous.