このプロジェクトについて
TastyTunesは、StreamMagicプラットフォームをベースにしたCambridge Audioネットワークプレーヤーのリモコンとして機能するデスクトップアプリケーションです。READMEでは、サポートモデルとしてEvo 75/150、CXN100、CXN (V2)、MXN10、AXN10、EXN100、Edge NQ、851Nが挙げられており、開発および日常的なテストはEvo 150を用いて行われています。本アプリはローカルで動作し、ユーザー自身のネットワーク経由でストリーマーと通信するため、アカウントやクラウドサービスは不要です。
インストーラーは、macOS 11+(ユニバーサル、署名および公証済み)、Windows 10+(x64およびarm64をカバーする単一の署名済みインストーラー)、およびLinux(x64またはarm64 AppImage、64ビットRaspberry Pi OSを含む)向けに提供されています。起動時にアプリはSSDP経由でネットワーク上のStreamMagicデバイスを検出します。検出できなかった場合はIPアドレスを手動で入力可能です。また、ハードウェアがなくても、内蔵の仮想ストリーマーと2つのサンプルライブラリを使用してアプリケーション全体を試せるデモモードが搭載されています。
「Now Playing」画面では、ぼかし処理を施したアートワークを背景に大きなアルバムアート、トラック詳細、コーデック、サンプリングレート、ビット深度、ロスレス、MQAなどのフォーマットバッジ、および形状と色の両方で状態が変化する信号品質インジケーターが表示されます。メインウィンドウに加えて、フルスクリーンのDisplayモード、枠なしの常時最前面ミニプレーヤー、およびオプションのメニューバーまたはシステムトレイパネルが提供されます。
ライブラリ機能では、すべてのローカルUPnPメディアサーバーとストリーマーのUSBストレージを統合し、「アーティスト」「アルバム」「トラック」ビューで表示します。これは再構築可能なローカルインデックスによってサポートされており、全ソースを対象としたインクリメンタルサーチ(入力しながら検索)が可能です。フィルタリングとソートは、ジャンル、年代、フォーマット、ダイナミックレンジ、およびアルバムかコンピレーションかの区別に対応しています。アルバム管理では、ゲストアーティストの配置を維持し、コンピレーションはVarious Artistsの下にグループ化し、マルチディスクセットにはディスク区切りを表示し、マルチボリュームのボックスセットはボリュームセレクターで折りたたんで表示します。不足しているアートワークはCover Art Archiveから補完できます。
ライブラリ再生以外に、お気に入り、コンテンツ定義に基づいたローカル保存プレイリスト、マルチセレクトとドラッグによる並べ替えが可能なキュー、ストリーマーの99個のプリセットスロット(数字キーで呼び出し可能で、それぞれ個別の音量を保持)、ティルトとバランスを備えた7バンドEQ、ソース切り替え、およびジャンル・年代カテゴリ付きのradio-browser.infoディレクトリの閲覧が可能です。同期歌詞はLRCLIBから取得され、行ごとにハイライト表示されます。行をクリックするとその箇所までシークします。アーティストの経歴やアルバムの詳細はMusicBrainzとWikipediaから取得され、帰属リンクが表示されます。
オーディオ解析では、ローカルメディアサーバーからファイルを読み取り、シークバーとアートワークの下に波形を描画します。また、DRデータベースのTT-DR手順に従ってダイナミックレンジ値を算出し、これをライブラリのフィルタおよびソートオプションとして利用します。上限付きの最近再生ログと、年ごとのJSON Linesファイルとして書き出されるリスニングレコードにより、何をどれだけ再生したかを追跡します。これらはどちらも消去可能で、無効化もできます。ListenBrainzへのスクロブルは、実際の再生時間が経過した後にのみ送信され、失敗した送信はリトライされます。
オートメーション機能には、15分から2時間、またはトラック終了時に設定できるスリープタイマー(オプションでボリュームフェードアウト付き)や、曜日ごとのスケジュール(フェードインを伴うプリセットでのデバイス起動、またはスタンバイへの移行)が含まれます。
デフォルトではオフになっているオプションのMCPサーバーは、Claude CodeやClaude DesktopなどのローカルAIエージェントにアプリの機能を公開します。これには、再生と音量、プリセットとソース、ライブラリとラジオ、お気に入り、トーンとEQ、スリープタイマー、リスニングレコード、オーディオ解析が含まれます。編集ツールは分離されており、オンにするまで無効化されています。また、エージェントはUIの音量上限、電源保護、接続トグルを継承します。READMEには、追加のインテグレーションなしでMCPエンドポイントを呼び出すHome Assistantのrest_command例も記載されています。
本プロジェクトでは、マシンから外部に出るネットワークトラフィックを正確に文書化しています。ストリーマーの制御やライブラリ閲覧に関しては、ローカルネットワーク以外に何も送信されません。歌詞、アーティスト・アルバムのコンテキスト、不足しているアルバムアート、アップデート確認、ラジオ検索は切り替え可能であり、スクロブルはトークンを追加するまでオフになっています。分析、テレメトリ、アカウントシステムは一切なく、リクエストコンソールと生のストリーマー通信コンソールが内蔵されています。
技術スタックは、Electron (electron-vite)、React 19、TypeScript、Tailwind CSS v4、Zustandで構成されており、メインプロセスがSSDPとストリーマーのSMOIP WebSocketを介してデバイスI/Oを処理します。ストリーマーを唯一の正解(Single Source of Truth)として扱い、コマンドを送信し、状態がプッシュバックされ、そのプッシュに基づいてインターフェースが再レンダリングされます。プロジェクトはGNU General Public License v3.0の下でリリースされており、developブランチで開発が行われ、CIでtypecheck、ESLint、Prettierのチェックが実行されています。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.