mastering-audio · git:20260914.386cec6 · 2026-09-14 · sha256 c8c03e757fab48fc

mastering-audio git:20260914.386cec6A

Immutable. This exact content is served forever at /api/v1/blob/c8c03e757fab48fc.

---
name: mastering-audio
description: >
  Master audio files (especially Suno/Udio AI music) for streaming release with LUFS normalization, true peak
  limiting, and optional enhancements. Triggers — "master this", "master the track", "LUFS normalize", "optimize
  for streaming". Not for a spot's or film's delivery loudness — use video-finish-qc.
triggers:
  - master audio
  - master song
  - master track
  - optimize for streaming
  - suno mastering
  - lufs normalize
---

# Audio Mastering Skill

Master audio files for streaming release using DSP analysis and processing.

## Tool Location

```
~/.claude/skills/mastering-audio/scripts/master.mjs
```

## Workflow

### Phase 1: Analyzing Audio

Run analysis to understand the audio characteristics:

```bash
node ~/.claude/skills/mastering-audio/scripts/master.mjs "<INPUT_FILE>" --analyze --json
```

**Metrics to evaluate:**
- LUFS (loudness) - streaming target is -14 LUFS
- True Peak - should be below -1 dBTP
- Stereo width and correlation
- DC offset presence
- Detected issues (clipping, low headroom, etc.)

### Phase 2: Selecting Approach

Based on analysis, determine processing approach:

**If Suno/Udio AI music:**
- Use `--preset suno` (optimized for AI music characteristics)
- Addresses: harsh 2-4kHz, clipping, overloud output

**If targeting streaming platforms:**
- Use `--preset streaming` for -14 LUFS, conservative processing

**If maximum loudness needed:**
- Use `--preset loud` for -9 LUFS with saturation/punch

**If preserving dynamics:**
- Use `--preset dynamic` for -16 LUFS, minimal processing

**Custom approach (advanced):**
```
--target-lufs N     Target LUFS (default: -14)
--ceiling N         True peak ceiling dB (default: -1)
--deharsh           Reduce harsh frequencies
--add-air           High-frequency sparkle
--warmth            Tape saturation
--punch             Transient enhancement
--stereo-width N    Width percentage (100 = unchanged)
--bit-depth N       16 or 24 (default: 24)
--sample-rate N     Output rate (default: 48000)
```

### Phase 3: Processing Audio

Execute mastering with chosen settings:

```bash
# Using preset
node ~/.claude/skills/mastering-audio/scripts/master.mjs "<INPUT_FILE>" "<OUTPUT_FILE>" --preset suno

# Custom settings
node ~/.claude/skills/mastering-audio/scripts/master.mjs "<INPUT_FILE>" "<OUTPUT_FILE>" --target-lufs -14 --ceiling -1 --deharsh --add-air
```

**Default output:** If no output specified, creates `<input>_mastered.wav` in same directory.

### Phase 4: Verifying Results

Run analysis on processed file to confirm:

```bash
node ~/.claude/skills/mastering-audio/scripts/master.mjs "<OUTPUT_FILE>" --analyze
```

**Success criteria:**
- LUFS within ±0.5 of target
- True peak at or below ceiling
- No clipping warnings
- Stereo correlation positive (not phase-inverted)

## Presets Reference

| Preset    | LUFS | Ceiling | De-harsh | Air | Warmth | Punch | Width |
|-----------|------|---------|----------|-----|--------|-------|-------|
| streaming | -14  | -1      | Yes      | No  | No     | No    | 100%  |
| loud      | -9   | -0.3    | Yes      | Yes | Yes    | Yes   | 105%  |
| dynamic   | -16  | -1      | No       | No  | No     | No    | 100%  |
| suno      | -14  | -1      | Yes      | Yes | No     | Yes   | 102%  |

## Processing Chain

1. DC offset removal
2. Hybrid dynamic processor (de-harsh)
3. High-frequency exciter (air)
4. Tape warmth saturation
5. Multiband transient enhancement (punch)
6. Stereo width adjustment
7. Bass mono (< 200 Hz)
8. Final filters (30 Hz HPF, 18 kHz LPF)
9. LUFS normalization
10. Lookahead true peak limiter

## Dependencies

- Node.js 18+
- ffmpeg (for audio decoding)
- npm dependencies (run `npm install` in skill directory once)

## Example Session

```
User: master this suno track for spotify release
Assistant:
1. Analyzing: node master.mjs song.mp3 --analyze --json
   → LUFS: -9.2, True Peak: +0.3 dBTP (clipping detected)

2. Selecting: Using suno preset (AI music, targeting -14 LUFS)

3. Processing: node master.mjs song.mp3 song_mastered.wav --preset suno
   → Applied: de-harsh, air, punch, bass mono, LUFS normalization, limiting

4. Verifying: node master.mjs song_mastered.wav --analyze
   → LUFS: -14.0, True Peak: -1.0 dBTP (no issues)
   → Ready for streaming release
```
- Deeper context — the upstream projects behind the rules here: `video-production/references/CONTEXT-MAP.md` § Where the deeper context lives.