LTX MultiTrack Encode
The LTX Node That Does Four Jobs So Your Graph Doesn't Have To
- model
- clip
- audio_vae
- audio
- model
- positive
- negative
- video_latent
- audio_latent
LTX-2 changed the game: audio and video, one model
Here's the thing about LTX-2 (and 2.3): it isn't a video model with audio bolted on. The same DiT samples the video and the audio latents together, which is why it became the local pick for lipsync and music-video work. But that also means a working LTX-2 graph needs four things built before you can sample - a prompt-conditioned model, a video latent, an audio latent, and the conditioning to drive both. In a stock ComfyUI graph that's four or five nodes of wiring. This node collapses them into one.
easy ltxMultiTrackEncode builds the full kit in a single shot: it creates the empty (or audio-loaded) LTX video latent, encodes your audio track into the audio latent, and produces the positive/negative conditioning - including Prompt Relay conditioning, the segment-wise prompt system the pack borrowed from kijai's ComfyUI-PromptRelay.
How it works
The source reads like a checklist of core LTX nodes being called in the right order:
- Empty video latent via
EmptyLTXVLatentVideoat your width/height (halved ifhalf_latent_sizeis on, which is the LTX-2 way of working). - Audio: if you connect
audio, it merges the valid tracks, encodes them withLTXVAudioVAEEncodethrough youraudio_vae, and sets a solid noise mask so the sampler knows where audio lives. No audio →LTXVEmptyLatentAudiogives you a silent latent. - Prompt Relay:
_encode_relaypatches the model and encodesglobal_prompt+local_promptinto conditioning; negative is the zeroed-out positive (the flow-matching convention). LTXVConditioningpins the frame rate onto the conditioning.
The model comes back patched for relay-style conditioning, which is why the model output matters as much as the latents.
The inputs that matter
model,clip,audio_vae- all required. Noteaudio_vaeis mandatory even when you have no audio; it's how the node builds the silent latent.audio- optional. Connect a track and it becomes the audio latent.local_prompt/global_prompt- the Prompt Relay pair. Local is per-segment detail, global is the scene-wide description. If you don't know which is which, treat global as the master prompt and local as the accent.width/height(512),frame_rate(24),video_length(73) - generation geometry.video_lengthsteps by 8.half_latent_size(true) - LTX-2 renders internally at half resolution and upscales; leave it on unless you know why you'd turn it off.epsilon(0.001) - a relay detail; leave it alone until you're deep in Prompt Relay tuning.
Outputs: model (patched), positive, negative, video_latent, audio_latent - everything the sampler needs.
Wire it up and what goes wrong
This node pairs with the pack's easy ltxSamplerSimple - that's the sampler that takes these five outputs (minus model) and actually denoises the combined audio+video latents. It also plays perfectly with the pack's MultiTrack/Timeline editors, which feed it per-segment prompts and audio.
Practical traps:
- Missing
audio_vaeis the #1 error - it's a required input even on a silent generation, and people used to "VAE only for images" forget it. - Silence isn't failure. If you connect no audio, the audio latent is empty and your video is mute - that's correct behavior for a T2V/I2V run, not a bug.
- Width/height don't match the latent.
half_latent_sizehalves them internally; if you also half them yourself in your head, you'll double-divide. Let the node do the math.
It's the load-bearing node of the pack's whole LTX story, and once you've used it, the stock four-node dance feels like a museum exhibit.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| clip | CLIP | — | |
| audio_vae | VAE | — | |
| local_prompt | STRING | — | |
| global_prompt | STRING | — | |
| epsilon | FLOAT | 0.0010–100 | — |
| width | INT | 51264–16384 | — |
| height | INT | 51264–16384 | — |
| frame_rate | FLOAT | 24.000.01–1000 | — |
| video_length | INT | 73 | — |
| half_latent_size | BOOLEAN | true | — |
| audioopt | AUDIO | — |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |
| positive | CONDITIONING | — |
| negative | CONDITIONING | — |
| video_latent | LATENT | — |
| audio_latent | LATENT | — |