CLI Audio Analyzer for Music Producers
Status: v0.4.0 - Feature Complete! π
A sharp, opinionated audio analysis tool that speaks the language of producers. Not another generic analyzerβbuilt specifically for electronic music (Drum & Bass, Techno, House) with genre-aware insights that matter.
- EBU R128 Metering: Integrated LUFS, True Peak (dBTP), Loudness Range (LRA)
- Platform Targets: Spotify (-14), YouTube (-14), Apple Music (-16), Club (-6 to -8)
- Genre Awareness: DnB, Techno, House, Dubstep, Trance profiles
- Real-time Warnings: Clipping detection, loudness guidance
- BPM Detection: Genre-aware tempo detection with half-time correction
- Key Detection: Krumhansl-Schmuckler algorithm with Camelot notation (8A, 5B, etc.)
- Confidence Scores: Know how reliable the detection is
- 5-Band Breakdown: Sub (20-60Hz), Low (60-250Hz), Mid (250-2kHz), High (2-8kHz), Air (8-20kHz)
- Visual Bars: See your frequency balance at a glance
- Percentage Distribution: Understand where your energy sits
- Reference Matching: Compare your mix against professional tracks
- Side-by-Side Analysis: Loudness, spectral, BPM, and key comparison
- Smart Suggestions: Get actionable feedback on what to adjust
- Difference Highlighting: See exactly where you differ (> 3% significance threshold)
- Rich CLI Tables: Beautiful terminal output with colors and formatting
- JSON Export: Perfect for scripting and automation
- Multiple Formats: WAV, FLAC, MP3, OGG, AIFF support
# From PyPI
pip install mixref
# Or with uv
uv pip install mixref- Python: 3.12 or 3.13
- Platforms: Linux, macOS, Windows
β οΈ Known Issue: Python 3.13 on Windows is not currently supported due to numpy/librosa compatibility issues. Windows users should use Python 3.12. This limitation does not affect Linux or macOS.
from mixref.audio import load_audio
from mixref.meters import calculate_lufs
from mixref.detective import detect_tempo, detect_key
# Load and analyze
audio, sr = load_audio("your_track.wav")
# Get loudness metrics
result = calculate_lufs(audio, sr)
print(f"LUFS: {result.lufs_integrated}")
print(f"True Peak: {result.true_peak_dbtp}")
# Detect BPM and key
bpm = detect_tempo(audio, sr)
key = detect_key(audio, sr)
print(f"Tempo: {bpm.bpm} BPM")
print(f"Key: {key.key_name} ({key.camelot_code})")# Check version
mixref --version
# Analyze a track
mixref analyze my_track.wav
# With platform target
mixref analyze track.wav --platform spotify
# With genre awareness
mixref analyze dnb_track.wav --genre dnb
# JSON output for scripting
mixref analyze track.wav --json | jq '.lufs.integrated'
# Compare your mix to a reference
mixref compare my_mix.wav professional_reference.wav
# Full comparison with BPM and key
mixref compare my_track.wav reference.wav --bpm --key
# Compare with JSON output
mixref compare track1.wav track2.wav --jsonAnalyze any track to get loudness metrics, BPM, key, and spectral balance. Add --genre dnb for genre-specific feedback.
Compare your mix against professional references with side-by-side analysis and smart suggestions.
$ mixref analyze neurofunk_banger.wav --genre dnb
Analysis: neurofunk_banger.wav
βββββββββββββββββββββββ³βββββββββββββββ³βββββββββ
β Metric β Value β Status β
β‘ββββββββββββββββββββββββββββββββββββββββββββββ©
β Integrated Loudness β -6.2 LUFS β π΄ β
β True Peak β -0.8 dBTP β β οΈ β
β Loudness Range β 5.2 LU β βΉ β
βββββββββββββββββββββββΌβββββββββββββββΌβββββββββ€
β Tempo β 174.0 BPM β β β
β Key β F minor (4A) β β β
βββββββββββββββββββββββΌβββββββββββββββΌβββββββββ€
β Sub β β β β β β β β β‘β‘β‘ β 35.2% β
β Low β β β β β β β β β β β‘ β 28.4% β
β Mid β β β β β β‘β‘β‘β‘β‘β‘ β 18.1% β
β High β β β β β β β β‘β‘β‘β‘ β 14.2% β
β Air β β β‘β‘β‘β‘β‘β‘β‘β‘β‘ β 4.1% β
βββββββββββββββββββββββ΄βββββββββββββββ΄βββββββββ
β οΈ Platform Targets
β’ Spotify (-14): π΄ +7.8 dB too loud
β’ YouTube (-14): π΄ +7.8 dB too loud
β’ Club/DJ: π’ OK for club play
π‘ Genre Insights (DnB)
β’ Sub-bass is strong (35%) - typical for neurofunk
β’ True peak close to 0dB - consider -1dB headroomFull documentation is available at caparrini.github.io/mixref
- π Installation Guide
- π Quick Start
- π API Reference
- π¨ Examples Gallery
# Clone and setup
git clone https://github.com/caparrini/mixref.git
cd mixref
uv sync --all-extras
# Run tests
uv run pytest
# Type check
uv run mypy src/
# Lint and format
uv run ruff check src/
uv run ruff format src/
# Build docs
cd docs && uv run sphinx-build -b html source build/htmlSee CONTRIBUTING.md for detailed development guidelines.
This project uses GitHub Actions for continuous integration:
- β Tests: Python 3.12-3.13 on Ubuntu, macOS, Windows
- π Docs: Auto-deployed to GitHub Pages
- π Quality: Linting, type checking, coverage (88%+)
- π¦ Publish: Automated PyPI releases
- π Coverage: Tracked on Codecov
See .github/CICD_SETUP.md for CI/CD configuration details.
- PyPI: https://pypi.org/project/mixref/
- Documentation: https://caparrini.github.io/mixref/
- Source Code: https://github.com/caparrini/mixref
- Issue Tracker: https://github.com/caparrini/mixref/issues
- Codecov: https://codecov.io/gh/caparrini/mixref
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
MIT License - see LICENSE file for details.