toobusy LTX2.3 Empty AV Latents
LTX 2.3's video+audio latent in one node, frame math included
- audio_vae
- audio
- video_latent
- audio_latent
- length
- frame_rate_int
- frame_rate_float
- width
- height
LTX 2.3 is the model that finally made synchronized audio+video generation a local hobbyist thing - 22B, ships distilled, and unlike Wan it does sound in the same pass. The catch is that its ComfyUI setup is a pile of fiddly steps: an empty video latent, an empty audio latent, an audio VAE, and if you're feeding in your own audio, an encode plus a noise-mask dance. toobusy LTX2.3 Empty AV Latents folds all of that into one node, and it does the resolution math so you don't have to think about LTX's divisibility rules.
How it works
Under the hood this calls the native LTX node set - EmptyLTXVLatentVideo and LTXVEmptyLatentAudio - plus LTXVAudioVAEEncode + SolidMask + SetLatentNoiseMask when you enable custom audio. That's four to six nodes collapsed into one. You give it an audio_vae (from the LTX VAE loader) and it hands you both latents ready for the sampler.
LTX 2.3 is strict about dimensions: width and height must be divisible by 32, and frame count divisible by 8 plus 1. Off-grid values fail rather than round. This node computes width/height from your ratio_preset + megapixels, rounds to your divisible_by (32 by default), and hands the frame count straight through - the divisibility rules are the native node's problem to satisfy, but you get the correctly-sized output without doing arithmetic.
The inputs that matter
audio_vae- the audio side needs its own VAE. There's no way around this; the LTX audio VAE is a separate loader.ratio_preset- nine presets from 1:1 to 21:9. Default 16:9.megapixels- 1.0 is a good starting point; crank to 2 if your card copes.length- frames, default 97 (that's 4 seconds at 24fps - 96 + 1, conveniently LTX-valid).frame_ratedefaults to 24.use_custom_audio- flip this on and connect anaudioclip if you want to condition on real audio instead of generating silence. It needs that AUDIO input or it'll error on purpose.
Outputs and where they go
video_latentandaudio_latent- straight intotoobusy LTX2.3 Compact AV Sampler(or the nativeLTXVConcatAVLatentif you're doing it the long way).length,frame_rate_int,frame_rate_float,width,height- pass-throughs so downstream nodes (video saving, tiling, crop guides) see the actual geometry.
Install and gotchas
Pack install is standard - Manager search "toobusy", or clone into custom_nodes and restart. The real prerequisite is ComfyUI's LTX 2.3 node set (LTXV*). This node is a thin fold over those classes, so if your build predates LTX 2.3 support it'll throw a "required node not available" error at runtime - the message is clear about which pack is missing, which is more than most folds tell you.
One honest warning: 2.3's practical VRAM floor is higher than its predecessor. The official minimum says 32GB and essentially nobody runs it that way - GGUF quants plus the distilled model are how people make it work on 16GB or less, and the community's standing advice is "if you could run 2.0, you can run 2.3." Start there, at low resolution, and don't treat the model card as a hardware requirement.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| audio_vae | VAE | — | |
| ratio_preset | COMBO | 16:9 | 9 options: 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, +3 |
| megapixels | FLOAT | 1.000.01–16 | — |
| divisible_by | INT | 321–256 | — |
| length | INT | 971–16384 | — |
| frame_rate | INT | 241–120 | — |
| batch_size | INT | 11–4096 | — |
| use_custom_audio | BOOLEAN | false | — |
| audioopt | AUDIO | — |
Outputs (7)
| Name | Type | Description |
|---|---|---|
| video_latent | LATENT | — |
| audio_latent | LATENT | — |
| length | INT | — |
| frame_rate_int | INT | — |
| frame_rate_float | FLOAT | — |
| width | INT | — |
| height | INT | — |