Difforum · Anim Setup
The boring node every Difforum clip starts with (and why you can't skip it)
- params
Difforum is a Deforum-style animation toolkit for ComfyUI - math-driven keyframe schedules, camera moves, audio reactivity, prompt travel, the whole psychedelic stack. Every one of those nodes needs the same five numbers first: canvas size, frame rate, clip length, and a seed. Difforum · Anim Setup is the node that holds those. It's the least exciting thing in the pack and also the one you'll wire into almost everything, because nearly every other Difforum node demands its params output before it'll run.
That's really all it is: a tiny config bus. You set width, height, fps, max_frames, and seed, and out the other side comes one params object (type DIFFORUM_PARAMS) that you drag into the Camera, the Schedule, the Feedback Sampler, the Audio Analyzer - anywhere the pack needs to know "how big is the clip, how fast, how long." Think of it as the settings file for the whole animation, except it's a wire instead of a file.
A few numbers worth caring about:
width/height- the render canvas. Defaults to 768×768, stepped in multiples of 8. If you're heading toward a Wan path, keep the multiples-of-8 rule in mind (Wan's VAE wants 16, see below). Bigger isn't automatically better in a feedback render: every frame gets re-diffused, and the feedback loop compounds, so 1024 square is a lot of time for not much extra clarity.fps- 24 by default. Set it once and forget it; the schedule system uses it to convert between frames and seconds.max_frames- how many frames the clip runs. This is the number every schedule gets sampled across, so it's worth deciding before you write camera expressions. 120 frames at 24fps is 5 seconds.seed- feeds the sampler's noise. The pack defaults toseed_mode = fixed, which reuses the same noise every frame to calm texture boiling, so this seed does double duty as your "same camera, same look" reset button.
If the whole point is just plumbing numbers around, why not skip it and type values into each node directly? Because the pack deliberately routes everything through this one object. Change max_frames here and every schedule, camera, and audio curve downstream re-derives itself from it. That's the workflow: set it once, then treat it as ground truth.
Install
Difforum is one git clone and nothing else heavy:
cd ComfyUI/custom_nodes
git clone https://github.com/chillithebillis/Difforum.git difforum
Restart ComfyUI and watch the console for [Difforum] loaded N nodes. The pack's only dependency is numpy, which ComfyUI already ships, so there's no pip dance and no version conflicts - a deliberate choice by the author so it installs cleanly on Python 3.12 and Comfy Cloud. Or, easier: ComfyUI Manager → Custom Nodes Manager → search "Difforum" → install.
Troubleshooting
There's not much to break here, but two things bite people:
width/heightnot snapped to 8 causes a VAE error later at decode time on some models. The UI already steps by 8, so you have to type a bad value deliberately - don't.- The node "does nothing" visually. Correct - it has no preview and isn't an output node. If nothing downstream renders, check that the
paramswire actually reaches your Sampler; a reroute or a stray duplicate Anim Setup (with a differentmax_frames) is the usual culprit.
One honest piece of advice: if you're hand-setting width/height and counting frames, you're doing the job the Anim Setup+ variant was built to automate - duration in seconds, aspect ratios, and a resolution clamped to what your GPU can actually finish. Start here when you want control, reach for Plus when you want speed of setup.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| width | INT | 76864–8192 | — |
| height | INT | 76864–8192 | — |
| fps | FLOAT | 241–120 | — |
| max_frames | INT | 1201–100000 | — |
| seed | INT | 00–18446744073709550000 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| params | DIFFORUM_PARAMS | — |