Nodes/ComfyUI-WeightFerry/Sampler Choice (shared sampler / scheduler)
ComfyUI Node

Sampler Choice (shared sampler / scheduler)

Change the sampler in four places at once, on purpose

By nyanmi-1828·Created 10 days ago·Updated 6 days ago· 1
Sampler Choice (shared sampler / scheduler)
    • sampler_name
    • scheduler
    ◄sampler_name▾►
    ◄scheduler▾►

    Two widgets, two wires, and no more hunting through the graph

    Every multi-pass workflow has this problem. Base sampler at 30 steps with er_sde, then a face-detail pass, then an Ultimate SD Upscale pass. Three nodes, three sampler dropdowns, three scheduler dropdowns, all of which you want to keep in sync while you're comparing candidates. Change one and forget the other two and you've just run an experiment with two variables in it.

    Sampler Choice is the fix: one sampler and one scheduler, exposed as two output sockets that you drag to every consumer. It doesn't touch the image at all - it passes a setting through, which is why it's the least exciting and most useful node in the sampling category.

    It's genuinely a quality-of-life node, and I'd argue the second thing you install after a workflow gets past one sampler, because otherwise you'll keep skipping sampler comparisons. Comparing samplers is cheap; doing it by hand across four nodes isn't.

    How it works

    Under the hood it's two combo widgets reading ComfyUI's live lists - comfy.samplers.KSampler.SAMPLERS and SCHEDULERS, read at request time rather than at import. That detail matters: other packs register names later (RES4LYF's solvers, this pack's own real and tors), and because the lists are read when the workflow runs, those names show up in the dropdown without a load-order fight.

    The outputs are typed * - ComfyUI's "any" type, which satisfies link validation against any input. That's not laziness; the author's comment in the source explains the alternative failed. A list-typed output works with V3-style combo inputs like FaceDetailer's, but legacy nodes whose input type is their own list - DetailerForEach's scheduler list differs from ComfyUI's - throw a "return type mismatch" error. * gets through both.

    Inputs and outputs

    • sampler_name - ComfyUI's full sampler list, including whatever other packs have added.
    • scheduler - the scheduler list, same deal.

    Two outputs, sampler_name and scheduler, both *. Drag the first to the sampler_name widget on each KSampler / FaceDetailer / USDU node and the second to their scheduler widget. ComfyUI turns a widget into an input socket when you connect something to it, so you'll see the field turn into a dot.

    No image, no model, no conditioning. Wire it once at the top of the graph and leave it alone.

    Install

    cd ComfyUI/custom_nodes
    git clone https://github.com/nyanmi-1828/ComfyUI-WeightFerry
    

    or Manager → search WeightFerry → install → restart. It's part of the pack, so there's no separate dependency and nothing to download. You need NVIDIA and ComfyUI 0.38.0+ for the pack as a whole, though this particular node is pure plumbing and doesn't care what GPU you have.

    Where it goes wrong

    One consumer keeps its own setting. If you connect the sampler output but forget to connect the scheduler output to one node, that node silently keeps its old scheduler. You'll get a workflow that's half-synced and no warning. Connect both outputs to every consumer, including the ones inside subgraphs and inside the USDU node - those have sampler and scheduler fields too.

    Bypassed nodes ignore it. A node in bypass passes its inputs through untouched; a sampler in bypass doesn't sample at all. Obvious, but when you're bypassing a face-detail pass to compare, remember that the choice node's value now only affects the passes that are actually running.

    You still have to know what you're choosing. This node makes it convenient to try RES4LYF's solvers or this pack's real, but it doesn't tell you which. For flow-matching DiTs like Anima, the sampler and scheduler pairing matters more than either alone, and RES4LYF's docs and the community defaults (beta57 for painterly anime, er_sde as the neutral pick, euler_a softer, dpmpp_2m_sde_gpu more inventive) are the useful starting set. Swap one value at a time and keep the seed fixed.

    It doesn't share steps, CFG, or denoise. Despite the name, only the sampler and scheduler are shared. If you're building a genuinely parameterized workflow for comparison runs, you'll want something like the pack's example workflow switch pattern or an "anything-everywhere" style node for the numbers. Don't expect this one to grow into that.

    CategoryWeightFerry/sampling

    Inputs (2)

    NameTypeDefaultDescription
    sampler_nameCOMBOSampler shared by every stage (base, face detail, inpaint, upscale)
    schedulerCOMBOScheduler shared by every stage

    Outputs (2)

    NameTypeDescription
    sampler_name*—
    scheduler*—