Nodes/CubicJ Comfy Nodes/πŸ”Š LTX Scheduled Multimodal CFG Guider
ComfyUI Node

πŸ”Š LTX Scheduled Multimodal CFG Guider

LTX-2's audio and video want different CFG β€” schedule it and save the second pass

By cubicjΒ·Created 4 months agoΒ·Updated 3 months agoΒ· 0
πŸ”Š LTX Scheduled Multimodal CFG Guider
  • model
  • positive
  • negative
  • GUIDER
β—„video_cfg3.0β–Ί
β—„audio_cfg7.0β–Ί
β—„inactive_cfg1.0β–Ί
β—„active_steps1β–Ί
β—„cross_attntrueβ–Ί
β—„debugtrueβ–Ί

LTX-2 is a multimodal model: it generates video and audio in one pass, and it has a dirty secret - the two modalities do not respond to the same CFG. Video, especially on the distilled weights, wants a low CFG in the 1–3 range. Audio wants more, often 7 or higher. Pick one number and one of them is wrong: crank CFG for the audio and the video gets burnt and saturated; drop it for the video and the audio comes out mushy and directionless.

The official Lightricks answer is the Multimodal Guider, which splits prompt adherence, visual stability, and audio-video sync into independently tunable controls. This node is a community implementation of that idea, with one extra trick: it schedules when guidance is active. Guidance isn't needed across the whole denoising schedule - it mostly matters in the early steps while the structure is being decided. Apply it for the first few steps, then drop to CFG 1 for the rest.

How it works

It's a proper GUIDER, a subclass of ComfyUI's own CFGGuider, which means you wire its output into a KSampler's guider input instead of setting a flat CFG on the sampler. Under the hood it unpacks the packed video+audio latents into separate tensors, computes a prediction for each, and applies per-modality CFG - video_cfg to the video chunk, audio_cfg to the audio chunk - then repacks them. It also sets a2v/v2a cross-attention flags in the transformer options so the two modalities can condition on each other.

The scheduling is where it gets clever and cheap. active_steps says how many steps run with full guidance; everything after drops to inactive_cfg. And since inactive_cfg defaults to 1.0, here's the free lunch: at exactly CFG 1, ComfyUI skips the unconditional pass entirely (the disable_cfg1_optimization gate), so the scheduled portion of your sampling is running the model roughly half as often per step. You're not just getting cleaner results - you're getting faster ones, because after the early steps there's no negative prediction being computed at all.

The dials

  • video_cfg (3.0) / audio_cfg (7.0) - the per-modality guidance during the active phase. These defaults encode the real asymmetry.
  • active_steps (1) - how many steps run with full guidance. "1" sounds tiny but it's the author's default for a reason; the model does most of its structural work early.
  • inactive_cfg (1.0) - what guidance drops to after. Keep it at 1 to get the free speed.
  • cross_attn (on) - whether video and audio condition on each other. Off if you want them fully independent.
  • debug - on by default, which is worth knowing. It prints a per-step schedule line to the console (step=0/8 ... video_cfg=3.0 audio_cfg=7.0). Great for learning, but turn it off when you stop caring.

Inputs are model, positive, negative, plus those settings. Output is a single GUIDER.

Installing it

In cubicj-comfy-nodes. Manager: search "CubicJ Comfy Nodes" and install. Or:

cd ComfyUI/custom_nodes
git clone https://github.com/cubicj/cubicj-comfy-nodes
# restart ComfyUI

No dependencies. But it's LTX-2-specific - it depends on ComfyUI's packed multimodal latents and the audio/video cross-attention flags, so you need the LTX-2 family of models and a current ComfyUI.

Common issues

If the audio comes out weak, raise audio_cfg before touching the video side. If colors burn or the clip over-saturates, the culprit is video_cfg - drop it toward 1. active_steps = 0 disables guidance entirely, which is a quick way to confirm the node is doing anything at all. And remember the console chatter: with debug on, every step prints schedule info, which people frequently mistake for an error. It isn't - it's the author's built-in tuning aid. If you want quiet logs, that's the debug toggle's job.

Honest caveat, same as the rest of this pack: it's new and barely has a community footprint, so treat the defaults as educated starting points, not gospel. The debug output plus the free-speed trick make it cheap to tune yourself.

CategoryCubicJ/LTXV

Inputs (9)

NameTypeDefaultDescription
modelMODELβ€”
positiveCONDITIONINGβ€”
negativeCONDITIONINGβ€”
video_cfgFLOAT3.00–100β€”
audio_cfgFLOAT7.00–100β€”
inactive_cfgFLOAT1.00–100β€”
active_stepsINT10–100β€”
cross_attnBOOLEANtrueβ€”
debugBOOLEANtrueβ€”

Outputs (1)

NameTypeDescription
GUIDERGUIDERβ€”