rox

Foobar2000 が今の時代に作られていたら。

大きく、丁寧にタグ付けされたローカルライブラリを持つ人のためのデスクトップ音楽プレイヤー。パネルは自分で組み、テーマは 1 つのファイルとして誰かに渡せます。Linux、macOS、Windows でネイティブ。

  • 0.3 s 起動からウィンドウ表示まで
  • 134 MB のメモリ使用量(50,000 曲を読み込んだ状態)
  • AGPL-3.0 フリーかつオープンソース

ウィンドウが出るまで 1 秒未満

rox はバイナリ 1 つで、マウスから指を離すより先に起動します。

5 万曲のライブラリ 1 つを使った、音楽プレイヤー 7 本の起動時間、メモリ、アイドル時 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 上の同じ 5 万曲のライブラリを使い、どのプレイヤーも同じ手順でライブラリを読み込ませています。メモリはプロセスツリー全体の PSS。「読み込み完了」は起動後に CPU が落ち着いた時点、アイドルはウィンドウを出したまま一時停止した状態です。 DeaDBeeF は 44 MB でメモリ部門を取っていたはずですが、行に載りませんでした。MP3 パーサーがこのライブラリのインポート途中で毎回 segfault するからです。rox は 5 万曲すべてを、そこでつまずく途中で切れたファイルも含めてライブラリに取り込みます。

ライブラリ

  • 大きさに耐えるライブラリ

    並列スキャナーがヘッダーを流し読みせず、完全なタグ、正確な長さ、ファイルごとのコーデックを読みます。フォルダー監視はリネームにも耐え、黙って取りこぼすことはありません。

    5 万曲で何が壊れるか
  • 信用できるタグ編集

    アトミックな書き込み、一括編集、検索と置換を備えた本格的なエディター。レーティングは FMPS と POPM でファイル自体に入ります。MusicBrainz、iTunes、Deezer で照会。

    Mp3tag と並べて
  • CUE リップもトラックとして鳴る

    ディスク丸ごとの FLAC と cue シートの組を、本物の行として取り込みます。各区間はシーク、スクロブル、並べ替えができ、ファイルと同じようにギャップレスで次へ続きます。

    区間の仕組み
Equalizer Flat
C1C2C3C4C5C6C7C8C9

再生

  • ギャップレス再生

    1 本のストリームで、シャッフル、リピート、次に再生、A-Bリピートも効きます。ブックマークと使い捨てのセッションマーカーがシークバーに並びます。メディアキーと再生中表示は 3 つのプラットフォームすべてで動きます。

  • 10 バンドとビットパーフェクト

    独立したウィンドウのイコライザー。プリセットを保存でき、AutoEq のヘッドホンデータベースも中にあります。クロスフェードはアルバム内のつなぎ目に触らず、排他出力はハードウェアが何を受けたかを言います。

    ReplayGain とビットパーフェクト
  • 音の似かたで並べる

    rox は音声そのものから曲の特徴をテンポも含めて割り出し、次に鳴るものを似ている順に並べます。処理は自分のマシンで自分のファイルに対して走り、途中にサービスは入りません。

見た目

  • 自分で組むパネル

    ライブラリやキューからアーティストグリッド、レベルメーターまで 40 種類ほど。設定ごと複製したり、独立したウィンドウに切り離したりできます。アルバムのタイルには年、ジャンル、最後に聴いた日も出せます。

    Foobar2000 と並べて
  • ファイル 1 つで渡せるテーマ

    ワークスペースはレイアウト、パレット、外観、シェーダーを収めた 1 つのファイル。パレットは再生中のカバーから色を取り、アートに合わせて明るくも暗くもなります。

    同梱の 8 個
  • 音を聴くビジュアル

    WGSL シェーダーを 1 つのパネルにもウィンドウ全体にも書けて、projectM で Milkdrop のプリセットも回せます。スペクトラムから取った名前付きシグナルがシェーダーの入力に乗ります。

    シェーダーとシグナル

