π Latent Cross Fade Auto Concat
Stitch two video clips in latent space without a visible seam
- frames_0
- frames_1
- latent
LTX is a seconds-per-clip model, and the classic workaround for longer narratives is to generate a few clips and stitch them. The naive approach - decode both, crossfade in pixel space - works but forces the VAE round-trip and can smear. LatentCrossFadeAutoConcat does the joining before decoding, on the 5D latent tensors, and smooths the boundary with a proper crossfade so you don't get a hard cut between two independently-sampled videos.
It's a small, no-fuss node. Two latents in (frames_0, frames_1), one latent out.
What it does under the hood
The "auto" in the name is doing real work: it checks the two latents' spatial dimensions and, if match_spatial is on (default True), resizes the second clip to match the first using interpolate_mode (nearest-exact default, or bilinear/bicubic). LTX's latent space is 32Γ compressed spatially, so a mismatch in H/W is common when the two clips came from differently-sized requests.
Then it concatenates along the temporal (frame) axis. If cross_fade_frames is above 0 (default 6), the tail of clip A and head of clip B get blended over that many frames with the chosen fade_curve (linear, ease_in, ease_out, ease_in_out). The fade happens in latent space, which is exactly where you want it - a smooth latent-space transition decodes to a smooth video transition, with no double-decode artifacts.
When you'd reach for it
- Joining two i2v clips into a longer take (LTX's practical clip length is ~10-12 seconds before quality sags; stitch two short ones instead of pushing one long one).
- Connecting a T2V intro clip to an i2v main clip - resize handles the resolution jump automatically.
- Building a multi-shot edit where you plan to upscale the joined latent in one pass afterward.
The honest limitation: latent-space concat assumes both clips live in roughly the same visual world. Two clips from wildly different seeds/prompts will still show a content jump at the boundary - the fade just makes it a smooth jump instead of a hard one. For true semantic continuity you want a model with cross-shot memory (the JoyAI-Echo family this pack orbits); this node is the plumbing around it.
The few inputs that matter
cross_fade_frames- the overlap length. 6 is a good default; go higher (10-12) for slow, cinematic transitions, lower for punchy cuts.match_spatial- leave on unless you've already matched resolutions yourself.fade_curve-ease_in_outfeels most natural for slow fades;linearis fine for short ones.
Output is a standard LATENT you can feed straight to a VAE decode, another temporal op, or a sampler for a light refinement pass. No install drama beyond the pack itself - clone 10S_Nodes into custom_nodes, restart (or ComfyUI Manager β "10S-Comfy-nodes"). This one isn't LTX2-specific in the same way the hook-based nodes are, but it's tuned for LTX's 5D latent layout, so keep it in that lane.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| frames_0 | LATENT | β | |
| frames_1 | LATENT | β | |
| match_spatialopt | BOOLEAN | true | β |
| interpolate_modeopt | COMBO | nearest-exact | 3 options: nearest-exact, bilinear, bicubic |
| cross_fade_framesopt | INT | 60β24 | β |
| fade_curveopt | COMBO | linear | 4 options: linear, ease_in, ease_out, ease_in_out |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| latent | LATENT | β |