rox

要是 Foobar2000 生在今天。

给拥有大型、精心整理过标签的本地媒体库的人用的桌面播放器。面板自己拼,一套主题就是一个文件,可以直接递给别人。在 Linux、macOS 和 Windows 上都是原生的。

下载 rox

用 Arch 或 NixOS?那就从 AUR 或 Nix flake 装吧。

v1.33.0 · Linux、macOS、Windows · 全部下载

  • 0.3 s 从启动到显示窗口
  • 134 MB 内存占用(已加载 50,000 首曲目)
  • AGPL-3.0 自由且开源

一秒之内出窗口

rox 就是一个可执行文件,鼠标还没松开它就起来了。

七款音乐播放器在同一个五万首曲目媒体库上的启动、内存和空闲 CPU
播放器出窗口完全加载内存空闲 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),同一个放在外置 SSD 上的五万首曲目媒体库,每个播放器都过同一套测试流程,并且都已经把媒体库加载好。内存是整棵进程树的 PSS。“完全加载”指启动后 CPU 平静下来的那一刻;空闲指窗口可见、播放器暂停的状态。 DeaDBeeF 本来会停在 44 MB 拿下内存这一项,但它没能占到一行:它的 MP3 解析器每次导入这个媒体库都会在半路段错误。rox 把全部五万首都索引下来了,包括那些绊倒它的截断文件。

媒体库

  • 撑得住的媒体库

    并行扫描器读的是完整标签、真实时长和每个文件自己的编码,不是扫一眼文件头。文件夹监视扛得住重命名,也不会有东西悄悄消失。

    五万首曲目下什么会崩
  • 可以放心用的标签工具

    完整的编辑器,原子写入、批量修改加查找和替换。评分通过 FMPS 和 POPM 写在文件本身里。可以从 MusicBrainz、iTunes 和 Deezer 查询。

    和 Mp3tag 比
  • CUE 整轨像普通曲目一样播

    整张碟的 FLAC 配上它的 cue 表,索引成真正的行。每一段都能拖动进度、scrobble、排序,也能无缝接进下一段,跟普通文件一样。

    分段是怎么运作的
Equalizer Flat
C1C2C3C4C5C6C7C8C9

播放

  • 无缝播放

    一条流,带随机、重复、下一首播放和 A-B 循环。书签和用完即弃的会话标记都落在进度条上。媒体键和“正在播放”在三个平台上都能用。

  • 十段均衡,位完美

    独立窗口里的均衡器,预设可以自己存,AutoEq 耳机数据库就在里面。交叉淡化不去碰专辑自身的接缝,独占输出会说明硬件到底答应了什么。

    ReplayGain 和位完美
  • 按听感排序

    rox 从音频本身描述你的曲目,速度也算在内,再按相像程度安排接下来放什么。它在你自己的机器上跑你自己的文件,中间没有任何服务。

外观

  • 你自己拼的面板

    四十来种面板,从媒体库、队列到艺术家墙和电平表。可以连配置一起复制,或者弹出成独立窗口。专辑封面下面还能标上年份、风格或上次播放。

    和 Foobar2000 比
  • 主题就是可以分享的文件

    一套工作区就是一个文件,装着布局、调色板、外观和着色器。调色板可以从正在播放的封面取色,跟着封面走浅色或深色。

    盒子里的这 八 套
  • 会听音乐的视觉

    给某个面板或者整个窗口写一个 WGSL 着色器,或者用 projectM 跑 Milkdrop 预设。从频谱上取出来的具名信号会喂进着色器的输入。

    着色器和信号

日常

  • 歌词和历史

    同步的或纯文本的,来自同名文件、标签或 lrclib,编辑器会写回它读来的地方。收听日志驱动播放历史面板和统计,Last.fm 的 scrobble 也能连着日期一起导入。

  • 活得下来的播放列表

    收藏、拖动重排、M3U、PLS 和 XSPF 进出,还有重新跑一次保存好的查询、而不是拿着快照的智能播放列表。文件走了又回来,条目照样还在。

  • 一个可执行文件,不用装

    一个 tar 包、一个 AppImage、一个 Flatpak、一个 DMG 或者一个 zip,另外还有 AUR 和 Nix flake。便携模式把媒体库和设置放在可执行文件旁边的文件夹里。

    去下载

来源

窗口之外

能回拨的电台

粘一个流地址,或者在 radio-browser 目录里挑一个。电台像曲目一样进队列、照样 scrobble,直播缓冲让你把正在播的节目暂停、往回拨。

你的服务器,进了媒体库

Subsonic 或 OpenSubsonic 服务器把曲库同步进来,这些条目和文件一样能浏览、能搜、能播。播放时取的是原始文件,所以无缝和 ReplayGain 照旧。

从电波里留下的歌

抓取会把电台放过的整首歌存进你自己的文件夹,保持流本身的格式,带标签,封面就在旁边。默认关着。

一个套接字,不是一台服务器

本地套接字上的 JSON-RPC:播放控制、队列编辑、媒体库搜索和主动推送的事件。鉴权就是文件权限,没有任何东西在端口上监听。

在它上面能搭什么

播放器变成 MCP 工具

应用旁边的一个代理把套接字接上 MCP,AI 客户端就能问正在放什么,也能控制播放。默认关闭,每次调用都重新查一遍。

推流到 Icecast

一个源客户端把 rox 正在播的内容编码成 MP3 推到你指定的挂载点。只往外连:对外的网络那一面归 Icecast,服务器挂了也不会卡住本地播放。

插件

其他音乐,也能进来

你的媒体库覆盖的是硬盘上的东西。插件把别处的音乐拉进来,比如网上的一个目录,或者你自己跑的一台服务器。rox 用同样的面板、同样的队列去浏览它、搜索它、播放它,跟你自己的文件一样。

  1. 放进一个文件夹

    插件就是一个文件夹,里面装着一份小小的清单和一个程序。在“设置”里打开插件开关,点“显示文件夹”,把它复制进去。

  2. 打开它

    打开开关本身就是批准。一张卡片会说明这个插件做什么、运行什么,它文件夹里的任何一个文件一变,插件就会自动重新关闭。

  3. 浏览它

    它会在一个外部来源面板里打开:来源自己的主页、一架架封面、搜索,还有可以排序的列,全都按你的主题来画。

  4. 播放它、留下它,或者开一个电台

    它的曲目跟你自己的一样进队列、无缝播放、进播放列表。留下一张专辑,它就加入你的媒体库。开一个电台,接下来放什么就交给这个服务去挑。

Internet Archive 示例插件在外部来源面板里的样子:顶部一条提示,一行行可以浏览的内容,一架架发行版封面,还有下载量和年份两列。
  1. 自己的一块面板,停靠、配色都跟其他面板一样
  2. 服务知道、点一下就能排序的那些列
  3. 插件发来的一行提示,带一个链接
  4. 一架架能横向滚动的封面

Internet Archive 示例,浏览这家档案馆 netlabel 合集里的知识共享许可发行版。它就在 rox 的仓库里,随时可以复制来用。

改成你自己的样子

盒子里带了 八 套工作区,在欢迎窗口上点一下就能用。每一套都是一个文件,装着自己的布局、调色板和着色器,随你改、随你玩坏,再递给别人。全部看一遍。