ComfyUI Node

LTX Sequencer

The node that put your first/last frames on a timeline

By WhatDreamsCost·Created 7 months ago·Updated 2 months ago· 2,074
LTX Sequencer
  • positive
  • negative
  • vae
  • latent
  • multi_input
  • positive
  • negative
  • latent
◄num_images1►
◄insert_modeframes►
◄frame_rate24►
◄insert_frame_10►
◄insert_second_10.0►
◄strength_11.00►
◄insert_frame_20►
◄insert_second_20.0►
◄strength_21.00►
◄insert_frame_30►
◄insert_second_30.0►
◄strength_31.00►
◄insert_frame_40►
◄insert_second_40.0►
◄strength_41.00►
◄insert_frame_50►
◄insert_second_50.0►
◄strength_51.00►
◄insert_frame_60►
◄insert_second_60.0►
◄strength_61.00►
◄insert_frame_70►
◄insert_second_70.0►
◄strength_71.00►
◄insert_frame_80►
◄insert_second_80.0►
◄strength_81.00►
◄insert_frame_90►
◄insert_second_90.0►
◄strength_91.00►
◄insert_frame_100►
◄insert_second_100.0►
◄strength_101.00►
◄insert_frame_110►
◄insert_second_110.0►
◄strength_111.00►
◄insert_frame_120►
◄insert_second_120.0►
◄strength_121.00►
◄insert_frame_130►
◄insert_second_130.0►
◄strength_131.00►
◄insert_frame_140►
◄insert_second_140.0►
◄strength_141.00►
◄insert_frame_150►
◄insert_second_150.0►
◄strength_151.00►
◄insert_frame_160►
◄insert_second_160.0►
◄strength_161.00►
◄insert_frame_170►
◄insert_second_170.0►
◄strength_171.00►
◄insert_frame_180►
◄insert_second_180.0►
◄strength_181.00►
◄insert_frame_190►
◄insert_second_190.0►
◄strength_191.00►
◄insert_frame_200►
◄insert_second_200.0►
◄strength_201.00►
◄insert_frame_210►
◄insert_second_210.0►
◄strength_211.00►
◄insert_frame_220►
◄insert_second_220.0►
◄strength_221.00►
◄insert_frame_230►
◄insert_second_230.0►
◄strength_231.00►
◄insert_frame_240►
◄insert_second_240.0►
◄strength_241.00►
◄insert_frame_250►
◄insert_second_250.0►
◄strength_251.00►
◄insert_frame_260►
◄insert_second_260.0►
◄strength_261.00►
◄insert_frame_270►
◄insert_second_270.0►
◄strength_271.00►
◄insert_frame_280►
◄insert_second_280.0►
◄strength_281.00►
◄insert_frame_290►
◄insert_second_290.0►
◄strength_291.00►
◄insert_frame_300►
◄insert_second_300.0►
◄strength_301.00►
◄insert_frame_310►
◄insert_second_310.0►
◄strength_311.00►
◄insert_frame_320►
◄insert_second_320.0►
◄strength_321.00►
◄insert_frame_330►
◄insert_second_330.0►
◄strength_331.00►
◄insert_frame_340►
◄insert_second_340.0►
◄strength_341.00►
◄insert_frame_350►
◄insert_second_350.0►
◄strength_351.00►
◄insert_frame_360►
◄insert_second_360.0►
◄strength_361.00►
◄insert_frame_370►
◄insert_second_370.0►
◄strength_371.00►
◄insert_frame_380►
◄insert_second_380.0►
◄strength_381.00►
◄insert_frame_390►
◄insert_second_390.0►
◄strength_391.00►
◄insert_frame_400►
◄insert_second_400.0►
◄strength_401.00►
◄insert_frame_410►
◄insert_second_410.0►
◄strength_411.00►
◄insert_frame_420►
◄insert_second_420.0►
◄strength_421.00►
◄insert_frame_430►
◄insert_second_430.0►
◄strength_431.00►
◄insert_frame_440►
◄insert_second_440.0►
◄strength_441.00►
◄insert_frame_450►
◄insert_second_450.0►
◄strength_451.00►
◄insert_frame_460►
◄insert_second_460.0►
◄strength_461.00►
◄insert_frame_470►
◄insert_second_470.0►
◄strength_471.00►
◄insert_frame_480►
◄insert_second_480.0►
◄strength_481.00►
◄insert_frame_490►
◄insert_second_490.0►
◄strength_491.00►
◄insert_frame_500►
◄insert_second_500.0►
◄strength_501.00►

