Skip to content
Back to skills

Review Music

ASecurity

Analyze audio files to extract musical features (BPM, key, chords, timbre, dynamics) and generate structured reviews with HMT taxonomy mapping for Horus persona. Uses MIR tools (madmom, essentia, librosa) + LLM chain-of-thought reasoning.

  • 666 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 2, 2026
ai-agentspythonbash

Security analysis

A100/100

Scanned September 2, 2026

npx -y skills add majiayu000/claude-skill-registry --skill review-music --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Review Music?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Review Music
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/majiayu000-review-music/badge)](https://www.skillsdirectory.com/skills/majiayu000-review-music)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: review-music
description: >
  Analyze audio files to extract musical features (BPM, key, chords, timbre, dynamics)
  and generate structured reviews with HMT taxonomy mapping for Horus persona.
  Uses MIR tools (madmom, essentia, librosa) + LLM chain-of-thought reasoning.
triggers:
  - review music
  - analyze song
  - music analysis
  - extract audio features
  - what key is this
  - chord progression
  - music theory analysis
allowed-tools:
  - Bash
  - Python
metadata:
  short-description: Audio analysis with MIR tools + LLM music theory reasoning
---

# Review Music Skill

Analyze audio files to extract musical features and generate structured reviews with Horus Music Taxonomy (HMT) mapping.

## Quick Start

```bash
cd .pi/skills/review-music

# Analyze a local audio file
./run.sh analyze path/to/song.mp3

# Analyze from YouTube URL
./run.sh analyze --youtube "https://youtube.com/watch?v=dQw4w9WgXcQ"

# Extract specific features only
./run.sh features path/to/song.mp3 --bpm --key --chords

# Generate full review with HMT taxonomy
./run.sh review path/to/song.mp3 --sync-memory

# Batch analyze directory
./run.sh batch ./music_folder --output reviews.jsonl
```

## Architecture

```
┌─────────────────────────────────────────────────────────────────┐
│                      review-music Pipeline                       │
├─────────────────────────────────────────────────────────────────┤
│  Input: Audio file (mp3/wav/flac) or YouTube URL                │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│  Stage 1: Feature Extraction (MIR Tools)                        │
│  ├── madmom → beat positions, tempo/BPM, downbeats              │
│  ├── essentia → key, mode, loudness, dynamics                   │
│  ├── librosa → MFCC (timbre), chromagram, spectral features     │
│  ├── Chordino/autochord → chord progression, changes            │
│  └── Whisper → lyrics transcription                             │
│                                                                  │
│  Stage 2: Embeddings (Optional - Foundation Models)             │
│  ├── MERT → acoustic music understanding embeddings             │
│  └── CLAP → audio-text joint embeddings for semantic search     │
│                                                                  │
│  Stage 3: LLM Analysis (Chain-of-Thought)                       │
│  ├── Structured prompt with extracted features                  │
│  ├── Music theory reasoning (chord function, harmony)           │
│  └── Multi-aspect review generation                             │
│                                                                  │
│  Stage 4: HMT Taxonomy Mapping                                   │
│  ├── Map features → Bridge Attributes                           │
│  ├── Extract collection_tags (domain, thematic_weight)          │
│  └── Identify episodic associations (lore connections)          │
│                                                                  │
│  Stage 5: Memory Sync                                            │
│  └── /memory learn with full taxonomy + review                  │
│                                                                  │
├─────────────────────────────────────────────────────────────────┤
│  Output: Structured review JSON with HMT taxonomy                │
└─────────────────────────────────────────────────────────────────┘
```

## Commands

### Analyze

```bash
./run.sh analyze <audio_file> [options]
```

Extract all features and generate analysis report.

**Options:**
| Option | Description |
|--------|-------------|
| `--youtube <url>` | Download and analyze from YouTube |
| `--output <file>` | Output JSON file (default: stdout) |
| `--no-lyrics` | Skip lyrics transcription |
| `--no-llm` | Skip LLM analysis, features only |

### Features

```bash
./run.sh features <audio_file> [--bpm] [--key] [--chords] [--timbre] [--dynamics]
```

Extract specific audio features only.

### Review

```bash
./run.sh review <audio_file> [options]
```

Generate full multi-aspect review with HMT taxonomy.

**Options:**
| Option | Description |
|--------|-------------|
| `--sync-memory` | Sync to /memory after review |
| `--artist <name>` | Override artist name |
| `--title <name>` | Override track title |

### Batch

```bash
./run.sh batch <directory> --output <file.jsonl>
```

Batch analyze all audio files in directory.

## Feature Extraction

### Rhythm & Tempo (madmom)
- `bpm`: Beats per minute
- `tempo_variance`: Stability of tempo
- `beat_positions`: Array of beat timestamps
- `downbeats`: Measure boundaries
- `time_signature`: Detected meter (4/4, 3/4, etc.)

### Harmony (essentia + Chordino)
- `key`: Musical key (C, F#m, etc.)
- `mode`: Major/minor
- `chords`: Array of {chord, start, end}
- `chord_changes_per_minute`: Harmonic rhythm
- `harmonic_complexity`: Variety of chord types

### Timbre (librosa)
- `mfcc`: Mel-frequency cepstral coefficients
- `spectral_centroid`: Brightness
- `spectral_bandwidth`: Frequency spread
- `spectral_rolloff`: High-frequency content
- `zero_crossing_rate`: Noisiness

### Dynamics (essentia)
- `loudness_integrated`: Overall loudness (LUFS)
- `dynamic_range`: Peak-to-average ratio
- `loudness_range`: Variation in loudness

### Lyrics (Whisper)
- `lyrics`: Transcribed text
- `language`: Detected language
- `word_timestamps`: Word-level timing

## HMT Bridge Mapping

Audio features are mapped to Bridge Attributes:

| Bridge | Audio Indicators |
|--------|------------------|
| **Precision** | High tempo variance, polyrhythmic, odd time signatures, technical passages |
| **Resilience** | Building dynamics, triumphant key progressions, crescendos, major keys |
| **Fragility** | Sparse instrumentation, minor keys, soft dynamics, acoustic timbre |
| **Corruption** | Distorted timbre, dissonance, harsh frequencies, industrial textures |
| **Loyalty** | Ceremonial rhythm, drone elements, choral textures, modal harmony |
| **Stealth** | Ambient textures, minimal beats, low spectral centroid, drone |

## Output Format

```json
{
  "metadata": {
    "artist": "Chelsea Wolfe",
    "title": "Carrion Flowers",
    "duration_seconds": 245,
    "file_path": "/path/to/file.mp3"
  },
  "features": {
    "rhythm": {
      "bpm": 72,
      "tempo_variance": 0.05,
      "time_signature": "4/4"
    },
    "harmony": {
      "key": "D minor",
      "mode": "minor",
      "chords": [
        {"chord": "Dm", "start": 0.0, "end": 4.2},
        {"chord": "Am", "start": 4.2, "end": 8.1}
      ],
      "harmonic_complexity": 0.65
    },
    "timbre": {
      "spectral_centroid_mean": 1850.5,
      "brightness": "dark",
      "texture": "layered"
    },
    "dynamics": {
      "loudness_integrated": -14.2,
      "dynamic_range": 12.5
    },
    "lyrics": {
      "text": "...",
      "language": "en",
      "themes": ["mortality", "nature", "darkness"]
    }
  },
  "review": {
    "summary": "A haunting doom-folk track with sparse instrumentation...",
    "music_theory": "The song employs a D minor tonality with...",
    "production": "Heavy reverb on vocals creates ethereal atmosphere...",
    "emotional_arc": "Builds from intimate verses to powerful chorus..."
  },
  "hmt_taxonomy": {
    "bridge_attributes": ["Fragility", "Corruption"],
    "collection_tags": {
      "domain": "Dark_Folk",
      "thematic_weight": "Melancholic",
      "function": "Contemplation"
    },
    "tactical_tags": ["Score", "Immerse"],
    "episodic_associations": ["Webway_Collapse", "Sanguinius_Fall"],
    "confidence": 0.85
  }
}
```

## Integration with Horus Persona

After analysis, reviews are synced to `/memory` for Horus recall:

```bash
# Review syncs automatically with --sync-memory
./run.sh review song.mp3 --sync-memory

# Later, Horus can recall:
/memory recall --bridge Fragility --collection music
/memory recall --scene "mourning scene" --collection music
```

## Crucial Dependencies

| Library | Purpose | Sanity Script |
|---------|---------|---------------|
| madmom | Beat/tempo detection | `sanity/madmom.py` |
| essentia | Key/dynamics extraction | `sanity/essentia.py` |
| librosa | Timbre/spectral features | `sanity/librosa.py` |
| openai-whisper | Lyrics transcription | `sanity/whisper.py` |
| yt-dlp | YouTube download | N/A (well-known) |

## Data Storage

| Data | Location |
|------|----------|
| Reviews cache | `~/.pi/review-music/reviews/` |
| Feature cache | `~/.pi/review-music/features/` |
| Downloaded audio | `~/.pi/review-music/audio/` |

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.