IC Strength Curve
IC Strength Curve is the input side of the gradual-IC-LoRA pack
- curve
What it is
IC Strength Curve is the drawing board for the Gradual-IC-LoRA pack. If IC-LoRA Curve Apply is the engine, this is the steering wheel: a little canvas widget where you sketch how strong an LTX-2.3 IC-LoRA's effect should be at every point in the clip, and it emits the IC_CURVE that Curve Apply samples from. Instead of "strength = 0.8 everywhere", you get "starts at 0, climbs through the first third, holds near 1.2, then eases back to nothing." That's a normal thing to want once you've played with LTX's control LoRAs for a while - an effect that shows up in a single render rather than a hard cut between two constant-strength clips.
The X axis is normalised clip time (0 to 1); the Y axis is the strength multiplier, default range −0.5 to +2.0, adjustable with y_min/y_max.
How it works
The heavy lifting lives in a JavaScript canvas widget (js/ic_curve_editor.js), which writes the curve state as a JSON string into a hidden STRING widget - that hidden widget is the curve_data input you see in the node. The Python side parses, validates, and normalizes it into a plain-dict IC_CURVE that flows through the graph and serializes cleanly into the workflow JSON and the API. Resampling the curve to actual frames happens downstream in IC-LoRA Curve Apply, so this node never needs to know your frame count - keep it dumb and portable.
Two design touches worth noting. A freshly added node defaults to a constant-1.0 curve, so it's a no-op until you actually edit it - no surprise "why is my video different" moments. And the default interpolation is monotone (Fritsch–Carlson cubic), which never overshoots past your keyframe values - important when your curve is a strength you're clamping between 0 and 1.5.
Inputs and outputs
Only three inputs to worry about, and for interactive use you mostly ignore them:
curve_data- the JSON string the canvas widget writes. Hand-editable if you know the format; treat it as read-only otherwise.preset_fallback- the escape hatch for headless/API use where the canvas can't render:constant,linear,ease_in, orplateau_step, instead of drawing.y_min/y_max- the visible Y range on the canvas. Default −0.5..+2.0 is a good start; negative values are there so you can actually pull an effect off mid-clip.
The single output, curve (IC_CURVE), wires straight into the curve input of IC-LoRA Curve Apply.
Editing
Click empty space to add a keyframe, drag to move it, right-click or double-click to delete (minimum two kept). Click the curve: chip to cycle interpolation: monotone → catmull → linear (catmull overshoots between keyframes; linear is linear). Presets under the curve give you constant, linear, ease in, and plateau step - the ease in and plateau step shapes are what the pack's own findings docs recommend for clean ramps on LTX, since the model tracks smooth S-curves most faithfully.
Install
Via ComfyUI Manager (search "Gradual-IC-LoRA"), or:
cd ComfyUI/custom_nodes
git clone https://github.com/Burgstall-labs/ComfyUI-Gradual-IC-LoRA
Then restart ComfyUI. No extra Python deps and nothing to download - the whole pack runs on what ComfyUI ships, and this node in particular is just a canvas plus JSON. You do need LTX-2.3 and an IC-LoRA of your own for the curve to mean anything.
Common issues
- Canvas won't show up / you're driving it from an API. That's exactly what
preset_fallbackis for - pick a preset and the node builds the curve without the widget. The author's docs call this out explicitly for headless use. - Your ramp reads weak. That's usually not this node - it's LTX's temporal-consistency prior pulling spatially-drastic effects toward the average. Push peak values or
strength_globalinto the 1.5–2.5 range; style and colour ramps track at 1.0 fine. - Hand-writing
curve_dataJSON. Keep keyframes sorted ascending byt, values inside the editor range, and use"mode"ofmonotone,catmull, orlinear. If in doubt, preferpreset_fallback.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| curve_data | STRING | {"keyframes": [[0.0, 1.0], [1.0, 1.0]], "mode": "monotone", "y_min": -0.5, "y_max": 2.0, "version": 1} | — |
| preset_fallbackopt | COMBO | (use curve_data) | 5 options: (use curve_data), constant, linear, ease_in, plateau_step |
| y_minopt | FLOAT | -0.5-10–10 | — |
| y_maxopt | FLOAT | 2.0-10–10 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| curve | IC_CURVE | — |