APPLE SILICON · CHECKED OCTOBER 6, 2026
How to Run Demucs Stem Separation on Apple Silicon with MLX
On an Apple Silicon Mac, the community package demucs-mlx provides a local command-line route to Demucs separation. Install it in a Python environment, run it on a file and review the saved stems. You manage the model download, disk space and local compute.
There are multiple community MLX ports of Demucs. This guide specifically follows ssmall256/demucs-mlx, whose repository documents the published package, CLI and model registry. It is not an official Meta MLX release. Commands were checked against current source; they were not executed on a Mac for this article.
Before installing
Use macOS on Apple Silicon and Python 3.10 or newer. The current package metadata requires MLX 0.32.3 or newer within the 0.32 series. Let the package resolve compatible dependencies inside a separate environment.
The project's platform notes describe native audio I/O without FFmpeg. Do not copy FFmpeg or PyTorch requirements from an unrelated port. The Apple Silicon target includes M-series Macs; that does not promise identical performance or memory needs on M1, M2, M3 and M4 machines.
Install and run a first separation
In Terminal, these first two steps create and activate a standard isolated Python environment. The package installation and CLI follow the maintainer's README:
python3 -m venv .venv
source .venv/bin/activate
python -m pip install demucs-mlx
demucs-mlx "/path/to/your-audio.wav"
Replace the example path with a recording you are authorized to process; retain quotes for filenames containing spaces. The first run downloads model weights. The default model is htdemucs and the default output directory is separated. Reserve room for both the model cache and output audio.
Check the output, not just the exit message
The CLI implementation writes each source into the output tree under the model and track names. Locate the resulting files and play them individually. Compare their timing with the original and listen for bleed or missing detail before using an isolated part in a mix.
Start with one familiar recording. If the command is not found, confirm the Python environment is activated. For install or audio-library errors, check the current package constraints rather than forcing mismatched MLX versions. A first-run download failure is different from a separation failure; resolve model access before trying an offline run.
Which models and stems?
The documented registry includes htdemucs and htdemucs_ft for four sources, plus htdemucs_6s for six, adding guitar and piano. Inspect the models available in your installed version:
demucs-mlx --list-models
demucs-mlx -n htdemucs_6s "/path/to/your-audio.wav"
Do not assume every port or model supports the same stem count. A six-source model is an output choice, not a guarantee that every instrument will be isolated cleanly.
Python and local processing
For a programmatic workflow, the Python API exposes Separator and separate_audio_file. It returns stem arrays; use the documented audio-writing path when you need files. This is useful when a local script needs to inspect or transform results before export.
Apple's MLX framework is built for Apple Silicon and its shared memory architecture. The port uses that execution environment for model inference. Actual elapsed time still depends on your hardware, model, input and workload. We make no realtime, CUDA comparison or speed-multiplier claim.
Local MLX versus a browser workflow
| Need | This demucs-mlx port | Extract Stems |
|---|---|---|
| Local separation | Yes, on your Mac | No; audio is uploaded for server processing |
| Installation | Python package and model download | Browser; no local Python/model setup |
| Hardware | Apple Silicon focus | No Apple Silicon requirement |
| Stem choices | Depends on selected model | 2 / 4 / 6 stem interface |
| Managing results | Local files or Python arrays | Browser preview, downloads, ZIP and library |
Choose local MLX if you want files to stay on your machine and are comfortable maintaining the environment. Choose a browser service for occasional jobs or devices where you do not want to install a model. Neither choice is inherently a promise of better separation quality.
Common questions
Is local Demucs private?
The separation runs locally, but initial package/model downloads need network access. Your own scripts, cloud-synced folders and agent integrations have separate data behavior. For sensitive material, review the whole workflow rather than relying only on the word “local.”
Do I need Python?
This package's documented workflow does. A browser separator avoids local Python setup. For conversational project editing instead, read the Audionaut MCP guide.
Will this work on an Intel Mac?
This guide targets Apple Silicon. Do not assume these instructions apply to Intel hardware; consult the selected project's current platform support.