Skip to main content
Glama
JuzzyDee

audio_visualizer_rs

by JuzzyDee

audio_visualizer_rs

MCP-сервер, который даёт Claude возможность слышать музыку.

Укажите Claude на любой аудиофайл — и он сможет назвать тональность, темп, динамику, тембр, перкуссионный характер, стереополе, структурные секции и то, как музыка развивается во времени. Всё это — из анализа сырого аудио, без изображений, без догадок, менее 1% контекстного окна.

Сравнивайте два трека бок о бок. Определяйте, где музыка меняется на уровне структуры — интро, куплет, припев, бридж — и приближайте важные моменты.

Что это?

LLM умеют видеть (зрение) и читать (текст), но не умеют слышать. Этот проект закрывает этот пробел: он выполняет настоящий аудиоанализ — те же методы DSP, что используются в исследованиях по музыкально-информационному поиску (music information retrieval), — и возвращает структурированные числовые данные, с которыми Claude может рассуждать.

Это MCP-сервер, который предоставляет аудиоанализ в виде инструментов, которые Claude может вызывать по требованию. Попросите Claude проанализировать песню — и он декодирует аудио, выполнит спектральный/гармонический/ритмический/перкуссионный анализ и вернёт результат в виде компактного текста. Никаких спектрограмм, изображений и длярья потраченных токенов.

Полный анализ 60-секундного трека завершается менее чем за 2 секунды (включая разделение источников). Чистый Rust. Никакого Python, никакого FFmpeg, никаких системных зависимостей.

Related MCP server: Claud-Ear

Возможности

  • Декодирование аудио — mp3, wav, flac, ogg, aac через Symphonia (чистый Rust)

  • Спектральный анализ — центроид (яркость), ширина спектра (насыщенность), спад (rolloff), флэтнес (тональность)

  • Энергия частотных полос — RMS-энергия в 7 стандартных продюсерских полосах (от саб-баса до «brilliance») для диагностики микса

  • Спектральный контраст — пик против впадины по каждой полосе в дБ, показывает ясность в противовес грязности

  • Динамический диапазон — пик-фактор (crest factor), диапазон громкости (95-й–5-й перцентили), пик в dBFS

  • Громкость LUFS — интегрированная громкость EBU R128 (суммирование стереоканалов по ITU-R BS.1770-4), истинный пик (dBTP), диапазон громкости (LRA), целевые уровни стриминговых платформ. Проверено с точностью 0,0 дБ от FabFilter Pro-L 2

  • Анализ стереополя — фазовая корреляция (моно-совместимость), ширины стерео (соотношение mid/side), баланс L/R, оценка моно-совместимости. Поведровая временная серия, чтобы находить места с фазовыми проблемами

  • Временные параметры — RMS-энергия (громкость), скорость пересечения нуля (текстура)

  • Тембр — 13 MFCC (мел-частотные кепстральные лэффициенты)

  • Гармонический анализ — хромаграмма, определение тональности (алгоритм Крумхансла–Шмуклера), tonnetz

  • Ритмический анализ — оценка темпа, отслеживание ударов, выявление атак (onset detection), стабильность темпа

  • Перкуссионный характер — разделение на гармоническую/перкуссионную составляющие (HPSS), милость атаки, плотность атак

  • Обнаружение границ секций — многофакторный анализ новизны (новизны) находит структurnые изменения (энергия, спектр, гармония, текстура). Дается рабочий процесс «сводка → зум»: получите карту, затем детально изучите интересующие моменты

  • Сравнение A/B — анализируйте два трека рядом, получайте компактную таблицу диффов, выделяющую различия в громкости, динамике, спектральном балансе, стереополе, тональности и темпе

  • Временные series — отслеживайте, как каждый показатель развивается во времени, с выражаемым разрешением

  • Экономия токенов — продержанные (прорежённые) выходные данные, откалиброванные так, чтобы компактно уместиться в контекстном окне

Посмотрите в действии

Посмотрите, как свежий Claude анализирует четыре трека за одну сессию — оrigинальная композиция для фортепиано / лёга, полная карта структуры Bohemian Rhapsody с границами секций, сравнение миксов A/B с продюсерскими советами, и полевая запись грозы, где он сортирует музыкальные показатели как «бессмысленное» и «физически реальное». Все четыре анализа помещаются в одно контекстное окно.

Установка

Claude Desktop — установка в один клик

Скачайте .mcpb-пакет для платформы из Релизы GitHub и откройте его. Остальное 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 — установка вручную (все платформы)

Скачайте бинарник mcp-server для платформы из Релизы GitHub, затем:

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. Инструменты анализа аудио появятся в ваших разговорах.

Примечание: это локальный MCP-сервер на stdio-транспортека, поэтому требуются Claude Code или Claude Desktop. Он не работает с clai.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

Определение тональности, распределение классов высот, tonnetz

rhythm_analysis

Темп (BPM), положения бита, стабильность темpa

full_analysis

Всё из группы в одном вызове, плюс перкуссионный характер (HPSS), стереополе, границы секций. Рекомендуемая тра того: сначала вызов без resolution для сводки и карты секций, потом детальное приближение резу «светильца с start_time/end_time на большом разрешении

compare

A/B двух треков — анализирует оба и возвращает компактную таблицу расхождений

Примерк: вывод full_analysisная

Вот что full_analysis возвращает для 60-секундного трека джазового трио:

═══ 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", вывод сверх того включает ДНК времени series таблицу, показывающую, как каждый признака изменяется по долгезву трека — Claude видит нарастающее интро, динамичную сольную секцию и спокойный аутро.

Разрешение временного ряда

Все анализаторы принимают опциональный resolution параметр, контролирующий временный ряд:

Пресет

Точек в сек

Сценарий / использование

"low"

~0.5/сек

большой масштаб, соответствует человеческой глазам просмотр спектрограммы

"medium"

~1/сек

хороший дефолт для большинства аналитических задач

"high"

~4/сек

детальный вид для коротких фрагментов или продвижения к переходам

Можно также передать числовую строку (например, "20") для кастомной частоты.

Без resolution инструменты возвращают только сводную статистику (среднее по всему треку). С resolution — компактная TSV-таблица с эволюцией признаков: центроид, RMS, динамический ряд, chroma, сила попытки начало, доля перкуссии, энергии, спектральный ряд, и др., выстраивание к одной временной оси.

Пресеты рассчитаны на экономность токенов. Трек в 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

Две бинарники используют одну и ту же библиотеку анализа:

  • cli (src/main.rs) — выполняет все анализы и печатает результат

  • mcp-server (src/mcp_server.rs) — публикует инструменты через stdio JSON-RPC с помощью rmcp

Ключевые зависимости: symphonia (декодирование аудио), rustfft (FFT), rmcp (MCP SDK).

Изменений

История версий — в CHANGELOG.md.

Лицензия

MIT License. Подробности — в LICENSE.

Related MCP Connectors

Related MCP Servers