LX Music Desktop:Electron製の無料オープンソース音楽プレイヤー完全解説

LX Music Desktopとは

LX Music Desktopは、ElectronとVue 3を基盤に開発されたクロスプラットフォーム対応の音楽プレイヤーだ。Windows、macOS、Linuxの主要OSに対応し、複数の音楽配信プラットフォームから楽曲を検索・再生できる集約型の音楽ソフトウェアとして機能する。Apache License 2.0の下で公開されており、完全無料で利用可能だ。

主な特徴と利点

マルチプラットフォーム対応

  • Windows:インストーラー版とポータブル版の両方を提供
  • macOS:dmg形式のインストールパッケージ
  • Linux:deb、rpm、AppImageなどの複数形式に対応

複数音楽ソースの統合検索

以下の主要音楽プラットフォームからの検索を一元管理できる:

  • 酷我音楽
  • 酷狗音楽
  • 網易雲音楽
  • QQ音乐
  • 咪咕音楽

各ソースの実装はsrc/renderer/utils/musicSdk/ディレクトリ内にモジュール化されている。

導入手順

通常インストール

各OSに対応したパッケージをダウンロードし、標準的な手順でインストールを行う。Windowsユーザーはポータブル版を選択することで、システムへの変更を最小限に抑えられる。

ソースからのビルド

開発者はリポジトリから直接ビルド可能だ:

# リポジトリをクローン
git clone https://github.com/lyswhut/lx-music-desktop
cd lx-music-desktop

# 依存パッケージをインストール
npm install

# 開発サーバーを起動
npm run dev

実行にはNode.js 22以上とnpm 8.5.2以上が必要となる。

初期設定のポイント

インストール後、以下の設定を確認すると快適に利用できる:

  1. 言語設定:設定画面から日本語を含む多言語UIを選択可能
  2. デフォルト音楽ソース:ネットワーク環境に応じて最適なソースを選択
  3. テーマ選択:内蔵テーマから好みのデザインを選択
  4. データ保存場所:Windowsではプログラムフォルダ内にportableフォルダを作成するとポータブルモードになる

UIと基本操作

インターフェースは4つの主要エリアで構成されている:

  • 左サイドバー:ホーム、プレイリスト、ダウンロード、ランキングへのナビゲーション
  • 上部検索バー:楽曲名、アーティスト名、アルバム名での検索
  • メインコンテンツエリア:検索結果とおすすめの表示
  • 下部コントロールバー:再生制御、音量調整、歌詞表示

テーマシステムとカスタマイズ

src/common/theme/images/に複数のテーマ画像が用意されている。設定の「外観」タブから好みのテーマを選択・適用できる。水墨画風、アニメ風など様々なスタイルが含まれており、聴く音楽の雰囲気に合わせて切り替え可能だ。

データ同期機能

v2.2.0以降、独立したデータ同期サービスをサポートしている。

自己ホスト型同期サーバー

公式が提供する同期サーバーコードを利用して、自前のサーバーにデプロイ可能:

// 同期クライアント設定例
const syncConfig = {
  serverUrl: 'https://your-sync-server.example.com',
  syncInterval: 300000, // 5分間隔
  dataTypes: ['playlists', 'history', 'preferences']
};

function initializeSync(config) {
  return new SyncManager(config.serverUrl, config.syncInterval);
}

同期対象には以下が含まれる:

  • プレイリストとお気に入り
  • 再生履歴
  • 設定とテーマ情報
  • ダウンロードタスク

オープンAPIと連携機能

HTTP API

v2.7.0からはローカルHTTPサービスを起動し、外部アプリケーションからの制御が可能になった。主なエンドポイント:

// API制御の例
const apiEndpoints = {
  playback: {
    play: '/api/player/play',
    pause: '/api/player/pause',
    next: '/api/player/next',
    prev: '/api/player/prev'
  },
  volume: {
    set: '/api/volume/set',
    mute: '/api/volume/mute'
  },
  playlist: {
    list: '/api/playlist/list',
    add: '/api/playlist/add'
  }
};

async function controlPlayer(action, params) {
  const url = apiEndpoints.playback[action];
  return fetch(url, { method: 'POST', body: JSON.stringify(params) });
}

Scheme URL

v1.17.0以降、ブラウザや外部アプリから直接プレイヤーを制御できる:

lxmusic://play?trackId=12345
lxmusic://search?query=artistName
lxmusic://playlist/add?listId=custom01&trackId=789

キーボードショートカット

設定画面の「ショートカットキー」でカスタマイズ可能。デフォルト設定:

操作キー
再生/一時停止Space
前の曲/次の曲← / →
音量増減Ctrl + ↑ / ↓
検索フォーカスCtrl + F
歌詞ウィンドウCtrl + L
トレイへ最小化Ctrl + M

グローバルショートカットとして機能するため、アプリが最小化されていても制御可能だ。

オーディオ設定と最適化

src/renderer/assets/medias/filters/に各種音響エフェクトのプリセットが格納されている。

ジャンル別推奨設定

  • ポピュラー:中高域を強調し、ボーカルの明瞭度を向上
  • クラシック:ホールリバーブで空間的な広がりを演出
  • ロック:低域を強化し、リズムのパワー感を増強
  • エレクトロニカ:各帯域のバランスを調整し、シンセの質感を浮き立たせる

パフォーマンス最適化

低スペック環境では以下の対策が有効:

  1. キャッシュを定期的にクリア
  2. 大規模プレイリストは分割して読み込み
  3. 不要な視覚エフェクトを無効化
  4. GPUアクセラレーションを有効化
  5. ネットワーク応答の速いソースを選択

トラブルシューティング

再生できない場合

  1. ネットワーク接続を確認
  2. 「設定 > 音楽ソース」から別のソースを試す
  3. キャッシュをクリア
  4. 最新版への更新を確認
  5. ログファイルでエラー詳細を確認

同期が機能しない場合

  1. サーバーURLが正しいか確認
  2. ファイアウォールでポートがブロックされていないか確認
  3. 接続ステータスを確認
  4. ログでエラー内容を特定

データバックアップ

設定データは以下のパスに保存される:

  • Linux:~/.config/lx-music-desktop
  • macOS:~/Library/Application Support/lx-music-desktop
  • Windows:%APPDATA%/lx-music-desktop

このフォルダをコピーしてバックアップ可能。同期機能を使用すればサーバー上に自動保存される。

技術スタック

プロジェクト構成:

  • メインプロセス:Electron + TypeScript (src/main/)
  • レンダラープロセス:Vue 3 + TypeScript (src/renderer/)
  • 歌詞ウィンドウ:独立したVueアプリ (src/renderer-lyric/)
  • ビルドツール:Webpack 5

ポータブル版の活用

Windowsではプログラムフォルダ内にportableフォルダを作成するだけで、全データがそこに保存される。USBメモリに入れて持ち運んだり、複数PC間で設定を共有したりできる。

歌詞表示機能

  • デスクトップ歌詞ウィンドウ:メイン画面とは独立して表示
  • フォント、色、サイズ、透明度のカスタマイズ
  • 自動同期機能:ネットワークから歌詞のタイムスタンプを取得
  • 手動編集と保存による修正も可能

今後の開発ロードマップ

v2.12.2時点での方向性:

  • メモリ使用量とCPU負荷の低減
  • 検索・再生の応答速度向上
  • 追加音楽ソースへの対応
  • ローカルファイル管理の強化
  • UIのさらなる改善

タグ: Electron Vue 3 音楽プレイヤー オープンソース クロスプラットフォーム

10月24日 01:16 投稿