{"slug": "show-hn-dj-mix-realtime-local-ai-music-with-a-controller-magenta-stable-audio", "title": "Show HN: DJ Mix realtime local AI music with a controller; Magenta, Stable Audio", "summary": "A developer released Slipmate, an open-source DJ instrument that runs two real-time AI music models locally on Apple Silicon Macs, controlled by text prompts and mixed like vinyl with support for Pioneer DDJ-FLX4 hardware. The tool uses Magenta RealTime 2 for live decks and Stable Audio 3 for generated pads and tracks, requiring ~13 GB of disk space for model weights.", "body_md": "**Your generative DJ mate** — a DJ instrument for real-time AI music.\n\nTwo locally-running model decks, steered by text prompts and mixed like vinyl:\nthree-band EQ, one-knob Color FX, a crossfader, headphone cue, and full\nPioneer DDJ-FLX4 control. The live decks run on\n[Magenta RealTime 2](https://github.com/magenta/magenta-realtime); generated\npads and finished tracks come from Stable Audio 3. See\n[ docs/ROADMAP.md](/brxs/slipmate/blob/main/docs/ROADMAP.md) for how it got here and\n\n[for the architecture decisions.](/brxs/slipmate/blob/main/docs/adr)\n\n`docs/adr/`\n\n- Apple Silicon Mac (MLX backend)\n[uv](https://docs.astral.sh/uv/)- ~13 GB disk for model weights (downloaded on first setup: Magenta ~4.5 GB for both deck models, Stable Audio 3 ~8 GB including the medium track model)\n- A Chromium-based browser (the app leans on Web Audio worklets and Web MIDI; it is developed and verified against Chrome)\n- Optional: a Pioneer DDJ-FLX4 for hardware control and its headphone jack\n\nAll common tasks live in the [ justfile](/brxs/slipmate/blob/main/justfile) — run\n\n`just`\n\nto list them.\n\n```\njust setup   # backend deps, all model weights (~13 GB), frontend deps + build\n```\n\nMagenta models land in `~/Documents/Magenta/magenta-rt-v2`\n\n(override with\n`MAGENTA_HOME`\n\n): both deck models, the default `mrt2_small`\n\nand the heavier,\nhigher-quality `mrt2_base`\n\n, selectable per deck in the UI — the app warns\nwhen the combined selection looks tight for your RAM. Stable Audio 3 —\ngenerated pads and tracks — is cloned to `~/Repos/stable-audio-3`\n\n(override\nwith `SA3_MLX_HOME`\n\n; an existing checkout is reused) and its weights are\npre-warmed so no request ever pays for a download; `just setup-sa3`\n\nre-runs\nthat half alone.\n\n```\njust run\n```\n\nThen open [http://127.0.0.1:8000](http://127.0.0.1:8000) — add style targets to a deck's pad, hit\nplay, blend targets by dragging the cursor (or the dots themselves, to\ncluster them), and ride the crossfader between decks.\n\n**Mixer**— per-deck volume and Hi/Mid/Low EQ, crossfader, and** Record**, which captures the master bus to a downloadable WAV. The health row shows the stream buffer, underrun count, and generation speed.**Color FX**— one knob per deck over a chosen effect: Filter (bipolar LPF/HPF), Dub Echo, Space, Crush, Noise, Sweep. The knob's centre/zero is a bit-exact bypass ([ADR-0008](/brxs/slipmate/blob/main/docs/adr/0008-color-fx-as-one-knob-curves-at-a-pre-fader-insert.md)).**Freeze loops**— capture the last bars of a deck into one of four loop slots and hold the moment on air while you re-steer the model underneath; loops are session-only by design ([ADR-0009](/brxs/slipmate/blob/main/docs/adr/0009-freeze-pads-loop-played-audio-at-the-channel-head.md)).**Beat detection**— each deck shows its detected BPM behind an honesty gate (a dash rather than a wrong number); with a confident tempo the Dub Echo syncs to the beat and freeze captures quantise to whole beats ([ADR-0010](/brxs/slipmate/blob/main/docs/adr/0010-beat-detection-on-the-output-behind-an-honesty-gate.md)).**Deck-to-deck style sampling**— one press puts \"the sound of the other deck, right now\" on a deck's style pad as a blendable target; sampled targets are session-only by design ([ADR-0011](/brxs/slipmate/blob/main/docs/adr/0011-deck-to-deck-style-sampling-via-audio-embeddings.md)).**Crates**— save a deck's pad + Color FX as a named preset, browse the crate from the FLX4's rotary, and load onto either deck mid-set; export/import as JSON for backup and sharing.**Master housekeeping**— a limiter on the master (the meter, the recording, and the phones all hear the limited signal; its gain reduction shows in the mixer) and per-channel auto-gain Trim that levels decks of different loudness, with a manual override.**Headphone cue**— hit a channel's** Cue**, ride the** Cue mix**knob between cue and master, and pick a** Phones out**: any output device the browser can reach, or the FLX4's own headphone jack, which is fed by the backend over USB ([ADR-0007](/brxs/slipmate/blob/main/docs/adr/0007-flx4-phones-jack-via-a-backend-cue-sink.md)).\n\nSettings (pad arrangements, volumes, crossfade) persist across reloads.\nShortcuts: `A`\n\n/`B`\n\nfocus a deck's style-target input, `X`\n\nfocuses the\ncrossfader.\n\nFor frontend development: `just dev-backend`\n\nin one terminal, `just dev-frontend`\n\nin another (the Vite dev server proxies `/ws`\n\nto the backend).\n\nPlug in the FLX4 and click **Connect MIDI** (Chrome asks for MIDI with SysEx;\nplain MIDI works too, minus position sync). Mapped controls:\n\n- Play/pause, channel faders, three-band EQ, crossfader\n- Channel\n**CUE** buttons (headphone cue) and the transport**CUE** button (deck prep: prime a stopped deck off-air, stop a playing one) **SMART CFX** knob — Color FX amount; hold**SHIFT** to sweep the style pad instead**PAD FX** pad bank — select the deck's effect (re-press toggles it off);**HOT CUE** pads pick style targets;**SAMPLER** pads freeze loops (SHIFT + pad clears a slot)**HEADPHONES MIX** knob — cue mix**Browse rotary + LOAD buttons**— highlight a crate preset, load it onto deck 1 or 2\n\nKnob and fader positions sync from the hardware on connect, and the LEDs\nmirror app state. The measured byte map lives in\n[ docs/midi-ddj-flx4.md](/brxs/slipmate/blob/main/docs/midi-ddj-flx4.md).\n\n`just test`\n\n— backend pytest + frontend vitest`just lint`\n\n— format check, ruff, eslint, tsc`just check`\n\n— both of the above; what a PR must pass`just verify-stream`\n\n/`just verify-ui`\n\n— e2e against a running server (UI e2e needs Playwright Chromium once:`npx playwright install chromium`\n\nin`frontend/`\n\n)`just verify-worklets`\n\n— the audio-worklet module graph loads in real Chromium (self-contained; jsdom executes none of the worklet code)- Hardware behaviour is verified by a human against the checklists in\n`docs/`\n\n(`m7-`\n\n,`m9-m10-`\n\n,`m12-hardware-checklist.md`\n\n)", "url": "https://wpnews.pro/news/show-hn-dj-mix-realtime-local-ai-music-with-a-controller-magenta-stable-audio", "canonical_source": "https://github.com/brxs/slipmate", "published_at": "2026-06-15 11:40:35+00:00", "updated_at": "2026-06-15 11:46:24.436982+00:00", "lang": "en", "topics": ["artificial-intelligence", "machine-learning", "generative-ai", "ai-tools", "ai-products"], "entities": ["Slipmate", "Magenta RealTime 2", "Stable Audio 3", "Pioneer DDJ-FLX4", "Apple Silicon", "MLX", "Chrome", "Web Audio"], "alternates": {"html": "https://wpnews.pro/news/show-hn-dj-mix-realtime-local-ai-music-with-a-controller-magenta-stable-audio", "markdown": "https://wpnews.pro/news/show-hn-dj-mix-realtime-local-ai-music-with-a-controller-magenta-stable-audio.md", "text": "https://wpnews.pro/news/show-hn-dj-mix-realtime-local-ai-music-with-a-controller-magenta-stable-audio.txt", "jsonld": "https://wpnews.pro/news/show-hn-dj-mix-realtime-local-ai-music-with-a-controller-magenta-stable-audio.jsonld"}}