Skip to main content
Glama

MusicMixCode Desktop

🇷🇺 Читать на русском

CI License: MIT

Desktop App

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

Related MCP server: Ableton DJ MCP

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

# 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)

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

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:

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 © 2026 MusicMixCode / HighVoltSound

Available Tools

10 tools
analyze_audioA
Read-onlyIdempotent

Analyze a rendered WAV file into mix metrics: loudness (LUFS/LRA), RMS, peak, spectral band energy and stereo width.

Read-only. Use on a single bounced render. For a whole folder of renders, use analyze_render_dir instead.

Inputs: path (required). Returns: object

analyze_conflictsA
Read-onlyIdempotent

Analyze the rendered tracks and report which pairs are fighting for the same frequency band (e.g. bass vs sub, snare vs bass). Each conflict comes with an actionable suggestion (high-pass, EQ cut, ducking).

Read-only diagnostic. Run before auto_mix to plan EQ/ducking decisions.

Inputs: pattern, render_dir. Returns: object

analyze_render_dirA
Read-onlyIdempotent

Analyze every WAV in a directory of rendered tracks. Point this at the folder where you bounced the Ableton tracks (one WAV per track).

Read-only, batch variant of analyze_audio. Run this before auto_mix or preview_mix so the renders are measured against the style profile.

Inputs: directory. Returns: result

auto_mixA
Destructive

Auto-mix rendered tracks toward a musical style.

Args: style: style name (see list_styles) render_dir: folder containing one WAV per track (bounced from Ableton) dry_run: True returns recommendations without touching Ableton; False applies the volume/pan corrections to the Live set. pattern: glob for audio files inside render_dir

Returns: Per-track corrections (levels, pan, EQ band deltas) and master notes.

Call with dry_run=True first to review the recommendations; only use dry_run=False to apply them to the Live set. Requires Ableton Live + AbletonOSC for dry_run=False; the dry run works offline.

Inputs: style (required), dry_run, pattern, render_dir. Returns: object

get_ableton_statusA
Read-onlyIdempotent

Check connection to Ableton Live and return basic project info.

Inputs: no named parameters. Returns: object

get_styleA
Read-onlyIdempotent

Get the full profile for a style, including spectral curve, track balance, compression and FX recommendations.

Read-only. Call list_styles first to see the available names, then pass one here to fetch its detailed profile.

Inputs: style (required). Returns: object

list_stylesA
Read-onlyIdempotent

List all available mixing styles with their targets.

Read-only. Call this first to discover style names; pass one to get_style, auto_mix or preview_mix.

Inputs: no named parameters. Returns: result

preview_mixA
Idempotent

Apply the style corrections to the rendered WAVs and bounce a stereo preview mix you can listen to WITHOUT Ableton: volumes + pans are applied to the audio directly, tracks are summed, and the result is normalized to the style's target loudness. Returns the path to the preview WAV.

Args: style: style name (see list_styles) render_dir: folder containing one WAV per track pattern: glob for audio files inside render_dir output_path: where to write the preview (default: <render_dir>/preview_.wav) max_duration: cap preview length in seconds. When renders have mismatched lengths (loops vs full arrangement), pass the loop length so the preview stays a tight section. If None, all tracks are trimmed to the shortest render. manual_gain: extra per-file volume in dB, keyed by the render file name without extension, e.g. {"snt2": -4.0}. sidechain_db: duck all non-snare tracks by this many dB when a snare hits, e.g. -4.0 for a light pump. None disables it.

Works fully offline (no Ableton needed) as long as the render WAVs exist. Use this to listen to the mix before applying anything in Live; for recommendations only, use auto_mix with dry_run=True.

Inputs: style (required), pattern, render_dir, manual_gain, +3 more. Returns: object

release_checkA
Idempotent

Run the mix through a label-style quality gate.

If output_path is not given, it re-renders the preview for the requested style (or reuses the existing preview file) and measures it against top-label targets: LUFS, LRA, true peak, RMS and spectral tilt. Returns a ready/needs_work verdict with per-metric results.

Read-only for your audio files; it may write a preview WAV when output_path is omitted. Run this last, after preview_mix, to decide whether the mix is release-ready.

Inputs: style, pattern, render_dir, output_path. Returns: object

suggest_styleA
Read-onlyIdempotent

Analyze the rendered tracks and suggest which style profile fits best.

Read-only. Use this before auto_mix when you are unsure which style to pick; the returned profile name can then be passed to auto_mix or preview_mix.

Inputs: pattern, render_dir. Returns: object

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4.2/5.0

    Scored across 10 tools

    Disambiguation4/5

    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.

    Naming Consistency5/5

    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.

    Tool Count5/5

    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.

    Completeness4/5

    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.

    Maintenance

    ActivityStale
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers