MSS Separate List
Same separation, but the stems come out as one list
- audio
- params
- audios
- stem_names
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]describesaudios[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.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| audio | AUDIO | — | |
| model_name | COMBO | 594 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 | |
| device | COMBO | auto | 5 options: auto, cpu, cuda, mps, mlx |
| download_missing | BOOLEAN | true | — |
| source | COMBO | modelscope | 3 options: modelscope, huggingface, hf-mirror |
| paramsopt | PYMSS_MSS_PARAMS | — | |
| device_idsopt | STRING | 0 | — |
| debugopt | BOOLEAN | false | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| audios | AUDIO | — |
| stem_names | STRING | — |