Nodes/Comfy-MSS/Custom MSS Separate
ComfyUI Node

Custom MSS Separate

For the checkpoints the catalogue never got around to listing

By pymss-project·Created 4 months ago·Updated a day ago· 22
Custom MSS Separate
  • audio
  • params
  • stem_1 (Audio)
  • stem_1 (String)
  • stem_2 (Audio)
  • stem_2 (String)
  • stem_3 (Audio)
  • stem_3 (String)
  • stem_4 (Audio)
  • stem_4 (String)
  • stem_5 (Audio)
  • stem_5 (String)
  • stem_6 (Audio)
  • stem_6 (String)
  • stem_7 (Audio)
  • stem_7 (String)
  • stem_8 (Audio)
  • stem_8 (String)
model_name
model_typeauto
deviceauto
device_ids0
debugfalse

What it's for

MSS Separate hands you 297 catalogued models and downloads whichever you pick. That's great until you have your own weights: a fine-tune from MSST-WebUI, a friend's roformer, some _sdr_11.47.safetensors you grabbed off a forum post that nobody ever catalogued. Custom MSS Separate is the door for those. Point it at the folder, and it shows up in the model menu like anything else.

Same separation engine, same stem outputs, one difference that matters at the start: nothing downloads and there's no source widget, because the weights are already yours.

The folder layout is not optional

It scans <your pymss model folder>/custom - i.e. ComfyUI/models/pymss/custom on a default install, or E:/AI/Pymss-Studio/models/custom if you've pointed COMFY_MSS_MODEL_DIR there. Each model gets its own direct child folder, and the folder name is what appears in the menu. Inside it must sit a weights file and a YAML config:

ComfyUI/models/pymss/custom/
  my_vocals_roformer/
    model_weights.ckpt
    config.yaml

Weight extensions it accepts: .ckpt, .pth, .pt, .safetensors, .safetensor, .bin. Config must be .yaml - .yml is ignored, which has bitten people. Folders missing either half simply don't appear.

The number of outputs isn't guessed. The node reads training.instruments out of your YAML and builds one output pair per entry:

training:
  instruments:
    - Vocals
    - Instrumental

Get that list wrong and your outputs are wrong - this is the file telling the node what the model separates.

Inputs and outputs

  • audio - the AUDIO stream.
  • model_name - every folder that qualified. Empty at first; see "Refresh Models" below.
  • model_type - auto by default, which hands the YAML to pymss for architecture detection. The menu covers the 11 real choices: mel_band_roformer, bs_roformer, bs_roformer_hyperace, bs_conformer, mel_band_conformer, mdx23c, htdemucs, apollo, bandit, bandit_v2, scnet.
  • device, plus optional params (MSS Params), device_ids and debug - as on the other separators.

Outputs are the familiar pairs, stem_1 (Audio)/stem_1 (String) up to eight, trimmed to whatever your YAML declared. If no valid model pair exists yet, the node just hides them.

The two traps

ModelTypeDetectionError. Auto-detection lives in pymss-core and it's conservative: when a config is ambiguous it raises rather than guesses, and you get a RuntimeError in the console. The fix is boring - set model_type explicitly and run again. Models with no identifying YAML fields will always need this.

Wrong file chosen. If a folder holds several weights and several configs, the node prefers a pair with matching filenames, and otherwise falls back to the first file of each type in alphabetical order. It doesn't warn. One model and one config per folder is the only layout that can't surprise you.

Refresh Models. Custom models are scanned on the fly and then cached in the frontend, so after adding, deleting or editing files you have to click the Refresh Models button on the node. ComfyUI's own refresh isn't enough.

Also by design: VR/UVR models are filtered out of this menu entirely, even if you give them a YAML. Custom MSS is for MSST architectures - for the legacy .pth family, use VR Separate.

Install

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

(or install Comfy-MSS through ComfyUI Manager). pymss brings its own dependencies - av, librosa, numpy, torch>=2.7.1, pymss-core, pyyaml, tqdm. Then drop your weights and config into ComfyUI/models/pymss/custom/<your_model>/ and restart. Watch out for workflows built in v1.0.x: node types were renamed in v1.1.0 and they won't load.

Categoryaudio/pymss

Inputs (7)

NameTypeDefaultDescription
audioAUDIO
model_nameCOMBO0 options:
model_typeCOMBOauto12 options: auto, mel_band_roformer, bs_roformer, bs_roformer_hyperace, bs_conformer, mel_band_conformer, +6
deviceCOMBOauto5 options: auto, cpu, cuda, mps, mlx
paramsoptPYMSS_MSS_PARAMS
device_idsoptSTRING0
debugoptBOOLEANfalse

Outputs (16)

NameTypeDescription
stem_1 (Audio)AUDIO
stem_1 (String)STRING
stem_2 (Audio)AUDIO
stem_2 (String)STRING
stem_3 (Audio)AUDIO
stem_3 (String)STRING
stem_4 (Audio)AUDIO
stem_4 (String)STRING
stem_5 (Audio)AUDIO
stem_5 (String)STRING
stem_6 (Audio)AUDIO
stem_6 (String)STRING
stem_7 (Audio)AUDIO
stem_7 (String)STRING
stem_8 (Audio)AUDIO
stem_8 (String)STRING