IAMCCS Cine LTX Keyframer (legacy alias)
Drop up to 50 stills into an LTX latent as hard keyframes
- vae
- latent
- multi_input
- latent
LTX Video's keyframe conditioning is how you force a fast video model to hit specific beats: you encode stills, slot them into the latent at chosen frames, and mark them so the sampler treats them as anchors rather than noise. IAMCCS Cine LTX Keyframer (legacy alias) does that insertion - up to 50 images, each with its own frame and strength - and hands back the latent ready for sampling.
What it does
Inputs:
- vae - the LTX video VAE used to encode the stills.
- latent - the video latent you're inserting into (usually an
EmptyLTXVLatentVideo). - multi_input - the batched IMAGE from the Cine Reference Board (
IAMCCS_WDC_MultiImageLoader), which has already normalized everything to one size. - num_images - how many of the per-image widget sets you want to see. The node has slots for 50; this hides the ones you're not using.
Then, per image (up to 50): insert_frame_N - the frame (in pixel space) where that still gets inserted - and strength_N - how hard the image pins that position (1.0 = full lock, lower = looser suggestion). The tooltip calls these "frame ... in pixel space," which means real frame numbers, not latent slots.
The output is a single latent with the images encoded in and the noise mask updated, so the sampler knows those positions are conditioned rather than free.
How it works
It's the LTX-native keyframe mechanism wrapped in a multi-image batch: encode each still with the video VAE, place it at its frame index in the latent, and mark the mask so the sampler keys off it. The strength per image is the knob that decides whether a still is a hard cut (1.0) or just a nudge in the right direction (0.3). The IAMCCS_WDC_* family is the legacy-compat port of the Cine LTX nodes, so the important thing for you is: this is the node old IAMCCS Cine workflows wire their reference stills into.
Where it fits
Reference Board → Keyframer → sampler (with your LTX conditioning) → VAE decode. If you also want the stills to shape the text conditioning - not just the latent - you want the sibling IAMCCS_WDC_LTXSequencer instead, which does both. The Keyframer is the latent-only version.
Installing it
Part of IAMCCS-nodes. ComfyUI Manager (search "IAMCCS") or:
cd ComfyUI/custom_nodes
git clone https://github.com/IAMCCS/IAMCCS-nodes.git
Restart after. It needs a working LTX Video setup (model + video VAE) in ComfyUI - the node itself adds no model files.
Common issues
The usual suspects: a multi_input batch that isn't size-consistent (fix it at the Reference Board), or frame numbers that overshoot the latent's length - the node clamps on the negative side but an insert past the end is a silent no-op, so double-check insert_frame_N against your total frame count. And remember num_images only controls visible widgets; leave it at 1 until you actually need more.
Inputs (104)
| Name | Type | Default | Description |
|---|---|---|---|
| vae | VAE | Video VAE used to encode the images | |
| latent | LATENT | Video latent to insert images into | |
| multi_input | IMAGE | Batched images from IAMCCS Cine Reference Board | |
| num_images | INT | 10–50 | Select how many index/strength widgets to configure. |
| insert_frame_1opt | INT | 0-9999–9999 | Frame insert_frame for image 1 in pixel space. |
| strength_1opt | FLOAT | 1.000–1 | Strength for image 1. |
| insert_frame_2opt | INT | 0-9999–9999 | Frame insert_frame for image 2 in pixel space. |
| strength_2opt | FLOAT | 1.000–1 | Strength for image 2. |
| insert_frame_3opt | INT | 0-9999–9999 | Frame insert_frame for image 3 in pixel space. |
| strength_3opt | FLOAT | 1.000–1 | Strength for image 3. |
| insert_frame_4opt | INT | 0-9999–9999 | Frame insert_frame for image 4 in pixel space. |
| strength_4opt | FLOAT | 1.000–1 | Strength for image 4. |
| insert_frame_5opt | INT | 0-9999–9999 | Frame insert_frame for image 5 in pixel space. |
| strength_5opt | FLOAT | 1.000–1 | Strength for image 5. |
| insert_frame_6opt | INT | 0-9999–9999 | Frame insert_frame for image 6 in pixel space. |
| strength_6opt | FLOAT | 1.000–1 | Strength for image 6. |
| insert_frame_7opt | INT | 0-9999–9999 | Frame insert_frame for image 7 in pixel space. |
| strength_7opt | FLOAT | 1.000–1 | Strength for image 7. |
| insert_frame_8opt | INT | 0-9999–9999 | Frame insert_frame for image 8 in pixel space. |
| strength_8opt | FLOAT | 1.000–1 | Strength for image 8. |
| insert_frame_9opt | INT | 0-9999–9999 | Frame insert_frame for image 9 in pixel space. |
| strength_9opt | FLOAT | 1.000–1 | Strength for image 9. |
| insert_frame_10opt | INT | 0-9999–9999 | Frame insert_frame for image 10 in pixel space. |
| strength_10opt | FLOAT | 1.000–1 | Strength for image 10. |
| insert_frame_11opt | INT | 0-9999–9999 | Frame insert_frame for image 11 in pixel space. |
| strength_11opt | FLOAT | 1.000–1 | Strength for image 11. |
| insert_frame_12opt | INT | 0-9999–9999 | Frame insert_frame for image 12 in pixel space. |
| strength_12opt | FLOAT | 1.000–1 | Strength for image 12. |
| insert_frame_13opt | INT | 0-9999–9999 | Frame insert_frame for image 13 in pixel space. |
| strength_13opt | FLOAT | 1.000–1 | Strength for image 13. |
| insert_frame_14opt | INT | 0-9999–9999 | Frame insert_frame for image 14 in pixel space. |
| strength_14opt | FLOAT | 1.000–1 | Strength for image 14. |
| insert_frame_15opt | INT | 0-9999–9999 | Frame insert_frame for image 15 in pixel space. |
| strength_15opt | FLOAT | 1.000–1 | Strength for image 15. |
| insert_frame_16opt | INT | 0-9999–9999 | Frame insert_frame for image 16 in pixel space. |
| strength_16opt | FLOAT | 1.000–1 | Strength for image 16. |
| insert_frame_17opt | INT | 0-9999–9999 | Frame insert_frame for image 17 in pixel space. |
| strength_17opt | FLOAT | 1.000–1 | Strength for image 17. |
| insert_frame_18opt | INT | 0-9999–9999 | Frame insert_frame for image 18 in pixel space. |
| strength_18opt | FLOAT | 1.000–1 | Strength for image 18. |
| insert_frame_19opt | INT | 0-9999–9999 | Frame insert_frame for image 19 in pixel space. |
| strength_19opt | FLOAT | 1.000–1 | Strength for image 19. |
| insert_frame_20opt | INT | 0-9999–9999 | Frame insert_frame for image 20 in pixel space. |
| strength_20opt | FLOAT | 1.000–1 | Strength for image 20. |
| insert_frame_21opt | INT | 0-9999–9999 | Frame insert_frame for image 21 in pixel space. |
| strength_21opt | FLOAT | 1.000–1 | Strength for image 21. |
| insert_frame_22opt | INT | 0-9999–9999 | Frame insert_frame for image 22 in pixel space. |
| strength_22opt | FLOAT | 1.000–1 | Strength for image 22. |
| insert_frame_23opt | INT | 0-9999–9999 | Frame insert_frame for image 23 in pixel space. |
| strength_23opt | FLOAT | 1.000–1 | Strength for image 23. |
| insert_frame_24opt | INT | 0-9999–9999 | Frame insert_frame for image 24 in pixel space. |
| strength_24opt | FLOAT | 1.000–1 | Strength for image 24. |
| insert_frame_25opt | INT | 0-9999–9999 | Frame insert_frame for image 25 in pixel space. |
| strength_25opt | FLOAT | 1.000–1 | Strength for image 25. |
| insert_frame_26opt | INT | 0-9999–9999 | Frame insert_frame for image 26 in pixel space. |
| strength_26opt | FLOAT | 1.000–1 | Strength for image 26. |
| insert_frame_27opt | INT | 0-9999–9999 | Frame insert_frame for image 27 in pixel space. |
| strength_27opt | FLOAT | 1.000–1 | Strength for image 27. |
| insert_frame_28opt | INT | 0-9999–9999 | Frame insert_frame for image 28 in pixel space. |
| strength_28opt | FLOAT | 1.000–1 | Strength for image 28. |
| insert_frame_29opt | INT | 0-9999–9999 | Frame insert_frame for image 29 in pixel space. |
| strength_29opt | FLOAT | 1.000–1 | Strength for image 29. |
| insert_frame_30opt | INT | 0-9999–9999 | Frame insert_frame for image 30 in pixel space. |
| strength_30opt | FLOAT | 1.000–1 | Strength for image 30. |
| insert_frame_31opt | INT | 0-9999–9999 | Frame insert_frame for image 31 in pixel space. |
| strength_31opt | FLOAT | 1.000–1 | Strength for image 31. |
| insert_frame_32opt | INT | 0-9999–9999 | Frame insert_frame for image 32 in pixel space. |
| strength_32opt | FLOAT | 1.000–1 | Strength for image 32. |
| insert_frame_33opt | INT | 0-9999–9999 | Frame insert_frame for image 33 in pixel space. |
| strength_33opt | FLOAT | 1.000–1 | Strength for image 33. |
| insert_frame_34opt | INT | 0-9999–9999 | Frame insert_frame for image 34 in pixel space. |
| strength_34opt | FLOAT | 1.000–1 | Strength for image 34. |
| insert_frame_35opt | INT | 0-9999–9999 | Frame insert_frame for image 35 in pixel space. |
| strength_35opt | FLOAT | 1.000–1 | Strength for image 35. |
| insert_frame_36opt | INT | 0-9999–9999 | Frame insert_frame for image 36 in pixel space. |
| strength_36opt | FLOAT | 1.000–1 | Strength for image 36. |
| insert_frame_37opt | INT | 0-9999–9999 | Frame insert_frame for image 37 in pixel space. |
| strength_37opt | FLOAT | 1.000–1 | Strength for image 37. |
| insert_frame_38opt | INT | 0-9999–9999 | Frame insert_frame for image 38 in pixel space. |
| strength_38opt | FLOAT | 1.000–1 | Strength for image 38. |
| insert_frame_39opt | INT | 0-9999–9999 | Frame insert_frame for image 39 in pixel space. |
| strength_39opt | FLOAT | 1.000–1 | Strength for image 39. |
| insert_frame_40opt | INT | 0-9999–9999 | Frame insert_frame for image 40 in pixel space. |
| strength_40opt | FLOAT | 1.000–1 | Strength for image 40. |
| insert_frame_41opt | INT | 0-9999–9999 | Frame insert_frame for image 41 in pixel space. |
| strength_41opt | FLOAT | 1.000–1 | Strength for image 41. |
| insert_frame_42opt | INT | 0-9999–9999 | Frame insert_frame for image 42 in pixel space. |
| strength_42opt | FLOAT | 1.000–1 | Strength for image 42. |
| insert_frame_43opt | INT | 0-9999–9999 | Frame insert_frame for image 43 in pixel space. |
| strength_43opt | FLOAT | 1.000–1 | Strength for image 43. |
| insert_frame_44opt | INT | 0-9999–9999 | Frame insert_frame for image 44 in pixel space. |
| strength_44opt | FLOAT | 1.000–1 | Strength for image 44. |
| insert_frame_45opt | INT | 0-9999–9999 | Frame insert_frame for image 45 in pixel space. |
| strength_45opt | FLOAT | 1.000–1 | Strength for image 45. |
| insert_frame_46opt | INT | 0-9999–9999 | Frame insert_frame for image 46 in pixel space. |
| strength_46opt | FLOAT | 1.000–1 | Strength for image 46. |
| insert_frame_47opt | INT | 0-9999–9999 | Frame insert_frame for image 47 in pixel space. |
| strength_47opt | FLOAT | 1.000–1 | Strength for image 47. |
| insert_frame_48opt | INT | 0-9999–9999 | Frame insert_frame for image 48 in pixel space. |
| strength_48opt | FLOAT | 1.000–1 | Strength for image 48. |
| insert_frame_49opt | INT | 0-9999–9999 | Frame insert_frame for image 49 in pixel space. |
| strength_49opt | FLOAT | 1.000–1 | Strength for image 49. |
| insert_frame_50opt | INT | 0-9999–9999 | Frame insert_frame for image 50 in pixel space. |
| strength_50opt | FLOAT | 1.000–1 | Strength for image 50. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| latent | LATENT | Latent with images inserted and noise mask updated. |