Skip to main content
Glama
JuzzyDee

audio_visualizer_rs

by JuzzyDee

audio_visualizer_rs

Claudeに音楽を聴く力を与えるMCPサーバー。

任意のオーディオファイルをClaudeに指定するだけで、キー、テンポ、ダイナミクス、音色、パーカッシブな特徴、ステレオフィールド、構造的なセクション、そして音楽が時間とともにどのように変化するかを把握できます。すべては生のオーディオ解析に基づいており、画像も推測も不要、コンテキストウィンドウの使用量は1%未満です。

2つのトラックを並べて比較できます。音楽が構造的に変化する箇所(イントロ、バース、コーラス「、ブリッジ)を検出し、重要な瞬間にズームインできます。

これは何か

LLMは「見る」こと(ビジョン)と「読む」こと(テキスト)はできますが、「聴く」ことはできません。このプロジェクトは、音楽情報検索の研究で使われるのと同じDSP技術による実際のオーディオ解析を実行し、Claudeが推論できる構造化された数値データを返すことで、その溝を埋めます。

これは、MCP serverで、オーディオ解析をClaudeがオンデマンドで呼び出し可能なツールとして公開しています。Claudeに曲を分析してもらうと、オーディオをデコードしてスペクトル、ハーモニー、リズム、パーカッシブの各解析を実行し、結果をコンパクトなテキストとして返します。スペクトログラムも、画像も、不良なトークンもありません。

60秒のトラックの全面解析(音源分離を含む)は2秒から2秒以内で完了します。純Rustであり、PythonやFFMPeg、システム依存は一切ありません。

Related MCP server: Claud-Ear

特徴

  • オーディオデコード -- Symphonia(純Rust)によるmp3、wav、flac、ogg、aacのデコード

  • スペクトル解析 -- セントロイド(明る)、帯域幅(豊かさ)、ロールオフ、フラットネス(トナー性)

  • 周波数帯域エネルギー -- 7つの標準的なプロデューサー帯域(サブベース帯域からブリリアンス)のRMSエネルギーでミックスを診断

  • スペクトルコントトラスト -- 帯域ごとのピークとフロアの差をdBで表し、明瞭さと濁りを浮き彫りにします

  • ダイナミックレンジ -- クレストファクター、ラウドネンスレンジ(95パーセンタイル〜5パーセンタイル)、ピークdBFS

  • LUFSラウドネス -- EBU R128統合ラウドネス(ITU-R BS.1770-4 ステレオチャンネル加重)、トゥルーピーク(dBTP)、ラウドネスレンジ(LRA)、各アストリーミングプラットフォームの目標値。FabFilter Pro-L 2に対する0.0 dBで検証済み

  • ステレオフィールド解析 -- 位相推進(モノラル互換性)、ステレオ幅(ミッド/サイド比)、L/Rバランス、モノラル互換性スコア。位相の問題が発生する箇所を正確に特定するフレーム単位の時系列データ

  • 時間的特徴 -- RMSエネルギー(ラウドス)、ゼロ交差率(テクスチャ))

  • 音色 -- 13個のMFCC(メル周波数パワーレーン係数)

  • ハーモニック解析 -- クロマグラム、キー検出(Krumhans-Schmucklerアルゴリズム)、トノ "トネッツ"

  • リズム解析 -- テンポ推定、ビートトラッキ・グ、オンセット検出、テンポ安定性

  • パーカシブ音源分離(HPSS)、アタック強さ、オンセット密度

  • セクション境界検出 -- 多機能ノベルティ分析による構造変化(エネルギー、スペクトル、ハーモニック、テクスチャ)の検出。サマーリー概要→ズームというワークフローを実現します。まずマップ構造を掴み、次に気になる瞬間へズームします。

  • A/B比較 -- 2つのトラックを並べて分析し、ラウドネス、ダイナミクス、スペクトラルバランス、ステレオフィールド、キー、速度の違いをまとめたコンパクトな差分表を表示します。

  • 時系列データ -- 選択可能な解像度で各特徴の時間の変遷を追求します

  • トークン効率 -- コンテキストウィンドウに十分に収まるよう意図的にダウンした出力

動作例

新しいClaudeが4つのトラックを1セッションで解析の動画を見る -- オリジナルのピアノ/ブラス曲、楽器の構造とセクション境界を対応したBohemian Rhapsody、制作アドバイス付きのA/Bミックス比較、そして「意味のない」音楽指標と「物理的に現実の」指標を選別する雷雲のフィールドレコーディング。4つの解析すべてが1つのコンテキストウィンドウに収まります。

インストール

Claude Desktop - ワンクリックインストール

