Sign In

Joy-LTX 2.5 — One Take or a Seamless Multishot, Picture and Sound in One Pass (ComfyUI)

Download

1 variant available

Archive Other

Joy-LTX_2.5_v1.0.0.zip

3.55 MB

Verified:

Type
Workflows
Stats

47

Reviews
Published

Aug 19, 2026

Base Model

LTXV 2.5

Hash
AutoV2
5E473216D6
default creator card background decoration
Followers - 149

149

Likes - 479

479

Downloads - 13767

13.8K

Silver Base model Badge

LTX Video 2.5 and its derivatives, including LoRAs and fine-tunes, are licensed by Lightricks Ltd. under the LTX-2.x Community License Agreement and must be redistributed under that same agreement, with a copy included. Use is subject to the use restrictions in its Attachment A. Entities with annual revenues of at least $10,000,000 must obtain a paid commercial license from Lightricks before any commercial use.

joyltx25_cover_square_1024.png

Write a premise. Get a finished clip back - picture and sound in one pass, as one take of any length or a multi-shot scene whose joins you cannot see, from a 16 GB card up.

Two ComfyUI canvases and the node pack for the Joy-LTX 2.5 models: JoyAI-Echo's acting on LTX-2.5's engine. LTX-2.5 renders picture and audio together, in one generation, for as long as the card's tokens last; a bundled writer turns your idea into the shot prompts the model wants; a planner sizes the render to your card; the multishot sampler joins shots so a two-minute scene costs the VRAM of one shot. No reference photo, no LoRA, no second pass of your own.

A 2-minute, four-shot bunker monologue rendered with the Multishot canvas was shown blind to a video-understanding model: one person, one voice, "a single continuous take, stable lighting", six seconds of dead air in two minutes. The joins measured below the clip's own frame-to-frame motion - the model did not find them either.

Guides

  • START HERE - every canvas has a note in the top-left that is the whole how-to: which box to type in, which panel to touch, what to leave alone. Read it once.

  • SETTINGS.md in the zip - every dial on every node, what it does and what breaks if you move it.

What this is

A node pack (ComfyUI-JoyLTX25) and two workflows that drive the Joy-LTX 2.5 models - LTX-2.5 with JoyAI-Echo's video attention / feed-forward delta transplanted in - through the stock LTX-2.5 sampling path: two passes (a draft at render size, a refine after a latent upscale), the LTX-2.5 VAEs, the Gemma-4 text encoder. The pack adds what the stock graph lacks: a planner that sizes the passes to your card, a multishot sampler with seamless joins and an identity anchor, keyframes and image folders, and a loader that takes .safetensors and .gguf alike. The writer that turns your premise into shot prompts ships in the same zip, with our writing rules inside.

Which canvas

  • JoyLTX25_Take - one prompt, one take, one generation. Type a scene idea; the writer writes the shot; MASTER CONTROLS sizes it. Optional lanes, each behind an on/off gate: start from a picture (I2V), end on a picture (an END keyframe at the last frame), or both. Up to 60 s in one generation on the 24 GB path (single pass, 960x544).

  • JoyLTX25_Multishot - one story, several shots, one video. The writer writes N shot prompts; the sampler renders each with the same two-pass pipeline and joins them. Same people in every shot without reference photos. Optional lanes: a start image for shot 1, and START / END frame folders - one image per shot, every shot opens and/or closes on its picture. VRAM stays at one shot however many shots you chain.

How the joins work

  • continue - the previous shot's last frames and its sound are pinned into the next shot as raw latents, through a noise mask, in both passes. Pinning the second pass is what made the joins invisible: with pass 1 pinned alone the join diffs measured 6-7x the clip's own motion; pinned in both passes they sit at or below motion (0.0007-0.002 vs 0.002-0.006 in the 2-minute tests). The regenerated head is trimmed on decode.

  • cut - only the sound is pinned. The voice carries across a picture cut; the picture follows the new shot prompt. Real reframes when the writer gives each shot a different action.

  • fresh - independent shots, one file.

How identity holds with no reference photos

identity_ref attaches a frame of shot 1 to the later shots as an in-context keyframe (appended tokens, cropped away after pass 1), at identity_strength. Measured on a four-shot diner scene at the same seed: without it, four different faces and four different rooms; with it at 0.3-0.9, the same two people and the same booth in every shot. The cost is composition: a t=0 keyframe also says where the camera is, so cuts only gives you faces across cuts with the framing locked to shot 1 unless the writer moves people around; START frame folders are how you get real angle changes with the same people. all shots also anchors a long continue-mode take: the model's texture drifts by roughly +40-60% across four 30-second shots on its own; at 0.6 the anchor holds it flat (measured 1.00 0.88 1.11 1.10 vs 1.00 1.23 1.42 1.59 unanchored).