LTX Sequencer is where the WhatDreamsCost pack started getting serious. Before LTX Director came along and ate its lunch, the Sequencer was the go-to way to build first-frame/last-frame (FFLF) videos and multi-keyframe shot sequences in LTX - and it's still the node the author points to when he says "use this instead of LTX Keyframer." Think of it as Keyframer plus the parts that were missing: it injects your guide images into the latent and appends the matching keyframe info to your conditioning, so you're not wiring two nodes to do one job.

It's an overhaul of ComfyUI's stock LTXVAddGuideMulti node, which tells you both what it does and where it sits in the LTX world. LTX is a first/middle/last-frame conditioning model - you anchor certain frames with images and it hallucinates the motion between them. The Sequencer is the cleanest stock-adjacent way to do that with any number of anchors.

How it works

Mechanically it's a subclass of ComfyUI's LTXVAddGuide, and the source reads like a well-behaved version of it: for each image in your batch it VAE-encodes the frame, works out which latent frame it lands on (converting pixel-space positions through the VAE's scale factors), and calls append_keyframe - which writes the encoded guide into the latent, updates the noise mask, and appends guide info to both positive and negative conditioning. Images beyond the batch size are skipped cleanly.

The thing it adds over Keyframer is an insert_mode. Set it to frames and each image gets an insert_frame_N (pixel space, negatives index from the end). Set it to seconds and you get insert_second_N instead, converted to frames using the frame_rate input - which is what you want when you're thinking "image B should land two seconds in," not "at frame 48." A num_images counter (up to 50) decides how many of those per-image widget pairs you actually see.

There's also a sync feature: multiple Sequencer nodes on a canvas can be synced so editing one updates all of them in real time - genuinely useful when you're iterating a shot list.

Inputs that matter

  • positive / negative / vae / latent - the conditioning pair, the video VAE, and the latent to extend.
  • multi_input - batched images, typically from the pack's Multi Image Loader, which auto-populates the widget list.
  • insert_mode - frames or seconds. This is the toggle to learn.
  • Per image: insert_frame_N / insert_second_N and strength_N (0–1).

Outputs

positive, negative, and latent - the latent has the guides baked in and a matching noise mask, and the conditioning carries the keyframe info. All three go into the sampler, with the latent coming from whatever empty-video-latent node you're using.

Install

Standard for the pack:

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

Or search WhatDreamsCost in ComfyUI Manager, install, restart. No model downloads, no extra deps - it leans on ComfyUI's own LTX extras (comfy_extras.nodes_lt). Pair it with current ComfyUI-LTXVideo nodes for LTX 2.3.

Gotchas

The one failure mode you'll actually hit: "Conditioning frames exceed the length of the latent sequence." That's an assert from the underlying LTXVAddGuide, and it means one of your insert frames (or the encoded guide's length) overruns the latent you fed in. Make your empty latent long enough to cover the last keyframe. And if you're starting fresh with LTX 2.3, know that Director supersedes this node for new projects - Sequencer is the right tool when you want stock-node simplicity without a full timeline editor in the middle of your graph.

CategoryWhatDreamsCost

Inputs (158)

NameTypeDefaultDescription
positiveCONDITIONINGPositive conditioning to which guide keyframe info will be added
negativeCONDITIONINGNegative conditioning to which guide keyframe info will be added
vaeVAEVideo VAE used to encode the guide images
latentLATENTVideo latent, guides are added to the end of this latent
multi_inputIMAGEBatched images from MultiImageLoader
num_imagesINT10–50Select how many index/strength widgets to configure.
insert_modeCOMBOframesSelect the method for determining insertion points.
frame_rateINT241–120Video FPS (used for calculating second insertions).
insert_frame_1optINT0-9999–9999Frame insert point for image 1 (in pixel space).
insert_second_1optFLOAT0.00–9999Second insert point for image 1.
strength_1optFLOAT1.000–1Strength for image 1.
insert_frame_2optINT0-9999–9999Frame insert point for image 2 (in pixel space).
insert_second_2optFLOAT0.00–9999Second insert point for image 2.
strength_2optFLOAT1.000–1Strength for image 2.
insert_frame_3optINT0-9999–9999Frame insert point for image 3 (in pixel space).
insert_second_3optFLOAT0.00–9999Second insert point for image 3.
strength_3optFLOAT1.000–1Strength for image 3.
insert_frame_4optINT0-9999–9999Frame insert point for image 4 (in pixel space).
insert_second_4optFLOAT0.00–9999Second insert point for image 4.
strength_4optFLOAT1.000–1Strength for image 4.
insert_frame_5optINT0-9999–9999Frame insert point for image 5 (in pixel space).
insert_second_5optFLOAT0.00–9999Second insert point for image 5.
strength_5optFLOAT1.000–1Strength for image 5.
insert_frame_6optINT0-9999–9999Frame insert point for image 6 (in pixel space).
insert_second_6optFLOAT0.00–9999Second insert point for image 6.
strength_6optFLOAT1.000–1Strength for image 6.
insert_frame_7optINT0-9999–9999Frame insert point for image 7 (in pixel space).
insert_second_7optFLOAT0.00–9999Second insert point for image 7.
strength_7optFLOAT1.000–1Strength for image 7.
insert_frame_8optINT0-9999–9999Frame insert point for image 8 (in pixel space).
insert_second_8optFLOAT0.00–9999Second insert point for image 8.
strength_8optFLOAT1.000–1Strength for image 8.
insert_frame_9optINT0-9999–9999Frame insert point for image 9 (in pixel space).
insert_second_9optFLOAT0.00–9999Second insert point for image 9.
strength_9optFLOAT1.000–1Strength for image 9.
insert_frame_10optINT0-9999–9999Frame insert point for image 10 (in pixel space).
insert_second_10optFLOAT0.00–9999Second insert point for image 10.
strength_10optFLOAT1.000–1Strength for image 10.
insert_frame_11optINT0-9999–9999Frame insert point for image 11 (in pixel space).
insert_second_11optFLOAT0.00–9999Second insert point for image 11.
strength_11optFLOAT1.000–1Strength for image 11.
insert_frame_12optINT0-9999–9999Frame insert point for image 12 (in pixel space).
insert_second_12optFLOAT0.00–9999Second insert point for image 12.
strength_12optFLOAT1.000–1Strength for image 12.
insert_frame_13optINT0-9999–9999Frame insert point for image 13 (in pixel space).
insert_second_13optFLOAT0.00–9999Second insert point for image 13.
strength_13optFLOAT1.000–1Strength for image 13.
insert_frame_14optINT0-9999–9999Frame insert point for image 14 (in pixel space).
insert_second_14optFLOAT0.00–9999Second insert point for image 14.
strength_14optFLOAT1.000–1Strength for image 14.
insert_frame_15optINT0-9999–9999Frame insert point for image 15 (in pixel space).
insert_second_15optFLOAT0.00–9999Second insert point for image 15.
strength_15optFLOAT1.000–1Strength for image 15.
insert_frame_16optINT0-9999–9999Frame insert point for image 16 (in pixel space).
insert_second_16optFLOAT0.00–9999Second insert point for image 16.
strength_16optFLOAT1.000–1Strength for image 16.
insert_frame_17optINT0-9999–9999Frame insert point for image 17 (in pixel space).
insert_second_17optFLOAT0.00–9999Second insert point for image 17.
strength_17optFLOAT1.000–1Strength for image 17.
insert_frame_18optINT0-9999–9999Frame insert point for image 18 (in pixel space).
insert_second_18optFLOAT0.00–9999Second insert point for image 18.
strength_18optFLOAT1.000–1Strength for image 18.
insert_frame_19optINT0-9999–9999Frame insert point for image 19 (in pixel space).
insert_second_19optFLOAT0.00–9999Second insert point for image 19.
strength_19optFLOAT1.000–1Strength for image 19.
insert_frame_20optINT0-9999–9999Frame insert point for image 20 (in pixel space).
insert_second_20optFLOAT0.00–9999Second insert point for image 20.
strength_20optFLOAT1.000–1Strength for image 20.
insert_frame_21optINT0-9999–9999Frame insert point for image 21 (in pixel space).
insert_second_21optFLOAT0.00–9999Second insert point for image 21.
strength_21optFLOAT1.000–1Strength for image 21.
insert_frame_22optINT0-9999–9999Frame insert point for image 22 (in pixel space).
insert_second_22optFLOAT0.00–9999Second insert point for image 22.
strength_22optFLOAT1.000–1Strength for image 22.
insert_frame_23optINT0-9999–9999Frame insert point for image 23 (in pixel space).
insert_second_23optFLOAT0.00–9999Second insert point for image 23.
strength_23optFLOAT1.000–1Strength for image 23.
insert_frame_24optINT0-9999–9999Frame insert point for image 24 (in pixel space).
insert_second_24optFLOAT0.00–9999Second insert point for image 24.
strength_24optFLOAT1.000–1Strength for image 24.
insert_frame_25optINT0-9999–9999Frame insert point for image 25 (in pixel space).
insert_second_25optFLOAT0.00–9999Second insert point for image 25.
strength_25optFLOAT1.000–1Strength for image 25.
insert_frame_26optINT0-9999–9999Frame insert point for image 26 (in pixel space).
insert_second_26optFLOAT0.00–9999Second insert point for image 26.
strength_26optFLOAT1.000–1Strength for image 26.
insert_frame_27optINT0-9999–9999Frame insert point for image 27 (in pixel space).
insert_second_27optFLOAT0.00–9999Second insert point for image 27.
strength_27optFLOAT1.000–1Strength for image 27.
insert_frame_28optINT0-9999–9999Frame insert point for image 28 (in pixel space).
insert_second_28optFLOAT0.00–9999Second insert point for image 28.
strength_28optFLOAT1.000–1Strength for image 28.
insert_frame_29optINT0-9999–9999Frame insert point for image 29 (in pixel space).
insert_second_29optFLOAT0.00–9999Second insert point for image 29.
strength_29optFLOAT1.000–1Strength for image 29.
insert_frame_30optINT0-9999–9999Frame insert point for image 30 (in pixel space).
insert_second_30optFLOAT0.00–9999Second insert point for image 30.
strength_30optFLOAT1.000–1Strength for image 30.
insert_frame_31optINT0-9999–9999Frame insert point for image 31 (in pixel space).
insert_second_31optFLOAT0.00–9999Second insert point for image 31.
strength_31optFLOAT1.000–1Strength for image 31.
insert_frame_32optINT0-9999–9999Frame insert point for image 32 (in pixel space).
insert_second_32optFLOAT0.00–9999Second insert point for image 32.
strength_32optFLOAT1.000–1Strength for image 32.
insert_frame_33optINT0-9999–9999Frame insert point for image 33 (in pixel space).
insert_second_33optFLOAT0.00–9999Second insert point for image 33.
strength_33optFLOAT1.000–1Strength for image 33.
insert_frame_34optINT0-9999–9999Frame insert point for image 34 (in pixel space).
insert_second_34optFLOAT0.00–9999Second insert point for image 34.
strength_34optFLOAT1.000–1Strength for image 34.
insert_frame_35optINT0-9999–9999Frame insert point for image 35 (in pixel space).
insert_second_35optFLOAT0.00–9999Second insert point for image 35.
strength_35optFLOAT1.000–1Strength for image 35.
insert_frame_36optINT0-9999–9999Frame insert point for image 36 (in pixel space).
insert_second_36optFLOAT0.00–9999Second insert point for image 36.
strength_36optFLOAT1.000–1Strength for image 36.
insert_frame_37optINT0-9999–9999Frame insert point for image 37 (in pixel space).
insert_second_37optFLOAT0.00–9999Second insert point for image 37.
strength_37optFLOAT1.000–1Strength for image 37.
insert_frame_38optINT0-9999–9999Frame insert point for image 38 (in pixel space).
insert_second_38optFLOAT0.00–9999Second insert point for image 38.
strength_38optFLOAT1.000–1Strength for image 38.
insert_frame_39optINT0-9999–9999Frame insert point for image 39 (in pixel space).
insert_second_39optFLOAT0.00–9999Second insert point for image 39.
strength_39optFLOAT1.000–1Strength for image 39.
insert_frame_40optINT0-9999–9999Frame insert point for image 40 (in pixel space).
insert_second_40optFLOAT0.00–9999Second insert point for image 40.
strength_40optFLOAT1.000–1Strength for image 40.
insert_frame_41optINT0-9999–9999Frame insert point for image 41 (in pixel space).
insert_second_41optFLOAT0.00–9999Second insert point for image 41.
strength_41optFLOAT1.000–1Strength for image 41.
insert_frame_42optINT0-9999–9999Frame insert point for image 42 (in pixel space).
insert_second_42optFLOAT0.00–9999Second insert point for image 42.
strength_42optFLOAT1.000–1Strength for image 42.
insert_frame_43optINT0-9999–9999Frame insert point for image 43 (in pixel space).
insert_second_43optFLOAT0.00–9999Second insert point for image 43.
strength_43optFLOAT1.000–1Strength for image 43.
insert_frame_44optINT0-9999–9999Frame insert point for image 44 (in pixel space).
insert_second_44optFLOAT0.00–9999Second insert point for image 44.
strength_44optFLOAT1.000–1Strength for image 44.
insert_frame_45optINT0-9999–9999Frame insert point for image 45 (in pixel space).
insert_second_45optFLOAT0.00–9999Second insert point for image 45.
strength_45optFLOAT1.000–1Strength for image 45.
insert_frame_46optINT0-9999–9999Frame insert point for image 46 (in pixel space).
insert_second_46optFLOAT0.00–9999Second insert point for image 46.
strength_46optFLOAT1.000–1Strength for image 46.
insert_frame_47optINT0-9999–9999Frame insert point for image 47 (in pixel space).
insert_second_47optFLOAT0.00–9999Second insert point for image 47.
strength_47optFLOAT1.000–1Strength for image 47.
insert_frame_48optINT0-9999–9999Frame insert point for image 48 (in pixel space).
insert_second_48optFLOAT0.00–9999Second insert point for image 48.
strength_48optFLOAT1.000–1Strength for image 48.
insert_frame_49optINT0-9999–9999Frame insert point for image 49 (in pixel space).
insert_second_49optFLOAT0.00–9999Second insert point for image 49.
strength_49optFLOAT1.000–1Strength for image 49.
insert_frame_50optINT0-9999–9999Frame insert point for image 50 (in pixel space).
insert_second_50optFLOAT0.00–9999Second insert point for image 50.
strength_50optFLOAT1.000–1Strength for image 50.

Outputs (3)

NameTypeDescription
positiveCONDITIONING—
negativeCONDITIONING—
latentLATENTVideo latent with added guides