ND Variant Slider Selector
The same upscale hand-off, without the pictures
- params
The Variant Preview Selector is the flashy one in this pack: thumbnails, a big preview, a before/after slider. Sometimes you don't want any of that. You want a number you can type, a toggle, and a button that runs the upscale branch.
What it is
An integer slider with two companions: a Multi-Variant toggle and an Upscale button. No inputs of any kind - it's a source node. Like its prettier sibling, it does not upscale anything. The button queues a run with a flag set, and the upscale branch you built after it does the work with whatever nodes you like. The selector's entire job is remembering which index you picked and telling the rest of the graph "this run is an upscale run".
Why choose it over the preview version? Three real reasons. You already know which variant you want - you picked it in a previous session and you're re-running with a tweaked prompt. The batch is expensive to re-preview (video frames, big batches). Or you aren't selecting from a batch at all and you just want a hand-tuned index feeding a switch node, with the upscale hand-off thrown in for free.
Inputs and outputs
No inputs. The schema is three fields, all written by the node's own UI:
multi_variant(BOOLEAN, default false) - the toggle state, mirrored to the output.value(INT, default 0) - the slider. Range is set with the gear or in the node's Properties; the raw widget bounds go a long way either side of zero, so don't assume the visible range from them.upscale_trigger(BOOLEAN, default false) - set true by the frontend only on a run started by the Upscale button.
Open the output (params) with ND Unpack Parameters and you get three fields: multi_variant, value and upscale. Note the third one is named upscale on the wire even though the internal field is upscale_trigger - that's the one you'll wire into a gate or a switch to keep the upscale branch from running on normal runs.
The part that makes it cheap
Because the selector sits downstream of your sampler, changing value only invalidates the selector and what's after it. The sampled batch stays in cache, so scrubbing the slider and re-running is a decode-and-save, not a re-generation. Same trick the preview selector relies on, minus the thumbnails to click.
That is the workflow worth learning: generate eight, let them cache, then use the slider as a free selector over the batch you already paid for. It's how you avoid the "eight PNGs in a folder, now start over" loop that most people are still in.
Pairs naturally with the rest of the pack: value into an ND Any Switch to pick one of several pre-built branches, or into a Pack Parameters field that another node unpacks. And upscale into ND ON / OFF as a gate for the upscale chain - though if you're using the preview selector's flow you'll gate on the flag the same way.
Install
Ships in Neural Dreamer Nodes, v1.1.0, MIT. No Python dependencies (empty dependencies = [] in pyproject.toml, no requirements file), no models to download.
cd ComfyUI/custom_nodes
git clone https://github.com/neural-dreamer/ComfyUI-NeuralDreamer-Nodes.git
Restart and refresh the browser tab - the slider and the button are frontend code, and a stale tab gives you a node that looks disabled. ComfyUI Manager users: search "Neural Dreamer Nodes".
Common issues
The slider range is wrong or stuck at 0–1. Set it explicitly: gear button, or right-click → Properties. The raw widget bounds are not the visible range.
Every run upscales. upscale is stuck true. Check what's wired into the gate downstream - remember that on a normal Run the frontend sets upscale_trigger false, so a true there means a stale or hand-edited prompt, or a bypassed chain.
The upscale branch didn't run when I clicked. There's no image field on this node to feed the result back into - that's the preview selector's feature. Here the button only flips the flag; the saving and the showing-back don't happen. If you want the result displayed in the node, use ND Variant Preview Selector.
The output field names don't match what I expected. Unpack gives multi_variant, value, upscale. The node's internal field is upscale_trigger; the wire field is upscale. Wire from the upscale pin, not from memory.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| multi_variant | BOOLEAN | false | — |
| value | INT | 0-1000000–1000000 | — |
| upscale_trigger | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| params | ND_PARAMS | — |