Value Schedule | Deforum
Denoise, seeds, zoom — pick your poison
- FLOAT
- INT
Animations aren't only made of prompts. The zoom that creeps in over 120 frames, the denoise that eases down as a shot settles, the seed that changes exactly when the scene cuts - all of those are just numbers that need to change frame by frame. Value Schedule | Deforum is the pack's workhorse for exactly that: you give it a keyframe schedule and it hands you a smoothly interpolated number for the current frame, in both float and integer flavors.
The input text uses the Deforum value syntax: 0:(0.6), 40:(0.4), 80:(0.8) - frame, colon, value in parentheses. Between keyframes it linearly interpolates, so frame 20 in that example lands at 0.5. max_frames is the total animation length, current_frame is the frame you're asking about (a forceInput socket - wire it from your loop counter), and print_output dumps the resolved value to the console. The two outputs are FLOAT and INT, the same value in both types, so you can feed either kind of input downstream.
The inputs that matter: text (the schedule itself), max_frames, current_frame, and print_output. The two outputs are FLOAT and INT - the same value in both flavors, so you can feed either kind of input downstream.
Where it lands in a workflow: wire the FLOAT into a Prepare Latent Denoise | Deforum denoise input for per-frame re-noise strength, into a cfg or steps input, or into a Sampler Selector | Deforum's override if you're feeling fancy. Wire the INT into a seed input or into Lazy Index Switch | Deforum to swap branches on schedule. Pair several of these nodes - one for denoise, one for zoom, one for cfg - and you've rebuilt the parameter-animation side of classic Deforum as a readable graph. The pack's example deforum_flux_complex workflow is basically this pattern scaled up.
The math-expression support is where it stops being a plain table. Values can be expressions in backticks evaluated per frame with t (current frame), max_f (max_frames minus one), and the pw_a–pw_d params, plus sin, cos, sqrt, abs and friends. 0:(0.4 + 0.1*sin(t/10)) gives you a breathing denoise curve with zero keyframe spam. This is the same expression engine the prompt schedules use, so once you've learned it here it carries over.
Three honest gotchas. The default template is all zeros - you must actually write a schedule or every frame gets 0. current_frame is forced to a socket, so it has to come from somewhere; there's no typing a constant (use a primitive if you just want to peek at one frame). And remember it's linear interpolation: if you want ease-in or easing out, you write the curve yourself with an expression. Finally, the classic footgun across all these schedule nodes: max_frames must match your loop's real length, or current_frame wraps modulo and your carefully built curve resets mid-animation.
Installation is the pack: ComfyUI Manager → search "ComfyUI-Deforum" or deforum-comfy-nodes → install and restart, or git clone https://github.com/deforum-art/deforum-comfy-nodes into ComfyUI/custom_nodes and restart. No model downloads, no extra dependencies. It's not glamorous, but in a frame-loop workflow it's the node you'll wire more often than almost anything else in the pack.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| text | STRING | 0:(0), 11:(0), 23:(0), 35:(0), 47:(0), 59:(0), 71:(0), 83:(0), 95:(0), 107:(0), 119:(0) | — |
| max_frames | INT | 1201–999999 | — |
| current_frame | INT | 00–999999 | — |
| print_output | BOOLEAN | false | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| FLOAT | FLOAT | — |
| INT | INT | — |