DEV Community

LTX2.3 Long-Form MV: A For-Loop That Turns Six Images and One Song Into a Minute of Video

Generating a music video longer than a single LTX2.3 window means looping, and looping means solving the boring parts: slicing the audio per segment, walking image and prompt indices, and stitching without a visible cut.

This episode's graph does all of that in one 133-node workflow. The author reports a one-minute result from six images and one song.

Evidence note: one workflow JSON ships with the episode; its node graph and sampler settings are quoted below. Timing and capability claims are the author's, as reported in the video.

When to use it

  • You have a song and a set of consistent character images and want a music video, not a clip.
  • You want per-shot prompts and per-shot durations rather than one long prompt.
  • You can accept segment-level stitching instead of true single-pass generation.

What is different in this workflow

  • For-loop over segments: each loop walks an image index, a prompt index and an audio window; the author's slicing expression is b * a (segment seconds x index).
  • Audio is cut, not repeated: every pass renders 0-10s, 10-20s, 20-30s of the song.
  • Two prompt layers: a batch prompt list (one line per shot, six preset) feeding Prompt Relay, plus a global prompt.
  • Four render passes: base generation, 2x latent upscale, subtitle/watermark removal, final 2x upscale. The author says this will be simplified to three.
  • Motion control LoRA is wired in, so camera instructions in the global prompt actually bind.

Step by step

  • Load images: one image = one loop, three images = three loops. Per-image shot length is set below (the author uses 10 s).
  • Load the song with LoadAudio; the loop only renders as much as the audio allows.
  • Fill the batch prompt list, one line per shot; fill the global prompt for the whole piece.
  • To add shots, copy-paste an image input block and reconnect - indices increment automatically.
  • Run. Pass 1 generates, pass 2 doubles resolution, pass 3 strips burned subtitles, pass 4 doubles again.
  • If identity drifts, tighten the camera wording in the global prompt; the motion-control branch is always connected, so camera instructions always apply.

Parameter basis

  • Graph: ForεΎͺ环Ltx2.3ι•ΏMVθ‡ͺεŠ¨η”Ÿζˆε·₯作桁.json, 133 nodes.
  • Checkpoint: CheckpointLoaderSimple -> ltx-2.3-22b-dev-dare-ties-distilled-1.1.safetensors.
  • LoRAs: ltx-2.3-22b-ic-lora-motion-track-control-ref0.5.safetensors (1.0), LTX2.3_Crisp_Enhance.safetensors (1.0), Ltx2.3-Licon-VBVR-I2V-390K-R32.safetensors (1.0).
  • Samplers: KSamplerSelect values euler_ancestral_cfg_pp, euler_cfg_pp, euler_ancestral; CFGGuider CFG 1 on all four; SamplerCustomAdvanced with ManualSigmas lists, e.g. 1.0, 0.99375, 0.9875, 0.98125, 0.975, 0.909375, 0.725, 0.421875, 0.0 for the base pass and 0.85, 0.7250, 0.4219, 0.0 for the refinement passes.
  • Frame rate: 24 fps (author states 24 in the video).
  • Timing: per-shot 10 s; 6 shots ~ 1 minute.
  • Latent handling: LTXVConcatAVLatent / LTXVSeparateAVLatent per pass, SetLatentNoiseMask and SolidMask for the masked passes, LTXVLatentUpsampler for the doubles.

Limits

  • Segment stitching is not free: the author tested a 21:9 input and still calls identity slightly reduced - camera control is the countermeasure.
  • No first/last-frame loop: the author says LTX2.3's first/last loop is less smooth than his Wan2.1 version; no post-hoc video extension either, because it decays.
  • Longer than ~1 minute is a waiting game even with the loop.
  • Four render passes are heavy; the author himself calls the graph bloated.
  • Shot images were made with GPT Image 2 ("G2.0") in the demo; any consistent character images work.

Episode resources

Read on DEV Community ↗ ← Back to News

Comments

No comments yet. Start the discussion.