MSS Params
Six knobs that decide whether separation takes 20 seconds or 20 minutes
- mss_params
What it is
MSS Params is a settings object with no audio in it. It outputs a single mss_params socket of type PYMSS_MSS_PARAMS, which you plug into the optional params input on MSS Separate, MSS Separate List, Custom MSS Separate or Custom MSS Separate List. Drop it in and the separator uses your values; leave it out and the separator falls back to the model's own YAML config.
So the node's job is simple: it's how you override what the checkpoint's author baked in. Most of the time you don't need it. When you do - an old config with an absurd overlap, a model that overruns your VRAM, a stem that peaks above 1.0 - this is where you fix it.
The inputs
batch_size- INT, 1–128, default 1. How many chunks get pushed through the model at once. This is your VRAM-for-speed dial: bigger is faster, and the thing that makes a 700MB roformer fall over on a 8GB card. pymss's own benchmarks run at 2.overlap_size- a string, defaultDefault, and this confuses people at first.Defaultmeans "use the model's YAML value". Type a positive integer and it overrides. Anything non-numeric gets you a plain-English error (overlap_size must be Default or an integer.).chunk_size- same deal: string,Default, or a positive integer that overrides the config.normalize- BOOLEAN, default off. pymss peak-normalizes all returned stems so output levels are linked and predictable. Handy when you're comparing two models and one comes back quiet; unnecessary if you're going to set levels in an editor anyway.enable_tta- BOOLEAN, default off. Test-time augmentation: the model is run more than once and the results are averaged. pymss's README is blunt that this "will triple the processing time with a little bit improvement in quality" - it's the last thing to turn on, not the first.standardize- BOOLEAN, default off. Model input standardization. Note the node always writes this value explicitly, so it can override what the model config intended; if a model sounds thin or overdriven, this is worth flipping.
Overlap and chunk size, without the mystique
The separation model only sees a slice of your audio at a time; chunk_size is how big that slice is, and overlap_size is how much neighbouring slices share so the crossfade has material to hide the seam. More overlap = fewer artefacts, more compute - it scales almost linearly, which is why one bad config can turn a ten-second job into a ten-minute one.
The pymss README gives a recommended fast setting: chunk_size: 480000 with overlap_size: 24000 - that's 5% overlap, and it's a good default when a downloaded config is making things crawl. It also explains a historical wart: configs from Hugging Face and MSST-WebUI often specify inference.num_overlap instead of inference.overlap_size, and pymss converts automatically as overlap_size = chunk_size - chunk_size // num_overlap. For num_overlap: 2 that's a 50% overlap - correct, and slow. If your conversion is taking forever, it's probably this, and typing an explicit overlap_size fixes it.
Wiring it up
Load Audio ──► MSS Separate ──► Save Audio
▲
MSS Params
One Params node can feed several separators - the output is a plain dict, nothing is consumed. The enable_tta flag is handled specially: the separator pulls it out of the dict and passes it through its own TTA path rather than treating it as a normal inference parameter, so it behaves the same whether it comes from this node or a hand-built dict.
Install
It's part of Comfy-MSS. Manager → Comfy-MSS, or:
cd ComfyUI/custom_nodes
git clone https://github.com/pymss-project/comfy-mss
python -m pip install pymss # the same Python ComfyUI uses
Then restart. There's nothing to download here - separators fetch models, not parameter nodes.
Troubleshooting
- "It's not doing anything." If the
paramssocket is empty, the node is ignored and the config wins. It only takes effect when wired. overlap_size must be Default or an integer.You typed0,-5,0.5or a word.Defaultor a positive integer.- OOM after raising
batch_size. Put it back to 1. On a small card, batch 1 with a modest chunk size is the safe corner. - TTA made it worse in wallclock terms only. It's ~3× the time for a marginal gain. Correct use: final render, not iteration.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| batch_size | INT | 11–128 | — |
| overlap_size | STRING | Default | — |
| chunk_size | STRING | Default | — |
| normalize | BOOLEAN | false | — |
| enable_tta | BOOLEAN | false | — |
| standardize | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| mss_params | PYMSS_MSS_PARAMS | — |