Music - Stem Separation
Stem Separation That Runs on CPU — and Knows Its Limits
- audio
- VOCALS
- DRUMS
- BASS
- MUSIC
- OTHERS
The name says "Stem Separation," and people who've seen Demucs or UVR results will assume that means neural source separation. It doesn't - and the pack is aggressively honest about it: this is a fast heuristic DSP split, not Demucs. That's not a downgrade, it's a different tool for a different job.
You feed it one AUDIO input and get five outputs out: VOCALS, DRUMS, BASS, MUSIC, OTHERS. All the same sample rate, all batch-preserving. That's the whole interface.
How it works
Read the source and you'll see the actual mechanism: it computes an STFT of the input, then applies per-stem frequency masks and harmonic/percussive logic:
- VOCALS - the 200 Hz–8 kHz band, further shaped by a harmonic mask (median-filtered magnitude), so sustained tonal content gets kept and transients get pushed elsewhere.
- DRUMS - low-to-mid band plus an onset envelope: it looks at the difference between consecutive STFT frames and keeps percussive transients. That's how drums get separated without any learned model.
- BASS - the 20–250 Hz band, basically the low-end carve.
- MUSIC - everything else, harmonically weighted, which is where melody and pads end up.
- OTHERS - the residual: whatever's left after subtracting the other four. In practice that's ambience, FX, and everything the masks missed.
Everything runs on NumPy/SciPy with FFTs - no model, no GPU, near real-time even on CPU. That's the entire appeal. Clips under 2048 samples are passed through to the MUSIC stem losslessly rather than producing garbage.
The honest take
The quality ceiling is real. Heuristic separation bleeds: vocals output will carry instrument spill, and the "vocals" you get on a dense mix will sound like a blanket was thrown over the center channel. It is nowhere near Demucs or the commercial web separators for surgical isolation. Where it wins is as a fast, free, in-graph utility:
- Karaoke-adjacent leveling - drop the vocal level on a track without a dedicated model.
- Rough remixes - split, rebalance, recombine with the sibling node.
- AI-vocal cleanup - pull the vocal stem, process it (de-esser, naturalizer), recombine.
- Batch processing - it handles a whole batch of audio in one pass, which the neural tools mostly choke on.
If you need studio-grade isolation, this isn't the tool and you should go get a real source-separation model. If you need a stem split fast enough to iterate on inside a ComfyUI graph, this is it.
Wiring it up
The five outputs plug straight into Music - Stem Recombination, which gives each stem an individual volume (0–2x). A typical remix graph:
Load Audio -> Stem Separation -> [process stems] -> Stem Recombination -> Save Audio
Note the node doesn't take a separation_type input - it always splits into all five. Per-stem processing is up to you: you can run any other Music Tools node (EQ, compressor, reverb) on the VOCALS output before recombining, and it'll all stay in the same sample rate and channel layout.
Install
Pack standard, as always:
cd ComfyUI/custom_nodes
git clone https://github.com/jeankassio/ComfyUI_MusicTools.git
cd ComfyUI_MusicTools
python -m pip install -r requirements.txt
Restart ComfyUI, find it under music. No model downloads - the "no neural" thing cuts both ways, and here it means zero setup friction.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| audio | AUDIO | — |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| VOCALS | AUDIO | — |
| DRUMS | AUDIO | — |
| BASS | AUDIO | — |
| MUSIC | AUDIO | — |
| OTHERS | AUDIO | — |