Nodes/Nodes for use with real-time applications of ComfyUI/Float Control πŸ•’πŸ…‘πŸ…£πŸ…
ComfyUI Node

Float Control πŸ•’πŸ…‘πŸ…£πŸ…

Animate Any Parameter, Live

By ryanontheinsideΒ·Created 2 years agoΒ·Updated about a year agoΒ· 82
Float Control πŸ•’πŸ…‘πŸ…£πŸ…
    • FLOAT
    β—„always_executetrueβ–Ί
    β—„steps_per_cycle30β–Ί
    β—„movement_typesineβ–Ί
    β—„maximum_value1.0β–Ί
    β—„minimum_value0.0β–Ί
    β—„starting_value0.5β–Ί

    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. sine is 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.

    Categoryreal-time/control/value

    Inputs (6)

    NameTypeDefaultDescription
    always_executeBOOLEANtrueWhen enabled, the node updates every execution
    steps_per_cycleINT301–1000Number of steps to complete one full cycle
    movement_typeCOMBOsinePattern of value changes over time
    maximum_valueFLOAT1.0-10000–10000Maximum value that can be output
    minimum_valueFLOAT0.0-10000–10000Minimum value that can be output
    starting_valueFLOAT0.5-10000–10000Initial value when the node first executes

    Outputs (1)

    NameTypeDescription
    FLOATFLOATβ€”