WanVideo Noise Controller
Your first frame is noise. This node makes that noise carry a second concept.
- structured_noise
Every text-to-video generation starts from a blob of random noise, and the seed that generates it shapes everything that follows - composition, motion, even which interpretations of your prompt win out. This node's trick: instead of generating one uniform noise blob, it generates two (from main_seed and injection_seed) and blends them in a structured pattern. The result is a starting latent where different regions - or different time-blocks - are primed by different random contexts. It's a pseudo-activation effect: no block patching, no text injection, just a smarter starting point.
It's also the pack's most user-friendly node, because it has zero dependencies on the pack's own types or on a model. Give it dimensions and it returns a LATENT you feed straight into your sampler instead of EmptyLatentVideo/EmptySD3LatentVideo.
The inputs
- width / height / frames - your video dimensions (defaults 832×480×81, Wan's standard). Note the resolution requirements: Wan wants latents divisible by 8 in space and the frame math is
(frames-1)//4 + 1- the node handles both internally, so you just give it pixel values. - main_seed / injection_seed - two seeds for two noise fields. Same seed, no effect; different seeds, structured contrast.
- noise_pattern - how the two noises get blended:
uniform- every latent position blends the same amount; effectively seeded noise mixing.spatial_blocks(default) - blocks ofpattern_strengthinjection noise scattered spatially, so different regions of the frame get different initial contexts.temporal_blocks- alternates by time index, so the start of your clip and the end are primed differently.checkerboard- fine-grained spatial checkerboard.radial- injection strength strongest in the center, fading toward the edges.
- pattern_strength - 0 to 1, default 0.3, controls how much of the second seed's noise bleeds in.
Why you'd bother
It's cheap and it's weird in a fun way. spatial_blocks tends to bias different regions toward different compositions, temporal_blocks biases early frames one way and late frames another - the seed's influence on an early denoising step is real, and this is the least invasive way to exploit it. The author's honest label ("pseudo-activation") applies: the effect is like conditioning but it isn't conditioning - you're nudging the starting lottery ticket, not telling the model what to draw. Results vary, and that's the point of the experiment.
It also plays nicely with the rest of the pack: the NoiseController stores its pattern in the DuckDB database (more on that in the WanVideoEmbeddingDatabase article), so you can log which patterns did what.
Install
Pack install, WanVideoWrapper first (you need it anyway for the model):
cd ComfyUI/custom_nodes
git clone https://github.com/kijai/ComfyUI-WanVideoWrapper # required first
git clone https://github.com/fblissjr/ComfyUI-WanActivationEditor
cd ComfyUI-WanActivationEditor && pip install -r requirements.txt
Restart ComfyUI. The one gotcha that bites people: if you set main_seed and injection_seed and then also set the sampler's own seed, the sampler seed still governs the final result when the noise isn't forced - check that the latent is actually feeding the sampler, not being regenerated. And keep frames within the model's limits (the node caps at 200).
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| width | INT | 83264–2048 | — |
| height | INT | 48064–2048 | — |
| frames | INT | 811–200 | — |
| main_seed | INT | 00–18446744073709550000 | — |
| injection_seed | INT | 420–18446744073709550000 | — |
| noise_pattern | COMBO | spatial_blocks | 5 options: uniform, spatial_blocks, temporal_blocks, checkerboard, radial |
| pattern_strength | FLOAT | 0.300–1 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| structured_noise | LATENT | — |