Nodes/Comfy-MSS/VR Params
ComfyUI Node

VR Params

Window size, aggression, and the rest of the UVR control panel

By pymss-project·Created 4 months ago·Updated a day ago· 22
VR Params
    • vr_params
    batch_size1
    window_size512
    aggression5
    enable_ttafalse
    high_end_processfalse
    enable_post_processfalse
    post_process_threshold0.20
    normalizefalse

    What it is

    The parameter node for VR Separate and VR Separate List. It outputs a vr_params socket of type PYMSS_VR_PARAMS that plugs into the separator's optional params input.

    If you've used Ultimate Vocal Remover, you've seen this panel before - the names are lifted straight from it, because the models are the same UVR/VR architecture. And unlike MSS Params, where the defaults are usually right, this one is genuinely worth touching: VR models are aggressive by default and the two big sliders are how you stop them shredding your audio.

    The inputs

    • window_size - INT, 128–4096 in steps of 128, default 512. The FFT window the VR network operates over. 512 is the safe default because it's what most of these models were trained around; raising it gives finer frequency resolution, costs time, and can introduce ringing; lowering it smears things. Change it if you know why you're changing it.
    • aggression - INT, 0–100, default 5. The UVR aggressiveness setting: how hard the predicted mask is pushed. Higher removes more (including more of what you wanted), lower is gentler and leaves more residue. For vocals out of a rough recording, 5 is a reasonable start; for de-noise work, 2–3 usually sounds more natural.
    • enable_tta - BOOLEAN, default off. Multiple passes averaged. pymss puts a number on it in its docs: roughly triple the time for a small quality gain.
    • high_end_process - BOOLEAN, default off. UVR's high-end processing, which mirrors the top of the frequency spectrum back from the original mixture instead of trusting the model to fill it in. The usual fix for separated vocals that sound dull or lispy on 44.1kHz material.
    • enable_post_process - BOOLEAN, default off, with post_process_threshold - FLOAT, 0–1, default 0.2. A second cleanup pass that suppresses leftover residue, with the threshold deciding how much counts as residue. Raise the threshold and it cleans more aggressively; this is the knob for the faint "ghost" bleed you get around a separated voice.
    • normalize - BOOLEAN, default off. Peak-normalizes the returned stems. It applies to output level only - it has nothing to do with the model's input level.
    • batch_size - INT, 1–128, default 1. Raise to 2 (what pymss benchmarked with) and VR inference gets noticeably quicker at a modest VRAM cost. VR models are small; there's headroom.

    One thing you won't find a widget for: mixed precision (use_amp) is pinned on inside the node. There's no reason to touch it, and no way to.

    Wiring it up

    Load Audio ──► VR Separate ──► Audio Normalize ──► Save Audio
                       ▲
                 VR Params
    

    One VR Params node can feed every VR separator in the graph. Nothing in it is consumed. Leave the params socket empty and the separator uses pymss's built-in VR defaults, which are exactly the values above - so wiring it up with everything at default changes nothing except which values are visible in your graph. That's a feature: the settings live where you can see them.

    Install

    It ships with the pack:

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

    Manager → Comfy-MSS does the same. Restart afterwards. Parameters need no weights, but the separators do, and they download to ComfyUI/models/pymss on first run.

    Troubleshooting

    • Nothing changes when I move the sliders. The node has to be wired into params. Unwired, it's decoration.
    • Buzzy, watery vocals. Lower aggression, and try high_end_process on. VR clipping the top end is normal behaviour, not a broken install.
    • Still hearing the backing track faintly. That's enable_post_process with a slightly higher post_process_threshold - or the honest answer, a modern roformer via MSS Separate.
    • Slow for no reason. Raise batch_size to 2. Leave TTA alone unless this is a final render.
    Categoryaudio/pymss

    Inputs (8)

    NameTypeDefaultDescription
    batch_sizeINT11–128
    window_sizeINT512128–4096
    aggressionINT50–100
    enable_ttaBOOLEANfalse
    high_end_processBOOLEANfalse
    enable_post_processBOOLEANfalse
    post_process_thresholdFLOAT0.200–1
    normalizeBOOLEANfalse

    Outputs (1)

    NameTypeDescription
    vr_paramsPYMSS_VR_PARAMS