claude-music-compose
Songwriting guide for ACE-Step music generation. Helps craft captions (style descriptions), lyrics with structure tags, and…
Analyzes audio files for BPM, musical key, loudness (LUFS), duration, format, and quality metrics. Uses ffprobe for metadata and FFmpeg for loudness measurement.
$ npx -y skills add AgriciDaniel/claude-music --skill claude-music-analyze --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/claude-music-analyzeContext preview
The summary Claude sees to decide when to auto-load this skill.
Analyzes audio files for BPM, musical key, loudness (LUFS), duration, format, and quality metrics. Uses ffprobe for metadata and FFmpeg for loudness measurement.
name: claude-music-analyze description: > Analyzes audio files for BPM, musical key, loudness (LUFS), duration, format, and quality metrics. Uses ffprobe for metadata and FFmpeg for loudness measurement. when_to_use: > Use when the user asks to analyze, inspect, or measure an audio file — BPM, key, loudness, LUFS, duration, codec, or general audio info. allowed-tools: - Bash - Read
# Full metadata ffprobe -v quiet -print_format json -show_format -show_streams input.flac # Duration only ffprobe -v quiet -show_entries format=duration -of csv=p=0 input.flac # Sample rate, channels, codec ffprobe -v quiet -show_entries stream=sample_rate,channels,codec_name -of csv=p=0 input.flac
ffmpeg -i input.flac -af loudnorm=I=-14:TP=-1:LRA=11:print_format=json -f null - 2>&1 | \ grep -A 20 '"input_'
Key fields in output:
Using ffmpeg's `ebur128` for rhythm analysis, or for accurate BPM:
# If librosa is available in ~/.video-skill/ venv:
source ~/.video-skill/bin/activate
python3 -c "
import librosa
y, sr = librosa.load('input.flac', sr=None)
tempo, _ = librosa.beat.beat_track(y=y, sr=sr)
print(f'BPM: {tempo[0]:.1f}' if hasattr(tempo, '__len__') else f'BPM: {tempo:.1f}')
"source ~/.video-skill/bin/activate
python3 -c "
import librosa
import numpy as np
y, sr = librosa.load('input.flac', sr=None)
chroma = librosa.feature.chroma_cqt(y=y, sr=sr)
key_names = ['C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#', 'A', 'A#', 'B']
key_idx = np.argmax(np.mean(chroma, axis=1))
print(f'Estimated key: {key_names[key_idx]}')
"Combine all analyses into a single report: 1. Run ffprobe for format/codec/duration 2. Run loudnorm for LUFS measurement 3. Run librosa for BPM + key (if available) 4. Present as structured summary
Make full songs on your own computer by describing them in plain words. claude-music turns Claude Code into a music studio, powered by ACE-Step 1.5. Type "make me a chill lo-fi beat" and get a finished track in about 15 seconds.
Songwriting guide for ACE-Step music generation. Helps craft captions (style descriptions), lyrics with structure tags, and…
Creates cover versions and style transfers of existing songs using ACE-Step 1.5. Takes a reference audio file and generates a new…
Post-processing for generated music. Default path is FFmpeg loudness normalization (fast, CPU-only). Escape hatches: AI vocal…
Exports music for specific platforms with optimal format, loudness, and metadata. Supports Spotify, Apple Music, YouTube, TikTok,…
Generates music from text descriptions and lyrics using ACE-Step 1.5's Python API. Creates full songs with vocals, instrumentals,…
Browses, searches, and manages generated music in ~/Music/claude-music-output/. Lists recent generations, searches by date,…