Nodes/Comfy-MSS/MSS Params
ComfyUI Node

MSS Params

Six knobs that decide whether separation takes 20 seconds or 20 minutes

By pymss-project·Created 4 months ago·Updated a day ago· 22
MSS Params
    • mss_params
    batch_size1
    overlap_sizeDefault
    chunk_sizeDefault
    normalizefalse
    enable_ttafalse
    standardizefalse

    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, default Default, and this confuses people at first. Default means "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 params socket 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 typed 0, -5, 0.5 or a word. Default or 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.
    Categoryaudio/pymss

    Inputs (6)

    NameTypeDefaultDescription
    batch_sizeINT11–128
    overlap_sizeSTRINGDefault
    chunk_sizeSTRINGDefault
    normalizeBOOLEANfalse
    enable_ttaBOOLEANfalse
    standardizeBOOLEANfalse

    Outputs (1)

    NameTypeDescription
    mss_paramsPYMSS_MSS_PARAMS