ableton-auto-mix-mcp
# MusicMixCode Desktop
> π·πΊ [Π§ΠΈΡΠ°ΡΡ Π½Π° ΡΡΡΡΠΊΠΎΠΌ](README.ru.md)
[](https://github.com/HighVoltSound/ableton-auto-mix-mcp/actions)
[](LICENSE)

AI-powered mixing and mastering β both as an MCP server for AI agents and a standalone desktop app.
## What's Inside
| Layer | Stack | What it does |
|-------|-------|-------------|
| **Desktop App** | Tauri 2 + React + TypeScript | Visual mixing interface with waveform, EQ, 3D spatializer |
| **Backend API** | FastAPI (Python 3.10+) | REST API for analysis, preview render, export |
| **MCP Server** | stdio/OSC | 13 tools for AI agents (opencode, Claude Code) |
| **DSP Engine** | numpy + scipy | Full mastering chain: EQ, compression, sidechain, limiting |
## Desktop Features
- **Waveform Editor** β visual track import, drag & drop, volume/pan per track
- **Style Profiles** β 18 genre presets (techno, hip-hop, ambient, jazz, metal, R&B...)
- **AI Recommendations** β RAG-powered suggestions for compression, sidechain, EQ
- **Master Preview** β render mastered mix to WAV with full DSP chain
- **Live Spectrum** β real-time FFT visualization during playback
- **3D Spatializer** β binaural head-tracking positioning per track
- **EQ Editor** β interactive frequency curve with drag handles
- **Export** β Ableton Live (.als), JSON (universal), or WAV/FLAC/MP3 format conversion
- **i18n** β English & Russian
- **Auto-Update** β via GitHub Releases
## Quick Start
### Desktop App
```bash
# Windows
cd desktop
npm install
npm run tauri dev # development
npm run tauri build # release build β src-tauri/target/release/bundle/
# macOS (requires Xcode CLI tools)
cd desktop
npm install
npm run tauri dev
npm run tauri build # β DMG
```
### Backend Only (API / MCP Server)
```bash
pip install -e ".[dev]"
python -m ableton_auto_mix # MCP server
python -m uvicorn ableton_auto_mix.api_app:app --port 8787 # REST API
```
## Architecture
```
desktop/src-tauri/
βββ src/main.rs # Tauri entry point
βββ tauri.conf.json # App config, bundling, auto-update
desktop/src/
βββ components/
β βββ WaveformEditor.tsx # Track waveform + per-track controls
β βββ MixPanel.tsx # Main mixing interface
β βββ LiveSpectrum.tsx # Real-time FFT via WebAudio
β βββ Spatializer3D.tsx # Binaural positioning
β βββ EqCurveChart.tsx # Interactive EQ editor
β βββ ReferencePlayer.tsx # A/B reference playback
β βββ ExportDialog.tsx # Export to Ableton/JSON/Audio
β βββ ui/ # Glassmorphism UI primitives
βββ lib/api.ts # FastAPI client
βββ i18n/ # en.json, ru.json
src/ableton_auto_mix/
βββ analyzer.py # LUFS/LRA, spectrum, stereo width
βββ mixer.py # Style-based corrections engine
βββ preview.py # Mastering chain render
βββ reference_store.py # RAG reference database
βββ ai_recommender.py # AI mixing recommendations
βββ ableton_export.py # .als + JSON export
βββ logging_utils.py # Structured logging
βββ ableton_client.py # AbletonOSC bridge
βββ dsp/ # Biquad filters, EQ, compression, spatial
βββ styles/ # 18 genre profiles (JSON)
```
## Style Profiles (18)
Electronic: `techno`, `trance`, `breaks`, `dubstep`, `drum_n_bass`, `trap`, `lo_fi`
Pop/Hip-Hop: `pop`, `hip_hop`, `rnb`
Rock/Metal: `rock`, `metal`
Jazz/Soul: `jazz`, `funk`, `country`, `classical`
Ambient/Cinematic: `ambient`
General: `balanced`
Each defines: target LUFS/LRA, spectral curve (6 bands), per-role levels, HPF, sidechain, compression, FX recommendations.
## MCP Tools
| Tool | Description |
|------|-------------|
| `list_styles` | List all available style profiles |
| `get_style(name)` | Full profile details |
| `get_ableton_status` | Check Ableton Live connection |
| `analyze_audio(path)` | Metrics for one WAV |
| `analyze_render_dir(dir)` | Metrics for all renders |
| `auto_mix(style, dir, dry_run)` | Corrections (dry-run or apply) |
| `suggest_style(dir)` | Best-fitting style for material |
| `preview_mix(style, dir)` | Render mastered preview WAV |
| `analyze_conflicts(dir)` | Frequency clashes between tracks |
| `release_check(style, dir)` | LUFS/TP/LRA vs label targets |
## Export Modes
| Mode | Description |
|------|-------------|
| **Ableton (.als)** | Full session with audio tracks, gain, pan, EQ Eight |
| **JSON** | Universal format for any DAW via scripting |
| **Apply to Live** | Push corrections directly via AbletonOSC |
| **Audio** | WAV (16/24/32-bit), FLAC, MP3 (128β320kbps) |
## Tests
```bash
python -m pytest tests/test_core_units.py -q # 16 unit tests
python -m pytest tests/test_rag.py -q # 13 RAG tests
python -m pytest tests/test_preview_harness.py -q # 9 e2e tests
```
## CI/CD
- **CI** (`.github/workflows/ci.yml`) β Python 3.10β3.12, ruff, mypy, frontend build
- **Release** (`.github/workflows/release.yml`) β Windows NSIS + macOS DMG (Intel + ARM)
- **Pre-commit** β ruff lint/format, mypy
To trigger a release build:
```bash
git tag v0.1.0
git push origin v0.1.0
# β GitHub Actions builds Windows .exe + macOS .dmg
# β Creates draft release with artifacts
```
## License
[MIT](LICENSE) Β© 2026 MusicMixCode / HighVoltSound
TDQS
Scored across 10 tools
Most tools have clearly distinct purposes: querying status, listing/fetching styles, analyzing audio in two forms, auto-mixing, previewing, suggesting styles, analyzing conflicts, and release checking. The two analyze tools (analyze_audio vs analyze_render_dir) could be confused at first glance, but descriptions clearly differentiate single-file vs directory batch, so boundary is well-defined.
All tool names follow a consistent verb_noun snake_case pattern: get_ableton_status, list_styles, get_style, analyze_audio, analyze_render_dir, auto_mix, preview_mix, suggest_style, analyze_conflicts, release_check. There are no deviations in style or mixed conventions.
Ten tools is firmly in the well-scoped range for an audio mixing server. Each tool maps to a distinct workflow step (discover, analyze, suggest, preview, apply, verify), and none feels redundant or placeholder.
The surface covers the full workflow: style discovery, audio analysis, auto-mixing, offline preview, style suggestion, conflict diagnostics, and a final release gate. Minor gaps include the absence of a tool to apply or revert individual mix corrections outside of auto_mix, and no explicit way to manage/edit style profilesβbut these are secondary to the core mixing workflow.