ComfyUI Node

⬡ Polyhedron Seed

One seed for the whole graph — plus the noise it actually denoises

By PolyhedronAI·Created 3 months ago·Updated a day ago· 2
⬡ Polyhedron Seed
    • seed
    • seed_string
    • noise
    seed0
    noise_typegaussian
    noise_strength1.00
    preview_width64
    preview_height64
    noise_character1.00

    ⬡ Polyhedron Seed is what you use when a workflow has more than one seed. Convert the seed widget on every sampler to an input, wire them all to this one node, and the seed is defined once instead of in five places you'll forget to keep in sync. That alone is worth the install - but the node goes further: it hands you the seed as both a number and a string, and it can generate the noise the sampler denoises, not just the number that seeds it.

    The part people actually reach for is the readout. The node reports the value that was used on the last run, so the seed in the box and the seed that made the image in front of you are never in doubt again. And seed_string carries the same number as text, so a Save node's filename prefix and the graph agree on which seed produced the file on disk. No more "which of these six numbers was the good one?"

    How it works

    The seed widget behaves exactly like the core samplers: control_after_generate decides what happens after a run (fixed, increment, decrement, randomize). Two buttons on the node make that nicer - 🎲 Roll draws a fresh random seed and pins it to fixed, and ↺ Reuse last restores the seed of the last run. The classic ComfyUI trap applies here as much as anywhere: control fires after the run by default, so if you find a great image and flip the dropdown to fixed, you may already have lost the seed. Change Settings → "widget control mode" to Before once, and the box always shows what actually ran.

    The interesting third output is noise, a NOISE source you can wire into a sampler's noise input. This is the noise the model actually denoises - and the node's tooltip makes the key point: an empty latent's contents are multiplied by zero at the start of a full schedule, so noise baked into a latent does nothing, while the sampler's own noise is the real thing. Leave noise_type at gaussian and noise_strength at 1.0 and it's bit-identical to what a sampler makes on its own - it changes nothing until you change it. The other types (pink, brown, blue, fractal…) are deliberate excursions: brown and pink push energy into low frequencies (composition), blue into high (detail). Models are trained on gaussian noise, so treat those as experiments, not upgrades. noise_character cross-fades a type back toward plain gaussian - around 0.2–0.4 the spectrally heavy types become a dosed compositional bias instead of a trip.

    preview_width / preview_height are latent-grid numbers for the in-node noise preview only; they change nothing about the run.

    What you set and what comes out

    • seed - the value. Roll, reuse, or type.
    • noise_type, noise_strength, noise_character - only matter if you use the noise output.
    • seed (out, INT) → samplers and other seed consumers.
    • seed_string (out, STRING) → filename prefixes, notes, prompts.
    • noise (out, NOISE) → the sampler's noise input, if you're steering noise character.

    Installing it

    Part of the ⬡ Polyhedron Suite pack: ComfyUI Manager → "Polyhedron Suite", or

    cd ComfyUI/custom_nodes
    git clone https://github.com/PolyhedronAI/ComfyUI-PolyhedronLoRAStack.git
    # restart ComfyUI
    

    No extra dependencies.

    Gotchas

    Besides the control-after-generate trap above, the main thing to remember is that the noise outputs are off by default in the sense that they don't change anything - which means they're also free to leave alone. Don't wire noise just because it exists; wire it when you specifically want noise character. And note the preview grid is latent-space: a 1024px image on a /8 model is 128 in preview_width, not 1024. The ⬡ Polyhedron Empty Latent node's latent_width/latent_height outputs were built to feed exactly these fields.

    CategoryPolyhedron/Loaders

    Inputs (6)

    NameTypeDefaultDescription
    seedINT00–18446744073709550000Seed value. 'control after generate' behaves exactly like the core samplers. 🎲 Roll draws a fresh random seed and pins it to 'fixed'; ↺ Reuse last restores the seed of the last run.
    noise_typeCOMBOgaussianCharacter of the noise the `noise` output produces. gaussian at strength 1.0 is bit identical to what a sampler makes on its own, so it changes nothing until you change it. brown/pink push energy into low frequencies (composition), blue into high (detail), fractal is coherent multi-octave structure. NOTE: models are trained on gaussian noise -- the others are a deliberate excursion, different is not automatically better.
    noise_strengthFLOAT1.000–20Scale in units of standard latent noise (1.0 == torch.randn scale). Leave at 1.0 unless you are deliberately experimenting; the schedule assumes unit-scale noise.
    preview_widthINT648–512LATENT width for the in-node preview only -- it changes nothing about the run. Latent grid, not pixels: a 1024px image on a /8 model is 128, a 1440px Flux2 image on /16 is 90.
    preview_heightINT648–512LATENT height for the in-node preview only. See preview_width.
    noise_characterFLOAT1.000–1How much of the noise type's character survives. 1.0 = the pure type (bit-identical to earlier builds). Below 1.0 the field is cross-faded with plain gaussian -- around 0.2-0.4 the spectrally heavy types (pink, brown, fractal, pyramid) become a dosed compositional bias instead of an excursion. For offset it scales the offset amount; gaussian and zeros ignore it.

    Outputs (3)

    NameTypeDescription
    seedINTThe seed as INT (wire into samplers / noise nodes).
    seed_stringSTRINGThe same seed as STRING (filenames, notes, prompts).
    noiseNOISEA NOISE source for the sampler's `noise` input -- THE noise the model actually denoises. This is where noise character belongs: an empty latent's contents are multiplied by zero at the start of a full schedule, the sampler's own noise is not.