PC内のローカル音楽ファイルを美しく・快適に再生・管理するためのデスクトップオーディオプレイヤー
  • TypeScript 96.7%
  • CSS 3%
  • HTML 0.3%
Find a file
2026-08-17 00:31:10 +09:00
.agents docs: Git 操作ルールを追加 2026-08-15 21:49:01 +09:00
docs feat: Windows向け実行可能ファイル(.exe/インストーラー)生成環境の構築 (electron-builder) 2026-08-15 21:59:40 +09:00
public feat: アプリアイコンの追加と円形透過アイコンの適用 2026-08-15 21:45:36 +09:00
src feat: Windows向け実行可能ファイル(.exe/インストーラー)生成環境の構築 (electron-builder) 2026-08-15 21:59:40 +09:00
.gitignore first commit 2026-08-14 22:26:45 +09:00
AGENTS.md docs: update agent instructions and capabilities in AGENTS.md 2026-08-17 00:31:10 +09:00
DESIGN.md first commit 2026-08-14 22:26:45 +09:00
index.html feat: アプリアイコンの追加と円形透過アイコンの適用 2026-08-15 21:45:36 +09:00
package-lock.json feat: Windows向け実行可能ファイル(.exe/インストーラー)生成環境の構築 (electron-builder) 2026-08-15 21:59:40 +09:00
package.json feat: Windows向け実行可能ファイル(.exe/インストーラー)生成環境の構築 (electron-builder) 2026-08-15 21:59:40 +09:00
README.md feat: Windows向け実行可能ファイル(.exe/インストーラー)生成環境の構築 (electron-builder) 2026-08-15 21:59:40 +09:00
tsconfig.json first commit 2026-08-14 22:26:45 +09:00
vite.config.ts first commit 2026-08-14 22:26:45 +09:00

Harmonia Media Player

PC内のローカル音楽ファイルを美しく・快適に再生・管理するためのプレミアムなデスクトップオーディオプレイヤーです。
Spotifyライクなイマーシブ・ダークテーマUIを採用し、高機能な再生エンジン、CDリッピング、完全ローカル分析によるスマートプレイリスト自動生成、音質無劣化ロスレスでのメタデータ/カバーアート編集、非ネイティブ音源の透過トランスコード再生を提供します。


主な特徴

