(deforum) Add Noise
Add scheduled film-grain and anti-blur noise to every frame
- image
- deforum_frame_data
- IMAGE
A clean upscaled animation frame often looks too sterile - or worse, an img2img pipeline can smear detail until the video looks soft and mushy. (deforum) Add Noise is the pack's tool for putting texture back: it applies Deforum's classic noise/anti-blur pass to each frame, driven entirely by the schedules in your deforum_frame_data. If you've used Deforum in A1111, this is the "noise" tab (noise_schedule, kernel, sigma, amount, threshold, contrast) ported to a ComfyUI node. It sits between your sampler's output and the Save Video node, post-processing every frame with the same settings that animated the rest of the pipeline.
How it works
For each frame, the node reads the current frame index from deforum_frame_data and pulls the corresponding values out of your keyframe schedules: noise_schedule, kernel_schedule, sigma_schedule, amount_schedule, threshold_schedule, and contrast_schedule. It then applies Deforum's unsharp-mask-style anti-blur (scaling by contrast, then an unsharp mask with the scheduled kernel/sigma/amount/threshold) and mixes in the scheduled noise. If you've enabled a noise mask, it uses that scheduled mask to limit where the effect lands; otherwise it applies everywhere.
The important mental model: this node doesn't invent noise amounts on its own. It's a slave to your schedules. Set noise_schedule to something like 0: (0.02) and you get a constant light grain; ramp it over the video and the grain builds. The values come from your Animation/Noise parameters nodes upstream, so the node itself has zero config - just image and deforum_frame_data in, IMAGE out.
Why you'd bother
Two main uses. Anti-blur: long animations that loop back into themselves get progressively softer as each img2img pass averages detail away, and a little scheduled unsharp helps keep edges crisp. Mood: film grain is a cheap way to make an animation read as "shot on film" rather than "rendered," and it masks banding in dark gradients. Both are subtle effects that most people want in small doses - this is the "seasoning" node, not the main course.
Installing it
Part of Deforum Nodes (XmYx). ComfyUI Manager → "Deforum Nodes", or:
cd ComfyUI/custom_nodes
git clone https://github.com/XmYx/deforum-comfy-nodes.git
Restart and let first-boot install.py finish (opencv-contrib-python, moviepy, numpy<2.0.0, deforum-studio backend, etc.). Python 3.10 required per the README.
Where people get burned
The classic mistake is expecting it to generate noise when your noise schedules are zeroed or missing - with amount/noise at 0 it does nothing, and you'll conclude it's broken when it's actually configured to be inert. Also note it operates on the decoded image (it converts the tensor to a PIL/numpy image), so it runs after the VAE decode, not in latent space. That's fine, just know that heavy noise here is cheap grain, not the latent-space perturbation the sampler applies. If your goal is more diffusion variation between frames, you want the sampler's noise settings, not this node.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| deforum_frame_data | DEFORUM_FRAME_DATA | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |