From 37a9c020a3bf5335a3fbaf88fa4dcc9304fc75bb Mon Sep 17 00:00:00 2001 From: OpenClaw Agent Date: Fri, 7 Aug 2026 11:09:30 +0000 Subject: [PATCH] Remove character image analysis flow --- README.md | 10 +- example_workflows/LTX Director CS.json | 2 +- js/ltx_director.js | 26 +- js/msr_character.js | 304 +------------------ ltx_director.py | 395 +++---------------------- 5 files changed, 40 insertions(+), 697 deletions(-) diff --git a/README.md b/README.md index e1d0b71..a67a651 100644 --- a/README.md +++ b/README.md @@ -50,14 +50,8 @@ All of my nodes are created with the help of AI, so there may or may not be redu This is a Modded LTX director node from "WhatDreamsCost" with some extra options to help you create videos with references sheets -This node uses Ollama Locally : you will need to install it (very lightweight) and - -- In your Ollama model folder run this command to install qwen 3.5 2b q4 (1.9gb) "ollama run huihui_ai/qwen3.5-abliterated:2B" - -- The model won't eat memory while generating since there is an auto clear VRAM when you hit Run or after 5min. - -- You can still enter your description manually if you don't want to install it but it works very well! - +- Character descriptions are entered manually in the MSR character fields and are appended to the director prompt as tagged character references. + - Reference mode included: Licon MSR. - Use their Lora, that is an important step : https://huggingface.co/LiconStudio/LTX-2.3-Multiple-Subject-Reference/tree/main diff --git a/example_workflows/LTX Director CS.json b/example_workflows/LTX Director CS.json index 90acdd9..be1621a 100644 --- a/example_workflows/LTX Director CS.json +++ b/example_workflows/LTX Director CS.json @@ -1 +1 @@ -{"id":"bf120034-88db-46f2-b66e-f72f6c04718f","revision":0,"last_node_id":213,"last_link_id":546,"nodes":[{"id":7,"type":"LTXVConcatAVLatent","pos":[3691.538365353464,4524.496307535617],"size":[210,50],"flags":{},"order":68,"mode":0,"inputs":[{"localized_name":"video_latent","name":"video_latent","type":"LATENT","link":522},{"localized_name":"audio_latent","name":"audio_latent","type":"LATENT","link":491}],"outputs":[{"localized_name":"latent","name":"latent","type":"LATENT","links":[14]}],"properties":{"cnr_id":"comfy-core","ver":"0.16.0","Node name for S&R":"LTXVConcatAVLatent"},"widgets_values":[]},{"id":108,"type":"GetNode","pos":[4391.381422285522,4617.939934754459],"size":[210,60],"flags":{"collapsed":true},"order":0,"mode":0,"inputs":[],"outputs":[{"name":"VAE","type":"VAE","links":[228]}],"title":"Get_audio_vae","properties":{"Node name for S&R":"GetNode","aux_id":"kijai/ComfyUI-KJNodes"},"widgets_values":["audio_vae"],"color":"#322","bgcolor":"#533"},{"id":113,"type":"GetNode","pos":[4382.180390782251,4525.786929249175],"size":[210,34],"flags":{"collapsed":true},"order":1,"mode":0,"inputs":[],"outputs":[{"name":"VAE","type":"VAE","links":[233]}],"title":"Get_video_vae","properties":{"Node name for S&R":"GetNode","aux_id":"kijai/ComfyUI-KJNodes"},"widgets_values":["video_vae"],"color":"#322","bgcolor":"#533"},{"id":16,"type":"LTXVAudioVAEDecode","pos":[4356.538365353464,4575.777557535617],"size":[210,50],"flags":{"collapsed":false},"order":78,"mode":0,"inputs":[{"localized_name":"samples","name":"samples","type":"LATENT","link":235},{"label":"Audio VAE","localized_name":"audio_vae","name":"audio_vae","type":"VAE","link":228}],"outputs":[{"localized_name":"Audio","name":"Audio","type":"AUDIO","links":[223]}],"properties":{"cnr_id":"comfy-core","ver":"0.16.0","Node name for S&R":"LTXVAudioVAEDecode"},"widgets_values":[]},{"id":97,"type":"PathchSageAttentionKJ","pos":[1316.9170322877628,4217.452584058228],"size":[270,82],"flags":{"collapsed":true},"order":42,"mode":0,"inputs":[{"localized_name":"model","name":"model","type":"MODEL","link":219},{"localized_name":"sage_attention","name":"sage_attention","type":"COMBO","widget":{"name":"sage_attention"},"link":null},{"localized_name":"allow_compile","name":"allow_compile","shape":7,"type":"BOOLEAN","widget":{"name":"allow_compile"},"link":null}],"outputs":[{"localized_name":"MODEL","name":"MODEL","type":"MODEL","links":[215]}],"properties":{"cnr_id":"comfyui-kjnodes","ver":"204f6d5aae73b10c0fe2fb26e61405fd6337bb77","Node name for S&R":"PathchSageAttentionKJ"},"widgets_values":["auto",false]},{"id":99,"type":"LTX2AttentionTunerPatch","pos":[1300.1111104721715,4258.872502008489],"size":[283.875,178],"flags":{"collapsed":true},"order":45,"mode":0,"inputs":[{"localized_name":"model","name":"model","type":"MODEL","link":216},{"localized_name":"blocks","name":"blocks","type":"STRING","widget":{"name":"blocks"},"link":null},{"localized_name":"video_scale","name":"video_scale","type":"FLOAT","widget":{"name":"video_scale"},"link":null},{"localized_name":"audio_scale","name":"audio_scale","type":"FLOAT","widget":{"name":"audio_scale"},"link":null},{"localized_name":"audio_to_video_scale","name":"audio_to_video_scale","type":"FLOAT","widget":{"name":"audio_to_video_scale"},"link":null},{"localized_name":"video_to_audio_scale","name":"video_to_audio_scale","type":"FLOAT","widget":{"name":"video_to_audio_scale"},"link":null},{"localized_name":"triton_kernels","name":"triton_kernels","type":"BOOLEAN","widget":{"name":"triton_kernels"},"link":null}],"outputs":[{"localized_name":"model","name":"model","type":"MODEL","links":[214,218]}],"properties":{"cnr_id":"comfyui-kjnodes","ver":"5b38397a6430fdb16c7bd14a6bd64c2b0e69a5f0","Node name for S&R":"LTX2AttentionTunerPatch"},"widgets_values":["",1,1,1,1,true]},{"id":100,"type":"LTXVChunkFeedForward","pos":[1493.906478136476,4220.506363558898],"size":[272.35703125,82],"flags":{"collapsed":true},"order":44,"mode":0,"inputs":[{"localized_name":"model","name":"model","type":"MODEL","link":217},{"localized_name":"chunks","name":"chunks","type":"INT","widget":{"name":"chunks"},"link":null},{"localized_name":"dim_threshold","name":"dim_threshold","type":"INT","widget":{"name":"dim_threshold"},"link":null}],"outputs":[{"localized_name":"model","name":"model","type":"MODEL","links":[216]}],"properties":{"cnr_id":"comfyui-kjnodes","ver":"0ea5ece1793263d9fb0ad97bb067f96b83a9dea3","Node name for S&R":"LTXVChunkFeedForward"},"widgets_values":[2,4096]},{"id":98,"type":"LTX2MemoryEfficientSageAttentionPatch","pos":[1479.8282190239377,4255.3551883158],"size":[275.179296875,58],"flags":{"collapsed":true},"order":43,"mode":0,"inputs":[{"localized_name":"model","name":"model","type":"MODEL","link":215},{"localized_name":"triton_kernels","name":"triton_kernels","type":"BOOLEAN","widget":{"name":"triton_kernels"},"link":null}],"outputs":[{"localized_name":"model","name":"model","type":"MODEL","links":[217]}],"properties":{"cnr_id":"comfyui-kjnodes","ver":"2acdef1766026ff3be00daf3c45f6a064db9100f","Node name for S&R":"LTX2MemoryEfficientSageAttentionPatch"},"widgets_values":[true]},{"id":95,"type":"SetNode","pos":[1429.8290233573816,4011.369716578606],"size":[210,34],"flags":{"collapsed":true},"order":48,"mode":0,"inputs":[{"name":"MODEL","type":"MODEL","link":213}],"outputs":[{"name":"MODEL","type":"MODEL","links":null}],"title":"Set_model_with_lora","properties":{"Node name for S&R":"SetNode","aux_id":"SetNode","previousName":"model_with_lora"},"widgets_values":["model_with_lora"],"color":"#223","bgcolor":"#335"},{"id":96,"type":"SetNode","pos":[1452.77276258331,3950.892577817645],"size":[210,34],"flags":{"collapsed":true},"order":46,"mode":0,"inputs":[{"name":"MODEL","type":"MODEL","link":214}],"outputs":[{"name":"MODEL","type":"MODEL","links":null}],"title":"Set_model_upscale","properties":{"Node name for S&R":"SetNode","aux_id":"kijai/ComfyUI-KJNodes","previousName":"model_upscale"},"widgets_values":["model_upscale"],"color":"#223","bgcolor":"#335"},{"id":129,"type":"SetNode","pos":[1551.1053187262426,4417.394085401405],"size":[210,60],"flags":{"collapsed":true},"order":33,"mode":0,"inputs":[{"name":"CLIP","type":"CLIP","link":294}],"outputs":[{"name":"CLIP","type":"CLIP","links":null}],"title":"Set_clip","properties":{"Node name for S&R":"SetNode","aux_id":"kijai/ComfyUI-KJNodes","previousName":"clip"},"widgets_values":["clip"],"color":"#432","bgcolor":"#653"},{"id":109,"type":"SetNode","pos":[1525.7403651341965,4594.978455341699],"size":[210,60],"flags":{"collapsed":true},"order":36,"mode":0,"inputs":[{"name":"VAE","type":"VAE","link":229}],"outputs":[{"name":"VAE","type":"VAE","links":null}],"title":"Set_video_vae","properties":{"Node name for S&R":"SetNode","aux_id":"kijai/ComfyUI-KJNodes","previousName":"video_vae"},"widgets_values":["video_vae"],"color":"#322","bgcolor":"#533"},{"id":107,"type":"SetNode","pos":[1509.7755834199008,4749.514075011232],"size":[210,60],"flags":{"collapsed":true},"order":35,"mode":0,"inputs":[{"name":"VAE","type":"VAE","link":227}],"outputs":[{"name":"VAE","type":"VAE","links":null}],"title":"Set_audio_vae","properties":{"Node name for S&R":"SetNode","aux_id":"kijai/ComfyUI-KJNodes","previousName":"audio_vae"},"widgets_values":["audio_vae"],"color":"#322","bgcolor":"#533"},{"id":78,"type":"VAELoaderKJ","pos":[1214.7116103410826,4424.276141542676],"size":[270,110],"flags":{"collapsed":true},"order":2,"mode":0,"inputs":[{"localized_name":"vae_name","name":"vae_name","type":"COMBO","widget":{"name":"vae_name"},"link":null},{"localized_name":"device","name":"device","type":"COMBO","widget":{"name":"device"},"link":null},{"localized_name":"weight_dtype","name":"weight_dtype","type":"COMBO","widget":{"name":"weight_dtype"},"link":null}],"outputs":[{"localized_name":"VAE","name":"VAE","type":"VAE","links":[196]}],"title":"Tiny VAELoader KJ","properties":{"cnr_id":"comfyui-kjnodes","ver":"1.2.5","Node name for S&R":"VAELoaderKJ"},"widgets_values":["taeltx2_3.safetensors","main_device","bf16"],"color":"#222","bgcolor":"#000"},{"id":15,"type":"VAEDecode","pos":[4358.291126900038,4483.957850924158],"size":[210,50],"flags":{"collapsed":false},"order":76,"mode":0,"inputs":[{"localized_name":"samples","name":"samples","type":"LATENT","link":536},{"localized_name":"vae","name":"vae","type":"VAE","link":233}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[222]}],"properties":{"cnr_id":"comfy-core","ver":"0.9.1","Node name for S&R":"VAEDecode"},"widgets_values":[]},{"id":174,"type":"SetNode","pos":[4379.321869985733,4425.215218104115],"size":[210,60],"flags":{"collapsed":true},"order":79,"mode":0,"inputs":[{"name":"LATENT","type":"LATENT","link":382}],"outputs":[{"name":"LATENT","type":"LATENT","links":null}],"title":"Set_audio_latent","properties":{"Node name for S&R":"SetNode","aux_id":"kijai/ComfyUI-KJNodes","previousName":"audio_latent"},"widgets_values":["audio_latent"],"color":"#323","bgcolor":"#535"},{"id":175,"type":"GetNode","pos":[3331.024198179889,4128.21530954976],"size":[210,60],"flags":{"collapsed":true},"order":3,"mode":0,"inputs":[],"outputs":[{"name":"LATENT","type":"LATENT","links":[383]}],"title":"Get_audio_latent","properties":{"Node name for S&R":"GetNode","aux_id":"kijai/ComfyUI-KJNodes"},"widgets_values":["audio_latent"],"color":"#323","bgcolor":"#535"},{"id":181,"type":"GetNode","pos":[4744.820649849728,4051.0797594741784],"size":[210,60],"flags":{"collapsed":true},"order":4,"mode":0,"inputs":[],"outputs":[{"name":"FLOAT","type":"FLOAT","links":[392]}],"title":"Get_frame_rate","properties":{"Node name for S&R":"GetNode","aux_id":"kijai/ComfyUI-KJNodes"},"widgets_values":["frame_rate"],"color":"#232","bgcolor":"#353"},{"id":10,"type":"SamplerCustomAdvanced","pos":[4124.732370389621,4386.207659334862],"size":[220,241.28125],"flags":{"collapsed":false},"order":72,"mode":0,"inputs":[{"localized_name":"noise","name":"noise","type":"NOISE","link":51},{"localized_name":"guider","name":"guider","type":"GUIDER","link":12},{"localized_name":"sampler","name":"sampler","type":"SAMPLER","link":53},{"localized_name":"sigmas","name":"sigmas","type":"SIGMAS","link":52},{"localized_name":"latent_image","name":"latent_image","type":"LATENT","link":14}],"outputs":[{"localized_name":"output","name":"output","type":"LATENT","links":[267]},{"localized_name":"denoised_output","name":"denoised_output","type":"LATENT","links":[]}],"properties":{"cnr_id":"comfy-core","ver":"0.3.60","Node name for S&R":"SamplerCustomAdvanced","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":[]},{"id":80,"type":"LoraLoaderModelOnly","pos":[1188.543815306891,4672.020611941352],"size":[260,85.21429623404856],"flags":{},"order":41,"mode":0,"inputs":[{"localized_name":"model","name":"model","type":"MODEL","link":405},{"localized_name":"lora_name","name":"lora_name","type":"COMBO","widget":{"name":"lora_name"},"link":null},{"localized_name":"strength_model","name":"strength_model","type":"FLOAT","widget":{"name":"strength_model"},"link":null}],"outputs":[{"localized_name":"MODEL","name":"MODEL","type":"MODEL","links":[219]}],"properties":{"cnr_id":"comfy-core","ver":"0.3.75","Node name for S&R":"LoraLoaderModelOnly","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65,"models":[{"name":"ltx-2.3-22b-distilled-lora-384.safetensors","url":"https://huggingface.co/Lightricks/LTX-2.3/resolve/main/ltx-2.3-22b-distilled-lora-384.safetensors","directory":"loras"}]},"widgets_values":["LTX\\ltx-2.3-22b-distilled-lora-384-1.1.safetensors",0.6],"color":"#322","bgcolor":"#533"},{"id":79,"type":"LTX2SamplingPreviewOverride","pos":[1188.543815306891,4511.345498670506],"size":[260,100.00000000000045],"flags":{"collapsed":false},"order":38,"mode":0,"inputs":[{"localized_name":"model","name":"model","type":"MODEL","link":408},{"localized_name":"latent_upscale_model","name":"latent_upscale_model","shape":7,"type":"LATENT_UPSCALE_MODEL","link":null},{"localized_name":"vae","name":"vae","shape":7,"type":"VAE","link":196},{"localized_name":"preview_rate","name":"preview_rate","type":"INT","widget":{"name":"preview_rate"},"link":null}],"outputs":[{"localized_name":"MODEL","name":"MODEL","type":"MODEL","links":[405]}],"properties":{"cnr_id":"comfyui-kjnodes","ver":"1.3.4","Node name for S&R":"LTX2SamplingPreviewOverride"},"widgets_values":[24]},{"id":188,"type":"GetNode","pos":[2555.447393577083,4541.294394823571],"size":[210,60],"flags":{"collapsed":true},"order":5,"mode":0,"inputs":[],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[]}],"title":"Get_neg prompt","properties":{"Node name for S&R":"GetNode","aux_id":"kijai/ComfyUI-KJNodes"},"widgets_values":["neg prompt"],"color":"#332922","bgcolor":"#593930"},{"id":9,"type":"CFGGuider","pos":[3691.538365353464,4384.496307535617],"size":[210,100],"flags":{},"order":69,"mode":0,"inputs":[{"localized_name":"model","name":"model","type":"MODEL","link":523},{"localized_name":"positive","name":"positive","type":"CONDITIONING","link":520},{"localized_name":"negative","name":"negative","type":"CONDITIONING","link":521},{"localized_name":"cfg","name":"cfg","type":"FLOAT","widget":{"name":"cfg"},"link":null}],"outputs":[{"localized_name":"GUIDER","name":"GUIDER","type":"GUIDER","links":[12]}],"properties":{"cnr_id":"comfy-core","ver":"0.3.64","Node name for S&R":"CFGGuider","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":[1]},{"id":127,"type":"LTX2_NAG","pos":[3038.558756510417,4780.067502388598],"size":[211.45817595342623,191.6127604380672],"flags":{"collapsed":false},"order":50,"mode":0,"inputs":[{"localized_name":"model","name":"model","type":"MODEL","link":486},{"localized_name":"nag_cond_video","name":"nag_cond_video","shape":7,"type":"CONDITIONING","link":289},{"localized_name":"nag_cond_audio","name":"nag_cond_audio","shape":7,"type":"CONDITIONING","link":296},{"localized_name":"nag_scale","name":"nag_scale","type":"FLOAT","widget":{"name":"nag_scale"},"link":null},{"localized_name":"nag_alpha","name":"nag_alpha","type":"FLOAT","widget":{"name":"nag_alpha"},"link":null},{"localized_name":"nag_tau","name":"nag_tau","type":"FLOAT","widget":{"name":"nag_tau"},"link":null},{"localized_name":"inplace","name":"inplace","shape":7,"type":"BOOLEAN","widget":{"name":"inplace"},"link":null}],"outputs":[{"localized_name":"model","name":"model","type":"MODEL","links":[325,516]}],"properties":{"cnr_id":"comfyui-kjnodes","ver":"ff79c7332d7ea4aa85097a88fb09359f28cb487e","Node name for S&R":"LTX2_NAG"},"widgets_values":[11,0.25,2.5,true]},{"id":187,"type":"SetNode","pos":[3369.7374698190592,4969.890270608562],"size":[223.53515625,60],"flags":{"collapsed":true},"order":40,"mode":0,"inputs":[{"name":"CONDITIONING","type":"CONDITIONING","link":411}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":null}],"title":"Set_neg prompt","properties":{"Node name for S&R":"SetNode","aux_id":"kijai/ComfyUI-KJNodes","previousName":"neg prompt"},"widgets_values":["neg prompt"],"color":"#332922","bgcolor":"#593930"},{"id":110,"type":"GetNode","pos":[3372.682948088843,4486.85089002825],"size":[210,60],"flags":{"collapsed":true},"order":6,"mode":0,"inputs":[],"outputs":[{"name":"VAE","type":"VAE","links":[519]}],"title":"Get_video_vae","properties":{"Node name for S&R":"GetNode","aux_id":"kijai/ComfyUI-KJNodes"},"widgets_values":["video_vae"],"color":"#322","bgcolor":"#533"},{"id":49,"type":"CFGGuider","pos":[3679.914746126751,3815.6149642286105],"size":[210,100],"flags":{"collapsed":false},"order":62,"mode":0,"inputs":[{"localized_name":"model","name":"model","type":"MODEL","link":504},{"localized_name":"positive","name":"positive","type":"CONDITIONING","link":502},{"localized_name":"negative","name":"negative","type":"CONDITIONING","link":503},{"localized_name":"cfg","name":"cfg","type":"FLOAT","widget":{"name":"cfg"},"link":null}],"outputs":[{"localized_name":"GUIDER","name":"GUIDER","type":"GUIDER","links":[124]}],"properties":{"cnr_id":"comfy-core","ver":"0.3.64","Node name for S&R":"CFGGuider","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":[1]},{"id":53,"type":"KSamplerSelect","pos":[3679.914746126751,3956.805179368286],"size":[210,60],"flags":{},"order":7,"mode":0,"inputs":[{"localized_name":"sampler_name","name":"sampler_name","type":"COMBO","widget":{"name":"sampler_name"},"link":null}],"outputs":[{"localized_name":"SAMPLER","name":"SAMPLER","type":"SAMPLER","links":[125]}],"properties":{"cnr_id":"comfy-core","ver":"0.3.56","Node name for S&R":"KSamplerSelect","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":["euler_cfg_pp"]},{"id":50,"type":"LTXVConcatAVLatent","pos":[3679.914746126751,4209.673624648785],"size":[210,60],"flags":{},"order":61,"mode":0,"inputs":[{"localized_name":"video_latent","name":"video_latent","type":"LATENT","link":505},{"localized_name":"audio_latent","name":"audio_latent","type":"LATENT","link":383}],"outputs":[{"localized_name":"latent","name":"latent","type":"LATENT","links":[127]}],"properties":{"cnr_id":"comfy-core","ver":"0.7.0","Node name for S&R":"LTXVConcatAVLatent","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":[]},{"id":171,"type":"GetNode","pos":[4380.026730077076,3833.6507837448257],"size":[210,50],"flags":{"collapsed":true},"order":8,"mode":0,"inputs":[],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[527]}],"title":"Get_pos_g2","properties":{"Node name for S&R":"GetNode","aux_id":"kijai/ComfyUI-KJNodes"},"widgets_values":["pos_g2"],"color":"#332922","bgcolor":"#593930"},{"id":84,"type":"DualCLIPLoader","pos":[1464.0255349598156,4374.226258120699],"size":[260,135.83799054980682],"flags":{},"order":9,"mode":0,"inputs":[{"localized_name":"clip_name1","name":"clip_name1","type":"COMBO","widget":{"name":"clip_name1"},"link":null},{"localized_name":"clip_name2","name":"clip_name2","type":"COMBO","widget":{"name":"clip_name2"},"link":null},{"localized_name":"type","name":"type","type":"COMBO","widget":{"name":"type"},"link":null},{"localized_name":"device","name":"device","shape":7,"type":"COMBO","widget":{"name":"device"},"link":null}],"outputs":[{"localized_name":"CLIP","name":"CLIP","type":"CLIP","links":[294,483]}],"properties":{"cnr_id":"comfy-core","ver":"0.19.3","Node name for S&R":"DualCLIPLoader"},"widgets_values":["gemma_3_12B_it_fp8_scaled.safetensors","ltx-2.3_text_projection_bf16.safetensors","ltxv","default"]},{"id":130,"type":"GetNode","pos":[3392.5943581826396,4940.05295266081],"size":[210,60],"flags":{"collapsed":true},"order":10,"mode":0,"inputs":[],"outputs":[{"name":"CLIP","type":"CLIP","links":[295]}],"title":"Get_clip","properties":{"Node name for S&R":"GetNode","aux_id":"kijai/ComfyUI-KJNodes"},"widgets_values":["clip"],"color":"#432","bgcolor":"#653"},{"id":4,"type":"VAELoaderKJ","pos":[1464.0255349598156,4717.234908175401],"size":[260,110],"flags":{"collapsed":false},"order":11,"mode":0,"inputs":[{"localized_name":"vae_name","name":"vae_name","type":"COMBO","widget":{"name":"vae_name"},"link":null},{"localized_name":"device","name":"device","type":"COMBO","widget":{"name":"device"},"link":null},{"localized_name":"weight_dtype","name":"weight_dtype","type":"COMBO","widget":{"name":"weight_dtype"},"link":null}],"outputs":[{"localized_name":"VAE","name":"VAE","type":"VAE","links":[227,484]}],"title":"Audio VAELoader","properties":{"cnr_id":"comfyui-kjnodes","ver":"487c7d86a0230aae3d8c0a37d517159b73834f85","Node name for S&R":"VAELoaderKJ"},"widgets_values":["vae_ltx\\LTX23_audio_vae_bf16.safetensors","main_device","bf16"]},{"id":180,"type":"SetNode","pos":[2568.618152177039,4106.725352814512],"size":[210,60],"flags":{"collapsed":true},"order":55,"mode":0,"inputs":[{"name":"FLOAT","type":"FLOAT","link":496}],"outputs":[{"name":"FLOAT","type":"FLOAT","links":null}],"title":"Set_frame_rate","properties":{"Node name for S&R":"SetNode","aux_id":"kijai/ComfyUI-KJNodes","previousName":"frame_rate"},"widgets_values":["frame_rate"],"color":"#232","bgcolor":"#353"},{"id":182,"type":"SetNode","pos":[2505.307811672183,4211.504979370948],"size":[210,60],"flags":{"collapsed":true},"order":56,"mode":0,"inputs":[{"name":"INT","type":"INT","link":498}],"outputs":[{"name":"INT","type":"INT","links":null}],"title":"Set_clean_latent","properties":{"Node name for S&R":"SetNode","aux_id":"kijai/ComfyUI-KJNodes","previousName":"clean_latent"},"widgets_values":["clean_latent"],"color":"#1b4669","bgcolor":"#29699c"},{"id":172,"type":"GetNode","pos":[4401.32292657882,3874.007604558866],"size":[210,50],"flags":{"collapsed":true},"order":12,"mode":0,"inputs":[],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[528]}],"title":"Get_neg_g2","properties":{"Node name for S&R":"GetNode","aux_id":"kijai/ComfyUI-KJNodes"},"widgets_values":["neg_g2"],"color":"#332922","bgcolor":"#593930"},{"id":196,"type":"GetNode","pos":[4394.066545611651,4879.131672339238],"size":[210,60],"flags":{"collapsed":true},"order":13,"mode":0,"inputs":[],"outputs":[{"name":"INT","type":"INT","links":[537]}],"title":"Get_clean_latent","properties":{"Node name for S&R":"GetNode","aux_id":"kijai/ComfyUI-KJNodes"},"widgets_values":["clean_latent"],"color":"#1b4669","bgcolor":"#29699c"},{"id":3,"type":"VAELoaderKJ","pos":[1464.0255349598156,4559.496307535617],"size":[260,110],"flags":{"collapsed":false},"order":14,"mode":0,"inputs":[{"localized_name":"vae_name","name":"vae_name","type":"COMBO","widget":{"name":"vae_name"},"link":null},{"localized_name":"device","name":"device","type":"COMBO","widget":{"name":"device"},"link":null},{"localized_name":"weight_dtype","name":"weight_dtype","type":"COMBO","widget":{"name":"weight_dtype"},"link":null}],"outputs":[{"localized_name":"VAE","name":"VAE","type":"VAE","links":[229,485]}],"title":"Video VAELoader","properties":{"cnr_id":"comfyui-kjnodes","ver":"1.2.5","Node name for S&R":"VAELoaderKJ"},"widgets_values":["vae_ltx\\LTX23_video_vae_bf16.safetensors","main_device","bf16"]},{"id":160,"type":"SetNode","pos":[2808.8873442669296,4041.5716616285104],"size":[223.53515625,60],"flags":{"collapsed":true},"order":51,"mode":0,"inputs":[{"name":"CONDITIONING","type":"CONDITIONING","link":487}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":null}],"title":"Set_positive","properties":{"Node name for S&R":"SetNode","aux_id":"kijai/ComfyUI-KJNodes","previousName":"positive"},"widgets_values":["positive"],"color":"#332922","bgcolor":"#593930"},{"id":161,"type":"SetNode","pos":[2651.611208803993,3943.663019434393],"size":[223.53515625,60],"flags":{"collapsed":true},"order":52,"mode":0,"inputs":[{"name":"CONDITIONING","type":"CONDITIONING","link":499}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":null}],"title":"Set_negative","properties":{"Node name for S&R":"SetNode","aux_id":"kijai/ComfyUI-KJNodes","previousName":"negative"},"widgets_values":["negative"],"color":"#332922","bgcolor":"#593930"},{"id":47,"type":"SamplerCustomAdvanced","pos":[4112.490971119919,3818.332523118286],"size":[230,246.9453125],"flags":{"collapsed":false},"order":65,"mode":0,"inputs":[{"localized_name":"noise","name":"noise","type":"NOISE","link":157},{"localized_name":"guider","name":"guider","type":"GUIDER","link":124},{"localized_name":"sampler","name":"sampler","type":"SAMPLER","link":125},{"localized_name":"sigmas","name":"sigmas","type":"SIGMAS","link":546},{"localized_name":"latent_image","name":"latent_image","type":"LATENT","link":127}],"outputs":[{"localized_name":"output","name":"output","type":"LATENT","links":[180]},{"localized_name":"denoised_output","name":"denoised_output","type":"LATENT","links":[]}],"properties":{"cnr_id":"comfy-core","ver":"0.3.60","Node name for S&R":"SamplerCustomAdvanced","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":[]},{"id":28,"type":"RandomNoise","pos":[3911.538365353464,4386.207659334862],"size":[210,90],"flags":{},"order":15,"mode":0,"inputs":[{"localized_name":"noise_seed","name":"noise_seed","type":"INT","widget":{"name":"noise_seed"},"link":null}],"outputs":[{"localized_name":"NOISE","name":"NOISE","type":"NOISE","links":[51,157]}],"properties":{"cnr_id":"comfy-core","ver":"0.19.3","Node name for S&R":"RandomNoise"},"widgets_values":[467,"fixed"]},{"id":147,"type":"Fast Bypasser (rgthree)","pos":[3033.558756510417,4641.345498670506],"size":[213.2109375,79.45646052686334],"flags":{"collapsed":false},"order":57,"mode":0,"inputs":[{"dir":3,"name":"LTX2 NAG","type":"*","link":325},{"dir":3,"name":"","type":"*","link":null}],"outputs":[{"dir":4,"name":"OPT_CONNECTION","type":"*","links":[]}],"title":"NAG (2)","properties":{"toggleRestriction":"default"},"color":"#322","bgcolor":"#533"},{"id":149,"type":"ComfySwitchNode","pos":[3033.558756510417,4514.496307535617],"size":[212.05874244546476,78],"flags":{"collapsed":false},"order":53,"mode":0,"inputs":[{"localized_name":"on_false","name":"on_false","type":"CONDITIONING","link":543},{"localized_name":"on_true","name":"on_true","type":"CONDITIONING","link":337},{"localized_name":"switch","name":"switch","type":"BOOLEAN","widget":{"name":"switch"},"link":null}],"outputs":[{"localized_name":"output","name":"output","type":"CONDITIONING","links":[413]}],"title":"NAG (1)","properties":{"cnr_id":"comfy-core","ver":"0.22.0","Node name for S&R":"ComfySwitchNode"},"widgets_values":[true],"color":"#322","bgcolor":"#533"},{"id":5,"type":"LTXVConditioning","pos":[3036.805994963843,4376.85089002825],"size":[213.2109375,78],"flags":{"collapsed":false},"order":58,"mode":0,"inputs":[{"localized_name":"positive","name":"positive","type":"CONDITIONING","link":488},{"localized_name":"negative","name":"negative","type":"CONDITIONING","link":413},{"localized_name":"frame_rate","name":"frame_rate","type":"FLOAT","widget":{"name":"frame_rate"},"link":497}],"outputs":[{"localized_name":"positive","name":"positive","type":"CONDITIONING","links":[513]},{"localized_name":"negative","name":"negative","type":"CONDITIONING","links":[514]}],"properties":{"cnr_id":"comfy-core","ver":"0.3.56","Node name for S&R":"LTXVConditioning","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":[24]},{"id":111,"type":"GetNode","pos":[3066.878983567528,3978.796182150794],"size":[210,58],"flags":{"collapsed":true},"order":16,"mode":0,"inputs":[],"outputs":[{"name":"VAE","type":"VAE","links":[231]}],"title":"Get_video_vae","properties":{"Node name for S&R":"GetNode","aux_id":"kijai/ComfyUI-KJNodes"},"widgets_values":["video_vae"],"color":"#322","bgcolor":"#533"},{"id":57,"type":"LatentUpscaleModelLoader","pos":[3038.558756510417,3818.332523118286],"size":[220.9224609375001,66.66415747513201],"flags":{"collapsed":false},"order":17,"mode":0,"inputs":[{"localized_name":"model_name","name":"model_name","type":"COMBO","widget":{"name":"model_name"},"link":null}],"outputs":[{"localized_name":"LATENT_UPSCALE_MODEL","name":"LATENT_UPSCALE_MODEL","type":"LATENT_UPSCALE_MODEL","links":[144]}],"properties":{"cnr_id":"comfy-core","ver":"0.16.4","Node name for S&R":"LatentUpscaleModelLoader"},"widgets_values":["ltx-2.3-spatial-upscaler-x2-1.1.safetensors"]},{"id":176,"type":"GetNode","pos":[2639.136465714806,3981.7714810737134],"size":[210,58],"flags":{"collapsed":true},"order":18,"mode":0,"inputs":[],"outputs":[{"name":"LATENT","type":"LATENT","links":[384]}],"title":"Get_video_latent","properties":{"Node name for S&R":"GetNode","aux_id":"kijai/ComfyUI-KJNodes"},"widgets_values":["video_latent"],"color":"#323","bgcolor":"#535"},{"id":169,"type":"SetNode","pos":[3376.874711176187,3898.3444003470045],"size":[223.53515625,50],"flags":{"collapsed":true},"order":59,"mode":0,"inputs":[{"name":"CONDITIONING","type":"CONDITIONING","link":509}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":null}],"title":"Set_pos_g2","properties":{"Node name for S&R":"SetNode","aux_id":"kijai/ComfyUI-KJNodes","previousName":"pos_g2"},"widgets_values":["pos_g2"],"color":"#332922","bgcolor":"#593930"},{"id":170,"type":"SetNode","pos":[3346.939246732877,3952.0998974757003],"size":[223.53515625,50],"flags":{"collapsed":true},"order":60,"mode":0,"inputs":[{"name":"CONDITIONING","type":"CONDITIONING","link":510}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":null}],"title":"Set_neg_g2","properties":{"Node name for S&R":"SetNode","aux_id":"kijai/ComfyUI-KJNodes","previousName":"neg_g2"},"widgets_values":["neg_g2"],"color":"#332922","bgcolor":"#593930"},{"id":112,"type":"GetNode","pos":[3337.0806938061965,3958.80943372539],"size":[210,50],"flags":{"collapsed":true},"order":19,"mode":0,"inputs":[],"outputs":[{"name":"VAE","type":"VAE","links":[506]}],"title":"Get_video_vae","properties":{"Node name for S&R":"GetNode","aux_id":"kijai/ComfyUI-KJNodes"},"widgets_values":["video_vae"],"color":"#322","bgcolor":"#533"},{"id":128,"type":"CLIPTextEncode","pos":[3318.1918051885973,4870.995084235324],"size":[288.24609375,140.29374240832567],"flags":{"collapsed":false},"order":34,"mode":0,"inputs":[{"localized_name":"clip","name":"clip","type":"CLIP","link":295},{"localized_name":"text","name":"text","type":"STRING","widget":{"name":"text"},"link":null}],"outputs":[{"localized_name":"CONDITIONING","name":"CONDITIONING","type":"CONDITIONING","links":[289,296,337,411]}],"title":"Negative Prompt","properties":{"cnr_id":"comfy-core","ver":"0.3.56","Node name for S&R":"CLIPTextEncode","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":["low poly, low geometry, subtitles, slow motion, subtitles, music, multiple character, anime style, animation, unrealistic motion, stiff motion, ambiance muscic fx, "],"color":"#222","bgcolor":"#000"},{"id":48,"type":"LTXVSeparateAVLatent","pos":[4369.936980799454,3945.6149642286105],"size":[213.24723845342578,102.59413081082812],"flags":{},"order":71,"mode":0,"inputs":[{"localized_name":"av_latent","name":"av_latent","type":"LATENT","link":180}],"outputs":[{"localized_name":"video_latent","name":"video_latent","type":"LATENT","links":[529,535]},{"localized_name":"audio_latent","name":"audio_latent","type":"LATENT","links":[]}],"properties":{"cnr_id":"comfy-core","ver":"0.5.1","Node name for S&R":"LTXVSeparateAVLatent","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":[]},{"id":207,"type":"LTXDirectorCropGuidesCS","pos":[4372.490971119918,3818.332523118286],"size":[231.2857421875,69.7102813687161],"flags":{"collapsed":false},"order":73,"mode":0,"inputs":[{"localized_name":"positive","name":"positive","type":"CONDITIONING","link":527},{"localized_name":"negative","name":"negative","type":"CONDITIONING","link":528},{"localized_name":"latent","name":"latent","type":"LATENT","link":529}],"outputs":[{"localized_name":"positive","name":"positive","type":"CONDITIONING","links":null},{"localized_name":"negative","name":"negative","type":"CONDITIONING","links":null},{"localized_name":"latent","name":"latent","type":"LATENT","links":[]}],"properties":{"cnr_id":"WhatDreamsCost-ComfyUI","ver":"6a035f05769536a87d9764e8b91d5744dc014fd2","Node name for S&R":"LTXDirectorCropGuidesCS"},"widgets_values":[]},{"id":103,"type":"GetNode","pos":[3318.1918051885973,3894.209095039438],"size":[210,58],"flags":{"collapsed":false},"order":20,"mode":0,"inputs":[],"outputs":[{"name":"MODEL","type":"MODEL","links":[508]}],"title":"Get_model_with_lora","properties":{"Node name for S&R":"GetNode","aux_id":"kijai/ComfyUI-KJNodes"},"widgets_values":["model_with_lora"],"color":"#223","bgcolor":"#335"},{"id":166,"type":"SetNode","pos":[3381.4492941316676,4591.072928935333],"size":[223.53515625,60],"flags":{"collapsed":true},"order":67,"mode":0,"inputs":[{"name":"CONDITIONING","type":"CONDITIONING","link":524}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":null}],"title":"Set_neg_g1","properties":{"Node name for S&R":"SetNode","aux_id":"kijai/ComfyUI-KJNodes","previousName":"neg_g1"},"widgets_values":["neg_g1"],"color":"#332922","bgcolor":"#593930"},{"id":165,"type":"SetNode","pos":[3391.7023226616607,4538.460330097065],"size":[223.53515625,60],"flags":{"collapsed":true},"order":66,"mode":0,"inputs":[{"name":"CONDITIONING","type":"CONDITIONING","link":525}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":null}],"title":"Set_pos_g1","properties":{"Node name for S&R":"SetNode","aux_id":"kijai/ComfyUI-KJNodes","previousName":"pos_g1"},"widgets_values":["pos_g1"],"color":"#332922","bgcolor":"#593930"},{"id":168,"type":"GetNode","pos":[3333.2969409104207,3873.0292750064664],"size":[210,58],"flags":{"collapsed":true},"order":21,"mode":0,"inputs":[],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[512]}],"title":"Get_negative","properties":{"Node name for S&R":"GetNode","aux_id":"kijai/ComfyUI-KJNodes"},"widgets_values":["negative"],"color":"#332922","bgcolor":"#593930"},{"id":13,"type":"LTXVSeparateAVLatent","pos":[4367.366513366797,4387.811687505486],"size":[200,50],"flags":{"collapsed":false},"order":75,"mode":0,"inputs":[{"localized_name":"av_latent","name":"av_latent","type":"LATENT","link":267}],"outputs":[{"localized_name":"video_latent","name":"video_latent","type":"LATENT","links":[539]},{"localized_name":"audio_latent","name":"audio_latent","type":"LATENT","links":[235,382]}],"properties":{"cnr_id":"comfy-core","ver":"0.16.0","Node name for S&R":"LTXVSeparateAVLatent"},"widgets_values":[]},{"id":52,"type":"LTXVLatentUpsampler","pos":[3033.558756510417,3938.209095039438],"size":[225.9224609375001,69.56732373895738],"flags":{"collapsed":false},"order":37,"mode":0,"inputs":[{"localized_name":"samples","name":"samples","type":"LATENT","link":384},{"localized_name":"upscale_model","name":"upscale_model","type":"LATENT_UPSCALE_MODEL","link":144},{"localized_name":"vae","name":"vae","type":"VAE","link":231}],"outputs":[{"localized_name":"LATENT","name":"LATENT","type":"LATENT","links":[500]}],"properties":{"cnr_id":"comfy-core","ver":"0.14.1","Node name for S&R":"LTXVLatentUpsampler","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":[]},{"id":173,"type":"SetNode","pos":[4390.009414565058,4731.862509106096],"size":[210,60],"flags":{"collapsed":true},"order":80,"mode":0,"inputs":[{"name":"LATENT","type":"LATENT","link":534}],"outputs":[{"name":"LATENT","type":"LATENT","links":null}],"title":"Set_video_latent","properties":{"Node name for S&R":"SetNode","aux_id":"kijai/ComfyUI-KJNodes","previousName":"video_latent"},"widgets_values":["video_latent"],"color":"#323","bgcolor":"#535"},{"id":163,"type":"GetNode","pos":[4377.355351179076,4734.946318151326],"size":[210,58],"flags":{"collapsed":true},"order":22,"mode":0,"inputs":[],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[532]}],"title":"Get_neg_g1","properties":{"Node name for S&R":"GetNode","aux_id":"kijai/ComfyUI-KJNodes"},"widgets_values":["neg_g1"],"color":"#332922","bgcolor":"#593930"},{"id":162,"type":"GetNode","pos":[4400.411078901553,4746.392745247446],"size":[210,60],"flags":{"collapsed":true},"order":23,"mode":0,"inputs":[],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[533]}],"title":"Get_pos_g1","properties":{"Node name for S&R":"GetNode","aux_id":"kijai/ComfyUI-KJNodes"},"widgets_values":["pos_g1"],"color":"#332922","bgcolor":"#593930"},{"id":208,"type":"LTXDirectorCropGuidesCS","pos":[4356.007935461286,4677.788912247675],"size":[231.2857421875,81.53995919926001],"flags":{"collapsed":false},"order":77,"mode":0,"inputs":[{"localized_name":"positive","name":"positive","type":"CONDITIONING","link":533},{"localized_name":"negative","name":"negative","type":"CONDITIONING","link":532},{"localized_name":"latent","name":"latent","type":"LATENT","link":539}],"outputs":[{"localized_name":"positive","name":"positive","type":"CONDITIONING","links":null},{"localized_name":"negative","name":"negative","type":"CONDITIONING","links":null},{"localized_name":"latent","name":"latent","type":"LATENT","links":[534]}],"properties":{"cnr_id":"WhatDreamsCost-ComfyUI","ver":"6a035f05769536a87d9764e8b91d5744dc014fd2","Node name for S&R":"LTXDirectorCropGuidesCS"},"widgets_values":[]},{"id":209,"type":"CleanLatentSliceCS","pos":[4367.366513366797,4860.2201300885135],"size":[210,87.91493232860648],"flags":{},"order":74,"mode":0,"inputs":[{"localized_name":"latent","name":"latent","type":"LATENT","link":535},{"localized_name":"start","name":"start","type":"INT","widget":{"name":"start"},"link":null},{"localized_name":"length","name":"length","type":"INT","widget":{"name":"length"},"link":537}],"outputs":[{"localized_name":"latent","name":"latent","type":"LATENT","links":[536]}],"properties":{"cnr_id":"WhatDreamsCost-ComfyUI","ver":"6a035f05769536a87d9764e8b91d5744dc014fd2","Node name for S&R":"CleanLatentSliceCS"},"widgets_values":[0,1]},{"id":167,"type":"GetNode","pos":[3334.4651115022702,3830.093959691253],"size":[210,50],"flags":{"collapsed":true},"order":24,"mode":0,"inputs":[],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[511]}],"title":"Get_positive","properties":{"Node name for S&R":"GetNode","aux_id":"kijai/ComfyUI-KJNodes"},"widgets_values":["positive"],"color":"#332922","bgcolor":"#593930"},{"id":205,"type":"LTXDirectorGuideCS","pos":[3318.1918051885973,3821.1205593381546],"size":[288.24609375,453.36924006026265],"flags":{"collapsed":false},"order":54,"mode":0,"inputs":[{"localized_name":"positive","name":"positive","type":"CONDITIONING","link":511},{"localized_name":"negative","name":"negative","type":"CONDITIONING","link":512},{"localized_name":"vae","name":"vae","type":"VAE","link":506},{"localized_name":"latent","name":"latent","type":"LATENT","link":500},{"localized_name":"guide_data","name":"guide_data","type":"GUIDE_DATA","link":501},{"localized_name":"motion_guide_data","name":"motion_guide_data","shape":7,"type":"MOTION_GUIDE_DATA","link":507},{"localized_name":"model","name":"model","shape":7,"type":"MODEL","link":508},{"localized_name":"ic_lora_name","name":"ic_lora_name","shape":7,"type":"COMBO","widget":{"name":"ic_lora_name"},"link":null},{"localized_name":"ic_lora_strength","name":"ic_lora_strength","shape":7,"type":"FLOAT","widget":{"name":"ic_lora_strength"},"link":null},{"localized_name":"scale_by","name":"scale_by","shape":7,"type":"FLOAT","widget":{"name":"scale_by"},"link":null},{"localized_name":"upscale_method","name":"upscale_method","shape":7,"type":"COMBO","widget":{"name":"upscale_method"},"link":null},{"localized_name":"image_attention_strength","name":"image_attention_strength","shape":7,"type":"FLOAT","widget":{"name":"image_attention_strength"},"link":null},{"localized_name":"crop","name":"crop","shape":7,"type":"COMBO","widget":{"name":"crop"},"link":null},{"localized_name":"auto_snap_ic_grid","name":"auto_snap_ic_grid","shape":7,"type":"BOOLEAN","widget":{"name":"auto_snap_ic_grid"},"link":null},{"localized_name":"use_tiled_encode","name":"use_tiled_encode","shape":7,"type":"BOOLEAN","widget":{"name":"use_tiled_encode"},"link":null},{"localized_name":"tile_size","name":"tile_size","shape":7,"type":"INT","widget":{"name":"tile_size"},"link":null},{"localized_name":"tile_overlap","name":"tile_overlap","shape":7,"type":"INT","widget":{"name":"tile_overlap"},"link":null},{"localized_name":"retake_mode","name":"retake_mode","shape":7,"type":"BOOLEAN","widget":{"name":"retake_mode"},"link":null},{"localized_name":"msr_strength","name":"msr_strength","shape":7,"type":"FLOAT","widget":{"name":"msr_strength"},"link":null}],"outputs":[{"localized_name":"positive","name":"positive","type":"CONDITIONING","links":[502,509]},{"localized_name":"negative","name":"negative","type":"CONDITIONING","links":[503,510]},{"localized_name":"latent","name":"latent","type":"LATENT","links":[505]},{"localized_name":"model","name":"model","type":"MODEL","links":[504,538]},{"localized_name":"latent_downscale_factor","name":"latent_downscale_factor","type":"FLOAT","links":null}],"properties":{"cnr_id":"WhatDreamsCost-ComfyUI","ver":"6a035f05769536a87d9764e8b91d5744dc014fd2","Node name for S&R":"LTXDirectorGuideCS"},"widgets_values":["None",1,1,"bicubic",1,"center",true,false,256,64,false,0]},{"id":54,"type":"BasicScheduler","pos":[3679.914746126751,4062.8051793682857],"size":[210,106.00000000000045],"flags":{"collapsed":false},"order":63,"mode":0,"inputs":[{"localized_name":"model","name":"model","type":"MODEL","link":538},{"localized_name":"scheduler","name":"scheduler","type":"COMBO","widget":{"name":"scheduler"},"link":null},{"localized_name":"steps","name":"steps","type":"INT","widget":{"name":"steps"},"link":null},{"localized_name":"denoise","name":"denoise","type":"FLOAT","widget":{"name":"denoise"},"link":null}],"outputs":[{"localized_name":"SIGMAS","name":"SIGMAS","type":"SIGMAS","links":[]}],"properties":{"cnr_id":"comfy-core","ver":"0.16.4","Node name for S&R":"BasicScheduler"},"widgets_values":["linear_quadratic",4,0.42]},{"id":101,"type":"Power Lora Loader (rgthree)","pos":[1348.402940047052,3891.7764187783955],"size":[340.519921875,262],"flags":{"collapsed":false},"order":47,"mode":0,"inputs":[{"dir":3,"name":"model","type":"MODEL","link":218},{"dir":3,"name":"clip","type":"CLIP","link":null}],"outputs":[{"dir":4,"name":"MODEL","shape":3,"type":"MODEL","links":[213,482]},{"dir":4,"name":"CLIP","shape":3,"type":"CLIP","links":null}],"properties":{"cnr_id":"rgthree-comfy","ver":"1.0.2605082257","Show Strengths":"Single Strength","Match":""},"widgets_values":[{},{"type":"PowerLoraLoaderHeaderWidget"},{"on":true,"lora":"LTX\\LTX-2.3-Licon-MSR-V1.safetensors","strength":0.8,"strengthTwo":null},{"on":false,"lora":"LTX\\LTX2.3_Crisp_Enhance.safetensors","strength":1,"strengthTwo":null},{"on":false,"lora":"LTX\\LTX2.3_Soft_Enhance.safetensors","strength":1,"strengthTwo":null},{"on":false,"lora":"LTX\\Ltx2.3-Licon-VBVR-I2V-390K-R32.safetensors","strength":1,"strengthTwo":null},{"on":false,"lora":"LTX\\LTX2.3-IC-LORA-Dual-Character.safetensors","strength":0.5,"strengthTwo":null},{"on":false,"lora":"LTX\\ltx2.3-transition.safetensors","strength":0.5,"strengthTwo":null},{},""]},{"id":206,"type":"LTXDirectorGuideCS","pos":[3318.1918051885973,4387.811687505486],"size":[288.24609375,453.36924006026265],"flags":{},"order":64,"mode":0,"inputs":[{"localized_name":"positive","name":"positive","type":"CONDITIONING","link":513},{"localized_name":"negative","name":"negative","type":"CONDITIONING","link":514},{"localized_name":"vae","name":"vae","type":"VAE","link":519},{"localized_name":"latent","name":"latent","type":"LATENT","link":515},{"localized_name":"guide_data","name":"guide_data","type":"GUIDE_DATA","link":518},{"localized_name":"motion_guide_data","name":"motion_guide_data","shape":7,"type":"MOTION_GUIDE_DATA","link":517},{"localized_name":"model","name":"model","shape":7,"type":"MODEL","link":516},{"localized_name":"ic_lora_name","name":"ic_lora_name","shape":7,"type":"COMBO","widget":{"name":"ic_lora_name"},"link":null},{"localized_name":"ic_lora_strength","name":"ic_lora_strength","shape":7,"type":"FLOAT","widget":{"name":"ic_lora_strength"},"link":null},{"localized_name":"scale_by","name":"scale_by","shape":7,"type":"FLOAT","widget":{"name":"scale_by"},"link":null},{"localized_name":"upscale_method","name":"upscale_method","shape":7,"type":"COMBO","widget":{"name":"upscale_method"},"link":null},{"localized_name":"image_attention_strength","name":"image_attention_strength","shape":7,"type":"FLOAT","widget":{"name":"image_attention_strength"},"link":null},{"localized_name":"crop","name":"crop","shape":7,"type":"COMBO","widget":{"name":"crop"},"link":null},{"localized_name":"auto_snap_ic_grid","name":"auto_snap_ic_grid","shape":7,"type":"BOOLEAN","widget":{"name":"auto_snap_ic_grid"},"link":null},{"localized_name":"use_tiled_encode","name":"use_tiled_encode","shape":7,"type":"BOOLEAN","widget":{"name":"use_tiled_encode"},"link":null},{"localized_name":"tile_size","name":"tile_size","shape":7,"type":"INT","widget":{"name":"tile_size"},"link":null},{"localized_name":"tile_overlap","name":"tile_overlap","shape":7,"type":"INT","widget":{"name":"tile_overlap"},"link":null},{"localized_name":"retake_mode","name":"retake_mode","shape":7,"type":"BOOLEAN","widget":{"name":"retake_mode"},"link":null},{"localized_name":"msr_strength","name":"msr_strength","shape":7,"type":"FLOAT","widget":{"name":"msr_strength"},"link":null}],"outputs":[{"localized_name":"positive","name":"positive","type":"CONDITIONING","links":[520,525]},{"localized_name":"negative","name":"negative","type":"CONDITIONING","links":[521,524]},{"localized_name":"latent","name":"latent","type":"LATENT","links":[522]},{"localized_name":"model","name":"model","type":"MODEL","links":[523,544]},{"localized_name":"latent_downscale_factor","name":"latent_downscale_factor","type":"FLOAT","links":null}],"properties":{"cnr_id":"WhatDreamsCost-ComfyUI","ver":"6a035f05769536a87d9764e8b91d5744dc014fd2","Node name for S&R":"LTXDirectorGuideCS"},"widgets_values":["None",1,0.5,"bicubic",1,"center",true,false,256,64,false,0]},{"id":158,"type":"MarkdownNote","pos":[1464.0255349598156,4920.963347548293],"size":[267.18943623097084,131.4338305567444],"flags":{"collapsed":false},"order":25,"mode":0,"inputs":[],"outputs":[],"title":"Analyzing Images Ref infos","properties":{},"widgets_values":["in order to use the automatic description:\n\n\nINSTALL OLLAMA ON YOUR COMPUTER\n\nmodel used qwen 3.5 2b (around 1.9gb)\n\n\nrun this command on your ollama model folder:\n\n\nollama run huihui_ai/qwen3.5-abliterated:2B\n\n\nput your ref on 16 : 9 ratio !\n\n"],"color":"#222","bgcolor":"#000"},{"id":92,"type":"MarkdownNote","pos":[1192.1737870477007,4841.9399749389495],"size":[270,560],"flags":{"collapsed":true},"order":26,"mode":0,"inputs":[],"outputs":[],"title":"FAQ","properties":{},"widgets_values":["# FAQ\n\n**How do I use this??**\n\nI'll be posting tutorials on my YouTube channel soon!\n\n\n**Where do I download these models??**\n\nThere is a good list of models and download links here: \n\nAlso the latest v1.1 spatial upscaler can be found here: \n\nThe tiny vae (taeltx2_3.safetensors) is found here:\n\n\n**I'm getting errors when running this workflow!**\n\nDouble check that you have all of the correct models loaded. This is using the newest version of 2x upscaler (v1.1). You can change it to the older one under the Model Loader.\n\n**How can I support you?**\n\nHelp me get a job. I'm unemployed and literally broke. (seriously, i'll even scrub toilets for minimum wage)\n\nOr follow me on my socials :)\n\n\n\n\n\n\n"],"color":"#222","bgcolor":"#000"},{"id":179,"type":"MarkdownNote","pos":[4415.296200866797,5026.288826643649],"size":[210,88],"flags":{"collapsed":true},"order":27,"mode":0,"inputs":[],"outputs":[],"title":"Clean Latent Slice","properties":{},"widgets_values":["\nDisable with Licon MSR\n"],"color":"#222","bgcolor":"#000"},{"id":94,"type":"UNETLoader","pos":[1187.7290384972068,4380.0957326862],"size":[260.8147768096842,82],"flags":{"collapsed":false},"order":28,"mode":0,"inputs":[{"localized_name":"unet_name","name":"unet_name","type":"COMBO","widget":{"name":"unet_name"},"link":null},{"localized_name":"weight_dtype","name":"weight_dtype","type":"COMBO","widget":{"name":"weight_dtype"},"link":null}],"outputs":[{"localized_name":"MODEL","name":"MODEL","type":"MODEL","links":[408]}],"properties":{"cnr_id":"comfy-core","ver":"0.21.1","Node name for S&R":"UNETLoader"},"widgets_values":["ltx\\ltx-2-3-22b-dev_transformer_only_fp8_input_scaled.safetensors","default"]},{"id":102,"type":"VHS_VideoCombine","pos":[4713.409101523936,3860.1307770768394],"size":[903.5017372863722,334],"flags":{"collapsed":false},"order":81,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":222},{"localized_name":"audio","name":"audio","shape":7,"type":"AUDIO","link":223},{"localized_name":"meta_batch","name":"meta_batch","shape":7,"type":"VHS_BatchManager","link":null},{"localized_name":"vae","name":"vae","shape":7,"type":"VAE","link":null},{"localized_name":"frame_rate","name":"frame_rate","type":"FLOAT","widget":{"name":"frame_rate"},"link":392},{"localized_name":"loop_count","name":"loop_count","type":"INT","widget":{"name":"loop_count"},"link":null},{"localized_name":"filename_prefix","name":"filename_prefix","type":"STRING","widget":{"name":"filename_prefix"},"link":null},{"localized_name":"format","name":"format","type":"COMBO","widget":{"name":"format"},"link":null},{"localized_name":"pingpong","name":"pingpong","type":"BOOLEAN","widget":{"name":"pingpong"},"link":null},{"localized_name":"save_output","name":"save_output","type":"BOOLEAN","widget":{"name":"save_output"},"link":null},{"name":"pix_fmt","type":["yuv420p","p010le"],"widget":{"name":"pix_fmt"},"link":null},{"name":"bitrate","type":"INT","widget":{"name":"bitrate"},"link":null},{"name":"megabit","type":"BOOLEAN","widget":{"name":"megabit"},"link":null},{"name":"save_metadata","type":"BOOLEAN","widget":{"name":"save_metadata"},"link":null}],"outputs":[{"localized_name":"Filenames","name":"Filenames","type":"VHS_FILENAMES","links":null}],"properties":{"cnr_id":"comfyui-videohelpersuite","ver":"8923bd836bdab8b7bbdf4ed104b7d045e70c66e2","Node name for S&R":"VHS_VideoCombine"},"widgets_values":{"frame_rate":24,"loop_count":0,"filename_prefix":"LTX-2","format":"video/nvenc_h264-mp4","pix_fmt":"yuv420p","bitrate":10,"megabit":true,"save_metadata":true,"pingpong":false,"save_output":true,"videopreview":{"hidden":false,"paused":false,"params":{"filename":"LTX-2_00650-audio.mp4","subfolder":"","type":"output","format":"video/nvenc_h264-mp4","frame_rate":25,"workflow":"LTX-2_00650.png","fullpath":"S:\\ComfyUI\\ComfyUI\\output\\LTX-2_00650-audio.mp4"}}}},{"id":29,"type":"KSamplerSelect","pos":[3911.538365353464,4514.496307535617],"size":[210,60],"flags":{},"order":29,"mode":0,"inputs":[{"localized_name":"sampler_name","name":"sampler_name","type":"COMBO","widget":{"name":"sampler_name"},"link":null}],"outputs":[{"localized_name":"SAMPLER","name":"SAMPLER","type":"SAMPLER","links":[53]}],"properties":{"cnr_id":"comfy-core","ver":"0.3.56","Node name for S&R":"KSamplerSelect","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":["euler_ancestral_cfg_pp"]},{"id":11,"type":"BasicScheduler","pos":[3911.538365353464,4655.777557535617],"size":[210,110],"flags":{},"order":70,"mode":0,"inputs":[{"localized_name":"model","name":"model","type":"MODEL","link":544},{"localized_name":"scheduler","name":"scheduler","type":"COMBO","widget":{"name":"scheduler"},"link":null},{"localized_name":"steps","name":"steps","type":"INT","widget":{"name":"steps"},"link":null},{"localized_name":"denoise","name":"denoise","type":"FLOAT","widget":{"name":"denoise"},"link":null}],"outputs":[{"localized_name":"SIGMAS","name":"SIGMAS","type":"SIGMAS","links":[52]}],"properties":{"cnr_id":"comfy-core","ver":"0.16.4","Node name for S&R":"BasicScheduler"},"widgets_values":["linear_quadratic",12,1]},{"id":157,"type":"MarkdownNote","pos":[3651.9892769020544,4911.05295266081],"size":[214.491056348013,88],"flags":{"collapsed":false},"order":30,"mode":0,"inputs":[],"outputs":[],"title":"NAG","properties":{},"widgets_values":["\nNAG : enable both (ON)\n \n\ndisable both (OFF)\n\n\n"],"color":"#222","bgcolor":"#000"},{"id":204,"type":"LTXDirectorCS","pos":[1817.1933161031693,3818.332523118286],"size":[1146.460593284808,1237],"flags":{"collapsed":false},"order":49,"mode":0,"inputs":[{"localized_name":"model","name":"model","type":"MODEL","link":482},{"localized_name":"clip","name":"clip","type":"CLIP","link":483},{"localized_name":"audio_vae","name":"audio_vae","shape":7,"type":"VAE","link":484},{"localized_name":"optional_latent","name":"optional_latent","shape":7,"type":"LATENT","link":null},{"localized_name":"global_prompt","name":"global_prompt","shape":7,"type":"STRING","link":null},{"localized_name":"vae","name":"vae","shape":7,"type":"VAE","link":485},{"localized_name":"start","name":"start","shape":7,"type":"FLOAT","link":null},{"localized_name":"end","name":"end","shape":7,"type":"FLOAT","link":null},{"localized_name":"duration","name":"duration","shape":7,"type":"FLOAT","link":null},{"localized_name":"frame_rate","name":"frame_rate","shape":7,"type":"FLOAT","widget":{"name":"frame_rate"},"link":null},{"localized_name":"custom_width","name":"custom_width","shape":7,"type":"INT","widget":{"name":"custom_width"},"link":null},{"localized_name":"custom_height","name":"custom_height","shape":7,"type":"INT","widget":{"name":"custom_height"},"link":null},{"localized_name":"resize_method","name":"resize_method","shape":7,"type":"COMBO","widget":{"name":"resize_method"},"link":null},{"localized_name":"reference_strength","name":"reference_strength","shape":7,"type":"FLOAT","widget":{"name":"reference_strength"},"link":null}],"outputs":[{"localized_name":"model","name":"model","type":"MODEL","links":[486]},{"localized_name":"positive","name":"positive","type":"CONDITIONING","links":[487,488]},{"localized_name":"negative","name":"negative","type":"CONDITIONING","links":[499,543]},{"localized_name":"video_latent","name":"video_latent","type":"LATENT","links":[515]},{"localized_name":"audio_latent","name":"audio_latent","type":"LATENT","links":[491]},{"localized_name":"guide_data","name":"guide_data","type":"GUIDE_DATA","links":[501,518]},{"localized_name":"motion_guide_data","name":"motion_guide_data","type":"MOTION_GUIDE_DATA","links":[507,517]},{"localized_name":"frame_rate","name":"frame_rate","type":"FLOAT","links":[496,497]},{"localized_name":"combined_audio","name":"combined_audio","type":"AUDIO","links":null},{"localized_name":"clean_latent_frames","name":"clean_latent_frames","type":"INT","links":[498]},{"localized_name":"clean_pixel_frames","name":"clean_pixel_frames","type":"INT","links":null}],"properties":{"cnr_id":"WhatDreamsCost-ComfyUI","ver":"6a035f05769536a87d9764e8b91d5744dc014fd2","Node name for S&R":"LTXDirectorCS","global_prompt":"Aesthetic & Textures: Cinematic, photorealistic night footage. Sleek retro-futuristic coupe with a highly detailed brushed-steel metallic finish, reflecting ambient streetlights. Polished deep-dish bronze multi-piece wheels. Background features rough, weathered grey concrete overpass structures, wet asphalt, and distant city lights. High-contrast, moody atmosphere.","mainTrackEnabled":true,"audioTrackEnabled":true,"motionTrackEnabled":true,"audioTrackWasEnabledBeforeOverride":false,"inpaint_audio":true,"override_audio":false,"overrideAudio":false,"showFilenames":true,"use_custom_audio":true,"use_custom_motion":true,"frame_rate":25,"display_mode":"seconds","custom_width":1920,"custom_height":1088,"resize_method":"stretch to fit","divisible_by":32,"img_compression":18,"guide_strength":"","local_prompts":"","segment_lengths":"","timeline_data":"{\"mainTrackEnabled\":true,\"audioTrackEnabled\":true,\"motionTrackEnabled\":true,\"propHeight\":90,\"globalPropHeight\":67,\"showFilenames\":true,\"overrideAudio\":false,\"inpaint_audio\":true,\"global_prompt\":\"Aesthetic & Textures: Cinematic, photorealistic night footage. Sleek retro-futuristic coupe with a highly detailed brushed-steel metallic finish, reflecting ambient streetlights. Polished deep-dish bronze multi-piece wheels. Background features rough, weathered grey concrete overpass structures, wet asphalt, and distant city lights. High-contrast, moody atmosphere.\",\"retake_global_prompt\":\"\",\"retakeMode\":false,\"retakeStart\":24,\"retakeLength\":48,\"retakePrompt\":\"\",\"retakeStrength\":1,\"retakeVideo\":null,\"normalStartFrame\":0,\"normalDurationFrames\":200,\"reference_mode\":\"Licon MSR (Prefix)\",\"analyzeProvider\":\"ollama\",\"analyzeBaseUrl\":\"\",\"analyzeModel\":\"\",\"characters\":[{\"images\":[],\"description\":\"He has short graying hair and a rugged face marked with visible age spots and scarring on his cheeks. He is dressed in a tattered brown leather apron worn over an olive-green jacket layered under a scarf. ha has one cyber eye\"},{\"images\":[],\"description\":\"The character is a tall, slender humanoid with smooth pale skin and a strong jawline beneath sleek eye-goggles covering her eyes entirely. She wears an imposing black hooded headpiece atop the neck of a matte-black tactical suit accented with orange mechanical joints.\"},{\"images\":[],\"description\":\"\"}],\"segments\":[],\"motionSegments\":[],\"audioSegments\":[]}","epsilon":0.001,"start_second":0,"end_second":8,"duration_seconds":8,"start_frame":0,"end_frame":200,"duration_frames":200,"propHeight":90,"globalPropHeight":67,"reference_strength":1,"timeline_ui":"","has_serialized_properties":true,"retakeMode":false,"ltx_settings_ui":""},"widgets_values":[0,8,8,0,200,200,"{\"mainTrackEnabled\":true,\"audioTrackEnabled\":true,\"motionTrackEnabled\":true,\"propHeight\":90,\"globalPropHeight\":67,\"showFilenames\":true,\"overrideAudio\":false,\"inpaint_audio\":true,\"global_prompt\":\"Aesthetic & Textures: Cinematic, photorealistic night footage. Sleek retro-futuristic coupe with a highly detailed brushed-steel metallic finish, reflecting ambient streetlights. Polished deep-dish bronze multi-piece wheels. Background features rough, weathered grey concrete overpass structures, wet asphalt, and distant city lights. High-contrast, moody atmosphere.\",\"retake_global_prompt\":\"\",\"retakeMode\":false,\"retakeStart\":24,\"retakeLength\":48,\"retakePrompt\":\"\",\"retakeStrength\":1,\"retakeVideo\":null,\"normalStartFrame\":0,\"normalDurationFrames\":200,\"reference_mode\":\"Licon MSR (Prefix)\",\"analyzeProvider\":\"ollama\",\"analyzeBaseUrl\":\"\",\"analyzeModel\":\"\",\"characters\":[{\"images\":[],\"description\":\"He has short graying hair and a rugged face marked with visible age spots and scarring on his cheeks. He is dressed in a tattered brown leather apron worn over an olive-green jacket layered under a scarf. ha has one cyber eye\"},{\"images\":[],\"description\":\"The character is a tall, slender humanoid with smooth pale skin and a strong jawline beneath sleek eye-goggles covering her eyes entirely. She wears an imposing black hooded headpiece atop the neck of a matte-black tactical suit accented with orange mechanical joints.\"},{\"images\":[],\"description\":\"\"}],\"segments\":[],\"motionSegments\":[],\"audioSegments\":[]}","","",0.001,"",true,true,true,25,"seconds",1920,1088,"stretch to fit",32,18,false,1,"",""]},{"id":146,"type":"PrimitiveStringMultiline","pos":[4372.490971119918,4102.805179368286],"size":[210,88],"flags":{"collapsed":false},"order":31,"mode":0,"inputs":[{"localized_name":"value","name":"value","type":"STRING","widget":{"name":"value"},"link":null}],"outputs":[{"localized_name":"STRING","name":"STRING","type":"STRING","links":[318]}],"properties":{"cnr_id":"comfy-core","ver":"0.22.0","Node name for S&R":"PrimitiveStringMultiline"},"widgets_values":["0.85, 0.6165, 0.3460, 0.0000"]},{"id":104,"type":"ManualSigmas","pos":[4112.490971119919,4132.805179368286],"size":[230,58],"flags":{"collapsed":false},"order":39,"mode":0,"inputs":[{"localized_name":"sigmas","name":"sigmas","type":"STRING","widget":{"name":"sigmas"},"link":318}],"outputs":[{"localized_name":"SIGMAS","name":"SIGMAS","type":"SIGMAS","links":[546]}],"properties":{"cnr_id":"comfy-core","ver":"0.14.1","Node name for S&R":"ManualSigmas"},"widgets_values":["0.85, 0.7250, 0.4219, 0.0"]},{"id":150,"type":"MarkdownNote","pos":[4713.409101523936,4789.328871446935],"size":[288.8383013624807,147.09966422352863],"flags":{"collapsed":false},"order":32,"mode":0,"inputs":[],"outputs":[],"title":"About Models","properties":{},"widgets_values":["\neuler_ancestral_cgf_pp (more photorealistic)\nres 3s (slower)\n\n\n20 steps (best)\n8 steps (ok)\n\nUpscale 3 ok 4 better (plug Basicscheduler to Sampler)\n\nDistilled 0.6 lora (good ref sheet fidelity)\n\n\n48 fps for perfect fast motion\n\nMSR Licon WORKING ! 0.75s artifacts when upscaled because of HD images reinjection\n \n"],"color":"#222","bgcolor":"#000"}],"links":[[12,9,0,10,1,"GUIDER"],[14,7,0,10,4,"LATENT"],[51,28,0,10,0,"NOISE"],[52,11,0,10,3,"SIGMAS"],[53,29,0,10,2,"SAMPLER"],[124,49,0,47,1,"GUIDER"],[125,53,0,47,2,"SAMPLER"],[127,50,0,47,4,"LATENT"],[144,57,0,52,1,"LATENT_UPSCALE_MODEL"],[157,28,0,47,0,"NOISE"],[180,47,0,48,0,"LATENT"],[196,78,0,79,2,"VAE"],[213,101,0,95,0,"MODEL"],[214,99,0,96,0,"MODEL"],[215,97,0,98,0,"MODEL"],[216,100,0,99,0,"MODEL"],[217,98,0,100,0,"MODEL"],[218,99,0,101,0,"MODEL"],[219,80,0,97,0,"MODEL"],[222,15,0,102,0,"IMAGE"],[223,16,0,102,1,"AUDIO"],[227,4,0,107,0,"VAE"],[228,108,0,16,1,"VAE"],[229,3,0,109,0,"VAE"],[231,111,0,52,2,"VAE"],[233,113,0,15,1,"VAE"],[235,13,1,16,0,"LATENT"],[267,10,0,13,0,"LATENT"],[289,128,0,127,1,"CONDITIONING"],[294,84,0,129,0,"CLIP"],[295,130,0,128,0,"CLIP"],[296,128,0,127,2,"CONDITIONING"],[318,146,0,104,0,"STRING"],[325,127,0,147,0,"MODEL"],[337,128,0,149,1,"CONDITIONING"],[382,13,1,174,0,"LATENT"],[383,175,0,50,1,"LATENT"],[384,176,0,52,0,"LATENT"],[392,181,0,102,4,"FLOAT"],[405,79,0,80,0,"MODEL"],[408,94,0,79,0,"MODEL"],[411,128,0,187,0,"CONDITIONING"],[413,149,0,5,1,"CONDITIONING"],[482,101,0,204,0,"MODEL"],[483,84,0,204,1,"CLIP"],[484,4,0,204,2,"VAE"],[485,3,0,204,5,"VAE"],[486,204,0,127,0,"MODEL"],[487,204,1,160,0,"CONDITIONING"],[488,204,1,5,0,"CONDITIONING"],[491,204,4,7,1,"LATENT"],[496,204,7,180,0,"FLOAT"],[497,204,7,5,2,"FLOAT"],[498,204,9,182,0,"INT"],[499,204,2,161,0,"CONDITIONING"],[500,52,0,205,3,"LATENT"],[501,204,5,205,4,"GUIDE_DATA"],[502,205,0,49,1,"CONDITIONING"],[503,205,1,49,2,"CONDITIONING"],[504,205,3,49,0,"MODEL"],[505,205,2,50,0,"LATENT"],[506,112,0,205,2,"VAE"],[507,204,6,205,5,"MOTION_GUIDE_DATA"],[508,103,0,205,6,"MODEL"],[509,205,0,169,0,"CONDITIONING"],[510,205,1,170,0,"CONDITIONING"],[511,167,0,205,0,"CONDITIONING"],[512,168,0,205,1,"CONDITIONING"],[513,5,0,206,0,"CONDITIONING"],[514,5,1,206,1,"CONDITIONING"],[515,204,3,206,3,"LATENT"],[516,127,0,206,6,"MODEL"],[517,204,6,206,5,"MOTION_GUIDE_DATA"],[518,204,5,206,4,"GUIDE_DATA"],[519,110,0,206,2,"VAE"],[520,206,0,9,1,"CONDITIONING"],[521,206,1,9,2,"CONDITIONING"],[522,206,2,7,0,"LATENT"],[523,206,3,9,0,"MODEL"],[524,206,1,166,0,"CONDITIONING"],[525,206,0,165,0,"CONDITIONING"],[527,171,0,207,0,"CONDITIONING"],[528,172,0,207,1,"CONDITIONING"],[529,48,0,207,2,"LATENT"],[532,163,0,208,1,"CONDITIONING"],[533,162,0,208,0,"CONDITIONING"],[534,208,2,173,0,"LATENT"],[535,48,0,209,0,"LATENT"],[536,209,0,15,0,"LATENT"],[537,196,0,209,2,"INT"],[538,205,3,54,0,"MODEL"],[539,13,0,208,2,"LATENT"],[543,204,2,149,0,"CONDITIONING"],[544,206,3,11,0,"MODEL"],[546,104,0,47,3,"SIGMAS"]],"groups":[{"id":4,"title":"Stage #1","bounding":[3016.805994963843,4308.288648200755,1606.2379320089217,760.3108486715846],"flags":{}},{"id":5,"title":"Stage #2 Upscale","bounding":[3014.511362276872,3740.2110485574576,1610.58065732864,543.7537097700324],"flags":{}},{"id":6,"title":"Process Video","bounding":[4647.885369591847,3745.09345122726,1012.506433346367,1323.8349380513605],"flags":{}},{"id":7,"title":"Timeline","bounding":[1777.8233971795028,3740.7638722614215,1223.960654049973,1327.678450477571],"flags":{}},{"id":8,"title":"Peformace tweaks (help low vram)","bounding":[1270.0934983588413,4153.903583195573,485.2883108883925,109.75103239530472],"flags":{}},{"id":9,"title":"LTX-2 Loras","bounding":[1266.851443434426,3821.7807258321477,493.249044492934,316.97960132943217],"flags":{}},{"id":10,"title":"Group","bounding":[1153.1440092407659,4279.708623295673,597.8960119181045,592.6764849338833],"flags":{}}],"config":{},"extra":{"ds":{"scale":0.9800820733973077,"offset":[-3016.3071410521075,-3952.936492586513]},"frontendVersion":"1.42.14","VHS_latentpreview":false,"VHS_latentpreviewrate":0,"VHS_MetadataImage":true,"VHS_KeepIntermediate":true},"version":0.4} \ No newline at end of file +{"id":"bf120034-88db-46f2-b66e-f72f6c04718f","revision":0,"last_node_id":213,"last_link_id":546,"nodes":[{"id":7,"type":"LTXVConcatAVLatent","pos":[3691.538365353464,4524.496307535617],"size":[210,50],"flags":{},"order":68,"mode":0,"inputs":[{"localized_name":"video_latent","name":"video_latent","type":"LATENT","link":522},{"localized_name":"audio_latent","name":"audio_latent","type":"LATENT","link":491}],"outputs":[{"localized_name":"latent","name":"latent","type":"LATENT","links":[14]}],"properties":{"cnr_id":"comfy-core","ver":"0.16.0","Node name for S&R":"LTXVConcatAVLatent"},"widgets_values":[]},{"id":108,"type":"GetNode","pos":[4391.381422285522,4617.939934754459],"size":[210,60],"flags":{"collapsed":true},"order":0,"mode":0,"inputs":[],"outputs":[{"name":"VAE","type":"VAE","links":[228]}],"title":"Get_audio_vae","properties":{"Node name for S&R":"GetNode","aux_id":"kijai/ComfyUI-KJNodes"},"widgets_values":["audio_vae"],"color":"#322","bgcolor":"#533"},{"id":113,"type":"GetNode","pos":[4382.180390782251,4525.786929249175],"size":[210,34],"flags":{"collapsed":true},"order":1,"mode":0,"inputs":[],"outputs":[{"name":"VAE","type":"VAE","links":[233]}],"title":"Get_video_vae","properties":{"Node name for S&R":"GetNode","aux_id":"kijai/ComfyUI-KJNodes"},"widgets_values":["video_vae"],"color":"#322","bgcolor":"#533"},{"id":16,"type":"LTXVAudioVAEDecode","pos":[4356.538365353464,4575.777557535617],"size":[210,50],"flags":{"collapsed":false},"order":78,"mode":0,"inputs":[{"localized_name":"samples","name":"samples","type":"LATENT","link":235},{"label":"Audio VAE","localized_name":"audio_vae","name":"audio_vae","type":"VAE","link":228}],"outputs":[{"localized_name":"Audio","name":"Audio","type":"AUDIO","links":[223]}],"properties":{"cnr_id":"comfy-core","ver":"0.16.0","Node name for S&R":"LTXVAudioVAEDecode"},"widgets_values":[]},{"id":97,"type":"PathchSageAttentionKJ","pos":[1316.9170322877628,4217.452584058228],"size":[270,82],"flags":{"collapsed":true},"order":42,"mode":0,"inputs":[{"localized_name":"model","name":"model","type":"MODEL","link":219},{"localized_name":"sage_attention","name":"sage_attention","type":"COMBO","widget":{"name":"sage_attention"},"link":null},{"localized_name":"allow_compile","name":"allow_compile","shape":7,"type":"BOOLEAN","widget":{"name":"allow_compile"},"link":null}],"outputs":[{"localized_name":"MODEL","name":"MODEL","type":"MODEL","links":[215]}],"properties":{"cnr_id":"comfyui-kjnodes","ver":"204f6d5aae73b10c0fe2fb26e61405fd6337bb77","Node name for S&R":"PathchSageAttentionKJ"},"widgets_values":["auto",false]},{"id":99,"type":"LTX2AttentionTunerPatch","pos":[1300.1111104721715,4258.872502008489],"size":[283.875,178],"flags":{"collapsed":true},"order":45,"mode":0,"inputs":[{"localized_name":"model","name":"model","type":"MODEL","link":216},{"localized_name":"blocks","name":"blocks","type":"STRING","widget":{"name":"blocks"},"link":null},{"localized_name":"video_scale","name":"video_scale","type":"FLOAT","widget":{"name":"video_scale"},"link":null},{"localized_name":"audio_scale","name":"audio_scale","type":"FLOAT","widget":{"name":"audio_scale"},"link":null},{"localized_name":"audio_to_video_scale","name":"audio_to_video_scale","type":"FLOAT","widget":{"name":"audio_to_video_scale"},"link":null},{"localized_name":"video_to_audio_scale","name":"video_to_audio_scale","type":"FLOAT","widget":{"name":"video_to_audio_scale"},"link":null},{"localized_name":"triton_kernels","name":"triton_kernels","type":"BOOLEAN","widget":{"name":"triton_kernels"},"link":null}],"outputs":[{"localized_name":"model","name":"model","type":"MODEL","links":[214,218]}],"properties":{"cnr_id":"comfyui-kjnodes","ver":"5b38397a6430fdb16c7bd14a6bd64c2b0e69a5f0","Node name for S&R":"LTX2AttentionTunerPatch"},"widgets_values":["",1,1,1,1,true]},{"id":100,"type":"LTXVChunkFeedForward","pos":[1493.906478136476,4220.506363558898],"size":[272.35703125,82],"flags":{"collapsed":true},"order":44,"mode":0,"inputs":[{"localized_name":"model","name":"model","type":"MODEL","link":217},{"localized_name":"chunks","name":"chunks","type":"INT","widget":{"name":"chunks"},"link":null},{"localized_name":"dim_threshold","name":"dim_threshold","type":"INT","widget":{"name":"dim_threshold"},"link":null}],"outputs":[{"localized_name":"model","name":"model","type":"MODEL","links":[216]}],"properties":{"cnr_id":"comfyui-kjnodes","ver":"0ea5ece1793263d9fb0ad97bb067f96b83a9dea3","Node name for S&R":"LTXVChunkFeedForward"},"widgets_values":[2,4096]},{"id":98,"type":"LTX2MemoryEfficientSageAttentionPatch","pos":[1479.8282190239377,4255.3551883158],"size":[275.179296875,58],"flags":{"collapsed":true},"order":43,"mode":0,"inputs":[{"localized_name":"model","name":"model","type":"MODEL","link":215},{"localized_name":"triton_kernels","name":"triton_kernels","type":"BOOLEAN","widget":{"name":"triton_kernels"},"link":null}],"outputs":[{"localized_name":"model","name":"model","type":"MODEL","links":[217]}],"properties":{"cnr_id":"comfyui-kjnodes","ver":"2acdef1766026ff3be00daf3c45f6a064db9100f","Node name for S&R":"LTX2MemoryEfficientSageAttentionPatch"},"widgets_values":[true]},{"id":95,"type":"SetNode","pos":[1429.8290233573816,4011.369716578606],"size":[210,34],"flags":{"collapsed":true},"order":48,"mode":0,"inputs":[{"name":"MODEL","type":"MODEL","link":213}],"outputs":[{"name":"MODEL","type":"MODEL","links":null}],"title":"Set_model_with_lora","properties":{"Node name for S&R":"SetNode","aux_id":"SetNode","previousName":"model_with_lora"},"widgets_values":["model_with_lora"],"color":"#223","bgcolor":"#335"},{"id":96,"type":"SetNode","pos":[1452.77276258331,3950.892577817645],"size":[210,34],"flags":{"collapsed":true},"order":46,"mode":0,"inputs":[{"name":"MODEL","type":"MODEL","link":214}],"outputs":[{"name":"MODEL","type":"MODEL","links":null}],"title":"Set_model_upscale","properties":{"Node name for S&R":"SetNode","aux_id":"kijai/ComfyUI-KJNodes","previousName":"model_upscale"},"widgets_values":["model_upscale"],"color":"#223","bgcolor":"#335"},{"id":129,"type":"SetNode","pos":[1551.1053187262426,4417.394085401405],"size":[210,60],"flags":{"collapsed":true},"order":33,"mode":0,"inputs":[{"name":"CLIP","type":"CLIP","link":294}],"outputs":[{"name":"CLIP","type":"CLIP","links":null}],"title":"Set_clip","properties":{"Node name for S&R":"SetNode","aux_id":"kijai/ComfyUI-KJNodes","previousName":"clip"},"widgets_values":["clip"],"color":"#432","bgcolor":"#653"},{"id":109,"type":"SetNode","pos":[1525.7403651341965,4594.978455341699],"size":[210,60],"flags":{"collapsed":true},"order":36,"mode":0,"inputs":[{"name":"VAE","type":"VAE","link":229}],"outputs":[{"name":"VAE","type":"VAE","links":null}],"title":"Set_video_vae","properties":{"Node name for S&R":"SetNode","aux_id":"kijai/ComfyUI-KJNodes","previousName":"video_vae"},"widgets_values":["video_vae"],"color":"#322","bgcolor":"#533"},{"id":107,"type":"SetNode","pos":[1509.7755834199008,4749.514075011232],"size":[210,60],"flags":{"collapsed":true},"order":35,"mode":0,"inputs":[{"name":"VAE","type":"VAE","link":227}],"outputs":[{"name":"VAE","type":"VAE","links":null}],"title":"Set_audio_vae","properties":{"Node name for S&R":"SetNode","aux_id":"kijai/ComfyUI-KJNodes","previousName":"audio_vae"},"widgets_values":["audio_vae"],"color":"#322","bgcolor":"#533"},{"id":78,"type":"VAELoaderKJ","pos":[1214.7116103410826,4424.276141542676],"size":[270,110],"flags":{"collapsed":true},"order":2,"mode":0,"inputs":[{"localized_name":"vae_name","name":"vae_name","type":"COMBO","widget":{"name":"vae_name"},"link":null},{"localized_name":"device","name":"device","type":"COMBO","widget":{"name":"device"},"link":null},{"localized_name":"weight_dtype","name":"weight_dtype","type":"COMBO","widget":{"name":"weight_dtype"},"link":null}],"outputs":[{"localized_name":"VAE","name":"VAE","type":"VAE","links":[196]}],"title":"Tiny VAELoader KJ","properties":{"cnr_id":"comfyui-kjnodes","ver":"1.2.5","Node name for S&R":"VAELoaderKJ"},"widgets_values":["taeltx2_3.safetensors","main_device","bf16"],"color":"#222","bgcolor":"#000"},{"id":15,"type":"VAEDecode","pos":[4358.291126900038,4483.957850924158],"size":[210,50],"flags":{"collapsed":false},"order":76,"mode":0,"inputs":[{"localized_name":"samples","name":"samples","type":"LATENT","link":536},{"localized_name":"vae","name":"vae","type":"VAE","link":233}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[222]}],"properties":{"cnr_id":"comfy-core","ver":"0.9.1","Node name for S&R":"VAEDecode"},"widgets_values":[]},{"id":174,"type":"SetNode","pos":[4379.321869985733,4425.215218104115],"size":[210,60],"flags":{"collapsed":true},"order":79,"mode":0,"inputs":[{"name":"LATENT","type":"LATENT","link":382}],"outputs":[{"name":"LATENT","type":"LATENT","links":null}],"title":"Set_audio_latent","properties":{"Node name for S&R":"SetNode","aux_id":"kijai/ComfyUI-KJNodes","previousName":"audio_latent"},"widgets_values":["audio_latent"],"color":"#323","bgcolor":"#535"},{"id":175,"type":"GetNode","pos":[3331.024198179889,4128.21530954976],"size":[210,60],"flags":{"collapsed":true},"order":3,"mode":0,"inputs":[],"outputs":[{"name":"LATENT","type":"LATENT","links":[383]}],"title":"Get_audio_latent","properties":{"Node name for S&R":"GetNode","aux_id":"kijai/ComfyUI-KJNodes"},"widgets_values":["audio_latent"],"color":"#323","bgcolor":"#535"},{"id":181,"type":"GetNode","pos":[4744.820649849728,4051.0797594741784],"size":[210,60],"flags":{"collapsed":true},"order":4,"mode":0,"inputs":[],"outputs":[{"name":"FLOAT","type":"FLOAT","links":[392]}],"title":"Get_frame_rate","properties":{"Node name for S&R":"GetNode","aux_id":"kijai/ComfyUI-KJNodes"},"widgets_values":["frame_rate"],"color":"#232","bgcolor":"#353"},{"id":10,"type":"SamplerCustomAdvanced","pos":[4124.732370389621,4386.207659334862],"size":[220,241.28125],"flags":{"collapsed":false},"order":72,"mode":0,"inputs":[{"localized_name":"noise","name":"noise","type":"NOISE","link":51},{"localized_name":"guider","name":"guider","type":"GUIDER","link":12},{"localized_name":"sampler","name":"sampler","type":"SAMPLER","link":53},{"localized_name":"sigmas","name":"sigmas","type":"SIGMAS","link":52},{"localized_name":"latent_image","name":"latent_image","type":"LATENT","link":14}],"outputs":[{"localized_name":"output","name":"output","type":"LATENT","links":[267]},{"localized_name":"denoised_output","name":"denoised_output","type":"LATENT","links":[]}],"properties":{"cnr_id":"comfy-core","ver":"0.3.60","Node name for S&R":"SamplerCustomAdvanced","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":[]},{"id":80,"type":"LoraLoaderModelOnly","pos":[1188.543815306891,4672.020611941352],"size":[260,85.21429623404856],"flags":{},"order":41,"mode":0,"inputs":[{"localized_name":"model","name":"model","type":"MODEL","link":405},{"localized_name":"lora_name","name":"lora_name","type":"COMBO","widget":{"name":"lora_name"},"link":null},{"localized_name":"strength_model","name":"strength_model","type":"FLOAT","widget":{"name":"strength_model"},"link":null}],"outputs":[{"localized_name":"MODEL","name":"MODEL","type":"MODEL","links":[219]}],"properties":{"cnr_id":"comfy-core","ver":"0.3.75","Node name for S&R":"LoraLoaderModelOnly","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65,"models":[{"name":"ltx-2.3-22b-distilled-lora-384.safetensors","url":"https://huggingface.co/Lightricks/LTX-2.3/resolve/main/ltx-2.3-22b-distilled-lora-384.safetensors","directory":"loras"}]},"widgets_values":["LTX\\ltx-2.3-22b-distilled-lora-384-1.1.safetensors",0.6],"color":"#322","bgcolor":"#533"},{"id":79,"type":"LTX2SamplingPreviewOverride","pos":[1188.543815306891,4511.345498670506],"size":[260,100.00000000000045],"flags":{"collapsed":false},"order":38,"mode":0,"inputs":[{"localized_name":"model","name":"model","type":"MODEL","link":408},{"localized_name":"latent_upscale_model","name":"latent_upscale_model","shape":7,"type":"LATENT_UPSCALE_MODEL","link":null},{"localized_name":"vae","name":"vae","shape":7,"type":"VAE","link":196},{"localized_name":"preview_rate","name":"preview_rate","type":"INT","widget":{"name":"preview_rate"},"link":null}],"outputs":[{"localized_name":"MODEL","name":"MODEL","type":"MODEL","links":[405]}],"properties":{"cnr_id":"comfyui-kjnodes","ver":"1.3.4","Node name for S&R":"LTX2SamplingPreviewOverride"},"widgets_values":[24]},{"id":188,"type":"GetNode","pos":[2555.447393577083,4541.294394823571],"size":[210,60],"flags":{"collapsed":true},"order":5,"mode":0,"inputs":[],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[]}],"title":"Get_neg prompt","properties":{"Node name for S&R":"GetNode","aux_id":"kijai/ComfyUI-KJNodes"},"widgets_values":["neg prompt"],"color":"#332922","bgcolor":"#593930"},{"id":9,"type":"CFGGuider","pos":[3691.538365353464,4384.496307535617],"size":[210,100],"flags":{},"order":69,"mode":0,"inputs":[{"localized_name":"model","name":"model","type":"MODEL","link":523},{"localized_name":"positive","name":"positive","type":"CONDITIONING","link":520},{"localized_name":"negative","name":"negative","type":"CONDITIONING","link":521},{"localized_name":"cfg","name":"cfg","type":"FLOAT","widget":{"name":"cfg"},"link":null}],"outputs":[{"localized_name":"GUIDER","name":"GUIDER","type":"GUIDER","links":[12]}],"properties":{"cnr_id":"comfy-core","ver":"0.3.64","Node name for S&R":"CFGGuider","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":[1]},{"id":127,"type":"LTX2_NAG","pos":[3038.558756510417,4780.067502388598],"size":[211.45817595342623,191.6127604380672],"flags":{"collapsed":false},"order":50,"mode":0,"inputs":[{"localized_name":"model","name":"model","type":"MODEL","link":486},{"localized_name":"nag_cond_video","name":"nag_cond_video","shape":7,"type":"CONDITIONING","link":289},{"localized_name":"nag_cond_audio","name":"nag_cond_audio","shape":7,"type":"CONDITIONING","link":296},{"localized_name":"nag_scale","name":"nag_scale","type":"FLOAT","widget":{"name":"nag_scale"},"link":null},{"localized_name":"nag_alpha","name":"nag_alpha","type":"FLOAT","widget":{"name":"nag_alpha"},"link":null},{"localized_name":"nag_tau","name":"nag_tau","type":"FLOAT","widget":{"name":"nag_tau"},"link":null},{"localized_name":"inplace","name":"inplace","shape":7,"type":"BOOLEAN","widget":{"name":"inplace"},"link":null}],"outputs":[{"localized_name":"model","name":"model","type":"MODEL","links":[325,516]}],"properties":{"cnr_id":"comfyui-kjnodes","ver":"ff79c7332d7ea4aa85097a88fb09359f28cb487e","Node name for S&R":"LTX2_NAG"},"widgets_values":[11,0.25,2.5,true]},{"id":187,"type":"SetNode","pos":[3369.7374698190592,4969.890270608562],"size":[223.53515625,60],"flags":{"collapsed":true},"order":40,"mode":0,"inputs":[{"name":"CONDITIONING","type":"CONDITIONING","link":411}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":null}],"title":"Set_neg prompt","properties":{"Node name for S&R":"SetNode","aux_id":"kijai/ComfyUI-KJNodes","previousName":"neg prompt"},"widgets_values":["neg prompt"],"color":"#332922","bgcolor":"#593930"},{"id":110,"type":"GetNode","pos":[3372.682948088843,4486.85089002825],"size":[210,60],"flags":{"collapsed":true},"order":6,"mode":0,"inputs":[],"outputs":[{"name":"VAE","type":"VAE","links":[519]}],"title":"Get_video_vae","properties":{"Node name for S&R":"GetNode","aux_id":"kijai/ComfyUI-KJNodes"},"widgets_values":["video_vae"],"color":"#322","bgcolor":"#533"},{"id":49,"type":"CFGGuider","pos":[3679.914746126751,3815.6149642286105],"size":[210,100],"flags":{"collapsed":false},"order":62,"mode":0,"inputs":[{"localized_name":"model","name":"model","type":"MODEL","link":504},{"localized_name":"positive","name":"positive","type":"CONDITIONING","link":502},{"localized_name":"negative","name":"negative","type":"CONDITIONING","link":503},{"localized_name":"cfg","name":"cfg","type":"FLOAT","widget":{"name":"cfg"},"link":null}],"outputs":[{"localized_name":"GUIDER","name":"GUIDER","type":"GUIDER","links":[124]}],"properties":{"cnr_id":"comfy-core","ver":"0.3.64","Node name for S&R":"CFGGuider","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":[1]},{"id":53,"type":"KSamplerSelect","pos":[3679.914746126751,3956.805179368286],"size":[210,60],"flags":{},"order":7,"mode":0,"inputs":[{"localized_name":"sampler_name","name":"sampler_name","type":"COMBO","widget":{"name":"sampler_name"},"link":null}],"outputs":[{"localized_name":"SAMPLER","name":"SAMPLER","type":"SAMPLER","links":[125]}],"properties":{"cnr_id":"comfy-core","ver":"0.3.56","Node name for S&R":"KSamplerSelect","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":["euler_cfg_pp"]},{"id":50,"type":"LTXVConcatAVLatent","pos":[3679.914746126751,4209.673624648785],"size":[210,60],"flags":{},"order":61,"mode":0,"inputs":[{"localized_name":"video_latent","name":"video_latent","type":"LATENT","link":505},{"localized_name":"audio_latent","name":"audio_latent","type":"LATENT","link":383}],"outputs":[{"localized_name":"latent","name":"latent","type":"LATENT","links":[127]}],"properties":{"cnr_id":"comfy-core","ver":"0.7.0","Node name for S&R":"LTXVConcatAVLatent","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":[]},{"id":171,"type":"GetNode","pos":[4380.026730077076,3833.6507837448257],"size":[210,50],"flags":{"collapsed":true},"order":8,"mode":0,"inputs":[],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[527]}],"title":"Get_pos_g2","properties":{"Node name for S&R":"GetNode","aux_id":"kijai/ComfyUI-KJNodes"},"widgets_values":["pos_g2"],"color":"#332922","bgcolor":"#593930"},{"id":84,"type":"DualCLIPLoader","pos":[1464.0255349598156,4374.226258120699],"size":[260,135.83799054980682],"flags":{},"order":9,"mode":0,"inputs":[{"localized_name":"clip_name1","name":"clip_name1","type":"COMBO","widget":{"name":"clip_name1"},"link":null},{"localized_name":"clip_name2","name":"clip_name2","type":"COMBO","widget":{"name":"clip_name2"},"link":null},{"localized_name":"type","name":"type","type":"COMBO","widget":{"name":"type"},"link":null},{"localized_name":"device","name":"device","shape":7,"type":"COMBO","widget":{"name":"device"},"link":null}],"outputs":[{"localized_name":"CLIP","name":"CLIP","type":"CLIP","links":[294,483]}],"properties":{"cnr_id":"comfy-core","ver":"0.19.3","Node name for S&R":"DualCLIPLoader"},"widgets_values":["gemma_3_12B_it_fp8_scaled.safetensors","ltx-2.3_text_projection_bf16.safetensors","ltxv","default"]},{"id":130,"type":"GetNode","pos":[3392.5943581826396,4940.05295266081],"size":[210,60],"flags":{"collapsed":true},"order":10,"mode":0,"inputs":[],"outputs":[{"name":"CLIP","type":"CLIP","links":[295]}],"title":"Get_clip","properties":{"Node name for S&R":"GetNode","aux_id":"kijai/ComfyUI-KJNodes"},"widgets_values":["clip"],"color":"#432","bgcolor":"#653"},{"id":4,"type":"VAELoaderKJ","pos":[1464.0255349598156,4717.234908175401],"size":[260,110],"flags":{"collapsed":false},"order":11,"mode":0,"inputs":[{"localized_name":"vae_name","name":"vae_name","type":"COMBO","widget":{"name":"vae_name"},"link":null},{"localized_name":"device","name":"device","type":"COMBO","widget":{"name":"device"},"link":null},{"localized_name":"weight_dtype","name":"weight_dtype","type":"COMBO","widget":{"name":"weight_dtype"},"link":null}],"outputs":[{"localized_name":"VAE","name":"VAE","type":"VAE","links":[227,484]}],"title":"Audio VAELoader","properties":{"cnr_id":"comfyui-kjnodes","ver":"487c7d86a0230aae3d8c0a37d517159b73834f85","Node name for S&R":"VAELoaderKJ"},"widgets_values":["vae_ltx\\LTX23_audio_vae_bf16.safetensors","main_device","bf16"]},{"id":180,"type":"SetNode","pos":[2568.618152177039,4106.725352814512],"size":[210,60],"flags":{"collapsed":true},"order":55,"mode":0,"inputs":[{"name":"FLOAT","type":"FLOAT","link":496}],"outputs":[{"name":"FLOAT","type":"FLOAT","links":null}],"title":"Set_frame_rate","properties":{"Node name for S&R":"SetNode","aux_id":"kijai/ComfyUI-KJNodes","previousName":"frame_rate"},"widgets_values":["frame_rate"],"color":"#232","bgcolor":"#353"},{"id":182,"type":"SetNode","pos":[2505.307811672183,4211.504979370948],"size":[210,60],"flags":{"collapsed":true},"order":56,"mode":0,"inputs":[{"name":"INT","type":"INT","link":498}],"outputs":[{"name":"INT","type":"INT","links":null}],"title":"Set_clean_latent","properties":{"Node name for S&R":"SetNode","aux_id":"kijai/ComfyUI-KJNodes","previousName":"clean_latent"},"widgets_values":["clean_latent"],"color":"#1b4669","bgcolor":"#29699c"},{"id":172,"type":"GetNode","pos":[4401.32292657882,3874.007604558866],"size":[210,50],"flags":{"collapsed":true},"order":12,"mode":0,"inputs":[],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[528]}],"title":"Get_neg_g2","properties":{"Node name for S&R":"GetNode","aux_id":"kijai/ComfyUI-KJNodes"},"widgets_values":["neg_g2"],"color":"#332922","bgcolor":"#593930"},{"id":196,"type":"GetNode","pos":[4394.066545611651,4879.131672339238],"size":[210,60],"flags":{"collapsed":true},"order":13,"mode":0,"inputs":[],"outputs":[{"name":"INT","type":"INT","links":[537]}],"title":"Get_clean_latent","properties":{"Node name for S&R":"GetNode","aux_id":"kijai/ComfyUI-KJNodes"},"widgets_values":["clean_latent"],"color":"#1b4669","bgcolor":"#29699c"},{"id":3,"type":"VAELoaderKJ","pos":[1464.0255349598156,4559.496307535617],"size":[260,110],"flags":{"collapsed":false},"order":14,"mode":0,"inputs":[{"localized_name":"vae_name","name":"vae_name","type":"COMBO","widget":{"name":"vae_name"},"link":null},{"localized_name":"device","name":"device","type":"COMBO","widget":{"name":"device"},"link":null},{"localized_name":"weight_dtype","name":"weight_dtype","type":"COMBO","widget":{"name":"weight_dtype"},"link":null}],"outputs":[{"localized_name":"VAE","name":"VAE","type":"VAE","links":[229,485]}],"title":"Video VAELoader","properties":{"cnr_id":"comfyui-kjnodes","ver":"1.2.5","Node name for S&R":"VAELoaderKJ"},"widgets_values":["vae_ltx\\LTX23_video_vae_bf16.safetensors","main_device","bf16"]},{"id":160,"type":"SetNode","pos":[2808.8873442669296,4041.5716616285104],"size":[223.53515625,60],"flags":{"collapsed":true},"order":51,"mode":0,"inputs":[{"name":"CONDITIONING","type":"CONDITIONING","link":487}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":null}],"title":"Set_positive","properties":{"Node name for S&R":"SetNode","aux_id":"kijai/ComfyUI-KJNodes","previousName":"positive"},"widgets_values":["positive"],"color":"#332922","bgcolor":"#593930"},{"id":161,"type":"SetNode","pos":[2651.611208803993,3943.663019434393],"size":[223.53515625,60],"flags":{"collapsed":true},"order":52,"mode":0,"inputs":[{"name":"CONDITIONING","type":"CONDITIONING","link":499}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":null}],"title":"Set_negative","properties":{"Node name for S&R":"SetNode","aux_id":"kijai/ComfyUI-KJNodes","previousName":"negative"},"widgets_values":["negative"],"color":"#332922","bgcolor":"#593930"},{"id":47,"type":"SamplerCustomAdvanced","pos":[4112.490971119919,3818.332523118286],"size":[230,246.9453125],"flags":{"collapsed":false},"order":65,"mode":0,"inputs":[{"localized_name":"noise","name":"noise","type":"NOISE","link":157},{"localized_name":"guider","name":"guider","type":"GUIDER","link":124},{"localized_name":"sampler","name":"sampler","type":"SAMPLER","link":125},{"localized_name":"sigmas","name":"sigmas","type":"SIGMAS","link":546},{"localized_name":"latent_image","name":"latent_image","type":"LATENT","link":127}],"outputs":[{"localized_name":"output","name":"output","type":"LATENT","links":[180]},{"localized_name":"denoised_output","name":"denoised_output","type":"LATENT","links":[]}],"properties":{"cnr_id":"comfy-core","ver":"0.3.60","Node name for S&R":"SamplerCustomAdvanced","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":[]},{"id":28,"type":"RandomNoise","pos":[3911.538365353464,4386.207659334862],"size":[210,90],"flags":{},"order":15,"mode":0,"inputs":[{"localized_name":"noise_seed","name":"noise_seed","type":"INT","widget":{"name":"noise_seed"},"link":null}],"outputs":[{"localized_name":"NOISE","name":"NOISE","type":"NOISE","links":[51,157]}],"properties":{"cnr_id":"comfy-core","ver":"0.19.3","Node name for S&R":"RandomNoise"},"widgets_values":[467,"fixed"]},{"id":147,"type":"Fast Bypasser (rgthree)","pos":[3033.558756510417,4641.345498670506],"size":[213.2109375,79.45646052686334],"flags":{"collapsed":false},"order":57,"mode":0,"inputs":[{"dir":3,"name":"LTX2 NAG","type":"*","link":325},{"dir":3,"name":"","type":"*","link":null}],"outputs":[{"dir":4,"name":"OPT_CONNECTION","type":"*","links":[]}],"title":"NAG (2)","properties":{"toggleRestriction":"default"},"color":"#322","bgcolor":"#533"},{"id":149,"type":"ComfySwitchNode","pos":[3033.558756510417,4514.496307535617],"size":[212.05874244546476,78],"flags":{"collapsed":false},"order":53,"mode":0,"inputs":[{"localized_name":"on_false","name":"on_false","type":"CONDITIONING","link":543},{"localized_name":"on_true","name":"on_true","type":"CONDITIONING","link":337},{"localized_name":"switch","name":"switch","type":"BOOLEAN","widget":{"name":"switch"},"link":null}],"outputs":[{"localized_name":"output","name":"output","type":"CONDITIONING","links":[413]}],"title":"NAG (1)","properties":{"cnr_id":"comfy-core","ver":"0.22.0","Node name for S&R":"ComfySwitchNode"},"widgets_values":[true],"color":"#322","bgcolor":"#533"},{"id":5,"type":"LTXVConditioning","pos":[3036.805994963843,4376.85089002825],"size":[213.2109375,78],"flags":{"collapsed":false},"order":58,"mode":0,"inputs":[{"localized_name":"positive","name":"positive","type":"CONDITIONING","link":488},{"localized_name":"negative","name":"negative","type":"CONDITIONING","link":413},{"localized_name":"frame_rate","name":"frame_rate","type":"FLOAT","widget":{"name":"frame_rate"},"link":497}],"outputs":[{"localized_name":"positive","name":"positive","type":"CONDITIONING","links":[513]},{"localized_name":"negative","name":"negative","type":"CONDITIONING","links":[514]}],"properties":{"cnr_id":"comfy-core","ver":"0.3.56","Node name for S&R":"LTXVConditioning","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":[24]},{"id":111,"type":"GetNode","pos":[3066.878983567528,3978.796182150794],"size":[210,58],"flags":{"collapsed":true},"order":16,"mode":0,"inputs":[],"outputs":[{"name":"VAE","type":"VAE","links":[231]}],"title":"Get_video_vae","properties":{"Node name for S&R":"GetNode","aux_id":"kijai/ComfyUI-KJNodes"},"widgets_values":["video_vae"],"color":"#322","bgcolor":"#533"},{"id":57,"type":"LatentUpscaleModelLoader","pos":[3038.558756510417,3818.332523118286],"size":[220.9224609375001,66.66415747513201],"flags":{"collapsed":false},"order":17,"mode":0,"inputs":[{"localized_name":"model_name","name":"model_name","type":"COMBO","widget":{"name":"model_name"},"link":null}],"outputs":[{"localized_name":"LATENT_UPSCALE_MODEL","name":"LATENT_UPSCALE_MODEL","type":"LATENT_UPSCALE_MODEL","links":[144]}],"properties":{"cnr_id":"comfy-core","ver":"0.16.4","Node name for S&R":"LatentUpscaleModelLoader"},"widgets_values":["ltx-2.3-spatial-upscaler-x2-1.1.safetensors"]},{"id":176,"type":"GetNode","pos":[2639.136465714806,3981.7714810737134],"size":[210,58],"flags":{"collapsed":true},"order":18,"mode":0,"inputs":[],"outputs":[{"name":"LATENT","type":"LATENT","links":[384]}],"title":"Get_video_latent","properties":{"Node name for S&R":"GetNode","aux_id":"kijai/ComfyUI-KJNodes"},"widgets_values":["video_latent"],"color":"#323","bgcolor":"#535"},{"id":169,"type":"SetNode","pos":[3376.874711176187,3898.3444003470045],"size":[223.53515625,50],"flags":{"collapsed":true},"order":59,"mode":0,"inputs":[{"name":"CONDITIONING","type":"CONDITIONING","link":509}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":null}],"title":"Set_pos_g2","properties":{"Node name for S&R":"SetNode","aux_id":"kijai/ComfyUI-KJNodes","previousName":"pos_g2"},"widgets_values":["pos_g2"],"color":"#332922","bgcolor":"#593930"},{"id":170,"type":"SetNode","pos":[3346.939246732877,3952.0998974757003],"size":[223.53515625,50],"flags":{"collapsed":true},"order":60,"mode":0,"inputs":[{"name":"CONDITIONING","type":"CONDITIONING","link":510}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":null}],"title":"Set_neg_g2","properties":{"Node name for S&R":"SetNode","aux_id":"kijai/ComfyUI-KJNodes","previousName":"neg_g2"},"widgets_values":["neg_g2"],"color":"#332922","bgcolor":"#593930"},{"id":112,"type":"GetNode","pos":[3337.0806938061965,3958.80943372539],"size":[210,50],"flags":{"collapsed":true},"order":19,"mode":0,"inputs":[],"outputs":[{"name":"VAE","type":"VAE","links":[506]}],"title":"Get_video_vae","properties":{"Node name for S&R":"GetNode","aux_id":"kijai/ComfyUI-KJNodes"},"widgets_values":["video_vae"],"color":"#322","bgcolor":"#533"},{"id":128,"type":"CLIPTextEncode","pos":[3318.1918051885973,4870.995084235324],"size":[288.24609375,140.29374240832567],"flags":{"collapsed":false},"order":34,"mode":0,"inputs":[{"localized_name":"clip","name":"clip","type":"CLIP","link":295},{"localized_name":"text","name":"text","type":"STRING","widget":{"name":"text"},"link":null}],"outputs":[{"localized_name":"CONDITIONING","name":"CONDITIONING","type":"CONDITIONING","links":[289,296,337,411]}],"title":"Negative Prompt","properties":{"cnr_id":"comfy-core","ver":"0.3.56","Node name for S&R":"CLIPTextEncode","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":["low poly, low geometry, subtitles, slow motion, subtitles, music, multiple character, anime style, animation, unrealistic motion, stiff motion, ambiance muscic fx, "],"color":"#222","bgcolor":"#000"},{"id":48,"type":"LTXVSeparateAVLatent","pos":[4369.936980799454,3945.6149642286105],"size":[213.24723845342578,102.59413081082812],"flags":{},"order":71,"mode":0,"inputs":[{"localized_name":"av_latent","name":"av_latent","type":"LATENT","link":180}],"outputs":[{"localized_name":"video_latent","name":"video_latent","type":"LATENT","links":[529,535]},{"localized_name":"audio_latent","name":"audio_latent","type":"LATENT","links":[]}],"properties":{"cnr_id":"comfy-core","ver":"0.5.1","Node name for S&R":"LTXVSeparateAVLatent","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":[]},{"id":207,"type":"LTXDirectorCropGuidesCS","pos":[4372.490971119918,3818.332523118286],"size":[231.2857421875,69.7102813687161],"flags":{"collapsed":false},"order":73,"mode":0,"inputs":[{"localized_name":"positive","name":"positive","type":"CONDITIONING","link":527},{"localized_name":"negative","name":"negative","type":"CONDITIONING","link":528},{"localized_name":"latent","name":"latent","type":"LATENT","link":529}],"outputs":[{"localized_name":"positive","name":"positive","type":"CONDITIONING","links":null},{"localized_name":"negative","name":"negative","type":"CONDITIONING","links":null},{"localized_name":"latent","name":"latent","type":"LATENT","links":[]}],"properties":{"cnr_id":"WhatDreamsCost-ComfyUI","ver":"6a035f05769536a87d9764e8b91d5744dc014fd2","Node name for S&R":"LTXDirectorCropGuidesCS"},"widgets_values":[]},{"id":103,"type":"GetNode","pos":[3318.1918051885973,3894.209095039438],"size":[210,58],"flags":{"collapsed":false},"order":20,"mode":0,"inputs":[],"outputs":[{"name":"MODEL","type":"MODEL","links":[508]}],"title":"Get_model_with_lora","properties":{"Node name for S&R":"GetNode","aux_id":"kijai/ComfyUI-KJNodes"},"widgets_values":["model_with_lora"],"color":"#223","bgcolor":"#335"},{"id":166,"type":"SetNode","pos":[3381.4492941316676,4591.072928935333],"size":[223.53515625,60],"flags":{"collapsed":true},"order":67,"mode":0,"inputs":[{"name":"CONDITIONING","type":"CONDITIONING","link":524}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":null}],"title":"Set_neg_g1","properties":{"Node name for S&R":"SetNode","aux_id":"kijai/ComfyUI-KJNodes","previousName":"neg_g1"},"widgets_values":["neg_g1"],"color":"#332922","bgcolor":"#593930"},{"id":165,"type":"SetNode","pos":[3391.7023226616607,4538.460330097065],"size":[223.53515625,60],"flags":{"collapsed":true},"order":66,"mode":0,"inputs":[{"name":"CONDITIONING","type":"CONDITIONING","link":525}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":null}],"title":"Set_pos_g1","properties":{"Node name for S&R":"SetNode","aux_id":"kijai/ComfyUI-KJNodes","previousName":"pos_g1"},"widgets_values":["pos_g1"],"color":"#332922","bgcolor":"#593930"},{"id":168,"type":"GetNode","pos":[3333.2969409104207,3873.0292750064664],"size":[210,58],"flags":{"collapsed":true},"order":21,"mode":0,"inputs":[],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[512]}],"title":"Get_negative","properties":{"Node name for S&R":"GetNode","aux_id":"kijai/ComfyUI-KJNodes"},"widgets_values":["negative"],"color":"#332922","bgcolor":"#593930"},{"id":13,"type":"LTXVSeparateAVLatent","pos":[4367.366513366797,4387.811687505486],"size":[200,50],"flags":{"collapsed":false},"order":75,"mode":0,"inputs":[{"localized_name":"av_latent","name":"av_latent","type":"LATENT","link":267}],"outputs":[{"localized_name":"video_latent","name":"video_latent","type":"LATENT","links":[539]},{"localized_name":"audio_latent","name":"audio_latent","type":"LATENT","links":[235,382]}],"properties":{"cnr_id":"comfy-core","ver":"0.16.0","Node name for S&R":"LTXVSeparateAVLatent"},"widgets_values":[]},{"id":52,"type":"LTXVLatentUpsampler","pos":[3033.558756510417,3938.209095039438],"size":[225.9224609375001,69.56732373895738],"flags":{"collapsed":false},"order":37,"mode":0,"inputs":[{"localized_name":"samples","name":"samples","type":"LATENT","link":384},{"localized_name":"upscale_model","name":"upscale_model","type":"LATENT_UPSCALE_MODEL","link":144},{"localized_name":"vae","name":"vae","type":"VAE","link":231}],"outputs":[{"localized_name":"LATENT","name":"LATENT","type":"LATENT","links":[500]}],"properties":{"cnr_id":"comfy-core","ver":"0.14.1","Node name for S&R":"LTXVLatentUpsampler","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":[]},{"id":173,"type":"SetNode","pos":[4390.009414565058,4731.862509106096],"size":[210,60],"flags":{"collapsed":true},"order":80,"mode":0,"inputs":[{"name":"LATENT","type":"LATENT","link":534}],"outputs":[{"name":"LATENT","type":"LATENT","links":null}],"title":"Set_video_latent","properties":{"Node name for S&R":"SetNode","aux_id":"kijai/ComfyUI-KJNodes","previousName":"video_latent"},"widgets_values":["video_latent"],"color":"#323","bgcolor":"#535"},{"id":163,"type":"GetNode","pos":[4377.355351179076,4734.946318151326],"size":[210,58],"flags":{"collapsed":true},"order":22,"mode":0,"inputs":[],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[532]}],"title":"Get_neg_g1","properties":{"Node name for S&R":"GetNode","aux_id":"kijai/ComfyUI-KJNodes"},"widgets_values":["neg_g1"],"color":"#332922","bgcolor":"#593930"},{"id":162,"type":"GetNode","pos":[4400.411078901553,4746.392745247446],"size":[210,60],"flags":{"collapsed":true},"order":23,"mode":0,"inputs":[],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[533]}],"title":"Get_pos_g1","properties":{"Node name for S&R":"GetNode","aux_id":"kijai/ComfyUI-KJNodes"},"widgets_values":["pos_g1"],"color":"#332922","bgcolor":"#593930"},{"id":208,"type":"LTXDirectorCropGuidesCS","pos":[4356.007935461286,4677.788912247675],"size":[231.2857421875,81.53995919926001],"flags":{"collapsed":false},"order":77,"mode":0,"inputs":[{"localized_name":"positive","name":"positive","type":"CONDITIONING","link":533},{"localized_name":"negative","name":"negative","type":"CONDITIONING","link":532},{"localized_name":"latent","name":"latent","type":"LATENT","link":539}],"outputs":[{"localized_name":"positive","name":"positive","type":"CONDITIONING","links":null},{"localized_name":"negative","name":"negative","type":"CONDITIONING","links":null},{"localized_name":"latent","name":"latent","type":"LATENT","links":[534]}],"properties":{"cnr_id":"WhatDreamsCost-ComfyUI","ver":"6a035f05769536a87d9764e8b91d5744dc014fd2","Node name for S&R":"LTXDirectorCropGuidesCS"},"widgets_values":[]},{"id":209,"type":"CleanLatentSliceCS","pos":[4367.366513366797,4860.2201300885135],"size":[210,87.91493232860648],"flags":{},"order":74,"mode":0,"inputs":[{"localized_name":"latent","name":"latent","type":"LATENT","link":535},{"localized_name":"start","name":"start","type":"INT","widget":{"name":"start"},"link":null},{"localized_name":"length","name":"length","type":"INT","widget":{"name":"length"},"link":537}],"outputs":[{"localized_name":"latent","name":"latent","type":"LATENT","links":[536]}],"properties":{"cnr_id":"WhatDreamsCost-ComfyUI","ver":"6a035f05769536a87d9764e8b91d5744dc014fd2","Node name for S&R":"CleanLatentSliceCS"},"widgets_values":[0,1]},{"id":167,"type":"GetNode","pos":[3334.4651115022702,3830.093959691253],"size":[210,50],"flags":{"collapsed":true},"order":24,"mode":0,"inputs":[],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[511]}],"title":"Get_positive","properties":{"Node name for S&R":"GetNode","aux_id":"kijai/ComfyUI-KJNodes"},"widgets_values":["positive"],"color":"#332922","bgcolor":"#593930"},{"id":205,"type":"LTXDirectorGuideCS","pos":[3318.1918051885973,3821.1205593381546],"size":[288.24609375,453.36924006026265],"flags":{"collapsed":false},"order":54,"mode":0,"inputs":[{"localized_name":"positive","name":"positive","type":"CONDITIONING","link":511},{"localized_name":"negative","name":"negative","type":"CONDITIONING","link":512},{"localized_name":"vae","name":"vae","type":"VAE","link":506},{"localized_name":"latent","name":"latent","type":"LATENT","link":500},{"localized_name":"guide_data","name":"guide_data","type":"GUIDE_DATA","link":501},{"localized_name":"motion_guide_data","name":"motion_guide_data","shape":7,"type":"MOTION_GUIDE_DATA","link":507},{"localized_name":"model","name":"model","shape":7,"type":"MODEL","link":508},{"localized_name":"ic_lora_name","name":"ic_lora_name","shape":7,"type":"COMBO","widget":{"name":"ic_lora_name"},"link":null},{"localized_name":"ic_lora_strength","name":"ic_lora_strength","shape":7,"type":"FLOAT","widget":{"name":"ic_lora_strength"},"link":null},{"localized_name":"scale_by","name":"scale_by","shape":7,"type":"FLOAT","widget":{"name":"scale_by"},"link":null},{"localized_name":"upscale_method","name":"upscale_method","shape":7,"type":"COMBO","widget":{"name":"upscale_method"},"link":null},{"localized_name":"image_attention_strength","name":"image_attention_strength","shape":7,"type":"FLOAT","widget":{"name":"image_attention_strength"},"link":null},{"localized_name":"crop","name":"crop","shape":7,"type":"COMBO","widget":{"name":"crop"},"link":null},{"localized_name":"auto_snap_ic_grid","name":"auto_snap_ic_grid","shape":7,"type":"BOOLEAN","widget":{"name":"auto_snap_ic_grid"},"link":null},{"localized_name":"use_tiled_encode","name":"use_tiled_encode","shape":7,"type":"BOOLEAN","widget":{"name":"use_tiled_encode"},"link":null},{"localized_name":"tile_size","name":"tile_size","shape":7,"type":"INT","widget":{"name":"tile_size"},"link":null},{"localized_name":"tile_overlap","name":"tile_overlap","shape":7,"type":"INT","widget":{"name":"tile_overlap"},"link":null},{"localized_name":"retake_mode","name":"retake_mode","shape":7,"type":"BOOLEAN","widget":{"name":"retake_mode"},"link":null},{"localized_name":"msr_strength","name":"msr_strength","shape":7,"type":"FLOAT","widget":{"name":"msr_strength"},"link":null}],"outputs":[{"localized_name":"positive","name":"positive","type":"CONDITIONING","links":[502,509]},{"localized_name":"negative","name":"negative","type":"CONDITIONING","links":[503,510]},{"localized_name":"latent","name":"latent","type":"LATENT","links":[505]},{"localized_name":"model","name":"model","type":"MODEL","links":[504,538]},{"localized_name":"latent_downscale_factor","name":"latent_downscale_factor","type":"FLOAT","links":null}],"properties":{"cnr_id":"WhatDreamsCost-ComfyUI","ver":"6a035f05769536a87d9764e8b91d5744dc014fd2","Node name for S&R":"LTXDirectorGuideCS"},"widgets_values":["None",1,1,"bicubic",1,"center",true,false,256,64,false,0]},{"id":54,"type":"BasicScheduler","pos":[3679.914746126751,4062.8051793682857],"size":[210,106.00000000000045],"flags":{"collapsed":false},"order":63,"mode":0,"inputs":[{"localized_name":"model","name":"model","type":"MODEL","link":538},{"localized_name":"scheduler","name":"scheduler","type":"COMBO","widget":{"name":"scheduler"},"link":null},{"localized_name":"steps","name":"steps","type":"INT","widget":{"name":"steps"},"link":null},{"localized_name":"denoise","name":"denoise","type":"FLOAT","widget":{"name":"denoise"},"link":null}],"outputs":[{"localized_name":"SIGMAS","name":"SIGMAS","type":"SIGMAS","links":[]}],"properties":{"cnr_id":"comfy-core","ver":"0.16.4","Node name for S&R":"BasicScheduler"},"widgets_values":["linear_quadratic",4,0.42]},{"id":101,"type":"Power Lora Loader (rgthree)","pos":[1348.402940047052,3891.7764187783955],"size":[340.519921875,262],"flags":{"collapsed":false},"order":47,"mode":0,"inputs":[{"dir":3,"name":"model","type":"MODEL","link":218},{"dir":3,"name":"clip","type":"CLIP","link":null}],"outputs":[{"dir":4,"name":"MODEL","shape":3,"type":"MODEL","links":[213,482]},{"dir":4,"name":"CLIP","shape":3,"type":"CLIP","links":null}],"properties":{"cnr_id":"rgthree-comfy","ver":"1.0.2605082257","Show Strengths":"Single Strength","Match":""},"widgets_values":[{},{"type":"PowerLoraLoaderHeaderWidget"},{"on":true,"lora":"LTX\\LTX-2.3-Licon-MSR-V1.safetensors","strength":0.8,"strengthTwo":null},{"on":false,"lora":"LTX\\LTX2.3_Crisp_Enhance.safetensors","strength":1,"strengthTwo":null},{"on":false,"lora":"LTX\\LTX2.3_Soft_Enhance.safetensors","strength":1,"strengthTwo":null},{"on":false,"lora":"LTX\\Ltx2.3-Licon-VBVR-I2V-390K-R32.safetensors","strength":1,"strengthTwo":null},{"on":false,"lora":"LTX\\LTX2.3-IC-LORA-Dual-Character.safetensors","strength":0.5,"strengthTwo":null},{"on":false,"lora":"LTX\\ltx2.3-transition.safetensors","strength":0.5,"strengthTwo":null},{},""]},{"id":206,"type":"LTXDirectorGuideCS","pos":[3318.1918051885973,4387.811687505486],"size":[288.24609375,453.36924006026265],"flags":{},"order":64,"mode":0,"inputs":[{"localized_name":"positive","name":"positive","type":"CONDITIONING","link":513},{"localized_name":"negative","name":"negative","type":"CONDITIONING","link":514},{"localized_name":"vae","name":"vae","type":"VAE","link":519},{"localized_name":"latent","name":"latent","type":"LATENT","link":515},{"localized_name":"guide_data","name":"guide_data","type":"GUIDE_DATA","link":518},{"localized_name":"motion_guide_data","name":"motion_guide_data","shape":7,"type":"MOTION_GUIDE_DATA","link":517},{"localized_name":"model","name":"model","shape":7,"type":"MODEL","link":516},{"localized_name":"ic_lora_name","name":"ic_lora_name","shape":7,"type":"COMBO","widget":{"name":"ic_lora_name"},"link":null},{"localized_name":"ic_lora_strength","name":"ic_lora_strength","shape":7,"type":"FLOAT","widget":{"name":"ic_lora_strength"},"link":null},{"localized_name":"scale_by","name":"scale_by","shape":7,"type":"FLOAT","widget":{"name":"scale_by"},"link":null},{"localized_name":"upscale_method","name":"upscale_method","shape":7,"type":"COMBO","widget":{"name":"upscale_method"},"link":null},{"localized_name":"image_attention_strength","name":"image_attention_strength","shape":7,"type":"FLOAT","widget":{"name":"image_attention_strength"},"link":null},{"localized_name":"crop","name":"crop","shape":7,"type":"COMBO","widget":{"name":"crop"},"link":null},{"localized_name":"auto_snap_ic_grid","name":"auto_snap_ic_grid","shape":7,"type":"BOOLEAN","widget":{"name":"auto_snap_ic_grid"},"link":null},{"localized_name":"use_tiled_encode","name":"use_tiled_encode","shape":7,"type":"BOOLEAN","widget":{"name":"use_tiled_encode"},"link":null},{"localized_name":"tile_size","name":"tile_size","shape":7,"type":"INT","widget":{"name":"tile_size"},"link":null},{"localized_name":"tile_overlap","name":"tile_overlap","shape":7,"type":"INT","widget":{"name":"tile_overlap"},"link":null},{"localized_name":"retake_mode","name":"retake_mode","shape":7,"type":"BOOLEAN","widget":{"name":"retake_mode"},"link":null},{"localized_name":"msr_strength","name":"msr_strength","shape":7,"type":"FLOAT","widget":{"name":"msr_strength"},"link":null}],"outputs":[{"localized_name":"positive","name":"positive","type":"CONDITIONING","links":[520,525]},{"localized_name":"negative","name":"negative","type":"CONDITIONING","links":[521,524]},{"localized_name":"latent","name":"latent","type":"LATENT","links":[522]},{"localized_name":"model","name":"model","type":"MODEL","links":[523,544]},{"localized_name":"latent_downscale_factor","name":"latent_downscale_factor","type":"FLOAT","links":null}],"properties":{"cnr_id":"WhatDreamsCost-ComfyUI","ver":"6a035f05769536a87d9764e8b91d5744dc014fd2","Node name for S&R":"LTXDirectorGuideCS"},"widgets_values":["None",1,0.5,"bicubic",1,"center",true,false,256,64,false,0]},{"id":158,"type":"MarkdownNote","pos":[1464.0255349598156,4920.963347548293],"size":[267.18943623097084,131.4338305567444],"flags":{"collapsed":false},"order":25,"mode":0,"inputs":[],"outputs":[],"title":"Character Reference Notes","properties":{},"widgets_values":["manual descriptions only:\n\n- enter alias and description in each MSR character node\n- descriptions are appended to the director prompt automatically\n- keep your reference images roughly 16:9 for best slideshow results\n\n"],"color":"#222","bgcolor":"#000"},{"id":92,"type":"MarkdownNote","pos":[1192.1737870477007,4841.9399749389495],"size":[270,560],"flags":{"collapsed":true},"order":26,"mode":0,"inputs":[],"outputs":[],"title":"FAQ","properties":{},"widgets_values":["# FAQ\n\n**How do I use this??**\n\nI'll be posting tutorials on my YouTube channel soon!\n\n\n**Where do I download these models??**\n\nThere is a good list of models and download links here: \n\nAlso the latest v1.1 spatial upscaler can be found here: \n\nThe tiny vae (taeltx2_3.safetensors) is found here:\n\n\n**I'm getting errors when running this workflow!**\n\nDouble check that you have all of the correct models loaded. This is using the newest version of 2x upscaler (v1.1). You can change it to the older one under the Model Loader.\n\n**How can I support you?**\n\nHelp me get a job. I'm unemployed and literally broke. (seriously, i'll even scrub toilets for minimum wage)\n\nOr follow me on my socials :)\n\n\n\n\n\n\n"],"color":"#222","bgcolor":"#000"},{"id":179,"type":"MarkdownNote","pos":[4415.296200866797,5026.288826643649],"size":[210,88],"flags":{"collapsed":true},"order":27,"mode":0,"inputs":[],"outputs":[],"title":"Clean Latent Slice","properties":{},"widgets_values":["\nDisable with Licon MSR\n"],"color":"#222","bgcolor":"#000"},{"id":94,"type":"UNETLoader","pos":[1187.7290384972068,4380.0957326862],"size":[260.8147768096842,82],"flags":{"collapsed":false},"order":28,"mode":0,"inputs":[{"localized_name":"unet_name","name":"unet_name","type":"COMBO","widget":{"name":"unet_name"},"link":null},{"localized_name":"weight_dtype","name":"weight_dtype","type":"COMBO","widget":{"name":"weight_dtype"},"link":null}],"outputs":[{"localized_name":"MODEL","name":"MODEL","type":"MODEL","links":[408]}],"properties":{"cnr_id":"comfy-core","ver":"0.21.1","Node name for S&R":"UNETLoader"},"widgets_values":["ltx\\ltx-2-3-22b-dev_transformer_only_fp8_input_scaled.safetensors","default"]},{"id":102,"type":"VHS_VideoCombine","pos":[4713.409101523936,3860.1307770768394],"size":[903.5017372863722,334],"flags":{"collapsed":false},"order":81,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":222},{"localized_name":"audio","name":"audio","shape":7,"type":"AUDIO","link":223},{"localized_name":"meta_batch","name":"meta_batch","shape":7,"type":"VHS_BatchManager","link":null},{"localized_name":"vae","name":"vae","shape":7,"type":"VAE","link":null},{"localized_name":"frame_rate","name":"frame_rate","type":"FLOAT","widget":{"name":"frame_rate"},"link":392},{"localized_name":"loop_count","name":"loop_count","type":"INT","widget":{"name":"loop_count"},"link":null},{"localized_name":"filename_prefix","name":"filename_prefix","type":"STRING","widget":{"name":"filename_prefix"},"link":null},{"localized_name":"format","name":"format","type":"COMBO","widget":{"name":"format"},"link":null},{"localized_name":"pingpong","name":"pingpong","type":"BOOLEAN","widget":{"name":"pingpong"},"link":null},{"localized_name":"save_output","name":"save_output","type":"BOOLEAN","widget":{"name":"save_output"},"link":null},{"name":"pix_fmt","type":["yuv420p","p010le"],"widget":{"name":"pix_fmt"},"link":null},{"name":"bitrate","type":"INT","widget":{"name":"bitrate"},"link":null},{"name":"megabit","type":"BOOLEAN","widget":{"name":"megabit"},"link":null},{"name":"save_metadata","type":"BOOLEAN","widget":{"name":"save_metadata"},"link":null}],"outputs":[{"localized_name":"Filenames","name":"Filenames","type":"VHS_FILENAMES","links":null}],"properties":{"cnr_id":"comfyui-videohelpersuite","ver":"8923bd836bdab8b7bbdf4ed104b7d045e70c66e2","Node name for S&R":"VHS_VideoCombine"},"widgets_values":{"frame_rate":24,"loop_count":0,"filename_prefix":"LTX-2","format":"video/nvenc_h264-mp4","pix_fmt":"yuv420p","bitrate":10,"megabit":true,"save_metadata":true,"pingpong":false,"save_output":true,"videopreview":{"hidden":false,"paused":false,"params":{"filename":"LTX-2_00650-audio.mp4","subfolder":"","type":"output","format":"video/nvenc_h264-mp4","frame_rate":25,"workflow":"LTX-2_00650.png","fullpath":"S:\\ComfyUI\\ComfyUI\\output\\LTX-2_00650-audio.mp4"}}}},{"id":29,"type":"KSamplerSelect","pos":[3911.538365353464,4514.496307535617],"size":[210,60],"flags":{},"order":29,"mode":0,"inputs":[{"localized_name":"sampler_name","name":"sampler_name","type":"COMBO","widget":{"name":"sampler_name"},"link":null}],"outputs":[{"localized_name":"SAMPLER","name":"SAMPLER","type":"SAMPLER","links":[53]}],"properties":{"cnr_id":"comfy-core","ver":"0.3.56","Node name for S&R":"KSamplerSelect","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":["euler_ancestral_cfg_pp"]},{"id":11,"type":"BasicScheduler","pos":[3911.538365353464,4655.777557535617],"size":[210,110],"flags":{},"order":70,"mode":0,"inputs":[{"localized_name":"model","name":"model","type":"MODEL","link":544},{"localized_name":"scheduler","name":"scheduler","type":"COMBO","widget":{"name":"scheduler"},"link":null},{"localized_name":"steps","name":"steps","type":"INT","widget":{"name":"steps"},"link":null},{"localized_name":"denoise","name":"denoise","type":"FLOAT","widget":{"name":"denoise"},"link":null}],"outputs":[{"localized_name":"SIGMAS","name":"SIGMAS","type":"SIGMAS","links":[52]}],"properties":{"cnr_id":"comfy-core","ver":"0.16.4","Node name for S&R":"BasicScheduler"},"widgets_values":["linear_quadratic",12,1]},{"id":157,"type":"MarkdownNote","pos":[3651.9892769020544,4911.05295266081],"size":[214.491056348013,88],"flags":{"collapsed":false},"order":30,"mode":0,"inputs":[],"outputs":[],"title":"NAG","properties":{},"widgets_values":["\nNAG : enable both (ON)\n \n\ndisable both (OFF)\n\n\n"],"color":"#222","bgcolor":"#000"},{"id":204,"type":"LTXDirectorCS","pos":[1817.1933161031693,3818.332523118286],"size":[1146.460593284808,1237],"flags":{"collapsed":false},"order":49,"mode":0,"inputs":[{"localized_name":"model","name":"model","type":"MODEL","link":482},{"localized_name":"clip","name":"clip","type":"CLIP","link":483},{"localized_name":"audio_vae","name":"audio_vae","shape":7,"type":"VAE","link":484},{"localized_name":"optional_latent","name":"optional_latent","shape":7,"type":"LATENT","link":null},{"localized_name":"global_prompt","name":"global_prompt","shape":7,"type":"STRING","link":null},{"localized_name":"vae","name":"vae","shape":7,"type":"VAE","link":485},{"localized_name":"start","name":"start","shape":7,"type":"FLOAT","link":null},{"localized_name":"end","name":"end","shape":7,"type":"FLOAT","link":null},{"localized_name":"duration","name":"duration","shape":7,"type":"FLOAT","link":null},{"localized_name":"frame_rate","name":"frame_rate","shape":7,"type":"FLOAT","widget":{"name":"frame_rate"},"link":null},{"localized_name":"custom_width","name":"custom_width","shape":7,"type":"INT","widget":{"name":"custom_width"},"link":null},{"localized_name":"custom_height","name":"custom_height","shape":7,"type":"INT","widget":{"name":"custom_height"},"link":null},{"localized_name":"resize_method","name":"resize_method","shape":7,"type":"COMBO","widget":{"name":"resize_method"},"link":null},{"localized_name":"reference_strength","name":"reference_strength","shape":7,"type":"FLOAT","widget":{"name":"reference_strength"},"link":null}],"outputs":[{"localized_name":"model","name":"model","type":"MODEL","links":[486]},{"localized_name":"positive","name":"positive","type":"CONDITIONING","links":[487,488]},{"localized_name":"negative","name":"negative","type":"CONDITIONING","links":[499,543]},{"localized_name":"video_latent","name":"video_latent","type":"LATENT","links":[515]},{"localized_name":"audio_latent","name":"audio_latent","type":"LATENT","links":[491]},{"localized_name":"guide_data","name":"guide_data","type":"GUIDE_DATA","links":[501,518]},{"localized_name":"motion_guide_data","name":"motion_guide_data","type":"MOTION_GUIDE_DATA","links":[507,517]},{"localized_name":"frame_rate","name":"frame_rate","type":"FLOAT","links":[496,497]},{"localized_name":"combined_audio","name":"combined_audio","type":"AUDIO","links":null},{"localized_name":"clean_latent_frames","name":"clean_latent_frames","type":"INT","links":[498]},{"localized_name":"clean_pixel_frames","name":"clean_pixel_frames","type":"INT","links":null}],"properties":{"cnr_id":"WhatDreamsCost-ComfyUI","ver":"6a035f05769536a87d9764e8b91d5744dc014fd2","Node name for S&R":"LTXDirectorCS","global_prompt":"Aesthetic & Textures: Cinematic, photorealistic night footage. Sleek retro-futuristic coupe with a highly detailed brushed-steel metallic finish, reflecting ambient streetlights. Polished deep-dish bronze multi-piece wheels. Background features rough, weathered grey concrete overpass structures, wet asphalt, and distant city lights. High-contrast, moody atmosphere.","mainTrackEnabled":true,"audioTrackEnabled":true,"motionTrackEnabled":true,"audioTrackWasEnabledBeforeOverride":false,"inpaint_audio":true,"override_audio":false,"overrideAudio":false,"showFilenames":true,"use_custom_audio":true,"use_custom_motion":true,"frame_rate":25,"display_mode":"seconds","custom_width":1920,"custom_height":1088,"resize_method":"stretch to fit","divisible_by":32,"img_compression":18,"guide_strength":"","local_prompts":"","segment_lengths":"","timeline_data":"{\"mainTrackEnabled\":true,\"audioTrackEnabled\":true,\"motionTrackEnabled\":true,\"propHeight\":90,\"globalPropHeight\":67,\"showFilenames\":true,\"overrideAudio\":false,\"inpaint_audio\":true,\"global_prompt\":\"Aesthetic & Textures: Cinematic, photorealistic night footage. Sleek retro-futuristic coupe with a highly detailed brushed-steel metallic finish, reflecting ambient streetlights. Polished deep-dish bronze multi-piece wheels. Background features rough, weathered grey concrete overpass structures, wet asphalt, and distant city lights. High-contrast, moody atmosphere.\",\"retake_global_prompt\":\"\",\"retakeMode\":false,\"retakeStart\":24,\"retakeLength\":48,\"retakePrompt\":\"\",\"retakeStrength\":1,\"retakeVideo\":null,\"normalStartFrame\":0,\"normalDurationFrames\":200,\"reference_mode\":\"Licon MSR (Prefix)\",\"\"characters\":[{\"images\":[],\"description\":\"He has short graying hair and a rugged face marked with visible age spots and scarring on his cheeks. He is dressed in a tattered brown leather apron worn over an olive-green jacket layered under a scarf. ha has one cyber eye\"},{\"images\":[],\"description\":\"The character is a tall, slender humanoid with smooth pale skin and a strong jawline beneath sleek eye-goggles covering her eyes entirely. She wears an imposing black hooded headpiece atop the neck of a matte-black tactical suit accented with orange mechanical joints.\"},{\"images\":[],\"description\":\"\"}],\"segments\":[],\"motionSegments\":[],\"audioSegments\":[]}","epsilon":0.001,"start_second":0,"end_second":8,"duration_seconds":8,"start_frame":0,"end_frame":200,"duration_frames":200,"propHeight":90,"globalPropHeight":67,"reference_strength":1,"timeline_ui":"","has_serialized_properties":true,"retakeMode":false,"ltx_settings_ui":""},"widgets_values":[0,8,8,0,200,200,"{\"mainTrackEnabled\":true,\"audioTrackEnabled\":true,\"motionTrackEnabled\":true,\"propHeight\":90,\"globalPropHeight\":67,\"showFilenames\":true,\"overrideAudio\":false,\"inpaint_audio\":true,\"global_prompt\":\"Aesthetic & Textures: Cinematic, photorealistic night footage. Sleek retro-futuristic coupe with a highly detailed brushed-steel metallic finish, reflecting ambient streetlights. Polished deep-dish bronze multi-piece wheels. Background features rough, weathered grey concrete overpass structures, wet asphalt, and distant city lights. High-contrast, moody atmosphere.\",\"retake_global_prompt\":\"\",\"retakeMode\":false,\"retakeStart\":24,\"retakeLength\":48,\"retakePrompt\":\"\",\"retakeStrength\":1,\"retakeVideo\":null,\"normalStartFrame\":0,\"normalDurationFrames\":200,\"reference_mode\":\"Licon MSR (Prefix)\",\"\"characters\":[{\"images\":[],\"description\":\"He has short graying hair and a rugged face marked with visible age spots and scarring on his cheeks. He is dressed in a tattered brown leather apron worn over an olive-green jacket layered under a scarf. ha has one cyber eye\"},{\"images\":[],\"description\":\"The character is a tall, slender humanoid with smooth pale skin and a strong jawline beneath sleek eye-goggles covering her eyes entirely. She wears an imposing black hooded headpiece atop the neck of a matte-black tactical suit accented with orange mechanical joints.\"},{\"images\":[],\"description\":\"\"}],\"segments\":[],\"motionSegments\":[],\"audioSegments\":[]}","","",0.001,"",true,true,true,25,"seconds",1920,1088,"stretch to fit",32,18,false,1,"",""]},{"id":146,"type":"PrimitiveStringMultiline","pos":[4372.490971119918,4102.805179368286],"size":[210,88],"flags":{"collapsed":false},"order":31,"mode":0,"inputs":[{"localized_name":"value","name":"value","type":"STRING","widget":{"name":"value"},"link":null}],"outputs":[{"localized_name":"STRING","name":"STRING","type":"STRING","links":[318]}],"properties":{"cnr_id":"comfy-core","ver":"0.22.0","Node name for S&R":"PrimitiveStringMultiline"},"widgets_values":["0.85, 0.6165, 0.3460, 0.0000"]},{"id":104,"type":"ManualSigmas","pos":[4112.490971119919,4132.805179368286],"size":[230,58],"flags":{"collapsed":false},"order":39,"mode":0,"inputs":[{"localized_name":"sigmas","name":"sigmas","type":"STRING","widget":{"name":"sigmas"},"link":318}],"outputs":[{"localized_name":"SIGMAS","name":"SIGMAS","type":"SIGMAS","links":[546]}],"properties":{"cnr_id":"comfy-core","ver":"0.14.1","Node name for S&R":"ManualSigmas"},"widgets_values":["0.85, 0.7250, 0.4219, 0.0"]},{"id":150,"type":"MarkdownNote","pos":[4713.409101523936,4789.328871446935],"size":[288.8383013624807,147.09966422352863],"flags":{"collapsed":false},"order":32,"mode":0,"inputs":[],"outputs":[],"title":"About Models","properties":{},"widgets_values":["\neuler_ancestral_cgf_pp (more photorealistic)\nres 3s (slower)\n\n\n20 steps (best)\n8 steps (ok)\n\nUpscale 3 ok 4 better (plug Basicscheduler to Sampler)\n\nDistilled 0.6 lora (good ref sheet fidelity)\n\n\n48 fps for perfect fast motion\n\nMSR Licon WORKING ! 0.75s artifacts when upscaled because of HD images reinjection\n \n"],"color":"#222","bgcolor":"#000"}],"links":[[12,9,0,10,1,"GUIDER"],[14,7,0,10,4,"LATENT"],[51,28,0,10,0,"NOISE"],[52,11,0,10,3,"SIGMAS"],[53,29,0,10,2,"SAMPLER"],[124,49,0,47,1,"GUIDER"],[125,53,0,47,2,"SAMPLER"],[127,50,0,47,4,"LATENT"],[144,57,0,52,1,"LATENT_UPSCALE_MODEL"],[157,28,0,47,0,"NOISE"],[180,47,0,48,0,"LATENT"],[196,78,0,79,2,"VAE"],[213,101,0,95,0,"MODEL"],[214,99,0,96,0,"MODEL"],[215,97,0,98,0,"MODEL"],[216,100,0,99,0,"MODEL"],[217,98,0,100,0,"MODEL"],[218,99,0,101,0,"MODEL"],[219,80,0,97,0,"MODEL"],[222,15,0,102,0,"IMAGE"],[223,16,0,102,1,"AUDIO"],[227,4,0,107,0,"VAE"],[228,108,0,16,1,"VAE"],[229,3,0,109,0,"VAE"],[231,111,0,52,2,"VAE"],[233,113,0,15,1,"VAE"],[235,13,1,16,0,"LATENT"],[267,10,0,13,0,"LATENT"],[289,128,0,127,1,"CONDITIONING"],[294,84,0,129,0,"CLIP"],[295,130,0,128,0,"CLIP"],[296,128,0,127,2,"CONDITIONING"],[318,146,0,104,0,"STRING"],[325,127,0,147,0,"MODEL"],[337,128,0,149,1,"CONDITIONING"],[382,13,1,174,0,"LATENT"],[383,175,0,50,1,"LATENT"],[384,176,0,52,0,"LATENT"],[392,181,0,102,4,"FLOAT"],[405,79,0,80,0,"MODEL"],[408,94,0,79,0,"MODEL"],[411,128,0,187,0,"CONDITIONING"],[413,149,0,5,1,"CONDITIONING"],[482,101,0,204,0,"MODEL"],[483,84,0,204,1,"CLIP"],[484,4,0,204,2,"VAE"],[485,3,0,204,5,"VAE"],[486,204,0,127,0,"MODEL"],[487,204,1,160,0,"CONDITIONING"],[488,204,1,5,0,"CONDITIONING"],[491,204,4,7,1,"LATENT"],[496,204,7,180,0,"FLOAT"],[497,204,7,5,2,"FLOAT"],[498,204,9,182,0,"INT"],[499,204,2,161,0,"CONDITIONING"],[500,52,0,205,3,"LATENT"],[501,204,5,205,4,"GUIDE_DATA"],[502,205,0,49,1,"CONDITIONING"],[503,205,1,49,2,"CONDITIONING"],[504,205,3,49,0,"MODEL"],[505,205,2,50,0,"LATENT"],[506,112,0,205,2,"VAE"],[507,204,6,205,5,"MOTION_GUIDE_DATA"],[508,103,0,205,6,"MODEL"],[509,205,0,169,0,"CONDITIONING"],[510,205,1,170,0,"CONDITIONING"],[511,167,0,205,0,"CONDITIONING"],[512,168,0,205,1,"CONDITIONING"],[513,5,0,206,0,"CONDITIONING"],[514,5,1,206,1,"CONDITIONING"],[515,204,3,206,3,"LATENT"],[516,127,0,206,6,"MODEL"],[517,204,6,206,5,"MOTION_GUIDE_DATA"],[518,204,5,206,4,"GUIDE_DATA"],[519,110,0,206,2,"VAE"],[520,206,0,9,1,"CONDITIONING"],[521,206,1,9,2,"CONDITIONING"],[522,206,2,7,0,"LATENT"],[523,206,3,9,0,"MODEL"],[524,206,1,166,0,"CONDITIONING"],[525,206,0,165,0,"CONDITIONING"],[527,171,0,207,0,"CONDITIONING"],[528,172,0,207,1,"CONDITIONING"],[529,48,0,207,2,"LATENT"],[532,163,0,208,1,"CONDITIONING"],[533,162,0,208,0,"CONDITIONING"],[534,208,2,173,0,"LATENT"],[535,48,0,209,0,"LATENT"],[536,209,0,15,0,"LATENT"],[537,196,0,209,2,"INT"],[538,205,3,54,0,"MODEL"],[539,13,0,208,2,"LATENT"],[543,204,2,149,0,"CONDITIONING"],[544,206,3,11,0,"MODEL"],[546,104,0,47,3,"SIGMAS"]],"groups":[{"id":4,"title":"Stage #1","bounding":[3016.805994963843,4308.288648200755,1606.2379320089217,760.3108486715846],"flags":{}},{"id":5,"title":"Stage #2 Upscale","bounding":[3014.511362276872,3740.2110485574576,1610.58065732864,543.7537097700324],"flags":{}},{"id":6,"title":"Process Video","bounding":[4647.885369591847,3745.09345122726,1012.506433346367,1323.8349380513605],"flags":{}},{"id":7,"title":"Timeline","bounding":[1777.8233971795028,3740.7638722614215,1223.960654049973,1327.678450477571],"flags":{}},{"id":8,"title":"Peformace tweaks (help low vram)","bounding":[1270.0934983588413,4153.903583195573,485.2883108883925,109.75103239530472],"flags":{}},{"id":9,"title":"LTX-2 Loras","bounding":[1266.851443434426,3821.7807258321477,493.249044492934,316.97960132943217],"flags":{}},{"id":10,"title":"Group","bounding":[1153.1440092407659,4279.708623295673,597.8960119181045,592.6764849338833],"flags":{}}],"config":{},"extra":{"ds":{"scale":0.9800820733973077,"offset":[-3016.3071410521075,-3952.936492586513]},"frontendVersion":"1.42.14","VHS_latentpreview":false,"VHS_latentpreviewrate":0,"VHS_MetadataImage":true,"VHS_KeepIntermediate":true},"version":0.4} \ No newline at end of file diff --git a/js/ltx_director.js b/js/ltx_director.js index 8dd1e86..dca7603 100644 --- a/js/ltx_director.js +++ b/js/ltx_director.js @@ -11350,31 +11350,9 @@ const APPENDED_WIDGET_DEFAULTS = [ ["segment_lengths", ""], ]; -app.registerExtension({ +app.registerExtension({ name: "LTXDirectorCS", - async setup() { - // On Run, ask Ollama to release the analysis model from VRAM so it doesn't - // compete with LTX generation. Fully tolerant: failures are swallowed. - if (app._ltxDirectorUnloadHookInstalled) return; - app._ltxDirectorUnloadHookInstalled = true; - const origQueuePrompt = app.queuePrompt; - app.queuePrompt = async function (...args) { - try { - const nodes = app.graph?._nodes || []; - const director = nodes.find(n => n && (n.comfyClass === "LTXDirectorCS" || n.type === "LTXDirectorCS")); - if (director) { - try { - await api.fetchApi("/ltx_director/unload_ollama", { - method: "POST", - body: JSON.stringify({ provider: "ollama" }), - }); - } catch (e) {} - } - } catch (e) {} - return origQueuePrompt.apply(this, args); - }; - }, - async beforeRegisterNodeDef(nodeType, nodeData, app) { + async beforeRegisterNodeDef(nodeType, nodeData, app) { if (nodeData.name === "LTXDirectorCS") { const onNodeCreated = nodeType.prototype.onNodeCreated; diff --git a/js/msr_character.js b/js/msr_character.js index b9f7fc7..b5fac4b 100644 --- a/js/msr_character.js +++ b/js/msr_character.js @@ -1,6 +1,5 @@ const { app } = window.comfyAPI.app; const { api } = window.comfyAPI.api; -const DEFAULT_ANALYZE_PROMPT = "Describe the character's physical appearance in two concise sentences. Specify their hair color/style, face details, and their clothing type/color. Keep the entire response very brief."; function findWidget(node, name) { return (node.widgets || []).find((widget) => widget.name === name); @@ -58,139 +57,6 @@ function resolveCandidateImageUrls(originNode) { return urls; } -async function blobToOptimizedDataUrl(blob, maxDim = 1024, quality = 0.82) { - const objectUrl = URL.createObjectURL(blob); - try { - const image = await new Promise((resolve, reject) => { - const img = new Image(); - img.onload = () => resolve(img); - img.onerror = () => reject(new Error("Failed to decode image blob")); - img.src = objectUrl; - }); - - const width = image.naturalWidth || image.width || 0; - const height = image.naturalHeight || image.height || 0; - const scale = width > 0 && height > 0 ? Math.min(1, maxDim / Math.max(width, height)) : 1; - const targetWidth = Math.max(1, Math.round(width * scale)) || width || 1; - const targetHeight = Math.max(1, Math.round(height * scale)) || height || 1; - - const canvas = document.createElement("canvas"); - canvas.width = targetWidth; - canvas.height = targetHeight; - const ctx = canvas.getContext("2d"); - if (!ctx) { - throw new Error("Could not acquire canvas context"); - } - ctx.drawImage(image, 0, 0, targetWidth, targetHeight); - - const optimizedBlob = await new Promise((resolve, reject) => { - canvas.toBlob((result) => { - if (result) resolve(result); - else reject(new Error("Canvas toBlob failed")); - }, "image/jpeg", quality); - }); - - const dataUrl = await new Promise((resolve) => { - const reader = new FileReader(); - reader.onloadend = () => resolve(reader.result); - reader.readAsDataURL(optimizedBlob); - }); - - return { - dataUrl, - originalWidth: width, - originalHeight: height, - outputWidth: targetWidth, - outputHeight: targetHeight, - outputBytes: optimizedBlob.size || 0, - }; - } finally { - URL.revokeObjectURL(objectUrl); - } -} - -async function imageInputToDataUrl(node, inputName) { - const originNode = getOriginNodeForInput(node, inputName); - const candidateUrls = resolveCandidateImageUrls(originNode); - if (!candidateUrls.length) { - return { - dataUrl: null, - debug: { - inputName, - originNodeId: originNode?.id ?? null, - originNodeType: originNode?.type ?? null, - candidateUrls: [], - selectedUrl: null, - mimeType: null, - blobBytes: 0, - dataUrlLength: 0, - originalWidth: 0, - originalHeight: 0, - outputWidth: 0, - outputHeight: 0, - outputBytes: 0, - error: "No candidate image URLs found", - }, - }; - } - - for (const imageUrl of candidateUrls) { - try { - const response = await fetch(imageUrl); - if (!response.ok) { - throw new Error(`HTTP ${response.status}`); - } - const blob = await response.blob(); - if (!blob.type.startsWith("image/")) { - throw new Error(`Unexpected blob type: ${blob.type || "unknown"}`); - } - const optimized = await blobToOptimizedDataUrl(blob); - const dataUrl = optimized.dataUrl; - return { - dataUrl, - debug: { - inputName, - originNodeId: originNode?.id ?? null, - originNodeType: originNode?.type ?? null, - candidateUrls, - selectedUrl: imageUrl, - mimeType: blob.type || null, - blobBytes: blob.size || 0, - dataUrlLength: typeof dataUrl === "string" ? dataUrl.length : 0, - originalWidth: optimized.originalWidth, - originalHeight: optimized.originalHeight, - outputWidth: optimized.outputWidth, - outputHeight: optimized.outputHeight, - outputBytes: optimized.outputBytes, - error: null, - }, - }; - } catch (error) { - console.warn("[MSRCharacter] Failed candidate image source", imageUrl, error); - } - } - - return { - dataUrl: null, - debug: { - inputName, - originNodeId: originNode?.id ?? null, - originNodeType: originNode?.type ?? null, - candidateUrls, - selectedUrl: null, - mimeType: null, - blobBytes: 0, - dataUrlLength: 0, - originalWidth: 0, - originalHeight: 0, - outputWidth: 0, - outputHeight: 0, - outputBytes: 0, - error: "All candidate image URLs failed", - }, - }; -} - function setWidgetValue(node, widget, value) { if (!widget) return; const previous = widget.value; @@ -220,9 +86,6 @@ function setWidgetValue(node, widget, value) { function syncFormFromWidgets(node) { const description = findWidget(node, "description")?.value || ""; const alias = findWidget(node, "alias")?.value || ""; - const provider = findWidget(node, "analyze_provider")?.value || "ollama"; - const model = findWidget(node, "analyze_model")?.value || ""; - const baseUrl = findWidget(node, "analyze_base_url")?.value || ""; if (node._msrAliasInput && node._msrAliasInput.value !== alias) { node._msrAliasInput.value = alias; @@ -235,8 +98,7 @@ function syncFormFromWidgets(node) { alias ? `Alias: @${String(alias).replace(/^@/, "")}` : "Alias: none", - `
Analyze: ${provider}${model ? ` / ${model}` : ""}${baseUrl ? ` / ${baseUrl}` : ""}
`, - `
Description is stored in the field below.
`, + `
Description is stored in the field below and appended to the director prompt as a tagged character reference.
`, ].join(""); } } @@ -323,70 +185,6 @@ function buildCharacterUi(node) { gap: "6px", }); - const actionsRow = document.createElement("div"); - Object.assign(actionsRow.style, { - display: "flex", - gap: "8px", - alignItems: "center", - flexWrap: "wrap", - }); - - const analyzeButton = document.createElement("button"); - analyzeButton.type = "button"; - analyzeButton.textContent = "Analyze"; - Object.assign(analyzeButton.style, { - alignSelf: "flex-start", - background: "#2b4f38", - color: "#f3f3f3", - border: "1px solid #496d56", - borderRadius: "6px", - padding: "6px 10px", - fontSize: "11px", - cursor: "pointer", - }); - analyzeButton.addEventListener("click", () => { - const widgetButton = (node.widgets || []).find((widget) => widget.msrAnalyze); - if (!widgetButton) { - alert("Analyze button widget is missing on this node."); - return; - } - analyzeCharacterNode(node, widgetButton); - }); - - const settingsButton = document.createElement("button"); - settingsButton.type = "button"; - settingsButton.textContent = "Analyze Settings"; - Object.assign(settingsButton.style, { - alignSelf: "flex-start", - background: "#252525", - color: "#ddd", - border: "1px solid #444", - borderRadius: "6px", - padding: "6px 10px", - fontSize: "11px", - cursor: "pointer", - }); - settingsButton.addEventListener("click", () => { - const providerWidget = findWidget(node, "analyze_provider"); - const baseUrlWidget = findWidget(node, "analyze_base_url"); - const modelWidget = findWidget(node, "analyze_model"); - const promptWidget = findWidget(node, "analyze_prompt"); - const provider = window.prompt("Analyze provider: ollama, lmstudio, custom, off", providerWidget?.value || "ollama"); - if (provider == null) return; - const baseUrl = window.prompt("Analyze base URL (blank = default)", baseUrlWidget?.value || ""); - if (baseUrl == null) return; - const model = window.prompt("Analyze model (blank = provider default)", modelWidget?.value || ""); - if (model == null) return; - const prompt = window.prompt("Analyze prompt (blank = default)", promptWidget?.value || DEFAULT_ANALYZE_PROMPT); - if (prompt == null) return; - setWidgetValue(node, providerWidget, provider.trim() || "ollama"); - setWidgetValue(node, baseUrlWidget, baseUrl.trim()); - setWidgetValue(node, modelWidget, model.trim()); - setWidgetValue(node, promptWidget, prompt.trim()); - syncFormFromWidgets(node); - node.setDirtyCanvas?.(true, true); - }); - const aliasLabel = document.createElement("label"); aliasLabel.textContent = "Alias"; Object.assign(aliasLabel.style, { @@ -439,13 +237,10 @@ function buildCharacterUi(node) { syncFormFromWidgets(node); }); - actionsRow.appendChild(analyzeButton); - actionsRow.appendChild(settingsButton); form.appendChild(aliasLabel); form.appendChild(aliasInput); form.appendChild(descLabel); form.appendChild(descInput); - form.appendChild(actionsRow); container.appendChild(previewRow); container.appendChild(meta); @@ -456,79 +251,9 @@ function buildCharacterUi(node) { node._msrMeta = meta; node._msrAliasInput = aliasInput; node._msrDescriptionInput = descInput; - node._msrAnalyzeButton = analyzeButton; return container; } -async function analyzeCharacterNode(node, buttonWidget) { - const descriptionWidget = findWidget(node, "description"); - if (!descriptionWidget) return; - const providerWidget = findWidget(node, "analyze_provider"); - const baseUrlWidget = findWidget(node, "analyze_base_url"); - const modelWidget = findWidget(node, "analyze_model"); - const promptWidget = findWidget(node, "analyze_prompt"); - - buttonWidget.label = "Analyzing..."; - if (node._msrAnalyzeButton) { - node._msrAnalyzeButton.textContent = "Analyzing..."; - node._msrAnalyzeButton.disabled = true; - } - node.setDirtyCanvas?.(true, true); - - try { - const imageResults = await Promise.all([ - imageInputToDataUrl(node, "image_1"), - imageInputToDataUrl(node, "image_2"), - ]); - const imageDebug = imageResults.map((result) => result?.debug || null).filter(Boolean); - const images = ( - imageResults.map((result) => result?.dataUrl || null) - ).filter(Boolean); - - if (!images.length) { - throw new Error("Connect at least one image input before analyzing."); - } - - const response = await api.fetchApi("/ltx_director/analyze_character", { - method: "POST", - body: JSON.stringify({ - provider: providerWidget?.value || "ollama", - base_url: baseUrlWidget?.value || "", - model: modelWidget?.value || "", - prompt: promptWidget?.value || "", - image_b64: images, - image_debug: imageDebug, - }), - }); - const result = await response.json(); - if (result.status !== "success") { - console.warn("[MSRCharacter] analyze debug", { - sentImages: imageDebug, - response: result, - }); - throw new Error(result.message || "Unknown analysis error"); - } - - const description = result.description || ""; - setWidgetValue(node, descriptionWidget, description); - if (node._msrDescriptionInput) { - node._msrDescriptionInput.value = description; - } - syncFormFromWidgets(node); - refreshCharacterPreview(node); - } catch (error) { - console.error("[MSRCharacter] analyze failed", error); - alert(`MSR Character analyze failed: ${error.message || error}`); - } finally { - buttonWidget.label = "Analyze with Ollama"; - if (node._msrAnalyzeButton) { - node._msrAnalyzeButton.textContent = "Analyze"; - node._msrAnalyzeButton.disabled = false; - } - node.setDirtyCanvas?.(true, true); - } -} - function hideNodeWidget(widget) { if (!widget) return; widget.hidden = true; @@ -547,30 +272,6 @@ app.registerExtension({ nodeType.prototype.onNodeCreated = function () { if (originalOnNodeCreated) originalOnNodeCreated.apply(this, arguments); - if (!(this.widgets || []).find((widget) => widget.msrAnalyze)) { - this.addWidget("button", "Analyze with Ollama", null, () => { - analyzeCharacterNode(this, (this.widgets || []).find((widget) => widget.msrAnalyze)); - }, { serialize: false }); - const buttonWidget = this.widgets[this.widgets.length - 1]; - buttonWidget.msrAnalyze = true; - buttonWidget.label = "Analyze with Ollama"; - } - - if (!findWidget(this, "analyze_provider")) { - this.addWidget("combo", "analyze_provider", "ollama", null, { - values: ["ollama", "lmstudio", "custom", "off"], - }); - } - if (!findWidget(this, "analyze_base_url")) { - this.addWidget("text", "analyze_base_url", ""); - } - if (!findWidget(this, "analyze_model")) { - this.addWidget("text", "analyze_model", ""); - } - if (!findWidget(this, "analyze_prompt")) { - this.addWidget("text", "analyze_prompt", DEFAULT_ANALYZE_PROMPT); - } - if (!this._msrPreviewWidget) { const previewContainer = buildCharacterUi(this); this._msrPreviewWidget = this.addDOMWidget("msr_character_ui", "msr_character_ui", previewContainer, { @@ -597,10 +298,9 @@ app.registerExtension({ return result; }; - ["alias", "description", "analyze_provider", "analyze_base_url", "analyze_model", "analyze_prompt"].forEach((widgetName) => { + ["alias", "description"].forEach((widgetName) => { hideNodeWidget(findWidget(this, widgetName)); }); - hideNodeWidget((this.widgets || []).find((widget) => widget.msrAnalyze)); this.size[0] = Math.max(this.size[0] || 0, 330); syncFormFromWidgets(this); diff --git a/ltx_director.py b/ltx_director.py index bd1d018..5ca2a78 100644 --- a/ltx_director.py +++ b/ltx_director.py @@ -366,50 +366,32 @@ def _build_character_tag_groups(characters: list[dict]) -> list[tuple[str, ...]] return groups -def _character_prompt_replacements(characters: list[dict]) -> dict[str, str]: - replacements: dict[str, str] = {} - for character, tags in zip(characters or [], _build_character_tag_groups(characters)): - replacement = character.get("description", "") or "" - for tag in tags: - replacements[tag] = replacement - return replacements +def _build_character_reference_block(characters: list[dict] | None = None) -> str: + lines: list[str] = [] + for idx, character in enumerate(characters or []): + description = (character.get("description", "") or "").strip() + if not description: + continue + + alias = _normalize_character_alias(character.get("alias", "")) + canonical_tag = f"@char{idx + 1}" + ref_label = canonical_tag if not alias else f"{canonical_tag} / @{alias}" + lines.append(f"{ref_label} - {description}") + + if not lines: + return "" + + return "Character references:\n" + "\n".join(lines) -def _prepend_character_descriptions(global_prompt: str, characters: list[dict] | None = None) -> str: - descriptions = [ - (character.get("description", "") or "").strip() - for character in (characters or []) - if (character.get("description", "") or "").strip() - ] - if not descriptions: - return global_prompt or "" - - prefix = ". ".join(descriptions) - if not (global_prompt or "").strip(): - return prefix - return f"{prefix}. {global_prompt.strip()}" - - -def _preprocess_prompts_with_characters(global_prompt, local_prompts, characters: list[dict] | None = None): - """Invisibly swaps out @characterN/@charN/@alias tags with their character descriptions.""" - if "@" not in (global_prompt or "") and "@" not in (local_prompts or ""): - return global_prompt or "", local_prompts or "" - - replacements = _character_prompt_replacements(characters or []) - - def apply_replacements(text: str) -> str: - updated = text or "" - for tag, replacement in replacements.items(): - if tag in updated: - updated = updated.replace(tag, replacement) - return updated - - gp = apply_replacements(global_prompt or "") - if not local_prompts: - return gp, "" - - processed_locals = [apply_replacements(part.strip()) for part in local_prompts.split("|")] - return gp, " | ".join(processed_locals) +def _append_character_references(global_prompt: str, characters: list[dict] | None = None) -> str: + prompt = (global_prompt or "").strip() + reference_block = _build_character_reference_block(characters) + if not reference_block: + return prompt + if not prompt: + return reference_block + return f"{prompt}\n\n{reference_block}" def _load_image_source(b64_or_url: str, filename: str = None, cache: dict | None = None, @@ -512,312 +494,6 @@ async def ltx_director_check_file(request): # --- Provider defaults shared by the analyze + unload endpoints --- -_PROVIDER_DEFAULTS = { - "ollama": {"url": "http://127.0.0.1:11434", "model": "huihui_ai/qwen3.5-abliterated:2b"}, - "lmstudio": {"url": "http://127.0.0.1:1234", "model": ""}, - "custom": {"url": "", "model": ""}, -} - -_ANALYZE_SYSTEM_PROMPT = "" - -_ANALYZE_PROMPT = ( - "Describe the character's physical appearance in two concise sentences. " - "Specify their hair color/style, face details, and their clothing type/color. " - "Keep the entire response very brief." -) - - -def _resolve_analyze_prompt(data: dict) -> str: - prompt = (data.get("prompt") or "").strip() - return prompt or _ANALYZE_PROMPT - - -def _extract_ollama_generated_text(resp_json: dict) -> str: - if not isinstance(resp_json, dict): - return "" - - candidates = [resp_json.get("response"), resp_json.get("content"), resp_json.get("thinking")] - message = resp_json.get("message") - if isinstance(message, dict): - candidates.extend([ - message.get("content"), - message.get("reasoning_content"), - message.get("thinking"), - ]) - - cleaned_candidates = [] - for candidate in candidates: - if isinstance(candidate, str): - text = candidate.strip() - if "" in text: - text = text.split("")[-1].strip() - if text: - cleaned_candidates.append(text) - - if not cleaned_candidates: - return "" - - usable = [text for text in cleaned_candidates if _analysis_text_is_usable(text)] - if usable: - return max(usable, key=len) - - return max(cleaned_candidates, key=len) - - -def _collect_ollama_text_candidates(resp_json: dict) -> list[str]: - if not isinstance(resp_json, dict): - return [] - - candidates = [resp_json.get("response"), resp_json.get("content"), resp_json.get("thinking")] - message = resp_json.get("message") - if isinstance(message, dict): - candidates.extend([ - message.get("content"), - message.get("reasoning_content"), - message.get("thinking"), - ]) - - cleaned = [] - for candidate in candidates: - if isinstance(candidate, str): - text = candidate.strip() - if "" in text: - text = text.split("")[-1].strip() - if text: - cleaned.append(text) - return cleaned - - -def _analysis_text_is_usable(text: str) -> bool: - text = (text or "").strip() - if not text: - return False - if len(text) < 24: - return False - if len(text.split()) < 6: - return False - return True - - -def _compress_analysis_image_b64(b64_payload: str, max_dim: int = 768, quality: int = 82) -> str: - """Shrink analysis images so multimodal providers do not burn their full context on pixels.""" - try: - raw = base64.b64decode(_normalise_b64_payload(b64_payload)) - with Image.open(_io.BytesIO(raw)) as img: - img = img.convert("RGB") - w, h = img.size - if max(w, h) > max_dim: - scale = max_dim / float(max(w, h)) - img = img.resize((max(1, int(round(w * scale))), max(1, int(round(h * scale)))), Image.LANCZOS) - out = _io.BytesIO() - img.save(out, format="JPEG", quality=quality, optimize=True) - return base64.b64encode(out.getvalue()).decode("ascii") - except Exception: - return _normalise_b64_payload(b64_payload) - - -def _prepare_analysis_images(cleaned_b64_list: list[str], max_dim: int = 768, quality: int = 82) -> list[str]: - return [ - _compress_analysis_image_b64(b64, max_dim=max_dim, quality=quality) - for b64 in cleaned_b64_list - ] - - -def _resolve_provider(data): - provider = (data.get("provider") or "ollama").lower() - defs = _PROVIDER_DEFAULTS.get(provider, _PROVIDER_DEFAULTS["ollama"]) - base_url = (data.get("base_url") or defs["url"]).rstrip("/") - model = data.get("model") or defs["model"] - return provider, base_url, model - - -# --- Character reference analysis endpoint (Ollama / LM Studio / Custom OpenAI-compatible) --- -@PromptServer.instance.routes.post("/ltx_director/analyze_character") -async def analyze_character_endpoint(request): - try: - import aiohttp - data = await request.json() - image_b64 = data.get("image_b64", "") - image_debug = data.get("image_debug") or [] - char_index = int(data.get("char_index", 0)) - provider, base_url, model_name = _resolve_provider(data) - analyze_prompt = _resolve_analyze_prompt(data) - - if provider == "off": - return web.json_response({"status": "error", "message": "Analyze is set to Off / Manual."}) - if not image_b64: - return web.json_response({"status": "error", "message": "No image provided for analysis."}) - - b64_list = image_b64 if isinstance(image_b64, list) else [image_b64] - cleaned_b64_list = [] - for b64 in b64_list: - if "," in b64: - b64 = b64.split(",", 1)[1] - cleaned_b64_list.append(b64) - if not cleaned_b64_list: - return web.json_response({"status": "error", "message": "No valid base64 images decoded."}) - if provider in ("lmstudio", "custom") and not model_name: - return web.json_response({ - "status": "error", - "message": f"No model name set for {provider}. Open the gear menu and enter your loaded model's name.", - }) - - log.info("[LTXDirector] Analyzing Character %d via %s (%s, model '%s')...", - char_index + 1, provider, base_url, model_name) - - try: - async with aiohttp.ClientSession() as session: - if provider == "ollama": - debug_candidates = [] - analysis_images = cleaned_b64_list - payload = { - "model": model_name, - "system": _ANALYZE_SYSTEM_PROMPT, - "prompt": analyze_prompt, - "images": analysis_images, - "stream": False, - "keep_alive": 0, - "options": { - "temperature": 0.2, - "num_predict": 768, - }, - } - async with session.post(f"{base_url}/api/generate", json=payload, timeout=300) as response: - if response.status != 200: - err_txt = await response.text() - if response.status == 400 and "exceeds the available context size" in err_txt: - analysis_images = _prepare_analysis_images(cleaned_b64_list, max_dim=512, quality=70) - payload["images"] = analysis_images - async with session.post(f"{base_url}/api/generate", json=payload, timeout=300) as retry_response: - if retry_response.status != 200: - retry_err = await retry_response.text() - return web.json_response({"status": "error", "message": f"Ollama HTTP {retry_response.status}: {retry_err}"}) - resp_json = await retry_response.json() - debug_candidates.extend(_collect_ollama_text_candidates(resp_json)) - generated_text = _extract_ollama_generated_text(resp_json) - else: - return web.json_response({"status": "error", "message": f"Ollama HTTP {response.status}: {err_txt}"}) - else: - resp_json = await response.json() - debug_candidates.extend(_collect_ollama_text_candidates(resp_json)) - generated_text = _extract_ollama_generated_text(resp_json) - - if not _analysis_text_is_usable(generated_text): - chat_payload = { - "model": model_name, - "messages": [ - { - "role": "system", - "content": _ANALYZE_SYSTEM_PROMPT, - }, - { - "role": "user", - "content": analyze_prompt, - "images": analysis_images, - }, - ], - "stream": False, - "keep_alive": 0, - "options": { - "temperature": 0.2, - "num_predict": 768, - }, - } - async with session.post(f"{base_url}/api/chat", json=chat_payload, timeout=300) as response: - if response.status == 200: - resp_json = await response.json() - debug_candidates.extend(_collect_ollama_text_candidates(resp_json)) - chat_text = _extract_ollama_generated_text(resp_json) - if _analysis_text_is_usable(chat_text): - generated_text = chat_text - if not _analysis_text_is_usable(generated_text): - return web.json_response({ - "status": "error", - "message": "Ollama returned only a truncated analysis response.", - "debug_candidates": debug_candidates, - "image_debug": image_debug, - "image_lengths": [len(b64) for b64 in cleaned_b64_list], - "description": generated_text, - }) - else: - # OpenAI-compatible vision chat (LM Studio / Custom). - content = [{"type": "text", "text": analyze_prompt}] - for b64 in cleaned_b64_list: - content.append({"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{b64}"}}) - payload = { - "model": model_name, - "messages": [ - {"role": "system", "content": _ANALYZE_SYSTEM_PROMPT}, - {"role": "user", "content": content}, - ], - "max_tokens": 4096, "stream": False, - } - async with session.post(f"{base_url}/v1/chat/completions", json=payload, timeout=120) as response: - if response.status != 200: - err_txt = await response.text() - return web.json_response({"status": "error", "message": f"{provider} HTTP {response.status}: {err_txt}"}) - resp_json = await response.json() - try: - msg = resp_json["choices"][0]["message"] - generated_text = (msg.get("content") or "").strip() - # Reasoning/"thinking" models (Gemma, Qwen-thinking, etc.) may leave - # content empty and put their output in reasoning_content instead. - if not generated_text: - generated_text = (msg.get("reasoning_content") or "").strip() - except (KeyError, IndexError, TypeError): - return web.json_response({"status": "error", "message": f"Unexpected response shape from {provider}."}) - except aiohttp.ClientConnectorError: - return web.json_response({ - "status": "error", - "message": f"Could not connect to {provider} at {base_url}. Make sure the server is running and reachable.", - }) - - if "" in generated_text: - generated_text = generated_text.split("")[-1].strip() - - log.info("[LTXDirector] Analysis complete: %s", generated_text) - return web.json_response({"status": "success", "description": generated_text}) - - except Exception as e: - log.error(f"[LTXDirector] Failed to analyze character: {e}") - return web.json_response({"status": "error", "message": str(e)}, status=500) - - - -@PromptServer.instance.routes.post("/ltx_director/unload_ollama") -async def unload_ollama_endpoint(request): - """Evict the analysis model from VRAM right before a generation run, so the VLM doesn't - compete with LTX for VRAM (the cause of intermittent CUDA offload crashes). - - Ollama supports a clean instant unload (keep_alive=0). LM Studio / Custom have no reliable - cross-version HTTP unload, so for those this is a graceful no-op — users should set a short - JIT / auto-unload TTL in their server instead. Fully tolerant: never raises into the run. - """ - try: - import aiohttp - try: - data = await request.json() - except Exception: - data = {} - provider, base_url, model_name = _resolve_provider(data) - - if provider == "ollama": - payload = {"model": model_name, "keep_alive": 0} - try: - async with aiohttp.ClientSession() as session: - async with session.post(f"{base_url}/api/generate", json=payload, timeout=8) as response: - await response.text() - log.info("[LTXDirector] Asked Ollama to release '%s' from VRAM before the run.", model_name) - except Exception: - pass # Ollama not running / unreachable -> nothing to free. - return web.json_response({"status": "ok", "provider": provider}) - - # LM Studio / Custom: no reliable HTTP unload across versions -> graceful no-op. - return web.json_response({"status": "ok", "provider": provider, "note": "no-op (set a JIT/TTL unload in your server)"}) - except Exception as e: - return web.json_response({"status": "error", "message": str(e)}) - - def read_wav_peaks(wav_path): import wave with wave.open(wav_path, 'rb') as w: @@ -1635,6 +1311,8 @@ def _build_reference_mode_outputs( vae, global_prompt: str, local_prompts: str, + raw_global_prompt: str, + raw_local_prompts: str, segment_lengths: str, duration_frames: int, epsilon: float, @@ -1667,7 +1345,7 @@ def _build_reference_mode_outputs( tensor = _resize_image(tensor, latent_w, latent_h, "stretch to fit", divisible_by) return tensor - prompt_text = (global_prompt or "") + " " + (local_prompts or "") + prompt_text = (raw_global_prompt or "") + " " + (raw_local_prompts or "") tag_groups = _build_character_tag_groups(characters) referenced_slots = [i for i, tags in enumerate(tag_groups) if any(t in prompt_text for t in tags)] selected = [] @@ -2103,21 +1781,12 @@ class LTXDirector(io.ComfyNode): image_cache=image_cache, input_dir=input_dir, ) - global_prompt = _prepend_character_descriptions(global_prompt, characters) + raw_global_prompt = global_prompt or "" + raw_local_prompts = local_prompts or "" + global_prompt = _append_character_references(raw_global_prompt, characters) char_slot_images = [list(character.get("images") or []) for character in characters] char_images = [img for slot_images in char_slot_images for img in slot_images] - - # --- @charN substitution --- - # OFF: swap @char tags for their VLM descriptions in the prompt text. - # Licon MSR: leave the tags raw — there the reference IMAGE drives identity, and the - # tags are used only to pick which character slots feed the slideshow. - if reference_mode == "Licon MSR (Prefix)": - ref_global, ref_local = global_prompt, local_prompts - else: - ref_global, ref_local = _preprocess_prompts_with_characters( - global_prompt, local_prompts, characters - ) - global_prompt, local_prompts = ref_global, ref_local + local_prompts = raw_local_prompts guide_data, derived_w, derived_h = _build_guide_data_from_timeline( tdata=tdata, @@ -2168,6 +1837,8 @@ class LTXDirector(io.ComfyNode): vae=vae, global_prompt=global_prompt, local_prompts=local_prompts, + raw_global_prompt=raw_global_prompt, + raw_local_prompts=raw_local_prompts, segment_lengths=segment_lengths, duration_frames=duration_frames, epsilon=epsilon,