Nodes/Comfy-MSS/MSS Separate List
ComfyUI Node

MSS Separate List

Same separation, but the stems come out as one list

By pymss-project·Created 4 months ago·Updated a day ago· 22
MSS Separate List
  • audio
  • params
  • audios
  • stem_names
model_name
deviceauto
download_missingtrue
sourcemodelscope
device_ids0
debugfalse

Why a list version exists

MSS Separate gives you up to eight pairs of sockets: stem_1 (Audio), stem_1 (String), stem_2 (Audio)… It's explicit, it's readable, and if you have eight stems and eight Save Audio nodes you're going to wire sixteen cables and hate it.

MSS Separate List returns two sockets instead. audios is an AUDIO list holding every stem the model produced, and stem_names is a STRING list holding their names in the same order. Same model menu, same knobs, same separation underneath - only the output shape changes.

The two outputs

  • audios - all stems, in model order (vocals first for a vocals/instrumental model, drums/bass/other/vocals for a Demucs-family one).
  • stem_names - the matching names. stem_names[2] describes audios[2].

That positional pairing is the whole contract, and it's what makes the node useful: wire audios into one Save Audio and ComfyUI's executor will run that node once per item in the list, so you save the entire stem set from a single node. Feed stem_names into whatever builds the filenames and each file gets the right name. Likewise, a preview or a downstream effect node mapped over audios processes all stems without you duplicating anything.

The trade-off is transparency: you can't see at a glance which stem is which, and a graph that maps over a list gives you less explicit control than eight visible sockets. If your workflow does something specific with only the vocals, the paired-output version is easier to reason about. If your workflow treats the stems uniformly - save them all, preview them all, batch-process them all - this is the one.

Inputs, briefly

Identical to MSS Separate: audio (the AUDIO stream), model_name (297 models, each listed with both an English and a Chinese category tag, so 594 menu entries that are not 594 models), device (auto is fine), download_missing (true), source (modelscope default, huggingface if you can reach it, hf-mirror if you can't), plus the optional params socket for an MSS Params node, device_ids ("0", comma-separate for multi-GPU) and debug.

One behavioural difference you'll notice immediately: the list nodes don't resize themselves to the chosen model's stem count, because there's no per-stem socket to hide. Two outputs, always. The frontend also disables the per-model output refresh on these nodes for the same reason - pick a model and nothing visually changes until you hit Run.

Install

Same pack, same steps:

cd ComfyUI/custom_nodes
git clone https://github.com/pymss-project/comfy-mss
python -m pip install pymss   # with ComfyUI's own Python

Models live in ComfyUI/models/pymss and download on first use from ModelScope unless you aim source elsewhere (COMFY_MSS_MODEL_DIR / PYMSS_MODEL_DIR move the folder; extra_model_paths.yaml can register a second one under a pymss key).

Gotchas

  • A list is not a batch of one file. The list holds stems of a single input, not multiple songs. If you want three songs processed, run the graph three times.
  • First run downloads. A roformer checkpoint is not tiny, and the default source is ModelScope. If the console says nothing for a minute, that's usually what's happening.
  • The model still wants one audio item. The separation backend rejects a [batch, channels, samples] waveform with more than one item; split it upstream.
  • v1.0.x workflows don't load. The v1.1.0 rename touched these nodes too.
  • Silent stems aren't errors. If the model didn't produce a stem it promised, it comes out as silence in the list, keeping the index positions valid.
Categoryaudio/pymss

Inputs (8)

NameTypeDefaultDescription
audioAUDIO
model_nameCOMBO594 options: [cleanup/audio_restoration] Apollo_LQ_MP3_restoration.ckpt, [音频清理/修复/音频/人声修复] Apollo_LQ_MP3_restoration.ckpt, [cleanup/audio_restoration] apollo_model.ckpt, [音频清理/修复/音频/人声修复] apollo_model.ckpt, [cleanup/audio_restoration] apollo_model_v2.ckpt, [音频清理/修复/音频/人声修复] apollo_model_v2.ckpt, +588
deviceCOMBOauto5 options: auto, cpu, cuda, mps, mlx
download_missingBOOLEANtrue
sourceCOMBOmodelscope3 options: modelscope, huggingface, hf-mirror
paramsoptPYMSS_MSS_PARAMS
device_idsoptSTRING0
debugoptBOOLEANfalse

Outputs (2)

NameTypeDescription
audiosAUDIO
stem_namesSTRING