Painter LTX by Master
The omni conditioning builder for LTX 2.x
- positive
- negative
- video_vae
- audio_vae
- start_image
- end_image
- source_video
- reference_image1
- reference_image2
- positive
- negative
- video_latent
- audio_latent
The display name - "Painter LTX by Master" - is the author letting the community know this is the refined one. PainterLTXomni2 is a video-plus-audio conditioning and latent builder for LTX 2.x, the node that packages an omni generation (frames and sound from one model) into the two latents and conditioning your sampler needs. It's the earlier, more general sibling of this pack's PainterLTX2Vomni, and it covers the same task set - text-to-video, image-to-video, first/last-frame, and reference video - without the "dub a Bernini clip" focus.
What it is
A model/conditioning/ltxv node with an identical-looking schema to its sibling: video_vae and audio_vae, resolution, frame_rate, strength, reference frame indices, and the usual optional images. Outputs are positive, negative, video_latent, and audio_latent. If you have an LTX 2.x omni workflow, this is the box that turns "clip, prompt, and audio pipeline" into "things the sampler can chew on."
How it works
LTX-2.3 runs video and audio through two separate VAEs before the shared DiT renders them together. This node enforces that split at the input boundary - two VAE ports - and produces two latents, one for the visual stream and one for the audio. The interesting implementation detail: it hard-snaps length to the 8n+1 frame rule ((length - 1) // 8 * 8 + 1), so a typed 97 becomes 97, a typed 100 becomes 97, and you never feed LTX an illegal frame count. Width and height step by 32 for the same reason - LTX-2.3's spatial rule is divisibility by 32, and off-grid values fail rather than round.
frame_rate (default 25) is written straight into the conditioning, which is how the sampler knows the clip's timing. strength (default 0.7) controls conditioning strength for the image/reference tasks - lower preserves the source more, higher lets the model push further. reference1_frame_idx / reference2_frame_idx pick anchor frames from source_video or the reference images, with negative indices counting as offsets.
Inputs and outputs that matter
- video_vae / audio_vae - both VAEs, from your LTX 2.x loader.
- source_video - footage for V2V/dubbing-style work.
- strength - conditioning strength for the source/reference.
- start_image / end_image / reference_image1/2 - anchors for I2V, FLF, and reference tasks.
- Outputs:
video_latentandaudio_latentboth go to the omni sampler;positive/negativeto its conditioning ports.
Install
Part of the PainterNodes pack. ComfyUI Manager → search "PainterNodes" → install → restart, or:
cd ComfyUI/custom_nodes
git clone https://github.com/princepainter/ComfyUI-PainterNodes
cd ComfyUI-PainterNodes
pip install -r requirements.txt
Workflow examples live in the pack's workflows/ folder (the LTX2.3-* JSONs are the relevant ones).
Common issues
- Audio missing from the result - you must feed both latents into a sampler that knows how to decode the omni pair. If your sampler only takes one latent, the sound silently disappears.
- Frame count "changed" on me - that's the
8n+1snap working. It's not a bug; LTX-2.3 will reject off-grid lengths outright, so the node rounds for you (down). - It's the wrong node for the Bernini dub - if your goal is "add sound to a silent Bernini clip," the pack's
PainterLTX2Vomniis the focused version with that workflow already tuned; this node is the general-purpose builder.
The name is a flex and the node mostly behaves. If you're doing LTX omni work and want the frame-count foot-gun removed, this is the one.
Inputs (16)
| Name | Type | Default | Description |
|---|---|---|---|
| positive | CONDITIONING | — | |
| negative | CONDITIONING | — | |
| video_vae | VAE | — | |
| audio_vae | VAE | — | |
| width | INT | 76864–16384 | — |
| height | INT | 51264–16384 | — |
| length | INT | 971–16384 | — |
| frame_rate | FLOAT | 25.000–1000 | — |
| strength | FLOAT | 0.700–10 | — |
| reference1_frame_idx | INT | 0-9999–9999 | — |
| reference2_frame_idx | INT | 0-9999–9999 | — |
| start_imageopt | IMAGE | — | |
| end_imageopt | IMAGE | — | |
| source_videoopt | IMAGE | — | |
| reference_image1opt | IMAGE | — | |
| reference_image2opt | IMAGE | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| positive | CONDITIONING | — |
| negative | CONDITIONING | — |
| video_latent | LATENT | — |
| audio_latent | LATENT | — |