Temporal Noise Hold
The starting noise that decides how much scene your video gets
- NOISE
Here's a knob most people never touch, and it changes what your video contains: how correlated the starting noise is from one frame to the next. Temporal Noise Hold takes the place of Random Noise on a custom sampler and carries each frame's noise pattern into the next instead of drawing every frame fresh. Raise hold and the frame-to-frame change drops - and, weirdly, the model starts filling in more scene. The pack's own example: on MiniMax H3, the same prompt and seed gives you a bare alley at hold 2.0 and parked cars, shop doors and a lit background street at 25.0. Same seed. The noise decided how much world existed.
That's a lot of leverage for two widgets, and it's not obvious from anywhere else in the UI. A latent's time axis is where the model derives motion and coherence, and if every frame starts from unrelated noise, the model spends the run reconciling frames instead of building them.
How it works
The draw is a [B, C, T, H, W] standard normal, and the node filters it along T - a one-pole recursive filter, each frame becoming a blend of itself and the frame before it, with the coefficient derived from hold as exp(-1/hold). Rescaled so every frame still has mean 0 and variance 1: this isn't "less noise", it's noise that's shaped in time. hold is how many latent frames the pattern carries over. At 0.0 the coefficient is zero and it matches Random Noise exactly - the tooltip's frame-change figures run 2.0 → 0.63 of ordinary noise, 8.0 → 0.34, 25.0 → 0.20, 64.0 → 0.12, 128.0 → 0.09.
Latent frames, not output frames. That distinction trips up everyone the first time: one latent frame is about 3.4 output frames on MiniMax H3, 4 on Wan (its VAE compresses time ~4x, which is also where the famous 4n+1 frame counts come from) and 8 on LTX. So hold 8 is a much longer window on an LTX clip than on a Wan one. If you're tuning per-second rather than per-latent-frame, you'll be surprised at which model your number "works" on.
Two inputs only: noise_seed and hold. The seed has the usual randomize/increment/fixed control, and the same seed with the same hold reproduces a clip exactly. Output is one NOISE, for the noise socket of Sampler Custom Advanced or Custom Sampler Affine Advanced:
Temporal Noise Hold ──NOISE──► SamplerCustomAdvanced (noise)
Nothing else in the graph changes. That's the nice part about noise sockets - it's a drop-in.
The one rule that makes it look broken
Only the first draw is shaped. A sampler that draws fresh noise at every step overwrites your carefully correlated field with independent noise one step later. That means the ancestral and SDE families are out, and so is anything run with eta above 0 - and several samplers default eta above 0, which is how you end up with a node that appears to do nothing at all. euler, heun, dpm_2, dpmpp_2m and the ODE variants keep it.
This is the same axis the sampler docs have been pointing at for years: converging samplers settle, ancestral ones never do because they add fresh noise each step. Here it stops being philosophical and becomes functional.
Install
It's part of WAS Node Suite v3 - ComfyUI Manager, search WAS Node Suite v3, install, restart. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/WASasquatch/was-node-suite-comfyui.git
Needs ComfyUI 0.14.0+ and Python 3.10+. No pip packages, no model downloads, no build. First start writes config.yaml and a few folders under <ComfyUI user dir>/was-node-suite/ and takes a second longer.
Watch out for
It runs before the sampler, so it can't help an ancestral run. Covered above, but it's the #1 support question for this node. If nothing changes, your sampler is drawing its own noise.
Video latent shape only. The filter works on a five-dimensional [B, C, T, H, W] stream; anything else comes back as drawn. An image latent has no time axis to correlate, so you'll get ordinary noise and no error - not broken, just not applicable.
High holds are not free. At hold 64 or 128 you're down to ~0.1 of ordinary frame-to-frame variation, a big change to the noise statistics the model was trained around. Some models love it; some give you a static, over-coherent clip. Most of the effect lands between 2 and 25.
Old tutorials, wrong pack. If you're being told to pip install anything for WAS Node Suite, you're reading about the v2 pack: it pinned OpenCV and InsightFace, broke on ComfyUI updates, and generated a lot of "Import Failed" threads back in 2024. v3 installs nothing. Same for node names - this one is new in v3.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| noise_seed | INT | 00–18446744073709550000 | The seed the noise field is drawn from, as `0` or `12345`. The same seed and hold reproduce a clip exactly. |
| hold | FLOAT | 2.00–128 | How many latent frames the noise pattern carries over. 0.0 draws ordinary noise and matches RandomNoise exactly. Higher values cut the frame-to-frame change: 2.0 to 0.63 of ordinary noise, 8.0 to 0.34, 25.0 to 0.20, 64.0 to 0.12, 128.0 to 0.09. One latent frame is about 3.4 output frames on MiniMax H3, 4 on Wan and 8 on LTX. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| NOISE | NOISE | The starting noise, for the noise socket of Sampler Custom Advanced or Custom Sampler Affine Advanced. |