GitHub Releasesから、お使いのプラットフォームの.mcpbバンドルをダウンロードして開いてください。Claude Desktopが他はすべて処理します。設定ファイルも、ターミナルも、セットアップも不要です。

プラットフォーム

ファイル

macOS(Apple Silicon)

audio-analyzer-darwin-arm64.mcpb

macOS(Intel)

audio-analyzer-darwin-x64.mcpb

Windows

audio-analyzer-win32-x64.mcpb

Linux

audio-analyzer-linux-x64.mcpb

Claude Code -- Homebrew(macOS)

brew tap JuzzyDee/tap
brew install audio-analyzer
claude mcp add --scope user audio-analyzer -- $(which audio-analyzer-mcp)

Claude Code -- 手動(全プラットフォーム)

GitHub Releases から該当プラットフォーム用の mcp-server バイナリをダウンロードし、次のようにします:

claude mcp add --scope user audio-analyzer -- /path/to/mcp-server

ソースからビルド

git clone https://github.com/JuzzyDee/audio-analyzer-rs.git
cd audio-analyzer-rs
cargo build --release
claude mcp add --scope user audio-analyzer -- target/release/mcp-server

Claude Desktopを再起動すると、会話内でオーディオ解析ツールが使用可能になります。

注記: これはstdio transportを利用したローカルなMCPサーバーであるため、Claude Code か Claude Desktopを必要とします。ブラウザ版やモバイル版の claude.ai には対応していません。

使用方法

重要: このツールは、ローカルマシン上のファイルを解析します。Claudeには完全なファイルパス(例: /Users/you/Music/song.mp3)を与えてください - チャットにファイルをアップロードや添付しないでください。Claudeはディスクから直接ファイルを読み取ります。

CLI(スタンドアロン)

cargo run --bin cli -- /path/to/song.mp3
cargo run --bin cli -- compare /path/to/mix_v1.mp3 /path/to/mix_v2.mp3

MCPツール

設定が完了すると、Claudeはこれらのツールを直接呼び出せます:

ツール

機能

audio_info

基本ファイル情報: 再生時間、サンプルレート、サンプル数

spectral_features

明るく、豊さ、ラウドネス、テクスチャ、音色(MFCC)、周波数バンドエネルギー、スペクトルコントラスト、ダイナミックレンジ、LUFSラウドネス、ステレオフィールド

harmonic_analysis

キー検出、音高クラス分布、トネッツ

rhythm_analysis

テンポ(BPM)、ビート位置、テンポ安定性

full_analysis

上記すべてを1回の呼び出しで実行し、パーカッシブな性質(HPSS)、ステレオフィールド、セクション境界も含む。推奨フロー: 最初に resolution なしで呼び出してサマリーとセクションマップンを取得し、その後 start_time/end_time を高解像度に指定して興味のあるセクションにズームイン

compare

2つのトラックをA/B比較し、両方を分析してコンパクトな差分テーブルを返す

例: よりfull_analysisの出力

60秒のジャズトリオトラックに対する full_分析の出力 は以下です:

═══ Full Audio Analysis ═══
File: /music/jazz_trio.mp3
Duration: 60.62 sec | Sample rate: 48000 Hz | Samples: 2909952
Analysis completed in: 2.02s

── Spectral/Temporal Features ──
Centroid (brightness):  2812 Hz — moderate
Bandwidth (richness):   3933 Hz — complex
Rolloff (energy focus): 6489 Hz
Flatness (tonality):    0.0824 — strongly tonal
RMS Energy (loudness):  0.1160
Zero Crossing Rate:     0.0402 — mixed
MFCCs (timbre):         [-141.3, 13.7, 0.9, 7.7, -2.5, 3.1, -1.7, 2.3, -0.9, 1.0, -0.5, 0.9, 0.6]

── Frequency Band Energy ──
Sub bass  (20–60 Hz):     0.007803
Bass      (60–250 Hz):    0.013043
Low-mid   (250–500 Hz):   0.004906
Mid       (500–2k Hz):    0.002165
Upper-mid (2k–4k Hz):     0.000203
Presence  (4k–6k Hz):     0.000166
Brilliance(6k–20k Hz):    0.000089

── Spectral Contrast (peak–valley dB) ──
Sub bass  (20–60 Hz):     10.4
Bass      (60–250 Hz):    20.4
Low-mid   (250–500 Hz):   26.0
Mid       (500–2k Hz):    30.9
Upper-mid (2k–4k Hz):     19.4
Presence  (4k–6k Hz):     16.6
Brilliance(6k–20k Hz):    55.2

