IC Curve Preview
Check your IC-LoRA strength ramp before you burn a long render
- curve
- video_latent
- preview
What it is
IC Curve Preview is the optional QA node in the Gradual-IC-LoRA pack - the one you add when you're about to commit to a long LTX-2.3 render and you want to see what strength your IC-LoRA will actually get at each frame before the sampler chews through it. It renders the resolved per-frame strength curve as an IMAGE, drawn in pure Pillow. No matplotlib, no extra install; it just works in any ComfyUI.
It's the smallest node in the pack for a reason: the curve editor already shows you the shape you drew, but it shows it on a normalized 0–1 timeline. This node shows the sampled result - the actual per-latent-frame values the Curve Apply node will feed the model. Those two things differ, because LTX's 8× temporal compression means one latent frame covers 8 rendered frames, and the pack resamples your curve onto that latent-frame grid. That's the gap worth checking before a 15-minute render.
How it works
You feed it the same IC_CURVE you're wiring into IC-LoRA Curve Apply, and it resolves the output frame count exactly the way Curve Apply does: from video_latent's temporal dim, or from your explicit num_latent_frames / rendered_frames (via the LTX 8n+1 rule, latent_frames = (rendered_frames − 1) / 8 + 1). It then resamples the curve using the same Python resampler the apply node uses, and draws the plot:
- a
y=0guide line (dark red) and ay=1guide line (green), so you can see at a glance where the ramp crosses zero or full strength; - rendered-frame tick marks along the x-axis;
- the strength curve as a polyline with a dot per latent frame;
- a summary label:
latent frames,rendered frames, and the min..max strength actually reached.
Because it uses the apply node's own resample code, what you see here is authoritative - if the sampled curve has a weird step or clamps somewhere you didn't intend, that's what the model will receive.
Inputs and outputs
Only a couple matter:
curve(required) - theIC_CURVEyou're about to use.video_latent(optional) - wire in the same latent you'll feed Curve Apply, and the node auto-derives the frame count. This is the one to actually wire if you're doing a sanity check.num_latent_frames/rendered_frames(optional) - explicit overrides if you're not wiring a latent;0means auto.width(768) /height(320) - just the plot size in pixels. Defaults are fine.
The single output, preview (IMAGE), is for looking at - hook it to a preview or save node, or just let ComfyUI show it.
Install
Same as the rest of the pack - 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; the preview is deliberately pure-PIL so it runs anywhere the pack runs.
Common issues
- Wrong frame count in the preview. If the x-axis tick marks or the
rendered frameslabel don't match the clip you're about to render, that's a warning sign your latent or yourrendered_framesassumption is off - and Curve Apply will hit the same mismatch, so catching it here saves you a hard-fail error later. - "The preview shows values above 1.0, is that a bug?" No. The curve editor's default range goes to +2.0 on purpose - spatially-drastic IC-LoRAs need peak strengths past 1.0 to overcome LTX's temporal-consistency dilution, and the preview's y-range auto-fits whatever the curve contains.
- It's a preview, not a gate. It only renders the strength schedule; it won't catch token-layout problems (that's Curve Apply's hard-fail check) or tell you whether the ramp will actually read well on your subject. For the latter, the pack's findings recommend a quick low-frame test render before the long one.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| curve | IC_CURVE | — | |
| video_latentopt | LATENT | — | |
| num_latent_framesopt | INT | 00–100000 | — |
| rendered_framesopt | INT | 00–100000 | — |
| widthopt | INT | 768128–4096 | — |
| heightopt | INT | 320128–4096 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| preview | IMAGE | — |