Nodes/ComfyUI-sonar/SonarRepeatedNoise
ComfyUI Node

SonarRepeatedNoise

Cache your noise and reuse it, with a twist

By blepping·Created 3 years ago·Updated 13 days ago· 49
SonarRepeatedNoise
  • sonar_custom_noise
  • SONAR_CUSTOM_NOISE
factor1.000
repeat_length8
max_recycle1000
normalizedefault
permuteenabled

Most of the time you want fresh noise every step - that's what makes ancestral sampling feel alive. But there are workflows where the opposite is useful: you want the same noise texture reused across calls, recycled and re-rolled instead of regenerated. SonarRepeatedNoise is the pack's caching layer for that. It generates a pool of noise items once, then hands them out repeatedly - with a permutation applied each time so the reuse isn't obvious.

Think of it as a deck of cards. You shuffle the deck, draw a card, and instead of putting it back, you flip it, rotate it, and reuse it a bunch of times before it gets replaced with a fresh card. The mechanical detail: "recycled noise will be permuted by randomly flipping it, rolling the channels, etc." - so the same underlying noise comes back in a different costume each draw.

The inputs that matter

  • sonar_custom_noise - the noise source to cache. Like SonarRandomNoise, this node treats its input as a list of noise items rather than adding a single item to the chain.
  • repeat_length (default 8) - how many items the cache holds. Bigger pool = more variety before something repeats.
  • max_recycle (default 1000) - how many times a given item is reused before it's replaced with fresh noise. Lower it to force the deck to refresh more often.
  • permute (enabled / disabled / always) - when enabled, recycled noise gets flipped/rolled before reuse. always also permutes the first use. Disable it if you want literally identical noise reused, which is the "I want the exact same texture every step" scenario.
  • factor and normalize - the standard strength and rebalance controls.

Output is a SONAR_CUSTOM_NOISE feeding into a Sonar sampler, SamplerConfigOverride, or NoisyLatentLike.

When this is actually the tool

The practical use is consistency across a series: animation frames, image-to-image passes, or batch workflows where you want the same noise character held through the whole run instead of each step getting independent randomness. Caching also saves the compute of regenerating noise every call, though for most samplers that cost is minor next to the model calls.

The trap is assuming it gives you true determinism. It doesn't - the permutation is random, the pack's own README admits noise generation is inconsistently on GPU or CPU (which changes seeds across hardware), and the author has reworked internals in ways that "may change seeds" between versions. If your goal is pixel-identical reproducibility, pin the git revision of the pack and don't update casually. If your goal is "same noise family, re-rolled," this is exactly the node.

Installing

It ships with ComfyUI-sonar. Easiest via ComfyUI Manager (search "ComfyUI-sonar"), or clone it manually:

cd ComfyUI/custom_nodes
git clone https://github.com/blepping/ComfyUI-sonar

Restart ComfyUI, find it under advanced/noise. No extra Python packages and no model downloads - just the pack itself.

Categoryadvanced/noise

Inputs (6)

NameTypeDefaultDescription
factorFLOAT1.000-10000–10000Scaling factor for the generated noise of this type.
sonar_custom_noiseSONAR_CUSTOM_NOISE,OCS_NOISECustom noise type to modulate. The following input types are supported: SONAR_CUSTOM_NOISE, OCS_NOISE
repeat_lengthINT81–100Number of items to cache.
max_recycleINT10001–1000Number of times an individual item will be used before it is replaced with fresh noise.
normalizeCOMBOdefaultControls whether the generated noise is normalized to 1.0 strength.
permuteCOMBOenabledWhen enabled, recycled noise will be permuted by randomly flipping it, rolling the channels, etc. If set to always, the noise will be permuted the first time it's used as well.

Outputs (1)

NameTypeDescription
SONAR_CUSTOM_NOISESONAR_CUSTOM_NOISEA custom noise chain.