Nodes/ComfyUI-Koolook/LTX Keyframe Soften Schedule (Koolook)
ComfyUI Node

LTX Keyframe Soften Schedule (Koolook)

Make LTX Director keyframes glide between poses instead of snapping

By malkuthro·Created 11 months ago·Updated a day ago· 8
LTX Keyframe Soften Schedule (Koolook)
  • model
  • sigmas
  • model
  • info
max_soften0.10
soften_range0.03

Pin keyframes hard in LTX Director from step zero and you get exactly what you'd expect: the model must hit each exact pose immediately, so a transition between two poses comes out as a cut - that robotic stop-and-dissolve that ruins an otherwise good music video. LTXKeyframeSoftenSchedule is Koolook's fix. It eases the keyframe pins during the high-sigma part of denoise, where coarse motion forms, so the model glides between poses, then restores them so the poses sharpen by the end. No new frames, no re-noise, and it's lipsync-safe.

How it works

The Director pins each keyframe through the latent's denoise mask. This node is a model patcher that hooks the sampler's per-step denoise_mask_function and loosens those pins by a gain that's biggest at the start of denoise and smoothsteps down to zero within the top slice of the sigma range you choose. Because LTX 2.3's audio-video mask is a NestedTensor((video, audio)), only the video pins get softened - the audio mask passes through untouched, so lip-sync is unaffected. That "no extra frames" bit matters: unlike adding easing keyframes, this costs you nothing in generation time, just a touch of effective pin strength early on.

The inputs

  • max_soften - ease strength: how much the pins unpin at the peak. 0 = off, ~0.1 = gentle, 1 = max. Start at 0.1 and only climb if motion is still snapping.
  • soften_range - ease the top % of the sigma range where motion forms; 0.03 means the top 3%. This is a level on the noise curve, not a step count - how many actual steps it spans depends on your scheduler.

That distinction trips people up, which is why there's an optional sigmas input and an info STRING output: wire your sampler's SIGMAS in and the node reports exactly which steps get eased in the run. The wired sigmas also serve as the runtime fallback anchor when a run doesn't supply usable sigmas.

The model output goes into your sampler; info is just for reading.

Where people get burned

Mostly two ways. First, treating soften_range as a step count - set it too high and you're softening pins well into refinement, and your "sharp" poses come out mushy. Second, expecting it to fix pin placement. It doesn't; it only smooths the motion between pins. If your transition itself is bad, look at Koolook's Director-side keyframe_ease control (strength-ramped neighbor pins) instead. And if you're doing two-stage work, remember the softened pass is stage 1 - stage 2 refinement is where you want the pins back at full strength.

Installing it

Part of the ComfyUI-Koolook pack. ComfyUI Manager → Install Custom Nodes → "ComfyUI-Koolook", restart. Or manually:

cd ComfyUI/custom_nodes
git clone https://github.com/malkuthro/ComfyUI-Koolook.git

Restart ComfyUI. No extra Python dependencies for this node - it's a patcher on the LTX 2.3 model, so you need an LTX 2.3 model and the Director workflow around it. Stick to one install method: the README warns that a Manager install (which lands in custom_nodes/koolook/) plus a manual clone loads two copies that both register the same nodes, and the workflow store can corrupt on restart. Pick one, remove the other.

CategoryKoolook/LTX

Inputs (4)

NameTypeDefaultDescription
modelMODELLTX 2.3 model.
max_softenFLOAT0.100–1Ease strength — how much to unpin the keyframes. 0 = off, ~0.1 = gentle, 1 = max.
soften_rangeFLOAT0.030–1Ease the TOP % of the sigma range (where motion forms). 0.03 = top 3%. It's a level, not a step count — wire SIGMAS to see which steps that is.
sigmasoptSIGMASOptional — connect your sampler's SIGMAS to show the exact steps on the 'info' output; also used as the fallback schedule when the run doesn't supply sigmas.

Outputs (2)

NameTypeDescription
modelMODEL
infoSTRING