Nodes/VELVET VICE — LTX/VELVET VICE — Power LoRA AV
ComfyUI Node

VELVET VICE — Power LoRA AV

Patch only the audio stream of an LTX LoRA

By Velvet-Vice·Created 25 days ago·Updated 10 days ago· 2
VELVET VICE — Power LoRA AV
  • model
  • clip
  • model
  • clip
lora_stack_json[{"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_catalogNone

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_attn keys land in video - they change the visual stream.
  • video_to_audio_attn and the audio_* 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/loras folder) for convenience; the default value is None.

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. FULL applies the whole file including audio-to-video keys; only AUDIO excludes 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+F5 hard 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: false in 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.

CategoryVELVET VICE/LTX

Inputs (4)

NameTypeDefaultDescription
modelMODEL
clipCLIP
lora_stack_jsonSTRING[{"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_catalogCOMBONone4 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)

NameTypeDescription
modelMODEL
clipCLIP