LTXV FDG Parameters
FDGParameters explained
- parameters
- GUIDER_PARAMETERS
High CFG buys you prompt adherence and charges you for it in burned colors and oversaturated video. That tradeoff is the whole reason LTXV people live at CFG 1–1.5, and it's also why "sharp details" and "low guidance" usually refuse to coexist. FDGParameters splits that one dial in two, so you can keep CFG low and still pull detail out of the high frequencies.
It implements Frequency-Decoupled Guidance, from the paper "Guidance in the Frequency Domain Enables High-Fidelity Sampling at Low CFG Scales" (arXiv:2506.19713), as a drop-in for the standard CFG step inside Lightricks' own ComfyUI-LTXVideo workflow. No weights to download, no API key, no training run. Pure torch math - which makes it cheap to try and easy to forget exists.
Where it fits
This is a parameters node, not a sampler. You don't feed images into it; you feed the thing that configures the sampler:
FDGParameters ──> GUIDER_PARAMETERS ──> MultimodalGuider (LTXV) ──> SamplerCustomAdvanced
The one output, GUIDER_PARAMETERS, wires straight into the MultimodalGuider that ships with ComfyUI-LTXVideo. For LTXAV (audio+video) models you use two nodes, one with modality: VIDEO and one with modality: AUDIO. Chain the first node's output into the second's optional parameters input so a single guider gets both - that's exactly what the optional input exists for.
How it actually works
Standard CFG runs the model twice per step and amplifies the whole difference by a single scale. FDG instead takes both predictions (conditional and unconditional), decomposes each into a Laplacian pyramid - blur, downscale, subtract, repeat - applies a different scale per band, and reconstructs. In fdg_utils.py you can read the whole thing: high-frequency levels (edges, texture, sharpness) get w_high, the low-frequency base (structure, color, composition) gets w_low. The node's calculate() swaps this guided component in for plain CFG, then still stacks the LTX standard STG and modality terms on top.
The knobs that matter
w_low(default 1.5) - global structure and color. Lower it toward 1.0–1.5 to keep diversity and avoid oversaturation; raise it for stricter condition alignment.w_high(default 5.0) - fine detail. This is where LTXV is usually starved, and the reason you're here. 4–7 is a sane band; the paper's own tables go to 10–12.frequency_levels(default 2) - pyramid depth. 2 is the sweet spot; each extra level costs real time.cfg(default 1.5) - the base scale, used when FDG is off. Keep it above 1.0: at exactly 1 ComfyUI skips the unconditional prediction, and the code just falls back to the positive pass, so FDG silently switches itself off.fdg_enabled- the master switch, on by default.
Everything else - use_projection/projection_weight (an APG-style color projection, off by default), decomposition_method, and the passthroughs stg, perturb_attn, rescale, modality_scale, skip_step, cross_attn - leave alone until you know you need it.
Installing it
ComfyUI Manager → search ComfyUI-LTX-FDG → install, or:
cd ComfyUI/custom_nodes
git clone https://github.com/siraxe/ComfyUI-LTX-FDG
Restart ComfyUI and the node appears under lightricks/LTXV. The pack itself only hard-depends on ComfyUI - but the MultimodalGuider that consumes these parameters lives in ComfyUI-LTXVideo, so install that too or the output has nowhere to go.
Troubleshooting
- Oversaturated → drop
w_lowto 1.0–1.5. - Blurry, soft details → raise
w_highto 5–10. - Flicker between frames → lower both scales.
- "It's doing nothing" → check
fdg_enabled, check the wire into MultimodalGuider, and checkcfgis above 1. - Slower than plain CFG → expected: about 1.3–1.5x at 2 levels. Drop to 1 level or disable FDG to claw it back.
- The
waveletoption → the author's own comment in the source admits it's a simplified gaussian high-pass approximation, not a real DWT. If that distinction matters, stay onlaplacian.
One last thing: the README is upfront that this is "vibecoded" off the paper, credit to dorpxam and a musubi-tuner issue thread. So treat it as a sharp little experiment, not a Lightricks product - a good starting point is cfg 1.5, w_low 1.0–1.5, w_high 4–7, 2 levels, then seed-hunt like you always do.
Inputs (16)
| Name | Type | Default | Description |
|---|---|---|---|
| modality | COMBO | VIDEO | 2 options: VIDEO, AUDIO |
| cfg | FLOAT | 1.50–100 | Base CFG scale (used when FDG is disabled or for other guidance types) |
| fdg_enabled | BOOLEAN | true | Enable Frequency-Decoupled Guidance |
| w_low | FLOAT | 1.50–100 | Low-frequency guidance scale (controls global structure). Lower values = better diversity, higher values = better condition alignment |
| w_high | FLOAT | 5.00–100 | High-frequency guidance scale (controls details). Higher values = sharper details |
| frequency_levels | INT | 21–5 | Number of frequency decomposition levels. 2 is recommended |
| decomposition_method | COMBO | laplacian | Method for frequency decomposition |
| use_projection | BOOLEAN | false | Use APG-style orthogonal projection for better color composition |
| projection_weight | FLOAT | 1.000–2 | Weight for parallel component in APG projection |
| stg | FLOAT | 1.000–100 | — |
| perturb_attn | BOOLEAN | true | — |
| rescale | FLOAT | 0.700–100 | — |
| modality_scale | FLOAT | 0.000–100 | — |
| skip_step | INT | 00–100 | — |
| cross_attn | BOOLEAN | true | — |
| parametersopt | GUIDER_PARAMETERS | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| GUIDER_PARAMETERS | GUIDER_PARAMETERS | — |