Native Apple Silicon build of ACE-Step 1.5 XL Turbo
(4-billion-parameter music-generation DiT, 8-step distilled, no CFG) for
mlx-serve. Type a style prompt
("upbeat synthwave with driving bass"), optionally add lyrics, and get an
original 48 kHz stereo track — a 30-second song generates in about 4 seconds
on an M-series Mac, entirely on-device. Instrumental or vocals, 10 seconds to
10 minutes, steerable BPM/key/time signature.
The Music tab in MLX Core: style prompt, structured lyrics, one-click examples, tempo/key dropdowns, and a persistent generation history
Powered by mlx-serve — the no-Python local AI engine for your Mac
mlx-serve is a native Zig server
that runs any LLM on Apple Silicon — MLX models and every GGUF on
Hugging Face — behind OpenAI-, Anthropic-, and Ollama-compatible APIs on
one port. No Python. No cloud. No Electron. The same engine that serves this
music model also:
💬 Chats with anything that speaks OpenAI, Anthropic, or Ollama —
Claude Code, Cursor, Continue, Open WebUI, Raycast, ollama-python, all
unchanged. Measured +35% decode speed vs LM Studio on identical MLX
weights, with speculative decoding (PLD, drafter, native MTP), KV-cache
quantization, and continuous batching built in.
🎨 Generates and edits images (FLUX.2-klein, Krea-2-Turbo) — including
instruction editing that keeps your subject intact ("make the hair blue").
🎬 Generates video with sound (LTX-2) — text-to-video, animate a photo,
or drive a talking character from a real voice clip.
🗣️ Clones voices (Qwen3-TTS) — a few seconds of reference audio, and
the hands-free voice assistant answers in your voice.
🧊 Turns photos into textured 3D models (Hunyuan3D-2.1, full PBR).
🎵 Composes music — this model, in the Music tab.
🤖 Runs a built-in agent with MCP tool calling and a sandboxed Linux
VM for shell commands, plus one-click launchers for Claude Code and
friends.
All of it ships in MLX Core, a native macOS menu-bar app (not Electron),
with one-click model downloads — or headless via the CLI, Ollama-style:
bash
1brew tap ddalcu/mlx-serve https://github.com/ddalcu/mlx-serve
2brew install --cask mlx-core # the menu-bar app3brew install mlx-serve # CLI server only45mlx-serve run gemma4 # download, serve, and chat — one command
Qwen3-Embedding-0.6B verbatim (bf16, standard qwen3) — encodes the style prompt; its embedding table encodes lyrics.
config.json
{"model_type": "acestep", ...} — the marker mlx-serve's audio engine dispatches on.
No external dependencies — text encoder and VAE ride in the bundle. The FSQ
audio tokenizer/detokenizer (cover-mode only) is not included; text-to-music
doesn't use it.
Use
MLX Core app (macOS): Audio Generation → Music tab → one-click
download → describe a style, optionally paste lyrics ([Verse]/[Chorus]
structure supported), pick a duration, Generate. Every track lands in a
persistent history list. Example prompts are built into the pane.
Converted by mlx-serve's tests/convert_acestep_weights.py from the fp32
source checkpoint — the entire pipeline (Qwen3 text encoding, condition
encoders, the 32-layer DiT, the flow-match sampler with DCW correction, and
the Oobleck VAE) is re-implemented natively in Zig on MLX and validated
against the fp32 PyTorch reference with cosine-similarity oracles:
Stage
cos vs fp32 reference
DiT single step
0.9990
Full 8-step schedule
0.9990
Condition encoder
0.999996
VAE decode
0.99994
License & credits
MIT (see LICENSE). Original model by ACE Studio and StepFun
— trained on licensed, royalty-free, and synthetic data; generated music is
commercially usable per the upstream project. Text encoder: Qwen3-Embedding-0.6B
(Qwen team, Apache 2.0).