VELVET VICE — Power LoRA AV
Patch only the audio stream of an LTX LoRA
- model
- clip
- model
- clip
LTX-2 and 2.3 are audio-video models: the LoRAs trained for them can touch the visual stream, the audio stream, the text encoder, or any mix. A normal ComfyUI LoRA loader applies the whole file to everything - so a LoRA you only wanted for sound can quietly restyle your visuals. VelvetVicePowerLoraAV is an ordered LoRA stack for LTX that can route each LoRA to just the parts you want: full, video-only, or audio-only. If you've hit the "my audio LoRA is changing the picture" wall, this is the tool.
How it works
It's Power-LoRA style, meaning an ordered stack of rows that apply in sequence - the pack's web frontend draws the rows as a table you can reorder, add to, and toggle. The stack lives as JSON in the lora_stack_json widget. Each row has an id, an enabled flag, the lora filename, a mode, and separate video / audio / clip strengths.
The interesting mechanism is the mode routing. When a LoRA's mode is FULL, VIDEO, or AUDIO, the node partitions the LoRA's tensor keys by what they patch:
- Keys for the text encoder / CLIP (
lora_te,text_encoder,gemma, …) go to the clip bucket. audio_to_video_attnkeys land in video - they change the visual stream.video_to_audio_attnand theaudio_*attention/FFN/norm keys land in audio.- Anything unmarked defaults to video, so ordinary video-only LoRAs behave exactly as before.
Then it applies each bucket with its own strength. The AUDIO mode is the clever bit: it patches the audio blocks plus video-to-audio attention but deliberately excludes audio_to_video_attn - so the LoRA shapes the sound without the sound shaping the picture. When you use FULL with all three strengths equal, it takes the classic loader path, so there's zero behavioral difference from a stock LoRA load. Loaded LoRA files also get an LRU cache (two by default, tunable via VELVET_VICE_LORA_CACHE_ITEMS), which keeps the pack's three-pass renders from re-reading the same safetensors over and over.
The inputs
- model / clip - the LTX model and its CLIP/text encoder, straight from your loader.
- lora_stack_json - the row stack. The default ships with two disabled entries (a union-control LoRA and a detailer LoRA, both off) as a starting template. If you edit it by hand, it must be valid JSON.
- lora_catalog - a dropdown of the pack's known LTX LoRAs (plus anything in your
models/lorasfolder) for convenience; the default value isNone.
It outputs the patched model and clip, ready for the sampler.
Installing it
Part of the Velvet Vice LTX pack, shared by the LTX 2.3 and 2.5 workflows. ComfyUI Manager → search "VELVET VICE - LTX" (registry velvet-vice-ltx), or:
cd ComfyUI/custom_nodes
git clone https://github.com/Velvet-Vice/velvet-vice-ltx
Restart ComfyUI, hard-refresh with Ctrl+F5. No Python dependencies - it uses ComfyUI's own LoRA-loading internals. The LoRA files themselves go in ComfyUI/models/loras like any other.
Common issues
- "LoRA not found: <name>" - the filename in the stack doesn't match anything in
models/loras(the pack's workflow references LoRAs by exact filename; if you renamed one, update the stack). - An audio LoRA still changes the video - check the row's mode.
FULLapplies the whole file including audio-to-video keys; onlyAUDIOexcludes those. - The stack rows don't appear as a table - the row UI is drawn by the pack's web JavaScript. If you skipped the
Ctrl+F5hard refresh after install, the frontend is stale; refresh, and if it's still a raw JSON box, the pack's web files didn't load (check for a web-directory error in the ComfyUI console). - The detailer/union rows do nothing - they're
enabled: falsein the default stack. That's the template, not a bug; enable what you need.
For LTX LoRAs that genuinely straddle audio and video, this is the node that finally lets you treat them as separate concerns instead of loading the whole file and hoping.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| clip | CLIP | — | |
| lora_stack_json | STRING | [{"id": "union", "enabled": false, "lora": "ltx-2-19b-ic-lora-union-control-ref0.5.safetensors", "mode": "FULL", "video_strength": 0.45454711914062484, "audio_strength": 0.45454711914062484, "clip_strength": 0.45454711914062484}, {"id": "detailer", "enabled": false, "lora": "ltx-2-19b-ic-lora-detailer.safetensors", "mode": "FULL", "video_strength": 0.28, "audio_strength": 0.28, "clip_strength": 0.28}] | — |
| lora_catalog | COMBO | None | 4 options: None, ltx-2.3-22b-distilled-lora-1.1_rank72_energy.safetensors, ltx-2-19b-ic-lora-union-control-ref0.5.safetensors, ltx-2-19b-ic-lora-detailer.safetensors |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |
| clip | CLIP | — |