日々の使い勝手

  • 歌詞と履歴

    同期でもプレーンでも、隣のファイル、タグ、lrclib から読み込み、読んだ場所へ書き戻すエディター付き。再生ログが履歴パネルと統計を動かし、Last.fm のスクロブルは日時ごと取り込めます。

  • 壊れないプレイリスト

    お気に入り、ドラッグでの並べ替え、M3U、PLS、XSPF の入出力、そしてスナップショットではなく保存したクエリを走らせ直すスマートプレイリスト。ファイルが一度消えて戻ってきても項目は残ります。

  • バイナリ 1 つ、インストーラーなし

    tarball、AppImage、Flatpak、DMG、zip に加えて AUR と Nix flake。ポータブルモードならライブラリと設定は実行ファイルの隣のフォルダーに収まります。

    入手する

ソース

ウィンドウの外へ

巻き戻せるラジオ

ストリームの URL を貼るか、radio-browser のディレクトリから選ぶだけ。ステーションは曲と同じようにキューに入ってスクロブルされ、ライブバッファのおかげで放送を止めて巻き戻せます。

ライブラリの中のサーバー

Subsonic や OpenSubsonic のサーバーはカタログをここへ同期します。行はファイルと同じように辿れて、検索できて、再生できます。ストリームは元ファイルを要求するので、ギャップレスも ReplayGain も効いたままです。

電波から録れる曲

キャプチャは、ステーションが流した曲を丸ごと自分のフォルダーへ、ストリームの形式のまま、タグ付きで、カバーを添えて保存します。既定ではオフです。

サーバーではなくソケット

ローカルソケット上の JSON-RPC で、再生操作、キュー編集、ライブラリ検索、プッシュされるイベントまで。認証はファイル権限で、ポートで待ち受けるものはありません。

その上に何が組めるか

プレイヤーを MCP ツールに

アプリの隣のプロキシがソケットを MCP に載せ、AI クライアントが再生中の曲を尋ねたり再生を操作したりできます。既定はオフで、呼び出しごとに確認されます。

Icecast へ配信

ソースクライアントが rox の再生を MP3 として指定のマウントへ送ります。外向きのみ。ネットワークの顔は Icecast のもので、サーバーが落ちても再生は止まりません。

プラグイン

ほかの全部のために

ライブラリがカバーするのは、ディスクにあるものだけです。プラグインは、Web 上のカタログや自分で動かすサーバーのような、どこか別の場所の音楽を持ち込みます。rox はそれを、自分のファイルと同じパネル、同じキューで閲覧し、検索し、再生します。

  1. フォルダーを入れる

    プラグインは、小さなマニフェストとプログラムを収めたフォルダーです。「設定」でプラグインをオンにし、「フォルダーを表示」を押して、そこにコピーしてください。

  2. オンにする

    オンにすることが承認です。カードにはプラグインが何をして何を実行するかが書かれていて、そのファイルのどれかが変わると再びオフになります。

  3. 閲覧する

    外部ソースパネルとして開き、そのソース自身のホーム、カバーの棚、検索、並べ替えられる列を、あなたのテーマの色で描きます。

  4. 再生し、キープし、ラジオを始める

    そのトラックは自分のものと同じようにキューやプレイリストに入り、ギャップレスで再生されます。アルバムをキープすればライブラリに加わります。ラジオを始めれば、次に何が来るかはサービスが選びます。

外部ソースパネルで動く Internet Archive のサンプルプラグイン。上部の案内、閲覧できる行、リリースカバーの棚、ダウンロード数と年の列。
  1. 独立したパネル。ほかと同じようにドッキングし、テーマがかかる
  2. サービスが知っている列、クリックで並べ替え
  3. プラグインからの一行、リンク付き
  4. 横にスクロールするカバーの棚

Internet Archive のサンプル。Archive の netlabels コレクションから Creative Commons のリリースを閲覧しています。rox のリポジトリに入っていて、そのままコピーして使えます。

自分のものにする

ワークスペースが 8 個同梱されていて、ようこそウィンドウからクリック 1 つで開けます。どれもレイアウト、パレット、動かすシェーダーを収めた 1 つのファイルなので、編集して、壊して、誰かに渡せます。全部見る。