Nodes/AnimateDiff Evolved/Value Scheduling πŸŽ­πŸ…πŸ…“
ComfyUI Node Runs on cloud

Value Scheduling πŸŽ­πŸ…πŸ…“

Scheduling a raw number across your clip, not just a prompt

By KosinkadinkΒ·Created 3 years agoΒ·Updated 8 days agoΒ· 3,519
Value Scheduling πŸŽ­πŸ…πŸ…“
    • FLOAT
    • FLOATS
    • INT
    • INTS
    β—„valuesβ–Ί
    β—„print_schedulefalseβ–Ί
    β—„max_length0β–Ί

    The node's own description is direct: "Create a list of values with automatic interpolation." Where ADE_PromptScheduling schedules whole prompts across a clip, this node schedules raw numbers - the same idea, but for anything that takes a plain value instead of CLIP conditioning.

    The problem this actually solves

    People have asked, in public, how to schedule denoise strength (or LoRA/ControlNet weight) over time in AnimateDiff, and hit a real wall: the value-scheduler nodes most people reach for by habit are built for image-to-image loops that increment once per generation, and they simply don't apply here - AnimateDiff samples the entire clip in a single pass, not frame by frame across repeated runs. ADE_ValueScheduling is this pack's own answer, built for exactly that constraint: a frame-indexed schedule with automatic interpolation, designed to work inside one AnimateDiff sampling pass rather than assuming a per-generation loop.

    Once you have a scheduled number, it can drive nearly anything numeric elsewhere in your graph: a Multival's float_val (so ADE_MultivalDynamic picks up a value that changes across the clip instead of staying flat), a KSampler's denoise, a ControlNet's strength, or any other float/int input you want to vary over time rather than hold fixed.

    How it works

    Same schedule syntax as ADE_PromptScheduling: a number, then a value, repeated for each point where you want an explicit setting - the node interpolates automatically between those points across your output length. max_length caps how many entries the output covers (0 leaves it uncapped/automatic), and print_schedule dumps the parsed schedule to the console, the fastest way to confirm your text actually parsed the way you meant before spending a generation on it.

    The inputs and outputs that matter

    Required: values (multiline STRING) - your schedule, in the frame-indexed syntax above.

    Optional: print_schedule (boolean, default false) and max_length (default 0, uncapped).

    Four outputs - FLOAT, FLOATS, INT, INTS - covering scalar and list, float and int, so whichever type your target input actually wants, one of these matches it directly. Wire the one you need and ignore the rest.

    How to install it

    ComfyUI Manager: search AnimateDiff Evolved, confirm the author is Kosinkadink, install, restart. Manual:

    cd ComfyUI/custom_nodes
    git clone https://github.com/Kosinkadink/ComfyUI-AnimateDiff-Evolved
    

    No model download - a pure scheduling utility.

    Common issues & troubleshooting

    Not sure which of the four outputs to use. Match it to your target input's declared type - a Multival's float_val wants FLOAT, something expecting a per-frame list wants FLOATS, and so on for the int pair. There's no functional difference in the schedule itself between the four; they're the same computed values in different shapes.

    Schedule doesn't seem to be doing anything. Turn on print_schedule and check the console actually parsed your values text the way you intended - the same first debugging move as ADE_PromptScheduling, and schedule syntax is fussy enough about formatting that a malformed entry can silently collapse toward a flat value.

    Values change but the ramp looks wrong. Interpolation happens automatically between your explicit schedule points - if the curve isn't what you expected, check that you actually have schedule points where you think you do, and that they're not too close together relative to max_length or your real frame count for the interpolation to do meaningful work.

    Wondering whether you need this over a generic value-scheduler node. If you've tried a general-purpose one and hit the "increments once per generation, does nothing across an AnimateDiff batch" wall, that's exactly the gap this node fills - it's built specifically to schedule inside a single AnimateDiff sampling pass.

    CategoryAnimate Diff πŸŽ­πŸ…πŸ…“/scheduling

    Inputs (3)

    NameTypeDefaultDescription
    valuesSTRINGβ€”
    print_scheduleoptBOOLEANfalseβ€”
    max_lengthoptINT00–9007199254740991β€”

    Outputs (4)

    NameTypeDescription
    FLOATFLOATβ€”
    FLOATSFLOATSβ€”
    INTINTβ€”
    INTSINTSβ€”