Float Control ππ ‘π £π
Animate Any Parameter, Live
- FLOAT
The fastest way to make a static ComfyUI workflow feel alive is to wiggle a number. Float Control is the wiggler: every execution it outputs a FLOAT that moves between a minimum and maximum according to a movement pattern. Plug it into a KSampler's denoise, a CFG, an upscale strength, a seed drift - anywhere a numeric input lives - and your output starts breathing on its own.
It's genuinely the node the pack's README leads with, and the demo is the right one: imagine controlling denoise with a sine wave so the output periodically dissolves and reforms, or sweeping CFG live in a StreamDiffusion-style loop. Because these control nodes were written for real-time setups that execute the workflow once per frame, each execution advances the animation by exactly one step. That per-frame stepping is the core design choice - this is not a node that lerps between two values for you; it owns the timeline.
There are eleven movement patterns: static, sine, triangle, sawtooth, square, bounce, exponential, logarithmic, pulse, random_walk, and smooth_noise. They're all implemented as phase functions - the node keeps a phase value (0β1) and advances it by 1 / steps_per_cycle on every execution, then maps the pattern's output into your min/max range. So steps_per_cycle is literally "how many frames does one full oscillation take," and at 30 steps that's about one sweep per second at 30fps. Sine and triangle are the friendly ones; random_walk and smooth_noise are where things get organic.
The inputs that matter
- movement_type - the pattern.
sineis the default and the safe starting point. - steps_per_cycle - frames per full cycle. Lower = faster, and at low values some patterns (square, pulse) get chunky.
- minimum_value / maximum_value - the output range. This is your mapping, and getting it sane is 90% of the tuning.
- starting_value - what the node outputs on its very first execution, before the phase math kicks in.
Output: one FLOAT, ready to splice into any numeric input.
Install & behavior notes
From ryanontheinside/ComfyUI_RealtimeNodes - ComfyUI Manager (search "Control Nodes") or:
cd ComfyUI/custom_nodes
git clone https://github.com/ryanontheinside/ComfyUI_RealtimeNodes
cd ComfyUI_RealtimeNodes
pip install -r requirements.txt
Two behaviors worth knowing. First, always_execute defaults to on, and it should stay on - the node's whole job is to advance on every execution, and if ComfyUI caches it, the animation freezes. Second, it's stateful: the phase persists between executions, which is how the timeline works, but it also means the animation resets whenever ComfyUI clears node state. If you're iterating on a workflow and the value keeps snapping back to starting_value, that's state getting cleared, not a bug. And a pro tip: don't run the pattern too fast unless the effect genuinely calls for it - a 10-step cycle on CFG produces nervous, flickering results. 30 steps is a good default for a reason.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| always_execute | BOOLEAN | true | When enabled, the node updates every execution |
| steps_per_cycle | INT | 301β1000 | Number of steps to complete one full cycle |
| movement_type | COMBO | sine | Pattern of value changes over time |
| maximum_value | FLOAT | 1.0-10000β10000 | Maximum value that can be output |
| minimum_value | FLOAT | 0.0-10000β10000 | Minimum value that can be output |
| starting_value | FLOAT | 0.5-10000β10000 | Initial value when the node first executes |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| FLOAT | FLOAT | β |