ComfyUI Node
JoyLTX Multishot Sampler (LTX-2.5, AV-extend joins)
Runs the LTX-2.5 two-pass pipeline once per shot and joins the shots with an AV-extend (previous tail pinned as raw latents), so a take can be as long as you like and a cut keeps the voice.
JoyLTX Multishot Sampler (LTX-2.5, AV-extend joins)
- model
- clip
- video_vae
- audio_vae
- upscale_model
- start_image
- shot_images
- end_images
- ref_images
- images
- audio
- info
◄prompts►
◄negativepc game, console game, video game, cartoon, childish, ugly►
◄width960►
◄height544►
◄frames_per_shot193►
◄shot_count0►
◄joincontinue (AV extend: seamless take)►
◄overlap3►
◄seed553010►
◄seed_per_shottrue►
◄sampler_nameeuler_ancestral►
◄sigmas_pass11.0, 0.99375, 0.9875, 0.98125, 0.975, 0.909375, 0.725, 0.421875, 0.0►
◄two_passtrue►
◄sigmas_pass20.85, 0.7250, 0.4219, 0.0►
◄video_cfg1.00►
◄audio_cfg1.00►
◄frame_rate24►
◄save_every_shotfalse►
◄identity_refcuts only: frame from shot 1►
◄identity_strength0.60►
◄image_strength1.00►
◄keyframe_strength0.80►
◄ref_mask►
◄ref_strength0.85►
CategoryJoyLTX
Inputs (33)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| clip | CLIP | — | |
| video_vae | VAE | — | |
| audio_vae | VAE | — | |
| prompts | STRING | The writer's shot prompts: {"prompts": [...]} JSON or blocks separated by --- (wire the writer here, or paste your own). | |
| negative | STRING | pc game, console game, video game, cartoon, childish, ugly | — |
| width | INT | 960256–1920 | — |
| height | INT | 544256–1920 | — |
| frames_per_shot | INT | 19325–1441 | 8n+1 frames per shot at 24 fps (193 = 8 s). |
| shot_count | INT | 00–64 | 0 = every prompt the writer produced; N = the first N. |
| join | COMBO | continue (AV extend: seamless take) | 3 options: continue (AV extend: seamless take), cut (voice extends, new picture), fresh (independent shots) |
| overlap | INT | 31–12 | Latent frames of the previous shot pinned at the head of the next one (3 = 17 pixel frames = 0.7 s). More = smoother join, less new content per shot. |
| seed | INT | 5530100–18446744073709550000 | — |
| seed_per_shot | BOOLEAN | true | — |
| sampler_name | COMBO | euler_ancestral | 44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38 |
| sigmas_pass1 | STRING | 1.0, 0.99375, 0.9875, 0.98125, 0.975, 0.909375, 0.725, 0.421875, 0.0 | distilled 8-step schedule |
| two_pass | BOOLEAN | true | Upscale each shot with the latent upsampler and refine (needs upscale_model). |
| sigmas_pass2 | STRING | 0.85, 0.7250, 0.4219, 0.0 | — |
| video_cfg | FLOAT | 1.000–20 | — |
| audio_cfg | FLOAT | 1.000–20 | — |
| frame_rate | FLOAT | 2412–60 | — |
| save_every_shot | BOOLEAN | false | Also write each shot (untrimmed) as output/video/LTX_SHOTS/shot_*.mp4 |
| identity_ref | COMBO | cuts only: frame from shot 1 | Keep the SAME people across shots without reference images: a frame of shot 1 (or the previous shot's last frame) is attached to every later shot as an in-context keyframe reference (LTX-2.5 AddGuide, appended tokens, cropped after sampling). 'cuts only' = cut/fresh modes; 'all shots' = also in continue mode (anchors the look to shot 1, which also fights slow texture drift on long takes). |
| identity_strength | FLOAT | 0.600–1 | How hard the reference pulls (attention weight of the appended keyframe). 0.4-0.7: same face/clothes/room, free composition; 1.0: near first-frame copy. |
| upscale_modelopt | LATENT_UPSCALE_MODEL | — | |
| start_imageopt | IMAGE | First frame of shot 1 (image-to-video). | |
| shot_imagesopt | IMAGE | One image per shot (batch); used as the first frame of each shot in cut/fresh mode (identity carry from your reference plates). | |
| image_strengthopt | FLOAT | 1.000–1 | — |
| end_imagesopt | IMAGE | One image per shot = keyframe at that shot's LAST frame (first->last-frame shots when combined with shot_images / identity). | |
| keyframe_strengthopt | FLOAT | 0.800–1 | How hard the end keyframes pull. |
| ref_imagesopt | IMAGE | One REFERENCE PHOTO per shot (from JoyLTX Refs by Name, or any batch): attached to that shot as an in-context keyframe at frame 0 (appended tokens, cropped after pass 1) so the person in the photo is the person in the shot. Replaces the frame-of-shot-1 identity for shots that have a photo. | |
| ref_maskopt | STRING | Comma list, one token per shot from Refs by Name: the CHARACTER NAME of that shot ('-' = none). With names, the sampler locks each character to their own first rendered frame (visual lock) and their own audio tail (voice lock) in later shots. 1/0 also accepted (photo / no photo). | |
| ref_strengthopt | FLOAT | 0.850–1 | How hard a reference photo pulls (measured on one seed, 0.5/0.75/0.9/1.0). Below ~0.75 you get the hair and the clothes but a different face; 0.85-0.9 carries the face and the small things like glasses; 1.0 drags the photo's own room into the shot. Note the photograph does NOT carry age - the prompt has to say it. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| audio | AUDIO | — |
| info | STRING | — |