── Harmonic Content ──
Estimated key: E minor (confidence: 0.538)
Top pitch classes:
   1. G  0.627 ███████████████
   2. E  0.561 ██████████████
   3. C  0.512 ████████████
   4. D# 0.495 ████████████
   5. F# 0.487 ████████████
   6. C# 0.459 ███████████

── Rhythm ──
Tempo: 84.0 BPM (confidence: 0.316)
Beats detected: 69
Mean tempo: 84.3 BPM | Median: 84.0 BPM
Stability: 0.951 (0=free, 1=locked)

── Percussive Character ──
Percussive ratio:    0.277 — harmony-dominated
Onset density:       7.0/sec — very dense
Peak attack sharp:   1.000

── Dynamic Range ──
Peak:            -0.44 dBFS
Crest factor:    16.2 dB — very dynamic
Loudness range:  76.4 dB — very dynamic
Quiet sections:  -87.5 dBFS | Loud sections: -11.1 dBFS

── Loudness (EBU R128) ──
Integrated:      -12.1 LUFS
True peak:       0.0 dBTP
Loudness range:  3.7 LU
Spotify (-14):   turned DOWN 1.9 dB | Apple (-16): turned DOWN 3.9 dB | YouTube (-14): turned DOWN 1.9 dB

── Stereo Field ──
Phase correlation:   0.257 avg, -0.822 min — some phase issues
Phase warnings:      20.6% of frames have negative correlation
Stereo width:        0.812 avg, 2.747 max — wide
Balance:             -0.095 — slightly left
Mono compatibility:  0.620 avg, 0.117 min — significant mono loss

── Section Boundaries ──
  Working BPM:     84 (confidence: 0.32)
  Boundaries:      2
     0:18.3s  energy+spectral+texture (confidence: 0.85)
     0:42.1s  energy+harmonic (confidence: 0.67)

resolution: "medium" を指定すると、出力にはトラック全体にわたって各特徴がどのように変化するかを示す時系列テーブルも含まれ、Claudeはビートイントロの構築、ダイフローのソロセクション、静かなアウトロを把握できます。

時系列の解像度

すべての分析ツールは、時間系列の出力を制御する任意の resolution パラメータを受け付けます:

プリセット

データポイント/秒

使用例

"low"

~0.5/秒

全体像を俯瞰的な把握。スペクトグラム画像から視覚的に確認する状況と同じ

"medium"

~1/秒

多くの分析タスクで適したデフォルト

"high"

~4/秒

短いパッセージやトランジションを掘り下ける際の詳細ビュー

数値文字列(例: "20")を渡して、カスタムレートを指定することもできます。

resolution を指定しない場合、ツールは要約統計のみを返します(トラック全体の平均値)。指定すると、セントロイド、RMS、ダイヤナミックレンジ、クロマ、オンセット強度、パーカッシブ比、帯域エネルギー、スペクトルコントラストなどを、同じ時間軸に合わせたコンパクトなTSV表返します。

プリセットはトークン効率に合わせて調整されています。3分のトラックでも、medium では約180行のデータが生成され、コンテキストウィンドウを大きく消費せずに曲の構造を追跡できます。

アーキテクチャー

audio file
    |
    +---> load_audio()          -- Symphonia decodes to mono f32 samples
    |         |
    |         v
    |     compute_spectrogram() -- STFT via rustfft, time-frequency matrix
    |         |
    |         +---> spectral.rs    -- centroid, bandwidth, rolloff, flatness, MFCCs, band energy, contrast
    |         +---> temporal.rs    -- RMS energy, zero crossing rate, dynamic range
    |         +---> harmonic.rs    -- chromagram, key detection, tonnetz
    |         +---> rhythm.rs      -- onset detection, tempo, beat tracking
    |         +---> percussive.rs  -- HPSS (source separation), attack sharpness, onset density
    |         +---> sections.rs    -- section boundary detection (multi-feature novelty)
    |
    +---> load_audio_stereo()   -- preserves L/R channels
              |
              +---> stereo.rs      -- phase correlation, width, balance, mono compatibility
              +---> temporal.rs    -- LUFS loudness (ITU-R BS.1770-4 stereo channel summing)
    |
    v
downsample.rs                   -- bin-average to target resolution, format as TSV

2つのバイナリが同じ解析ライブラリを共有しています。

  • cli (src/main.rs) -- すべての解析を実行し、結果を出力します

  • mcp-server (src/mcp_server.rs) -- rmcpを介してstdio JSON-RPC上にツールを公開します

主要な依存関係: symphonia (オーディオデコード)、rustfft (FFT)、rmcp(MCP SDK)。

変更履歴

バージョン履歴はCHANGELOG.mdを参照してください。

ライセンス

MIT License。詳細は LICENSE を参照してください。

Related MCP Connectors

Related MCP Servers