Stem Splitter
The poor man's Demucs, and proud of it
- audio
- vocals
- drums
- bass
- other
- summary
Let's get the expectation management out of the way: MKRStemSplitter is not Demucs. It's not an ML model that separates vocals from a song by "understanding" it. It's an FFT frequency splitter with a transient trick, and it's honest about being that. What it is: a zero-dependency, zero-model node that splits an audio clip into vocals, drums, bass, and other stems fast enough to not care.
How it works, in one breath: it takes the audio, computes the FFT spectrum, and slices it with fixed frequency bands - bass gets everything up to 250 Hz, vocals get 250 Hz to 4 kHz, and the high band (above 4 kHz) gets mixed with a transient signal (the difference between consecutive samples) to fake a "drums" stem. "Other" is whatever's left after subtracting scaled copies of the three. So "drums" is really "bright stuff plus transients," and "vocals" is "midrange." For rough beds, backing tracks, and quick reference splits, that's genuinely useful. For radio-quality acapellas, you still want a real separator.
The inputs
- audio (any type) - the pack's MKR_AUDIO payload or a file path it can read.
- save_stems - write the stems to disk (default true) or just pass them along in memory.
- output_format -
auto,wav,mp3,flac, orogg. Non-wav formats need ffmpeg on the system. - filename_prefix, subfolder, overwrite, filename_label - the save side; each stem gets the prefix plus its name (e.g.
MKR_stem_vocals).
What comes out
vocals, drums, bass, other - four MKR_AUDIO payloads you can feed into the pack's audio nodes or save - plus a summary string reporting sample rate, channels, duration, and warnings.
Installing it
In criskb/MKRShift_Nodes from Cris K B. ComfyUI Manager search "MKRShift_Nodes", or:
cd ComfyUI/custom_nodes
git clone https://github.com/criskb/MKRShift_Nodes
Restart. No pip requirements, no model download - this is numpy FFT, nothing else. If you want mp3/flac/ogg output, install ffmpeg (the README calls this out for the video/audio nodes).
Where it bites
The band split means a bass line that climbs above 250 Hz bleeds into "vocals," and a crash cymbal reads as "drums." Don't expect to karaoke with it - expect to work with it: split a track to make a quick backing bed, grab the low end for a reference, or split a VO and a music bed that were mixed together. It's the stem splitter you reach for when you need a fast rough cut and don't want to wait for (or install) a heavy separation model.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| audio | * | — | |
| save_stems | BOOLEAN | true | — |
| output_format | COMBO | wav | 5 options: auto, wav, mp3, flac, ogg |
| filename_prefix | STRING | MKR_stem | — |
| subfolder | STRING | — | |
| overwrite | BOOLEAN | false | — |
| filename_labelopt | STRING | — |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| vocals | MKR_AUDIO | — |
| drums | MKR_AUDIO | — |
| bass | MKR_AUDIO | — |
| other | MKR_AUDIO | — |
| summary | STRING | — |