Nodes/ComfyUI-Koolook/LTX Reference Bind Schedule (Koolook)
ComfyUI Node

LTX Reference Bind Schedule (Koolook)

Lock a character's face late in denoise, without an IC-LoRA

By malkuthro·Created 11 months ago·Updated a day ago· 8
LTX Reference Bind Schedule (Koolook)
  • model
  • model
num_references1
peak_strength2.00
ramp_start0.50
ramp_end0.90
num_keyframes0

LTX 2.3 is great at lipsync and lousy at keeping a face consistent shot to shot - the KB's LTX ecosystem notes call out identity drift as one of the recurring user complaints. Koolook's answer is a "Ghost Mask" reference: you feed LTX Director a reference image or character sheet, and it pins identity without the reference ever appearing in the output. LTXReferenceBindSchedule is the node that decides when that reference actually pulls. It ramps the reference's attention up at low sigma, so identity locks during refinement without disturbing the motion that forms early. One pass, no re-noise, and - the headline - it does it without an IC-LoRA.

Why it exists

Normally, amplified per-guide attention for a reference comes from an IC-LoRA: LTXDirectorGuide only populates those per-guide attention entries when a LoRA is active. No LoRA, no entries, no identity pull. This node closes that gap. When the entries are missing, it fabricates them itself for the trailing reference tokens, giving the reference the same amplified-attention channel an IC-LoRA would use - inside the Director, no guide-node changes, no graph rewire. If you do run an IC-LoRA, it just scales the real entries instead. Either way it touches only the attention of the trailing num_references guide frames; keyframe pins and noise-mask freezing are untouched.

The mechanism

LTX's core _build_guide_self_attention_mask is rebuilt every denoise step, and it natively supports strength > 1.0 to amplify a guide's attention. The node hooks that builder plus a per-step sigma capture, then scales the reference's attention strength from ~1.0 early (neutral - motion forms freely) up to peak_strength late (identity locks). It's the mirror of LTXAVBindSchedule, which does the same trick for audio→video.

The inputs that matter

  • num_references - how many trailing guide frames are references. If you fed Director two reference images, set 2. The references are appended after the keyframes, so they're the last N guide frames.
  • peak_strength - the reference attention multiplier at the end of denoise. 1.0 = no boost; the tooltip suggests trying 2–4, and 2.0 doubles the identity pull during refinement.
  • ramp_start / ramp_end - where the boost begins and peaks (denoise progress 0=start, 1=end). Keep ramp_start above ~0.5–0.6 so big motion finalizes before identity locks.
  • num_keyframes - no-LoRA path only: how many timeline image keyframes precede the references, so the node knows the keyframe/reference token split. Set this to your number of timeline image segments (say, 4).

That last one is the gotcha. Leave num_keyframes at 0 and the whole guide region gets treated as reference - which boosts your keyframes too, not just the reference. If you're on the no-LoRA path, always set it to your real segment count.

The output is a single model, wired into your sampler in place of the stock one.

Installing it

It's part of ComfyUI-Koolook. ComfyUI Manager → Install Custom Nodes → "ComfyUI-Koolook", restart, done. Or:

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

Restart after. This node is a model patcher with no extra Python dependencies, but it only makes sense inside an LTX 2.3 Director workflow - you need the LTX/Prompt Relay ecosystem (Director, LTXDirectorGuide) installed too. And remember the README's one-install rule: install via Manager or clone, never both, or the two parallel copies fight over the workflow store.

CategoryKoolook/LTX

Inputs (6)

NameTypeDefaultDescription
modelMODELLTX 2.3 model (the same one feeding the guide pipeline).
num_referencesINT10–64How many trailing guide frames are references (= how many images you fed LTX Director's reference_images). They're appended after the keyframes, so the LAST N guide frames are the references.
peak_strengthFLOAT2.001–8Reference attention multiplier at the end of denoise (low sigma). 1.0 = no boost; 2.0 = double the identity pull during refinement. Try 2-4.
ramp_startoptFLOAT0.500–1Denoise progress (0=start, 1=end) where the reference boost begins. Keep above where big motion finalizes (~0.5-0.6) so motion forms first.
ramp_endoptFLOAT0.900–1Denoise progress where the boost reaches peak_strength.
num_keyframesoptINT00–256No-LoRA path only: how many timeline image keyframes precede the references, so the node knows the keyframe/reference token split. Set this = your number of timeline image segments (e.g. 4). Leave 0 and the WHOLE guide region is treated as reference (also boosts keyframes). Ignored when an IC-LoRA populated real entries.

Outputs (1)

NameTypeDescription
modelMODEL