Day 23 - 12/23
YouTubeのURLを入力してBPM・キー・ペンタトニックスケールを自動検出 youtube-music-analyzer
FastAPIPythonHTMLLibrosaEssentiaMadmomyt-dlpYouTube Data APIReactVueFlaskFastAPIHTML
geminiAntigravity

概要
Mac専用のアプリです。
YouTubeの音楽URLを入力するだけで、自動的にBPM(テンポ)とキーを検出し、ギターのペンタトニックスケールを指板上に表示するWebアプリケーションです。
アプリの分析結果をJSON形式で保存できます。
ボタンを押すと、その曲の「BPM」「キー」「モード」「ペンタトニックスケールの構成音」「ギターの指板ポジション」などの全データが、一つの .json ファイルとしてあなたのPCにダウンロードされます。
YouTubeの動画URLを入力するだけで、その曲のテンポ(BPM)と音楽的なキー(調)を自動で解析するツールです。さらに、解析したキーに基づいたギター用の『ペンタトニックスケール』を指板上に表示してくれるので、耳コピや即興演奏の練習に最適です。
主な機能
瞬時に音楽を分析: YouTubeのリンクを貼るだけで、AIが自動的に楽曲のスピードとキー(メジャー/マイナー)を特定します。
ギター用スケール図の表示: ギターの指板上に、弾くべき音の場所(5つのポジション)をわかりやすく表示。ルート音(基準の音)も色分けされています。
結果をデータで保存: 解析したBPMやキーの情報を、JSON形式のファイルとして自分のパソコンに保存できます。
Mac用アプリ版も用意: 専門知識がなくても、アイコンをダブルクリックするだけですぐに使えるデスクトップアプリ版が利用可能です。
YouTubeの音楽URLを入力するだけで、自動的にBPM(テンポ)とキーを検出し、ギターのペンタトニックスケールを指板上に表示するWebアプリケーションです。
アプリの分析結果をJSON形式で保存できます。
ボタンを押すと、その曲の「BPM」「キー」「モード」「ペンタトニックスケールの構成音」「ギターの指板ポジション」などの全データが、一つの .json ファイルとしてあなたのPCにダウンロードされます。
YouTubeの動画URLを入力するだけで、その曲のテンポ(BPM)と音楽的なキー(調)を自動で解析するツールです。さらに、解析したキーに基づいたギター用の『ペンタトニックスケール』を指板上に表示してくれるので、耳コピや即興演奏の練習に最適です。
主な機能
瞬時に音楽を分析: YouTubeのリンクを貼るだけで、AIが自動的に楽曲のスピードとキー(メジャー/マイナー)を特定します。
ギター用スケール図の表示: ギターの指板上に、弾くべき音の場所(5つのポジション)をわかりやすく表示。ルート音(基準の音)も色分けされています。
結果をデータで保存: 解析したBPMやキーの情報を、JSON形式のファイルとして自分のパソコンに保存できます。
Mac用アプリ版も用意: 専門知識がなくても、アイコンをダブルクリックするだけですぐに使えるデスクトップアプリ版が利用可能です。
制作時間
5時間
学んだこと・振り返り
技術的な学び
最新のPython 3.13環境への対応: 標準ライブラリからの『aifc』モジュールの廃止など、最新バージョン特有の仕様変更に対応し、互換性を維持する実戦的な方法を学びました。
**macOS固有の制約と解決策
**: ポート5000が『AirPlayレシーバー』と競合することや、システムPythonへのパッケージ直接インストールが制限されている(PEP 668)現状を踏まえた、仮想環境での適切な開発フローを習得できました。
音楽解析の視覚化技術: 複雑な音声分析(Librosa)によって得られた数値データを、ユーザーが直感的に理解できる『ギター指板図(スケール図)』としてWeb上に描画する仕組みを構築できました
一般ユーザーにとって『黒い画面(ターミナル)』での操作は非常にハードルが高いため、PyInstallerを用いてダブルクリックで起動できるアプリケーションへとパッケージングする重要性を再確認しました。
二次利用を想定したデータ設計: 解析結果を表示するだけでなく、JSON形式で書き出し(ダウンロード)できるようにすることで、ユーザーが自身のアーカイブや他の分析ツールでデータを活用できるという付加価値を提供できました。
次に活かすこと
多角的な音楽分析機能の追加: 現在のBPMとキーに加え、『コード進行の自動推定』や『メロディのMIDI書き出し』などの機能を追加し、演奏者にとってより実用的なツールへと進化させます。
GitHubを活用したオープンソース開発: 今回の成果をGitHubに公開し、リリース(Release)機能を活用することで、世界中のユーザーに最新の実行ファイルを即座に提供できる体制を維持・発展させていきます。
最新のPython 3.13環境への対応: 標準ライブラリからの『aifc』モジュールの廃止など、最新バージョン特有の仕様変更に対応し、互換性を維持する実戦的な方法を学びました。
**macOS固有の制約と解決策
**: ポート5000が『AirPlayレシーバー』と競合することや、システムPythonへのパッケージ直接インストールが制限されている(PEP 668)現状を踏まえた、仮想環境での適切な開発フローを習得できました。
音楽解析の視覚化技術: 複雑な音声分析(Librosa)によって得られた数値データを、ユーザーが直感的に理解できる『ギター指板図(スケール図)』としてWeb上に描画する仕組みを構築できました
配布とUX(ユーザー体験)に関する気づき\n- 『.app形式』によるアクセシビリティの向上:
一般ユーザーにとって『黒い画面(ターミナル)』での操作は非常にハードルが高いため、PyInstallerを用いてダブルクリックで起動できるアプリケーションへとパッケージングする重要性を再確認しました。
二次利用を想定したデータ設計: 解析結果を表示するだけでなく、JSON形式で書き出し(ダウンロード)できるようにすることで、ユーザーが自身のアーカイブや他の分析ツールでデータを活用できるという付加価値を提供できました。
次に活かすこと
多角的な音楽分析機能の追加: 現在のBPMとキーに加え、『コード進行の自動推定』や『メロディのMIDI書き出し』などの機能を追加し、演奏者にとってより実用的なツールへと進化させます。
GitHubを活用したオープンソース開発: 今回の成果をGitHubに公開し、リリース(Release)機能を活用することで、世界中のユーザーに最新の実行ファイルを即座に提供できる体制を維持・発展させていきます。
初回プロンプト(計画)
# YouTube Music Analyzer - BPM & Key Detection with Pentatonic Scale Display
YouTubeの音楽URLを入力するだけで、自動的にBPM(テンポ)とキーを検出し、ギターのペンタトニックスケールを指板上に表示するWebアプリケーションです。
## 🎵 主な機能
- **YouTube音声の自動ダウンロード**: URLを入力するだけで音声を取得
- **BPM(テンポ)検出**: Librosaライブラリによる高精度なテンポ分析
- **キー検出**: クロマ特徴量を使用した音楽キーの自動判定(メジャー/マイナー)
- **ペンタトニックスケール表示**: 検出されたキーに基づいた5つのポジションを指板図で可視化
- **インタラクティブなUI**: 各ポジションを切り替えて表示できる直感的なインターフェース
## 🚀 セットアップ方法
### 必要な環境
- Python 3.8以上
- FFmpeg(音声処理に必要)
### FFmpegのインストール
**Ubuntu/Debian:**
```bash
sudo apt-get update
sudo apt-get install -y ffmpeg
```
**macOS:**
```bash
brew install ffmpeg
```
**Windows:**
- [FFmpeg公式サイト](https://ffmpeg.org/download.html)からダウンロードしてインストール
### Pythonパッケージのインストール
```bash
# 必要なパッケージをインストール
pip install -r requirements.txt
```
## 📦 実行方法
### 1. アプリケーションの起動
```bash
python app.py
```
サーバーが起動したら、ブラウザで以下のURLにアクセス:
```
http://localhost:5000
```
### 2. 使い方
1. YouTubeの音楽動画のURLをコピー
2. 入力欄にURLを貼り付け
3. 「分析開始」ボタンをクリック
4. 1〜2分待つと、BPM、キー、ペンタトニックスケールが表示されます
## 🎸 ペンタトニックスケールの表示について
- **5つのポジション**: CAGED Systemに基づいた5つの指板ポジションを表示
- **ルート音の強調**: オレンジ色で表示されるのがルート音(基準となる音)
- **緑色の音**: その他のスケール構成音
- **インタラクティブ**: 各ポジションをクリックして切り替え可能
## 🎼 技術詳細
### 使用技術
- **バックエンド**: Flask (Python)
- **音楽分析**: Librosa
- **音声ダウンロード**: yt-dlp
- **フロントエンド**: HTML/CSS/JavaScript(バニラJS)
### 分析アルゴリズム
- **BPM検出**: Librosaのbeat_track関数でテンポ推定(最初の2分間を分析)
- **キー検出**: クロマCQT特徴量から12音の強度分布を分析し、最も強い音をキーと判定
- **メジャー/マイナー判定**: ルートからの3度音(長3度 vs 短3度)の強度を比較
## 🔧 カスタマイズ
### 分析時間の変更
`app.py`の`duration=120`を変更することで、分析する音声の長さを調整できます:
```python
y, sr = librosa.load(audio_path, duration=60) # 1分間だけ分析
```
### ポート番号の変更
`app.py`の最終行を編集:
```python
app.run(debug=True, host='0.0.0.0', port=8080) # ポート8080に変更
```
## ⚠️ 注意事項
- 音声のダウンロードと解析には1〜2分程度かかる場合があります
- YouTubeの利用規約を遵守してください(個人使用の範囲内で)
- 著作権で保護されたコンテンツの使用には注意してください
- 音楽の複雑さによっては、キー検出の精度が変わる可能性があります
## 📝 今後の拡張アイデア
- [ ] コード進行の検出と表示
- [ ] 他のスケール(ドリアン、ミクソリディアンなど)への対応
- [ ] MIDI出力機能
- [ ] オーディオファイルの直接アップロード対応
- [ ] モバイルアプリ版の開発
- [ ] 練習用のループ再生機能
## 🎯 使用例
ギタリストがYouTubeでカバーしたい曲を見つけた際に:
1. 曲のURLを入力
2. BPMとキーを確認
3. 表示されたペンタトニックスケールを使って即興演奏
4. 各ポジションを練習して曲に合わせて演奏
## 📄 ライセンス
このプロジェクトはMITライセンスの下で公開されています。
## 🙏 謝辞
- Librosa: 音楽分析ライブラリ
- yt-dlp: YouTube音声ダウンロード
- Flask: Webフレームワーク
---
作成者: KandaNewsNetwork
バージョン: 1.0.0
チャレンジ生成ツールで作成した最初の計画です
メインAIツールの評価
gemini
⭐⭐⭐
良かった点
- 最新のPython 3.13環境における互換性エラーを瞬時に解決してくれました\n- 単なるコード修正だけでなく、Mac用アプリ(.app)への変換やGitHub公開まで総合的にサポートしてくれました\n- 音楽理論に基づいた複雑な解析ロジック(キー判定など)を正確に実装できました",
改善してほしい点
開発環境のフォルダ階層が深い場合に、最初のパス認識で少しやり取りが必要な場面がありました
総合コメント
技術的なデバッグ能力はもちろん、『一般ユーザーが使いやすいようにアプリ化する』といったUX視点の提案が非常に優秀でした。エンジニアと記者による高度なペアプログラミングを実現できたと感じています。
公開日: 2025/12/23