Master controls, and the dials that matter

One panel: render size, take length (or seconds per shot), beat length for the writer, upscale, and an optional VRAM figure. Shipped defaults: 960x544, 8 s, auto.

  • upscale - auto picks x2 / x1.5 / none from your card and the token count and prints which; x2 / x1.5 / none force it (stream and wait if you like). none is the single-pass switch - the sampler's two-pass follows it. 8 s x2 or ~14 s x1.5 at 960x544 is the 24 GB comfort zone; 30 s single pass at 1280x736 fits 24 GB.

  • join must match the writer's join style: continue ↔ extend take, cut ↔ continuous scene with cuts. The START HERE note lists the pairs.

  • identity_strength - 0.3-0.6 keeps the people and lets the framing move; 1.0 copies the framing too. 0.5 for 8 s shots, 0.6 for 30 s shots when anchoring a long take.

  • Fewer, longer shots - 4 x 30 s fills time better than 8 x 8 s (the writer's per-shot budget scales: a 2-minute, four-shot take came back with 6 s of dead air; eight 8-second shots had about 10 s per minute).

  • video_cfg on the sampler is a grade dial: 1.0 is the distilled default; 0.7-0.85 pulls saturation and contrast toward stock LTX-2.5 at the cost of the negative pass (~1.7x time).

  • seed_per_shot - leave it on.

  • RTX 50: add --enable-triton-backend to your launch line for comfy-native files (about 2x faster). GGUF is unaffected.

Writing a premise

You write a premise, not a prompt. The writer writes the prompt, and its rules were each added after a specific failure: people talk in contractions; one beat per sentence; every sound named (LTX invents drones and music for anything left unsaid - "quiet room tone, a fridge hum, no music" is doing work); wardrobe and room stated every shot; dialogue sized to the shot length so speech is never crammed. Things that help from your side:

  • Say who is in frame and what they wear; say where the camera is ("static medium two-shot from the end of the table").

  • Say "American voice" if you want one - LTX drifts toward British otherwise.

  • For a long continue-mode take, ask for one continuous conversation, no cuts, and let the writer pace it; for cut mode, give every shot a different action so the cuts have somewhere to go.

  • A camera asked to "follow behind" a talking runner tends to end up in front of them - a talking character faces the lens; if you want a follow shot, have them face away and not talk to camera.

Quick fixes

  • Over-saturated, hard contrast, blown highlights - you have a v1 model file (names without -v2-). Those are withdrawn; download the v2 files below. The v2 files still sit a notch warmer than stock; video_cfg 0.7-0.85 brings them level.

  • The joins show - the writer's join style does not match the sampler's join (extend take ↔ continue). Or a 30-second-shot take without the anchor: set identity_ref to all shots, 0.6.

  • Dead air - longer shots; and write dialogue into the premise.

  • Validation error, the DiT name is "not in list" - pick your file in the loader's dropdown. The loader resolves a moved file by name when it is unique; it cannot invent one you have not downloaded.

  • LLM API error 404 / 503 - the writer's model_name is not pulled on the endpoint it points at, or a cloud model is overloaded; pick another tag you have.

  • Red or missing nodes - the writer pack or ComfyUI-GGUF is not installed (see Requirements). Everything else is this pack plus stock ComfyUI.

  • x1.5 upsampler crashes on partial load - the pack patches it at import; if you see BlurDownsample in a traceback, the pack did not load - check the console for [JoyLTX] lines.

The prompt writer needs a model you actually have

The canvases ship pointed at a local Ollama (http://localhost:11434/v1) with a cloud model tag in model_name. Pick a tag you have (ollama list), or any OpenAI-compatible endpoint in base_url. A hosted model writes better than anything that fits next to the video model; if you run the writer locally, turn on unload_model_after so it frees the card the moment the script is written. No LLM at all? Paste your own shot prompts into the sampler's prompts box, one per shot, separated by --- lines.

Requirements

  • Always: ComfyUI 0.32+ (native LTX-2.5), this pack, a Joy-LTX 2.5 DiT file, the LTX-2.5 video and audio VAEs, the Gemma-4 text encoder, the LTX-2.5 x2 latent upscaler.

  • The writer: writer_pack\ComfyUI_JoyAI_Echo_GGUF_Nodes\ from this zip (RealRebelAI's pack with our prompts bundled; the Manager copy does not have them).

  • GGUF files (RTX 30/40): ComfyUI-GGUF.

  • 24 GB cards, optional: ltx-2.3-spatial-upscaler-x1.5-1.0.safetensors from LTX-2.3, for the planner's x1.5 step (the pack patches its partial-load crash).

  1. Unzip. Copy ComfyUI-JoyLTX25\ into custom_nodes\ - or Manager → Install via Git URL → github.com/jlucasmcrell/ComfyUI-JoyLTX25.

  2. Copy writer_pack\ComfyUI_JoyAI_Echo_GGUF_Nodes\ into custom_nodes\.

  3. GGUF? Install ComfyUI-GGUF.

  4. Models (below). Restart ComfyUI.

  5. Open ComfyUI-JoyLTX25\workflows\JoyLTX25_Take.json or _Multishot.json, read START HERE, pick your file in the loader, Run.

Models

One DiT file by card, into models\diffusion_models\. All on Hugging Face - GGUF for RTX 30/40 (4-8x faster there than any 4-bit comfy-native file), comfy-native for RTX 50 - and on Civitai as Joy-LTX 2.5, versions by VRAM tier. 070T30 is the default dose; 100T50 (same names) is livelier and a touch hotter.

  • 16 GB: LTX25dist-echoVid-070T30-v2-DiT-Q4_K_S.gguf (RTX 30/40) or ...-comfy-w4a8.safetensors (RTX 50). 12 GB: ...-Q3_K_M.gguf.

  • 24 GB: LTX25dist-echoVid-070T30-v2-DiT-Q5_K_M.gguf (the default) or ...-comfy-mix4x8-17.0GB.safetensors.

  • 32 GB: LTX25dist-echoVid-070T30-v2-DiT-comfy-int8.safetensors (fastest on RTX 50) or ...-Q8_0.gguf.

  • Want to apply your own distilled LoRA at your own strength? The plain DEV merges (also on Civitai as Joy-LTX 2.5 DEV merges): drop a Load LoRA (model only) after the loader.

Also needed (Lightricks/LTX-2.5): ltx-2.5-video-vae-bf16 + ltx-2.5-audio-vae-bf16models\vae\; ltx-2.5-latent-spatial-upscaler-x2-bf16-1.0models\latent_upscale_models\; text encoder gemma4-12b-with-proj-ltx-2.5-comfy-int8-convrotmodels\text_encoders\ (16 GB cards: the 10.6 GB gemma4-12b-ltx25-comfy-w4a8 from LTX-2.5-Quantized).

What is verified, and what is not

  • Verified: both canvases rendered end to end from the shipped files on a 5090 and a 3090 (T2V, I2V, END keyframe, multishot continue / cut, start and end frame folders); every quantisation in the repos rendered (Q2_K through Q8_0, int8 / w4a8 / w4a4 / nvfp4 / mixed); a 2-minute 4 x 30 s continue take and a 6 x 20 s cut sequence reviewed blind; joins measured below motion; identity held at 0.3-0.9 on a four-shot cut scene; a 60 s single take at 960x544.

  • Known: the v2 files render a notch warmer than stock LTX-2.5 (saturation tracks stock, contrast +7-30% on the same seed); a 30-second-shot continue take softens skin over the shots without the anchor; cut mode with the identity anchor locks framing to shot 1 unless the shots differ in action; LTX reads a talking runner as a selfie. Speed: 8 s at 960x544 two-pass, ~2 min on a 5090 (int8), ~7 min on a 3090 (Q5_K_M); 30 s single pass at 1280x736, 5 / 17 min; a 4 x 30 s take ~40 min on a 3090.

  • Not claimed: lip-sync scores. Two video-understanding reviewers scored the merge and stock LTX-2.5 within noise of each other on an 8 s talking head; what the merge adds is visible in the acting, not reliably in a reviewer's number.

Credits

JoyAI-Echo by JD (jdopensource/JoyAI-Echo). LTX-2.5 by Lightricks. Writer pack by RealRebelAI (ComfyUI_JoyAI_Echo_GGUF_Nodes), with our prompts bundled and attributed. Nodes, canvases and the merge by me. Licensed under the LTX-2.x Community License (inherited from both parents). Questions: comment here or open an issue on GitHub - I answer.