1. Spotifyライクなイマーシブ・ダークUI

  • 洗練されたダークテーマ: コンテンツ(ジャケット画像)を引き立てるニアブラック(#121212基調のUI。
  • 直感的な操作性: ピル型ボタン、サークルコントロール、Spotifyスタイルの右クリックコンテキストメニュー。
  • レスポンシブ & スムーズな遷移: 楽曲からアルバム詳細、アーティスト別の絞り込み表示へシームレスに移動可能。

2. 高速&大容量対応のローカルライブラリ管理

  • ミリ秒クラスの超高速表示: Zustandインメモリキャッシュと仮想分割レンダリング初期80曲+スクロール追従により、10,000曲規模のライブラリでも瞬時に表示。
  • バックグラウンドスキャン & 進捗通知: 音楽再生やUI操作を中断することなく、画面右下のプログレスバナーでスキャン進捗件数、進行度、処理中ファイルをリアルタイム表示。
  • 自動カバー修復 (Healing): 欠損または破損したアルバムアートを起動時にバックグラウンドで自動再抽出。

3. 高度な再生エンジン & 10バンドイコライザー

  • カスタム特権プロトコル (media://): HTTP RangeリクエストPartial Content 206対応により、大容量ハイレゾ音源でもシークが即座に反応。
  • 透過的トランスコード再生: Chromiumが標準非対応のフォーマットWMA等を自動検知し、裏で高品質MP3320kbpsへオンデマンド変換・キャッシュ再生。
  • Web Audio API 10バンドEQ: 32Hz〜16kHzのグラフィックイコライザー、豊富なプリセットBass Boost, Vocal, Rock, Pop 等および3つのカスタム保存枠を搭載。

4. ロスレス メタデータ & カバーアート編集

  • 音質無劣化ファイル書き込み: FFmpegc:a copyを活用し、音声データを再エンコードすることなくID3v2/メタデータおよびカバー画像をファイル本体へ直接埋め込み。
  • アルバム一括編集: アルバム名、アーティスト、ジャンル、リリース年の一括更新およびジャケット画像JPG/PNG/WebP/GIFの設定に対応。

5. スマートプレイリスト自動生成 (ローカル分析エンジン)

  • 完全オフライン & 超高速: 外部API通信やAPIキーなしで動作。DSP波形信号解析RMS音圧、BPM、Brightnessとタグ情報を組み合わせ、1秒未満でムード別プレイリストを自動選出。
  • 多彩なシチュエーション: リラックス&カフェ、集中&ワーク、エネルギッシュ、ドライブ、ヘビーローテーション、隠れた名曲などをワンクリックで生成・保存。

6. CD取り込み (CD Ripper)

  • メタデータ自動取得: MusicBrainz API と連携し、DiscIDからアルバム名、アーティスト、トラック情報を自動取得。
  • 高品質エンコード: FLACLossless、MP3、AAC、OGG、WAV へのエンコードおよび出力先カスタマイズに対応。

技術スタック

区分 技術 用途
デスクトップ基盤 Electron 34, TypeScript 5, Vite 6 メイン/レンダラー統合ビルド、クロスプラットフォーム対応
フロントエンド React 19, Zustand 5, Lucide React コンポーネント設計、状態管理、モダンアイコン
スタイリング Vanilla CSS Spotifyデザインシステムに準拠したデザイントークン設計
データベース SQLite 3 (better-sqlite3) 高速メタデータ管理、再生履歴・統計保持WALモード
メディア処理 Web Audio API, music-metadata, FFmpeg (ffmpeg-static) 音声再生、タグ抽出、ロスレス書き込み、オンデマンド変換
外部連携 MusicBrainz API CDアルバムメタデータ検索

画面構成

  • Home: クイック検索、最近の再生、おすすめアルバム、ライブラリサマリー
  • Library: 全曲TrackList、アルバムグリッド、アーティスト別絞り込み
  • AlbumDetail: アルバムごとの楽曲一覧、カバー画像、一括再生、メタデータ編集
  • PlaylistDetail: プレイリストの楽曲一覧・再生・管理
  • SmartDiscovery: オフラインスマート分析によるシチュエーション別プレイリスト生成
  • CDImport: CDの読み取り、メタデータ自動照合、リッピング
  • Search: 楽曲・アルバム・アーティストの総合リアルタイム検索
  • Settings: 音楽フォルダの追加/削除、再スキャン、ライブラリ管理

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

キー 動作
Space 再生 / 一時停止
Ctrl + → 次の曲へスキップ
Ctrl + ← 前の曲へ戻る
Ctrl + ↑ 音量アップ (+5%)
Ctrl + ↓ 音量ダウン (-5%)
Ctrl + F ホーム画面へ移動 / 検索フォーカス

必要要件

  • Node.js: v18.0.0 以上 (v20+ 推奨)
  • npm: v9.0.0 以上
  • OS: Windows 10/11, Linux (Ubuntu/Fedora等)

インストール & 起動方法

1. リポジトリのクローンと依存関係のインストール

git clone <repository-url>
cd media-player
npm install

2. 開発サーバーの起動 (Vite + Electron)

npm run dev

3. プロダクションビルド

npm run build

4. 実行可能ファイル (.exe / インストーラー) の生成

# インストーラー (Harmonia Setup 1.0.0.exe) およびポータブル版 (Harmonia 1.0.0.exe) を生成
npm run dist

# またはポータブル版単体のみを生成
npm run build:portable

# またはインストーラー単体のみを生成
npm run build:installer

生成された実行ファイルは release/ フォルダに出力されます。


プロジェクト構成

media-player/
├── index.html                 # Renderer エントリHTML
├── package.json               # プロジェクト定義・依存関係
├── tsconfig.json              # TypeScript設定
├── vite.config.ts             # Vite + Electronビルド設定
├── DESIGN.md                  # Spotifyテーマ デザインガイドライン
├── README.md                  # 本ドキュメント
├── docs/
│   └── spec.md                # 詳細機能・設計仕様書
├── src/
│   ├── main/                  # Electron メインプロセス
│   │   ├── index.ts           # アプリ起動・IPCハンドラ・media://プロトコル
│   │   ├── preload.ts         # Preloadスクリプト (安全なAPIブリッジ)
│   │   └── services/          # バックエンドサービス群
│   │       ├── database.ts    # SQLite DB操作
│   │       ├── scanner.ts     # フォルダ走査 & メタデータ抽出
│   │       ├── tag-writer.ts  # FFmpegによるロスレスメタデータ書き込み
│   │       ├── transcoder.ts  # 非ネイティブ音源のMP3オンデマンド変換
│   │       ├── auto-playlist.ts # ローカルスマート分析エンジン
│   │       ├── audio-analyzer.ts # DSP波形信号解析
│   │       ├── cd-ripper.ts   # CD取り込み & MusicBrainz連携
│   │       └── ai.ts          # AI音楽アシスタント基盤
│   ├── renderer/              # Electron レンダラープロセス (React)
│   │   ├── main.tsx           # Reactエントリポイント
│   │   ├── App.tsx            # ルートコンポーネント & ウィンドウ制御
│   │   ├── styles/            # CSSデザインシステム
│   │   ├── components/        # 共通コンポーネント (NowPlaying, TrackList, 各種Modal等)
│   │   ├── pages/             # 各画面 (Home, Library, AlbumDetail, CDImport等)
│   │   ├── stores/            # Zustand状態管理 (player, library, playlist)
│   │   └── utils/             # ユーティリティ (URL変換, フォーマッタ)
│   └── shared/                # メイン・レンダラー共有の型定義 (TypeScript)

ライセンス

本プロジェクトは ISC License のもとで公開されています。