LTX2_SM_KSampler
The LTX sampler with two outputs and a guidance panel that looks scarier than it is
- model
- latents
- positive
- negative
- encoder
- latent
- audio_latents
The moment of truth. LTX2_SM_KSampler is where the model actually generates - and it's the node that makes LTX weird in a good way: it produces video latents and audio latents in the same pass. If you've ever faked a KSampler by counting steps, you're in for a treat. The guidance settings panel is huge, but 95% of the time you touch about three of them.
How it works
The sampler runs the pipeline with separate guidance parameters for the video stream and the audio stream - that's why everything is doubled (video_cfg_guidance_scale and audio_cfg_guidance_scale, video_stg_... and audio_stg_...). LTX-2.3 treats audio as a parallel modality, so each gets its own CFG, its own spatio-temporal guidance (STG), its own rescale, and its own cross-modality influence. Then there are the two cross-scale values:
- a2v_guidance_scale (default 1.0) - how hard audio drives the video (audio-to-video).
- v2a_guidance_scale (default 1.0) - how hard video drives the audio (video-to-audio foley).
The settings you'll actually change:
- steps (default 8) - the distilled baseline is 8 steps at CFG 1. For the dev/non-distilled path, ~20.
- seed - the number you'll be riding all night. 2.3's prompt adherence is weak, so seed-hunting beats prompt-wrangling every time. Generate several candidates and pick.
- video_cfg_guidance_scale (default 1.0) - distilled runs at 1.0. If highlights blow out, the 2.3 playbook says tune it up to 1.1–2.0.
- video_stg_guidance_scale (default 0) - leave it at 0. Over-applying STG gives skin and hair an exaggerated, unnatural look.
- block_group_size (default 2) - the streaming prefetch group; how many transformer blocks load ahead during offloaded sampling. Lower is safer on small cards, higher is faster when you have VRAM.
- spatial_upsampler - pick the LTX-2.3 upscaler from
models/latent_upscale_models/to do the 2x spatial upscale in latent space. It only engages when you also wire the optionalencoderin - that's how it gets the internal encoder it needs.
Two quietly clever bits: if you leave positive/negative unwired, the node reads the embeddings LTX2_SM_ENCODER saved to disk (read_lat_emb) - the "encode once, sample many" loop. And video_stg_blocks / audio_stg_blocks at -1 means "let the pipeline pick"; a non-negative number restricts STG to those specific blocks.
Outputs: latent (video) → LTX2_DECO_VIDEO, and audio_latents → LTX2_DECO_AUDIO.
Troubleshooting
- Video but no audio. Wire
audio_latentsintoLTX2_DECO_AUDIO- the video decode is silent on its own. - Two-stage runs feel slow / second stage looks the same as the first. The stage handling is set by
sampling_modeonLTX2_SM_Model, not here.distilledskips the two-stage dance;two_stages/twostages_hqdon't. - OOM on a 6GB card. Drop
block_group_sizeto 1 and make sureoffloadis on upstream. RAM, not VRAM, is the wall - 48GB system RAM is the README's number.
Install
Same as the rest of the pack - ComfyUI Manager (search "ComfyUI_LTX2_SM") or:
cd ComfyUI/custom_nodes
git clone https://github.com/smthemex/ComfyUI_LTX2_SM.git
cd ComfyUI_LTX2_SM && pip install -r requirements.txt
Needs the diffusers/transformers stack, gguf, and omegaconf. Restart, and remember every execute clears Comfy's model cache - so adjacent runs reload weights. Annoying, but it's the price of the 6GB pitch.
Inputs (21)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| latents | LATENT | — | |
| steps | INT | 81–16384 | — |
| seed | INT | 00–2147483647 | — |
| video_cfg_guidance_scale | FLOAT | 1.000–10 | — |
| video_stg_guidance_scale | FLOAT | 0.000–10 | — |
| video_rescale_scale | FLOAT | 0.000–10 | — |
| a2v_guidance_scale | FLOAT | 1.000–10 | — |
| video_skip_step | INT | 00–100 | — |
| video_stg_blocks | INT | -1-1–48 | — |
| audio_cfg_guidance_scale | FLOAT | 1.000–10 | — |
| audio_stg_guidance_scale | FLOAT | 0.000–10 | — |
| audio_rescale_scale | FLOAT | 0.000–10 | — |
| v2a_guidance_scale | FLOAT | 1.000–10 | — |
| audio_skip_step | INT | 00–100 | — |
| audio_stg_blocks | INT | -1-1–48 | — |
| block_group_size | INT | 20–48 | — |
| spatial_upsampler | COMBO | 1 options: none | |
| positiveopt | CONDITIONING | — | |
| negativeopt | CONDITIONING | — | |
| encoderopt | VAE | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| latent | LATENT | — |
| audio_latents | LATENT | — |