Random Seed Noise
A seed controller that actually feeds SamplerCustomAdvanced
- noise
SamplerCustomAdvanced is the sampler you reach for when you want fine control over the noise and denoise passes. Its catch: it wants an explicit NOISE input - a real noise tensor - not just a seed number, and the default seed widget on a plain KSampler doesn't produce that. RandomSeedNoise closes the gap. It's a rgthree-style seed controller that spits out a proper NOISE for SamplerCustomAdvanced, with the seed controls rgthree users expect: randomize each queue, mint a new fixed random seed, or reuse the last one that actually ran.
It ships in the ComfyUI-FeiHou-Toolbox pack. The KB's rgthree panel calls the seed node the pack's most-used component, and the reason is the "lose your good seed" trap documented in the node-plumbing essay: with a default widget, the seed shown in the box is the one for the next run, so the seed that made your great image gets overwritten right after it runs. This node's "last queued seed" mode is the direct fix for that.
How it works
The node implements the standard ComfyUI noise provider - its generate_noise calls comfy.sample.prepare_noise with your seed, exactly what core's RandomNoise does. So you're not getting a weird custom noise distribution; you're getting the standard one, delivered where SamplerCustomAdvanced needs it.
The seed semantics are the interesting part:
- -1 - a fresh random seed every time you queue.
- -2 - increments the last queued seed.
- -3 - decrements the last queued seed.
The frontend makes these friendly: 🎲 Randomize Each Queue, 🎲 New Fixed Random Seed, and ♻️ Use Last Queued Seed buttons that replace the special values before the workflow is sent. And because the backend marks the node changed whenever a special seed is in play, ComfyUI's cache won't freeze the noise - a node that must rerun every time does so deliberately (the KB's "always-rerun trick").
Inputs and output
seed- INT, default -1, ranging over the full seed space. Type a fixed number to lock it, or use the special values/buttons.noise- the NOISE output, wired intoSamplerCustomAdvanced's noise input.
That's the whole schema: one input, one output, no model, no VRAM.
Install
ComfyUI Manager (search ComfyUI-FeiHou-Toolbox), or:
cd ComfyUI/custom_nodes
git clone https://github.com/FX-FeiHou/ComfyUI-FeiHou-Toolbox
Restart ComfyUI and hard-refresh the browser - the seed buttons are JS, and a stale page shows a plain number box with none of the rgthree-style controls. No extra Python dependencies, but the pack uses ComfyUI's newer comfy_api.latest node API, so keep ComfyUI current.
Gotchas
- Wire it into the right sampler - this feeds
SamplerCustomAdvanced. A stock KSampler has its own seed widget and won't accept a NOISE input this way. - Always-dirty behavior - with random modes the node intentionally defeats caching, so everything downstream reruns each queue. That's the price of "a new seed every run," not a bug.
- Metadata for API runs - when special seeds come in over the API, the node generates a real seed and records it back into the prompt/workflow metadata so your result stays reproducible. Drag the output image back into ComfyUI and the seed travels with it.
If you're already on rgthree and happy, you may not need this. If you're running SamplerCustomAdvanced without a proper noise source, this is the missing piece.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| seed | INT | -1-1125899906842624–1125899906842624 | -1 randomizes each queue; -2 increments and -3 decrements the last queued seed. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| noise | NOISE | — |