Nodes/IAMCCS-nodes/IAMCCS Cine LTX Keyframer (legacy alias)
ComfyUI Node

IAMCCS Cine LTX Keyframer (legacy alias)

Drop up to 50 stills into an LTX latent as hard keyframes

By IAMCCS·Created 12 months ago·Updated 4 days ago· 117
IAMCCS Cine LTX Keyframer (legacy alias)
  • vae
  • latent
  • multi_input
  • latent
◄num_images1►
◄insert_frame_10►
◄strength_11.00►
◄insert_frame_20►
◄strength_21.00►
◄insert_frame_30►
◄strength_31.00►
◄insert_frame_40►
◄strength_41.00►
◄insert_frame_50►
◄strength_51.00►
◄insert_frame_60►
◄strength_61.00►
◄insert_frame_70►
◄strength_71.00►
◄insert_frame_80►
◄strength_81.00►
◄insert_frame_90►
◄strength_91.00►
◄insert_frame_100►
◄strength_101.00►
◄insert_frame_110►
◄strength_111.00►
◄insert_frame_120►
◄strength_121.00►
◄insert_frame_130►
◄strength_131.00►
◄insert_frame_140►
◄strength_141.00►
◄insert_frame_150►
◄strength_151.00►
◄insert_frame_160►
◄strength_161.00►
◄insert_frame_170►
◄strength_171.00►
◄insert_frame_180►
◄strength_181.00►
◄insert_frame_190►
◄strength_191.00►
◄insert_frame_200►
◄strength_201.00►
◄insert_frame_210►
◄strength_211.00►
◄insert_frame_220►
◄strength_221.00►
◄insert_frame_230►
◄strength_231.00►
◄insert_frame_240►
◄strength_241.00►
◄insert_frame_250►
◄strength_251.00►
◄insert_frame_260►
◄strength_261.00►
◄insert_frame_270►
◄strength_271.00►
◄insert_frame_280►
◄strength_281.00►
◄insert_frame_290►
◄strength_291.00►
◄insert_frame_300►
◄strength_301.00►
◄insert_frame_310►
◄strength_311.00►
◄insert_frame_320►
◄strength_321.00►
◄insert_frame_330►
◄strength_331.00►
◄insert_frame_340►
◄strength_341.00►
◄insert_frame_350►
◄strength_351.00►
◄insert_frame_360►
◄strength_361.00►
◄insert_frame_370►
◄strength_371.00►
◄insert_frame_380►
◄strength_381.00►
◄insert_frame_390►
◄strength_391.00►
◄insert_frame_400►
◄strength_401.00►
◄insert_frame_410►
◄strength_411.00►
◄insert_frame_420►
◄strength_421.00►
◄insert_frame_430►
◄strength_431.00►
◄insert_frame_440►
◄strength_441.00►
◄insert_frame_450►
◄strength_451.00►
◄insert_frame_460►
◄strength_461.00►
◄insert_frame_470►
◄strength_471.00►
◄insert_frame_480►
◄strength_481.00►
◄insert_frame_490►
◄strength_491.00►
◄insert_frame_500►
◄strength_501.00►

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.

CategoryIAMCCS/Cine/Legacy Compatibility

Inputs (104)

