VR Separate List
Two sockets instead of four, for the cleanup models
- audio
- params
- audios
- stem_names
What it is
VR Separate List is VR Separate with the outputs collapsed into lists. Instead of the two paired output sets (stem_1 (Audio)/stem_1 (String) and stem_2 (Audio)/stem_2 (String)), you get:
audios- anAUDIOlist containing both stems the VR model produces.stem_names- aSTRINGlist with their names, in matching order.
Everything else is identical: the same 29 VR/UVR .pth models (58 menu entries, since each appears once with an English category tag and once in Chinese), the same device, download_missing, source, device_ids and debug widgets, the same optional params socket for a VR Params node.
When the list shape is the better one
VR models mostly produce two stems - typically Vocals/Instrumental, or No Echo/Echo for the de-echo family. Two stems means the explicit-output version only costs you two cables, so the plain VR Separate is honestly the more readable choice in most graphs. Reach for the list variant when you're treating both outputs the same way: both need saving, both need a level tweak, both feed the same downstream chain. Wire audios into one Save Audio and ComfyUI runs that node once per item, with stem_names supplying the labels positionally.
The other reason is portability. A list-shaped node doesn't care which model you pick, so a workflow built around the list version keeps working when you swap a de-echo model for a denoiser - no sockets to rewire. The explicit nodes are the ones that change shape under you when the model menu changes.
Install
Part of Comfy-MSS, so the usual two steps:
cd ComfyUI/custom_nodes
git clone https://github.com/pymss-project/comfy-mss
python -m pip install pymss # ComfyUI's Python environment
Or install Comfy-MSS from ComfyUI Manager and restart. Weights download to ComfyUI/models/pymss on first use (ModelScope by default; switch source to huggingface or hf-mirror if that suits you). COMFY_MSS_MODEL_DIR and PYMSS_MODEL_DIR relocate that folder.
Gotchas
- The list is stems, not files. It's the two outputs of one separation pass over one input, not a queue of songs.
- Index order is the contract.
stem_names[i]describesaudios[i]. Don't sort one without the other. - One audio item at a time. The separation backend rejects a batched waveform; split upstream if you're feeding it several.
- VR models are for cleanup, not song splitting. De-echo, de-reverb and denoise. For vocals/instrumental use the MSS nodes and a roformer.
- v1.0.x workflows won't load - the v1.1.0 rename applies here too.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| audio | AUDIO | — | |
| model_name | COMBO | 58 options: [legacy_vr/vr_backing_vocal] UVR-BVE-4B_SN-44100-1.pth, [传统 VR 模型/VR 伴唱/和声] UVR-BVE-4B_SN-44100-1.pth, [legacy_vr/vr_deecho] UVR-De-Echo-Aggressive.pth, [传统 VR 模型/VR 去回声] UVR-De-Echo-Aggressive.pth, [legacy_vr/vr_deecho] UVR-De-Echo-Normal.pth, [传统 VR 模型/VR 去回声] UVR-De-Echo-Normal.pth, +52 | |
| 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_VR_PARAMS | — | |
| device_idsopt | STRING | 0 | — |
| debugopt | BOOLEAN | false | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| audios | AUDIO | — |
| stem_names | STRING | — |