Nodes/ComfyUI-curved_weight_schedule/Curved ControlNet Scheduler
ComfyUI Node

Curved ControlNet Scheduler

ControlNet strength that fades along a curve, not a cliff

By diffussy69·Created 11 months ago·Updated 9 months ago· 2
Curved ControlNet Scheduler
  • prev_timestep_kf
  • TIMESTEP_KF
  • curve_graph
num_keyframes10
start_percent0.000
end_percent1.000
start_strength1.00
end_strength0.00
curve_type
curve_param2.0
invert_curvefalse
clamp_strengthstrue
print_keyframesfalse
show_graphtrue

Every ControlNet user learns the same lesson: the condition shouldn't usually ride at full strength for all 30 steps. Hold a pose ControlNet at 1.0 the whole way and the image looks pasted; let it go entirely and you lose the composition. The standard tool is two fields - start and end step - which gives you a cliff. This node is the pack's namesake, and it replaces that cliff with a curve: ControlNet strength that eases, bells, waves, or exponentially decays across the generation, defined by a dropdown and a steepness knob. It's the simplest on-ramp into the whole curved_weight_schedule ecosystem, and honestly the one to start with.

How it works

It samples a strength curve across num_keyframes control points spanning start_percent to end_percent, with start_strength and end_strength at the ends. Between them, curve_type decides the shape:

  • linear, ease_in, ease_out, ease_in_out - the standard transitions. These are the workhorses.
  • sine_wave - oscillating, for when you want control to pulse. Experimental, per the author.
  • bell_curve, reverse_bell - peak in the middle, or valley.
  • exponential, bounce, custom_bezier - the flavour picks.

curve_param controls how extreme the curve gets (higher = steeper). invert_curve flips the shape, clamp_strengths keeps values in the 0–10 band, and show_graph gives you the all-important visual preview.

The output TIMESTEP_KF goes straight into Apply Advanced ControlNet's timestep_kf input; curve_graph is the preview IMAGE. That's the whole interface - two outputs, no extra machinery. prev_timestep_kf exists so you can chain a scheduler onto existing keyframes without losing them.

Installing it

Standard pack install:

cd ComfyUI/custom_nodes
git clone https://github.com/diffussy69/comfyui-curved_weight_schedule
pip install matplotlib pillow numpy torch scipy

This node needs Kosinkadink's ComfyUI-Advanced-ControlNet to be present (it emits TimestepKeyframe objects). The original upstream version is fine for non-temporal scheduling; only the temporal-mask features need the modified fork. Restart, hard-refresh.

Where people get burned

Missing Advanced ControlNet = Could not import TimestepKeyframe at startup. And the classic conceptual slip: start_strength/end_strength are yours to set - "Fade Out" isn't automatic. Want strong-to-weak? Set 1.0 → 0.0. Want weak-to-strong? 0.0 → 1.0. The node won't guess the direction for you.

One more honest note: this whole pack has basically zero community discussion - I checked, and nobody's sharing tuned curves for it. You'll be tuning curve_param yourself. That's fine: the graph preview makes iteration fast, and the Advanced version of this node adds presets if you want a one-click Fade Out without thinking about strength values at all.

Categoryconditioning/controlnet

Inputs (12)

NameTypeDefaultDescription
num_keyframesINT102–100Number of keyframes to generate across the timestep range
start_percentFLOAT0.0000–1Starting point in generation (0.0 = beginning)
end_percentFLOAT1.0000–1Ending point in generation (1.0 = end)
start_strengthFLOAT1.000–10ControlNet strength at start_percent
end_strengthFLOAT0.000–10ControlNet strength at end_percent
curve_typeCOMBOShape of the interpolation curve between start and end strength
curve_paramFLOAT2.00.1–10Curve steepness: higher = more extreme curve
prev_timestep_kfoptTIMESTEP_KEYFRAME
invert_curveoptBOOLEANfalseInvert the curve shape
clamp_strengthsoptBOOLEANtrueClamp strength values to valid range (0-10)
print_keyframesoptBOOLEANfalsePrint generated keyframes for debugging
show_graphoptBOOLEANtrueGenerate visual graph of the curve

Outputs (2)

NameTypeDescription
TIMESTEP_KFTIMESTEP_KEYFRAME
curve_graphIMAGE