NameTypeDefaultDescription
vaeVAEVideo VAE used to encode the images
latentLATENTVideo latent to insert images into
multi_inputIMAGEBatched images from IAMCCS Cine Reference Board
num_imagesINT10–50Select how many index/strength widgets to configure.
insert_frame_1optINT0-9999–9999Frame insert_frame for image 1 in pixel space.
strength_1optFLOAT1.000–1Strength for image 1.
insert_frame_2optINT0-9999–9999Frame insert_frame for image 2 in pixel space.
strength_2optFLOAT1.000–1Strength for image 2.
insert_frame_3optINT0-9999–9999Frame insert_frame for image 3 in pixel space.
strength_3optFLOAT1.000–1Strength for image 3.
insert_frame_4optINT0-9999–9999Frame insert_frame for image 4 in pixel space.
strength_4optFLOAT1.000–1Strength for image 4.
insert_frame_5optINT0-9999–9999Frame insert_frame for image 5 in pixel space.
strength_5optFLOAT1.000–1Strength for image 5.
insert_frame_6optINT0-9999–9999Frame insert_frame for image 6 in pixel space.
strength_6optFLOAT1.000–1Strength for image 6.
insert_frame_7optINT0-9999–9999Frame insert_frame for image 7 in pixel space.
strength_7optFLOAT1.000–1Strength for image 7.
insert_frame_8optINT0-9999–9999Frame insert_frame for image 8 in pixel space.
strength_8optFLOAT1.000–1Strength for image 8.
insert_frame_9optINT0-9999–9999Frame insert_frame for image 9 in pixel space.
strength_9optFLOAT1.000–1Strength for image 9.
insert_frame_10optINT0-9999–9999Frame insert_frame for image 10 in pixel space.
strength_10optFLOAT1.000–1Strength for image 10.
insert_frame_11optINT0-9999–9999Frame insert_frame for image 11 in pixel space.
strength_11optFLOAT1.000–1Strength for image 11.
insert_frame_12optINT0-9999–9999Frame insert_frame for image 12 in pixel space.
strength_12optFLOAT1.000–1Strength for image 12.
insert_frame_13optINT0-9999–9999Frame insert_frame for image 13 in pixel space.
strength_13optFLOAT1.000–1Strength for image 13.
insert_frame_14optINT0-9999–9999Frame insert_frame for image 14 in pixel space.
strength_14optFLOAT1.000–1Strength for image 14.
insert_frame_15optINT0-9999–9999Frame insert_frame for image 15 in pixel space.
strength_15optFLOAT1.000–1Strength for image 15.
insert_frame_16optINT0-9999–9999Frame insert_frame for image 16 in pixel space.
strength_16optFLOAT1.000–1Strength for image 16.
insert_frame_17optINT0-9999–9999Frame insert_frame for image 17 in pixel space.
strength_17optFLOAT1.000–1Strength for image 17.
insert_frame_18optINT0-9999–9999Frame insert_frame for image 18 in pixel space.
strength_18optFLOAT1.000–1Strength for image 18.
insert_frame_19optINT0-9999–9999Frame insert_frame for image 19 in pixel space.
strength_19optFLOAT1.000–1Strength for image 19.
insert_frame_20optINT0-9999–9999Frame insert_frame for image 20 in pixel space.
strength_20optFLOAT1.000–1Strength for image 20.
insert_frame_21optINT0-9999–9999Frame insert_frame for image 21 in pixel space.
strength_21optFLOAT1.000–1Strength for image 21.
insert_frame_22optINT0-9999–9999Frame insert_frame for image 22 in pixel space.
strength_22optFLOAT1.000–1Strength for image 22.
insert_frame_23optINT0-9999–9999Frame insert_frame for image 23 in pixel space.
strength_23optFLOAT1.000–1Strength for image 23.
insert_frame_24optINT0-9999–9999Frame insert_frame for image 24 in pixel space.
strength_24optFLOAT1.000–1Strength for image 24.
insert_frame_25optINT0-9999–9999Frame insert_frame for image 25 in pixel space.
strength_25optFLOAT1.000–1Strength for image 25.
insert_frame_26optINT0-9999–9999Frame insert_frame for image 26 in pixel space.
strength_26optFLOAT1.000–1Strength for image 26.
insert_frame_27optINT0-9999–9999Frame insert_frame for image 27 in pixel space.
strength_27optFLOAT1.000–1Strength for image 27.
insert_frame_28optINT0-9999–9999Frame insert_frame for image 28 in pixel space.
strength_28optFLOAT1.000–1Strength for image 28.
insert_frame_29optINT0-9999–9999Frame insert_frame for image 29 in pixel space.
strength_29optFLOAT1.000–1Strength for image 29.
insert_frame_30optINT0-9999–9999Frame insert_frame for image 30 in pixel space.
strength_30optFLOAT1.000–1Strength for image 30.
insert_frame_31optINT0-9999–9999Frame insert_frame for image 31 in pixel space.
strength_31optFLOAT1.000–1Strength for image 31.
insert_frame_32optINT0-9999–9999Frame insert_frame for image 32 in pixel space.
strength_32optFLOAT1.000–1Strength for image 32.
insert_frame_33optINT0-9999–9999Frame insert_frame for image 33 in pixel space.
strength_33optFLOAT1.000–1Strength for image 33.
insert_frame_34optINT0-9999–9999Frame insert_frame for image 34 in pixel space.
strength_34optFLOAT1.000–1Strength for image 34.
insert_frame_35optINT0-9999–9999Frame insert_frame for image 35 in pixel space.
strength_35optFLOAT1.000–1Strength for image 35.
insert_frame_36optINT0-9999–9999Frame insert_frame for image 36 in pixel space.
strength_36optFLOAT1.000–1Strength for image 36.
insert_frame_37optINT0-9999–9999Frame insert_frame for image 37 in pixel space.
strength_37optFLOAT1.000–1Strength for image 37.
insert_frame_38optINT0-9999–9999Frame insert_frame for image 38 in pixel space.
strength_38optFLOAT1.000–1Strength for image 38.
insert_frame_39optINT0-9999–9999Frame insert_frame for image 39 in pixel space.
strength_39optFLOAT1.000–1Strength for image 39.
insert_frame_40optINT0-9999–9999Frame insert_frame for image 40 in pixel space.
strength_40optFLOAT1.000–1Strength for image 40.
insert_frame_41optINT0-9999–9999Frame insert_frame for image 41 in pixel space.
strength_41optFLOAT1.000–1Strength for image 41.
insert_frame_42optINT0-9999–9999Frame insert_frame for image 42 in pixel space.
strength_42optFLOAT1.000–1Strength for image 42.
insert_frame_43optINT0-9999–9999Frame insert_frame for image 43 in pixel space.
strength_43optFLOAT1.000–1Strength for image 43.
insert_frame_44optINT0-9999–9999Frame insert_frame for image 44 in pixel space.
strength_44optFLOAT1.000–1Strength for image 44.
insert_frame_45optINT0-9999–9999Frame insert_frame for image 45 in pixel space.
strength_45optFLOAT1.000–1Strength for image 45.
insert_frame_46optINT0-9999–9999Frame insert_frame for image 46 in pixel space.
strength_46optFLOAT1.000–1Strength for image 46.
insert_frame_47optINT0-9999–9999Frame insert_frame for image 47 in pixel space.
strength_47optFLOAT1.000–1Strength for image 47.
insert_frame_48optINT0-9999–9999Frame insert_frame for image 48 in pixel space.
strength_48optFLOAT1.000–1Strength for image 48.
insert_frame_49optINT0-9999–9999Frame insert_frame for image 49 in pixel space.
strength_49optFLOAT1.000–1Strength for image 49.
insert_frame_50optINT0-9999–9999Frame insert_frame for image 50 in pixel space.
strength_50optFLOAT1.000–1Strength for image 50.

Outputs (1)

NameTypeDescription
latentLATENTLatent with images inserted and noise mask updated.