FL Audio Separation
Split a track into vocals, drums, bass, and other
- audio
- bass
- drums
- other
- vocals
If you're building audio-reactive video - visuals that pulse to a beat, effects that fire on the kick, a music video cut to the drums - you don't want to react to the whole mix. You want the drums on their own to drive the flashes, the vocals on their own to drive the mouth, the bass on its own to drive the low-end wobble. FL_Audio_Separation splits a single audio track into four separate stems - bass, drums, other, vocals - right inside ComfyUI, so each one can steer a different part of your animation.
It runs the Hybrid Demucs model from torchaudio, which is the well-regarded open-source source-separation model - the same lineage behind the "remove vocals from a song" tools you've seen. It's real ML separation, not an EQ trick, so the stems are genuinely usable rather than crude frequency bands. To keep memory in check on long tracks it processes the audio in overlapping chunks and cross-fades them back together.
The inputs and outputs
The essential input is just audio (AUDIO) - the track to separate. The rest are optional tuning for the chunked processing:
chunk_length(1–60s, default 10) - how much audio it processes at once. Shorter chunks use less memory; longer chunks mean fewer seams to blend. If you're memory-constrained, drop this.chunk_overlap(default 0.1) - how much neighboring chunks share, so the cross-fade between them is clean.chunk_fade_shape(linear,half_sine,logarithmic,exponential) - the shape of that cross-fade.linearis fine to start.
Outputs are the four stems, each a full AUDIO: bass, drums, other, vocals. "Other" is everything that isn't the first three - synths, guitars, pads. Wire each stem into whatever it should control: the pack has a whole family of audio-reactive nodes (envelope generators, beat detectors, drum detectors) that take an audio input, and feeding them a clean stem instead of the full mix is night and day for how tight your reactivity gets.
Installing it
Part of ComfyUI_Fill-Nodes. ComfyUI Manager: search Fill-Nodes, install, restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/filliptm/ComfyUI_Fill-Nodes
then restart ComfyUI.
Two dependency realities. First, it needs torchaudio with the Demucs model available - on most ComfyUI installs torchaudio is already present alongside torch, so it usually just works, but a stripped environment may need it. Second, it downloads the Demucs model weights on first use, so the first run needs internet and will pause while it fetches; after that it's cached.
Worth knowing
Separation isn't magic - bleed happens. A snare with a lot of reverb can leak into "other," a bassline that doubles the vocal melody can smear. For driving visuals this barely matters; the drums stem being 95% drums is more than enough to detect beats cleanly. If you're doing something where fidelity matters more, the chunk settings are your lever: bigger chunk_length with a bit more chunk_overlap generally gives smoother results at the cost of memory. And be patient on long tracks - real source separation is compute-heavy, so a full song takes a while. For the common job - "give me a clean drum track to sync my edits to" - the defaults are fine and the four stems are exactly what the pack's audio-reactive nodes want to eat.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| audio | AUDIO | — | |
| chunk_lengthopt | FLOAT | 10.01–60 | — |
| chunk_overlapopt | FLOAT | 0.100–5 | — |
| chunk_fade_shapeopt | COMBO | linear | 4 options: linear, half_sine, logarithmic, exponential |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| bass | AUDIO | — |
| drums | AUDIO | — |
| other | AUDIO | — |
| vocals | AUDIO | — |