Nodes/OmniNodes/Audio Stem Splitter (Freq Band) 🍰
ComfyUI Node

Audio Stem Splitter (Freq Band) 🍰

Bass, Mid, High β€” Not the 'Vocal Remover' You Hope It Is

By TensorVizionΒ·Created 3 months agoΒ·Updated about 8 hours agoΒ· 0
Audio Stem Splitter (Freq Band) 🍰
  • audio
  • bass
  • mid
  • high
  • summary
β—„low_crossover_hz250β–Ί
β—„high_crossover_hz4000β–Ί
β—„taper_fraction0.15β–Ί

Name sets an expectation this node doesn't meet, so let's kill the suspense: despite the "Stem Splitter" branding, this is not source separation. It won't pull vocals out of a full mix, and it won't isolate an instrument. What it does is split audio into three frequency bands - bass, mid, high - using FFT filtering. If you came here hoping for a vocal remover, this isn't it, and the pack's own docs say so plainly. Once you know that, it's still a genuinely useful tool for a specific set of jobs.

What it actually does

The mechanism is clean: run an FFT on the audio, split the spectrum at two crossover frequencies, and inverse-FFT each band back into its own stream. Everything below low_crossover_hz (default 250) is the bass band, everything between the two crossovers is the mid, everything above high_crossover_hz (default 4000) is the high. A raised-cosine taper_fraction (default 0.15) softens the cut at each crossover so you don't get the harsh ringing a brick-wall filter would cause.

The three outputs - bass, mid, high - are real AUDIO streams you can wire anywhere independently. That's the whole point: process each band differently, then recombine. The pack's own suggested combos are the good ones:

  • Sidechain only the bass band to a kick, so the low end ducks while mids/highs stay steady.
  • Reverb only the highs for a bright, airy tail without muddying the lows.
  • Add punch to just the mid band where the "body" of a voice or guitar lives.

This is also a legit EQ workflow: strip the bass, process it, mix it back at a different level, and you've done the kind of band-splitting multiband processors do - by hand, visibly, in your graph.

The crossover choices

These are the only knobs that matter. 250Hz is where "thump" lives; 4kHz is roughly where "air and sibilance" begins. For a voice, the mid band (250–4k) carries the intelligibility, which is why band-specific processing works so well there. If you widen the band ranges you get closer to an EQ than a stem splitter - useful, but don't expect the bands to isolate "the guitar" or "the snare," because no frequency range maps cleanly to one instrument.

Install and gotchas

ComfyUI Manager β†’ search OmniNodes, or:

cd ComfyUI/custom_nodes
git clone https://github.com/TensorVizion/OmniNodes

Restart ComfyUI; it's under TensorVizion/Audio. Pure NumPy FFT math, no model downloads - which is exactly why it's fast and dependency-free, and also why it can't do what ML source separators (Demucs and friends) do. If you need actual vocal isolation, that's a different category of tool entirely. For frequency-splitting, remixing, and band-specific effects, this is the fast, free, and predictable option.

CategoryTensorVizion/Audio

Inputs (4)

NameTypeDefaultDescription
audioAUDIOβ€”
low_crossover_hzFLOAT25020–2000β€”
high_crossover_hzFLOAT4000500–18000β€”
taper_fractionFLOAT0.150–0.5β€”

Outputs (4)

NameTypeDescription
bassAUDIOβ€”
midAUDIOβ€”
highAUDIOβ€”
summarySTRINGβ€”