CLI Audio Analyzer for Music Producers - DnB, Techno, House
Project description
mixref
CLI Audio Analyzer for Music Producers
Status: v0.1.0 Published! 🎉
A sharp, opinionated audio analysis tool that speaks the language of producers. Focused on electronic music (Drum & Bass, Techno, House) with genre-aware insights.
Features
Available Now (v0.1.0)
- 📂 Audio Loading: WAV, FLAC, MP3, OGG, AIFF support
- 🔄 Format Conversion: Automatic mono/stereo conversion
- ⚡ Resampling: Convert to any target sample rate
- 🛡️ Error Handling: Robust error messages for common issues
Coming Soon
- 🎚️ LUFS Metering: EBU R128 loudness with platform-specific targets
- 🎵 BPM & Key Detection: Genre-aware tempo and key analysis with Camelot notation
- 📊 Spectral Analysis: Frequency band breakdown for mixing decisions
- 🔄 A/B Comparison: Compare your mix against professional references
- 🎯 Smart Suggestions: Actionable feedback based on genre best practices
Installation
# From PyPI
pip install mixref
# Or with uv
uv pip install mixref
System Requirements
- 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.
Quick Start
from mixref.audio import load_audio
# Load an audio file
audio, sample_rate = load_audio("your_track.wav")
# With options
audio, sr = load_audio(
"track.wav",
channel_mode="stereo", # Force stereo output
sample_rate=44100 # Resample to 44.1kHz
)
CLI Usage
# Check version
mixref --version
# Get help
mixref --help
# Coming soon: Analysis commands
# mixref analyze my_track.wav --genre dnb
# mixref compare my_mix.wav reference.wav
Documentation
Full documentation is available at caparrini.github.io/mixref
Development
# 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/html
See CONTRIBUTING.md for detailed development guidelines.
CI/CD
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.
Links
- 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
Contributing
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
License
MIT License - see LICENSE file for details.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mixref-0.2.0.tar.gz.
File metadata
- Download URL: mixref-0.2.0.tar.gz
- Upload date:
- Size: 147.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e23557afa903c52c43c3ecd0fa6ed6be55f34e5f3c3f3312dfc61ebbce4d3e72
|
|
| MD5 |
80fbca8d405767a2b73c180ad5b32be5
|
|
| BLAKE2b-256 |
db71826fb00a3343eb926c63fbbf6d5e2c27bf32bff2c45d099324d10a74a066
|
Provenance
The following attestation bundles were made for mixref-0.2.0.tar.gz:
Publisher:
publish.yml on Caparrini/mixref
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mixref-0.2.0.tar.gz -
Subject digest:
e23557afa903c52c43c3ecd0fa6ed6be55f34e5f3c3f3312dfc61ebbce4d3e72 - Sigstore transparency entry: 875722310
- Sigstore integration time:
-
Permalink:
Caparrini/mixref@1bf23f69b586d2d4d14d4c11328d9f215e7e7305 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/Caparrini
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@1bf23f69b586d2d4d14d4c11328d9f215e7e7305 -
Trigger Event:
release
-
Statement type:
File details
Details for the file mixref-0.2.0-py3-none-any.whl.
File metadata
- Download URL: mixref-0.2.0-py3-none-any.whl
- Upload date:
- Size: 17.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
39eba66fd80b771af2c202ea40840c13f43a164ea2880e2711475df6f09466a4
|
|
| MD5 |
e7d13a8e8f9819201b211b8d85b8fa34
|
|
| BLAKE2b-256 |
e1cbf16ece90e1cb8d7ffa1a33f43f6fa4f9d42417c456121ffe13aa75e738c4
|
Provenance
The following attestation bundles were made for mixref-0.2.0-py3-none-any.whl:
Publisher:
publish.yml on Caparrini/mixref
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mixref-0.2.0-py3-none-any.whl -
Subject digest:
39eba66fd80b771af2c202ea40840c13f43a164ea2880e2711475df6f09466a4 - Sigstore transparency entry: 875722384
- Sigstore integration time:
-
Permalink:
Caparrini/mixref@1bf23f69b586d2d4d14d4c11328d9f215e7e7305 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/Caparrini
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@1bf23f69b586d2d4d14d4c11328d9f215e7e7305 -
Trigger Event:
release
-
Statement type: