rox

Если бы Foobar2000 сделали в текущем году.

Настольный музыкальный плеер для тех, у кого большая локальная коллекция с аккуратными тегами. Панели вы собираете сами, а тема — это один файл, который можно отдать другому. Нативно на Linux, macOS и Windows.

Меньше секунды до окна

rox поставляется одним бинарником и запускается раньше, чем вы отпустите мышь.

Запуск, память и CPU в простое у семи музыкальных плееров на одной коллекции в 50 000 треков
ПлеерОкно появилосьПолностью загруженПамятьCPU в простое
rox0,3 s2,3 s 134 MB 0,5 %
Elisa0,7 sникогда не успокаивается 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 %

Всё это я мерил сам, на одной машине (Ryzen 9 5950X, Linux/Wayland), с одной и той же коллекцией в 50 000 треков на внешнем SSD, каждый плеер через одну и ту же обвязку с загруженной медиатекой. Память — это PSS по всему дереву процессов. «Загружен» — это момент, когда CPU успокаивается после запуска; простой — это плеер на паузе с видимым окном. DeaDBeeF остановился бы на 44 МБ и выиграл бы по памяти, но строки не получил: его MP3-парсер падает с segfault на середине импорта этой коллекции, каждый раз. rox индексирует все 50 000 треков, включая обрезанные файлы, на которых тот спотыкается.

Что внутри

Медиатека

Медиатека, которая держит удар

Параллельный сканер читает полные теги, настоящие длительности и собственный кодек каждого файла, а не пробегает по заголовку. Слежение за папками переживает переименования, и ничего не пропадает молча.

Что ломается на 50 000 треков

Тегам можно доверять

Полноценный редактор с атомарной записью, пакетными правками и поиском с заменой. Оценки лежат в самих файлах через FMPS и POPM. Поиск через MusicBrainz, iTunes и Deezer.

Рядом с Mp3tag

CUE-рипы играют как треки

FLAC на целый диск рядом со своим cue-листом индексируется настоящими строками. Каждый участок перематывается, скробблится, сортируется и без паузы переходит в следующий, как это делает файл.

Как устроены участки

Воспроизведение

Воспроизведение без пауз

Один поток, с перемешиванием, повтором, «играть следующим» и повтором A-B. Закладка ставится одной клавишей и сидит на полосе перемотки. Медиаклавиши и «сейчас играет» работают на всех трёх платформах.

Десять полос и побитовый вывод

Эквалайзер в отдельном окне, кроссфейд, который не трогает собственные склейки альбома, и монопольный вывод, который говорит, на что согласилось железо.

ReplayGain и побитовый вывод

Сортировка по звучанию

rox описывает ваши треки по их же звуку, включая темп, и выстраивает дальнейшее по похожести. Всё считается на вашей машине по вашим файлам, без сервисов в цепочке.

Внешний вид

Панели, которые вы собираете

Около сорока видов панелей, от медиатеки и очереди до сеток исполнителей, спектра и VU. Дублируйте панель с её настройками, сохраняйте как пресет или выносите в отдельное окно.

Рядом с Foobar2000

Темы, которые ездят одним файлом

Рабочее пространство — это один файл с макетом, палитрой, оформлением и шейдерами. Палитра умеет подкрашиваться от играющей обложки, уходя в светлое или тёмное вслед за ней.

восемь в коробке

Картинка, которая слушает

Пишите WGSL-шейдер поверх одной панели или всего окна, или запускайте пресеты Milkdrop через projectM. Именованные сигналы со спектра идут шейдерам на вход.

Шейдеры и сигналы

Каждый день

Тексты и история

Синхронизированные или обычные, из файлов рядом, из тегов или с lrclib, с редактором, который пишет туда же, откуда прочитал. Журнал прослушиваний кормит панель истории, статистику и скробблинг.

Плейлисты, которые выживают

Избранное, перетаскивание, M3U, PLS и XSPF внутрь и наружу и умные плейлисты, которые заново прогоняют сохранённый запрос, а не держат снимок. Записи переживают уход файла и его возвращение.

Один бинарник, без установщика

Архив, DMG или zip, плюс AUR и Nix flake. Портативный режим держит медиатеку и настройки в папке рядом с исполняемым файлом.

Скачать

За пределами окна

Сокет, а не сервер

JSON-RPC через локальный сокет: транспорт, правки очереди, поиск по медиатеке и события по подписке. Вместо авторизации — права на файлы, порт не слушает никто.

Что на этом можно построить

Плеер как инструменты MCP

Прокси рядом с приложением выводит сокет в MCP, и ИИ-клиент может спросить, что играет, или крутить транспорт. Выключено по умолчанию, проверяется на каждом вызове.

Вещает на Icecast

Клиент-источник отдаёт то, что играет rox, в MP3 на вашу точку монтирования. Только наружу: сетевая сторона принадлежит Icecast, а мёртвый сервер не тормозит воспроизведение.

Переделайте под себя

В коробке восемь рабочих пространств, каждое в один клик на окне приветствия. Каждое — это один файл с макетом, палитрой и шейдерами, которые оно запускает, так что его можно править, ломать и отдавать другим. Посмотреть все.