From db476dacc1469b2f17ccc5735693916afcb6fac1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 13 Oct 2026 12:50:13 +0000 Subject: [PATCH] Automated PR - 2026-10-13 --- __init__.py | 30 +- conditioning_saver.py | 69 - ...CLoRA_Inpaint_HDR_Two_Stage_Distilled.json | 2 +- .../2.5/LTX-2.5_A2V_Two_Stage_Distilled.json | 2 +- ...RA_Ingredients_Single_Stage_Distilled.json | 2 +- ....5_ICLoRA_Inpaint_Two_Stage_Distilled.json | 2924 ++++++++++------- ...LTX-2.5_ICLoRA_Motion_Track_Distilled.json | 2 +- ...5_ICLoRA_Outpaint_Two_Stage_Distilled.json | 2623 +++++++++------ ...TX-2.5_ICLoRA_Union_Control_Distilled.json | 2 +- ...TX-2.5_T2V_I2V_Single_Stage_Distilled.json | 2 +- .../LTX-2.5_T2V_I2V_Two_Stage_Distilled.json | 2 +- ...2.5_V2V_ICLoRA_Single_Stage_Distilled.json | 1264 ++++--- .../LTX-2.5_V2V_TiledFusion_Native_4K_8K.json | 2356 +++++++------ .../2.5/LTX-2.5_V2V_TiledFusion_Upscale.json | 1466 +++++---- guide.py | 322 -- latent_norm.py | 259 -- latents.py | 117 - masks.py | 212 -- prompt_enhancer_nodes.py | 208 -- prompt_enhancer_utils.py | 258 -- requirements.txt | 2 +- stg.py | 160 - tricks/__init__.py | 54 - tricks/modules/ltx_model.py | 257 -- tricks/nodes/attn_bank_nodes.py | 90 - tricks/nodes/attn_override_node.py | 30 - tricks/nodes/latent_guide_node.py | 40 - tricks/nodes/ltx_feta_enhance_node.py | 36 - tricks/nodes/ltx_flowedit_nodes.py | 180 - tricks/nodes/ltx_inverse_model_pred_nodes.py | 91 - tricks/nodes/ltx_pag_node.py | 149 - tricks/nodes/modify_ltx_model_node.py | 20 - tricks/nodes/rectified_sampler_nodes.py | 275 -- tricks/nodes/rf_edit_sampler_nodes.py | 376 --- tricks/utils/attn_bank.py | 16 - tricks/utils/feta_enhance_utils.py | 55 - tricks/utils/latent_guide.py | 8 - tricks/utils/module_utils.py | 6 - tricks/utils/noise_utils.py | 23 - vae_patcher.py | 38 - 40 files changed, 6380 insertions(+), 7648 deletions(-) delete mode 100644 conditioning_saver.py delete mode 100644 masks.py delete mode 100644 prompt_enhancer_nodes.py delete mode 100644 prompt_enhancer_utils.py delete mode 100644 tricks/__init__.py delete mode 100644 tricks/modules/ltx_model.py delete mode 100644 tricks/nodes/attn_bank_nodes.py delete mode 100644 tricks/nodes/attn_override_node.py delete mode 100644 tricks/nodes/latent_guide_node.py delete mode 100644 tricks/nodes/ltx_feta_enhance_node.py delete mode 100644 tricks/nodes/ltx_flowedit_nodes.py delete mode 100644 tricks/nodes/ltx_inverse_model_pred_nodes.py delete mode 100644 tricks/nodes/ltx_pag_node.py delete mode 100644 tricks/nodes/modify_ltx_model_node.py delete mode 100644 tricks/nodes/rectified_sampler_nodes.py delete mode 100644 tricks/nodes/rf_edit_sampler_nodes.py delete mode 100644 tricks/utils/attn_bank.py delete mode 100644 tricks/utils/feta_enhance_utils.py delete mode 100644 tricks/utils/latent_guide.py delete mode 100644 tricks/utils/module_utils.py delete mode 100644 tricks/utils/noise_utils.py delete mode 100644 vae_patcher.py diff --git a/__init__.py b/__init__.py index 928ef28..aa447ee 100644 --- a/__init__.py +++ b/__init__.py @@ -1,6 +1,5 @@ from .audio_only import LTXVAudioOnlyEmptyVideoLatent, LTXVAudioOnlyModel from .conditioning_loader import LTXVLoadConditioning -from .conditioning_saver import LTXVSaveConditioning from .decoder_noise import DecoderNoise from .dynamic_conditioning import DynamicConditioning from .easy_samplers import ( @@ -12,7 +11,7 @@ from .easy_samplers import ( ) from .gemma_api_conditioning import GemmaAPITextEncode from .gemma_encoder import LTXVGemmaCLIPModelLoader, LTXVGemmaEnhancePrompt -from .guide import LTXVAddGuideAdvanced, LTXVAddGuideAdvancedAttention +from .guide import LTXVImgToVideoAdvanced from .guiders import GuiderParametersNode, MultimodalGuiderNode from .hdr_nodes import ( LTXVHDRDecodePostprocess, @@ -27,12 +26,7 @@ from .iclora import ( LTXICLoRALoaderModelOnly, LTXVSetAudioRefTokens, ) -from .latent_norm import ( - LTXVAdainLatent, - LTXVPerStepAdainPatcher, - LTXVPerStepStatNormPatcher, - LTXVStatNormLatent, -) +from .latent_norm import LTXVAdainLatent from .latents import ( LTXVImgToVideoConditionOnly, LTXVSelectLatents, @@ -44,13 +38,11 @@ from .low_vram_loaders import ( LowVRAMCheckpointLoader, LowVRAMLatentUpscaleModelLoader, ) -from .masks import LTXVPreprocessMasks from .nodes_registry import NODE_CLASS_MAPPINGS as RUNTIME_NODE_CLASS_MAPPINGS from .nodes_registry import ( NODE_DISPLAY_NAME_MAPPINGS as RUNTIME_NODE_DISPLAY_NAME_MAPPINGS, ) from .nodes_registry import NODES_DISPLAY_NAME_PREFIX, camel_case_to_spaces -from .prompt_enhancer_nodes import LTXVPromptEnhancer, LTXVPromptEnhancerLoader from .pyramid_blending import LTXVLaplacianPyramidBlend from .q8_nodes import LTXVQ8LoraModelLoader, LTXVQ8Patch from .sparse_tracks import LTXVDrawTracks, LTXVSparseTrackEditor @@ -64,30 +56,21 @@ from .tiled_fusion_sampler import LTXVTiledFusionSampler from .tiled_fusion_sizes import LTXVGetTilingSizes from .tiled_sampler import LTXVTiledSampler from .tiled_vae_decode import LTXVTiledVAEDecode -from .tricks import NODE_CLASS_MAPPINGS as TRICKS_NODE_CLASS_MAPPINGS -from .tricks import NODE_DISPLAY_NAME_MAPPINGS as TRICKS_NODE_DISPLAY_NAME_MAPPINGS from .utiltily_nodes import FloatToInt, ImageToCPU -from .vae_patcher import LTXVPatcherVAE from .vanish_nodes import LTXVDilateVideoMask, LTXVInpaintPreprocess # Static node mappings, required for ComfyUI-Manager mapping to work NODE_CLASS_MAPPINGS = { "Set VAE Decoder Noise": DecoderNoise, "LTXVLinearOverlapLatentTransition": LinearOverlapLatentTransition, - "LTXVAddGuideAdvanced": LTXVAddGuideAdvanced, - "LTXVAddGuideAdvancedAttention": LTXVAddGuideAdvancedAttention, + "LTXVImgToVideoAdvanced": LTXVImgToVideoAdvanced, "LTXVAdainLatent": LTXVAdainLatent, "LTXVImgToVideoConditionOnly": LTXVImgToVideoConditionOnly, - "LTXVPerStepAdainPatcher": LTXVPerStepAdainPatcher, "LTXVApplySTG": LTXVApplySTG, "LTXVBaseSampler": LTXVBaseSampler, "LTXVInContextSampler": LTXVInContextSampler, "LTXVExtendSampler": LTXVExtendSampler, "LTXVNormalizingSampler": LTXVNormalizingSampler, - "LTXVPreprocessMasks": LTXVPreprocessMasks, - "LTXVPatcherVAE": LTXVPatcherVAE, - "LTXVPromptEnhancer": LTXVPromptEnhancer, - "LTXVPromptEnhancerLoader": LTXVPromptEnhancerLoader, "LTXQ8Patch": LTXVQ8Patch, "LTXVQ8LoraModelLoader": LTXVQ8LoraModelLoader, "LTXVSelectLatents": LTXVSelectLatents, @@ -105,8 +88,6 @@ NODE_CLASS_MAPPINGS = { "LTXVMultiPromptProvider": MultiPromptProvider, "ImageToCPU": ImageToCPU, "LTXFloatToInt": FloatToInt, - "LTXVStatNormLatent": LTXVStatNormLatent, - "LTXVPerStepStatNormPatcher": LTXVPerStepStatNormPatcher, "LTXVGemmaCLIPModelLoader": LTXVGemmaCLIPModelLoader, "LTXVGemmaEnhancePrompt": LTXVGemmaEnhancePrompt, "GemmaAPITextEncode": GemmaAPITextEncode, @@ -119,7 +100,6 @@ NODE_CLASS_MAPPINGS = { "LTXICLoRALoaderModelOnly": LTXICLoRALoaderModelOnly, "LTXVSetAudioRefTokens": LTXVSetAudioRefTokens, "LTXVLoadConditioning": LTXVLoadConditioning, - "LTXVSaveConditioning": LTXVSaveConditioning, "LTXVDrawTracks": LTXVDrawTracks, "LTXVSparseTrackEditor": LTXVSparseTrackEditor, "LTXVDilateVideoMask": LTXVDilateVideoMask, @@ -141,10 +121,6 @@ NODE_DISPLAY_NAME_MAPPINGS = { for name in NODE_CLASS_MAPPINGS.keys() } -# Merge the node mappings from tricks into the main mappings -NODE_CLASS_MAPPINGS.update(TRICKS_NODE_CLASS_MAPPINGS) -NODE_DISPLAY_NAME_MAPPINGS.update(TRICKS_NODE_DISPLAY_NAME_MAPPINGS) - # Update with runtime mappings (these will override static mappings if there are any differences) NODE_CLASS_MAPPINGS.update(RUNTIME_NODE_CLASS_MAPPINGS) NODE_DISPLAY_NAME_MAPPINGS.update(RUNTIME_NODE_DISPLAY_NAME_MAPPINGS) diff --git a/conditioning_saver.py b/conditioning_saver.py deleted file mode 100644 index 9a7bb8a..0000000 --- a/conditioning_saver.py +++ /dev/null @@ -1,69 +0,0 @@ -from datetime import datetime -from pathlib import Path - -import comfy.utils -import folder_paths -import torch -from comfy_api.latest import io, ui - -from .nodes_registry import comfy_node - - -@comfy_node(name="LTXVSaveConditioning") -class LTXVSaveConditioning(io.ComfyNode): - @classmethod - def define_schema(cls) -> io.Schema: - return io.Schema( - node_id="LTXVSaveConditioning", - display_name="šŸ…›šŸ…£šŸ…§ LTXV Save Conditioning", - category="lightricks/LTXV", - inputs=[ - io.Conditioning.Input("conditioning"), - io.String.Input("filename", default="conditioning"), - io.Combo.Input("dtype", options=["bfloat16", "float16"]), - ], - is_output_node=True, - ) - - @classmethod - def execute(cls, conditioning: list, filename: str, dtype: str) -> io.NodeOutput: - if not conditioning or len(conditioning) == 0: - raise ValueError("Conditioning is empty") - - embeddings_folder = Path(folder_paths.get_folder_paths("embeddings")[0]) - embeddings_folder.mkdir(parents=True, exist_ok=True) - - sanitized_filename = "".join( - c for c in filename if c.isalnum() or c in ("_", "-", ".") - ) - if not sanitized_filename: - sanitized_filename = "conditioning" - - output_path = embeddings_folder / f"{sanitized_filename}.safetensors" - - target_dtype = torch.bfloat16 if dtype == "bfloat16" else torch.float16 - - tensors_to_save: dict[str, torch.Tensor] = {} - - for idx, (cond_tensor, cond_options) in enumerate(conditioning): - tensor_converted = cond_tensor.to(dtype=target_dtype).contiguous() - tensors_to_save[f"conditioning_data_{idx}"] = tensor_converted - - if "attention_mask" in cond_options: - mask = cond_options["attention_mask"].contiguous() - tensors_to_save[f"attention_mask_{idx}"] = mask - - metadata = { - "num_conditionings": str(len(conditioning)), - "dtype": dtype, - "created_at": str(datetime.now()), - } - - comfy.utils.save_torch_file( - tensors_to_save, str(output_path), metadata=metadata - ) - - file_size_mb = output_path.stat().st_size / (1024 * 1024) - return io.NodeOutput( - ui=ui.PreviewText(f"Saved: {output_path.name} ({file_size_mb:.2f} MB)") - ) diff --git a/example_workflows/2.5/HDR_workflows/LTX-2.5_ICLoRA_Inpaint_HDR_Two_Stage_Distilled.json b/example_workflows/2.5/HDR_workflows/LTX-2.5_ICLoRA_Inpaint_HDR_Two_Stage_Distilled.json index d523e3c..7cd367d 100644 --- a/example_workflows/2.5/HDR_workflows/LTX-2.5_ICLoRA_Inpaint_HDR_Two_Stage_Distilled.json +++ b/example_workflows/2.5/HDR_workflows/LTX-2.5_ICLoRA_Inpaint_HDR_Two_Stage_Distilled.json @@ -1570,7 +1570,7 @@ "ver": "0.3.56" }, "widgets_values": [ - "", + "example.png", "image" ], "widgets_values_named": { diff --git a/example_workflows/2.5/LTX-2.5_A2V_Two_Stage_Distilled.json b/example_workflows/2.5/LTX-2.5_A2V_Two_Stage_Distilled.json index 82c96bf..f265ce4 100644 --- a/example_workflows/2.5/LTX-2.5_A2V_Two_Stage_Distilled.json +++ b/example_workflows/2.5/LTX-2.5_A2V_Two_Stage_Distilled.json @@ -92,7 +92,7 @@ "Node name for S&R": "LoadImage" }, "widgets_values": [ - "", + "example.png", "image" ], "color": "#232", diff --git a/example_workflows/2.5/LTX-2.5_ICLoRA_Ingredients_Single_Stage_Distilled.json b/example_workflows/2.5/LTX-2.5_ICLoRA_Ingredients_Single_Stage_Distilled.json index a1ea535..e94e2d1 100644 --- a/example_workflows/2.5/LTX-2.5_ICLoRA_Ingredients_Single_Stage_Distilled.json +++ b/example_workflows/2.5/LTX-2.5_ICLoRA_Ingredients_Single_Stage_Distilled.json @@ -263,7 +263,7 @@ "ver": "0.3.56" }, "widgets_values": [ - "", + "example.png", "image" ], "color": "#232", diff --git a/example_workflows/2.5/LTX-2.5_ICLoRA_Inpaint_Two_Stage_Distilled.json b/example_workflows/2.5/LTX-2.5_ICLoRA_Inpaint_Two_Stage_Distilled.json index 4afee43..59f408a 100644 --- a/example_workflows/2.5/LTX-2.5_ICLoRA_Inpaint_Two_Stage_Distilled.json +++ b/example_workflows/2.5/LTX-2.5_ICLoRA_Inpaint_Two_Stage_Distilled.json @@ -1,8 +1,8 @@ { "id": "93d1aec9-c1fe-4b64-95b8-2a11b9f88b14", "revision": 0, - "last_node_id": 9019, - "last_link_id": 13765, + "last_node_id": 9023, + "last_link_id": 13938, "nodes": [ { "id": 5228, @@ -13,7 +13,7 @@ ], "size": [ 330, - 106 + 286.57142857142856 ], "flags": {}, "order": 21, @@ -40,8 +40,15 @@ "widgets_values": [ "output", "auto", + "auto", "auto" - ] + ], + "widgets_values_named": { + "filename_prefix": "output", + "format": "auto", + "format.codec": "auto", + "codec": "auto" + } }, { "id": 5433, @@ -64,6 +71,9 @@ "widgets_values": [ "## Decode + Blend (stage 1)\n\nDecodes the stage-1 latent with the native tiled VAE decode and\n**Laplacian-pyramid blends** it with the inpaint reference. The blend **dilation**\nis crucial - increase it if low frequencies bleed into the blend area.\n\nTiling is exposed on the node: `512 / 64 / 128 / 32` suits most hardware. Fewer,\nlarger tiles run faster but need more memory." ], + "widgets_values_named": { + "text": "## Decode + Blend (stage 1)\n\nDecodes the stage-1 latent with the native tiled VAE decode and\n**Laplacian-pyramid blends** it with the inpaint reference. The blend **dilation**\nis crucial - increase it if low frequencies bleed into the blend area.\n\nTiling is exposed on the node: `512 / 64 / 128 / 32` suits most hardware. Fewer,\nlarger tiles run faster but need more memory." + }, "color": "#432", "bgcolor": "#653" }, @@ -88,6 +98,9 @@ "widgets_values": [ "## Preprocess - Stage 2\n\nVAE-encodes the blended stage-1 result, re-conditions on the high-res start image, and re-attaches the frozen audio for the high-resolution refinement pass." ], + "widgets_values_named": { + "text": "## Preprocess - Stage 2\n\nVAE-encodes the blended stage-1 result, re-conditions on the high-res start image, and re-attaches the frozen audio for the high-resolution refinement pass." + }, "color": "#432", "bgcolor": "#653" }, @@ -112,6 +125,9 @@ "widgets_values": [ "## Decode + Blend (stage 2)\n\nDecodes the high-res latent (video and audio) with the native tiled VAE decode and\ndoes the **final Laplacian-pyramid blend** with the original video for a seamless\ntransition, then assembles the output video.\n\nTiling is exposed on the node: `512 / 64 / 128 / 32` suits most hardware. Fewer,\nlarger tiles run faster but need more memory." ], + "widgets_values_named": { + "text": "## Decode + Blend (stage 2)\n\nDecodes the high-res latent (video and audio) with the native tiled VAE decode and\ndoes the **final Laplacian-pyramid blend** with the original video for a seamless\ntransition, then assembles the output video.\n\nTiling is exposed on the node: `512 / 64 / 128 / 32` suits most hardware. Fewer,\nlarger tiles run faster but need more memory." + }, "color": "#432", "bgcolor": "#653" }, @@ -150,9 +166,13 @@ "ver": "0.3.56" }, "widgets_values": [ - "", + "example.png", "image" ], + "widgets_values_named": { + "image": "", + "upload": "image" + }, "color": "#232", "bgcolor": "#353" }, @@ -268,7 +288,10 @@ }, "widgets_values": [ false - ] + ], + "widgets_values_named": { + "bypass": false + } }, { "id": 9006, @@ -386,7 +409,14 @@ 64, 128, 32 - ] + ], + "widgets_values_named": { + "fps": 24, + "tile_size": 512, + "overlap": 64, + "temporal_size": 128, + "temporal_overlap": 32 + } }, { "id": 9005, @@ -482,7 +512,13 @@ 64, 128, 32 - ] + ], + "widgets_values_named": { + "tile_size": 512, + "overlap": 64, + "temporal_size": 128, + "temporal_overlap": 32 + } }, { "id": 9007, @@ -500,11 +536,14 @@ "mode": 0, "inputs": [], "outputs": [], - "title": "How to use \u2014 Inpainting", + "title": "How to use — Inpainting", "properties": {}, "widgets_values": [ - "# How to Use Inpainting\n\nThis workflow supports **inpainting** within a source video. You provide a mask video, telling the model where to generate, and optional prompt & image describing what should be there.\n\n## 1. No prompt = the simple case\n\n- without a prompt \u2192 the model fills the new area to match the surrounding scene.\n\n\n## 2. Prompts describe the scene, not the edit\n\nIt's not an edit tool. Write a regular T2V-style prompt describing the in-painting region.\n\n\n## 3. Green leftovers\n\nThe pipeline composites green under the mask before diffusion \u2014 sometimes traces leak through at mask edges. Try a bigger dilation, a different seed, or re-encode the mask losslessly or the blending parameter is very important.\n\n## Mask video\n\n**B&W mask video** (white = inpaint, black = keep) that matches the source video's frame count and aspect ratio.\n\n**Input nodes**: start image (optional first frame), the **original video**, the **mask video** and an optional prompt.\n\n**bypass_i2v**: when OFF, the start image is used as the first frame (image-to-video); turn it ON for a purely text/mask-driven generation with no image conditioning." + "# How to Use Inpainting\n\nThis workflow supports **inpainting** within a source video. You provide a mask video, telling the model where to generate, and optional prompt & image describing what should be there.\n\n## 1. No prompt = the simple case\n\n- without a prompt → the model fills the new area to match the surrounding scene.\n\n\n## 2. Prompts describe the scene, not the edit\n\nIt's not an edit tool. Write a regular T2V-style prompt describing the in-painting region.\n\n\n## 3. Green leftovers\n\nThe pipeline composites green under the mask before diffusion — sometimes traces leak through at mask edges. Try a bigger dilation, a different seed, or re-encode the mask losslessly or the blending parameter is very important.\n\n## Mask video\n\n**B&W mask video** (white = inpaint, black = keep) that matches the source video's frame count and aspect ratio.\n\n**Input nodes**: start image (optional first frame), the **original video**, the **mask video** and an optional prompt.\n\n**bypass_i2v**: when OFF, the start image is used as the first frame (image-to-video); turn it ON for a purely text/mask-driven generation with no image conditioning." ], + "widgets_values_named": { + "text": "# How to Use Inpainting\n\nThis workflow supports **inpainting** within a source video. You provide a mask video, telling the model where to generate, and optional prompt & image describing what should be there.\n\n## 1. No prompt = the simple case\n\n- without a prompt → the model fills the new area to match the surrounding scene.\n\n\n## 2. Prompts describe the scene, not the edit\n\nIt's not an edit tool. Write a regular T2V-style prompt describing the in-painting region.\n\n\n## 3. Green leftovers\n\nThe pipeline composites green under the mask before diffusion — sometimes traces leak through at mask edges. Try a bigger dilation, a different seed, or re-encode the mask losslessly or the blending parameter is very important.\n\n## Mask video\n\n**B&W mask video** (white = inpaint, black = keep) that matches the source video's frame count and aspect ratio.\n\n**Input nodes**: start image (optional first frame), the **original video**, the **mask video** and an optional prompt.\n\n**bypass_i2v**: when OFF, the start image is used as the first frame (image-to-video); turn it ON for a purely text/mask-driven generation with no image conditioning." + }, "color": "#432", "bgcolor": "#653" }, @@ -527,8 +566,11 @@ "title": "Model Links", "properties": {}, "widgets_values": [ - "## Model Links\n\n**LTX-2.5 Model Weights**\n\nMake sure to click the \"Agree and Access\" button the first time you download.\n\n- [ Distilled model - ltx-2.5-22b-distilled-transformer-bf16.safetensors ](https://huggingface.co/Lightricks/LTX-2.5/blob/main/diffusion_models/ltx-2.5-22b-distilled-transformer-bf16.safetensors)\n\n- [ IC-LoRA In/Outpainting - ltx-2.3-22b-ic-lora-in-outpainting-0.9.safetensors ](https://huggingface.co/Lightricks/LTX-2.3-22b-IC-LoRA-In-Outpainting/blob/main/ltx-2.3-22b-ic-lora-in-outpainting-0.9.safetensors)\n\n- [ Audio VAE - ltx-2.5-audio-vae-bf16.safetensors ](https://huggingface.co/Lightricks/LTX-2.5/blob/main/vae/ltx-2.5-audio-vae-bf16.safetensors)\n\n- Video VAE - one of these:\n - [ Diffusion decoder ltx-2.5-video-vae-bf16.safetensors ](https://huggingface.co/Lightricks/LTX-2.5/blob/main/vae/ltx-2.5-video-vae-bf16.safetensors) - Best quality\n - [ Convolutional decoder - ltx-2.5-video-vae-conv-bf16.safetensors ](https://huggingface.co/Lightricks/LTX-2.5/blob/main/vae/ltx-2.5-video-vae-conv-bf16.safetensors) - Lower memory & faster\n\n- [ Upscaler - ltx-2.5-latent-spatial-upscaler-x2-bf16-1.0.safetensors ](https://huggingface.co/Lightricks/LTX-2.5/blob/main/latent_upscale_models/ltx-2.5-latent-spatial-upscaler-x2-bf16-1.0.safetensors)\n\n\n\n**Text Encoder - finetuned for LTX-2.5**\n- [gemma4-12b-with-proj-ltx-2.5-bf16.safetensors](https://huggingface.co/Lightricks/LTX-2.5/blob/main/text_encoders/gemma4-12b-with-proj-ltx-2.5-bf16.safetensors)\n\n**Text Enhancer**\n- [Google Gemma 4 E2B IT](https://huggingface.co/Comfy-Org/gemma-4/blob/main/text_encoders/gemma4_e2b_it_bf16.safetensors)\n\n\n**Model Storage Location**\n\n```\n\ud83d\udcc2 ComfyUI/\n\u251c\u2500\u2500 \ud83d\udcc2 models/\n\u2502 \u251c\u2500\u2500 \ud83d\udcc2 text_encoders/\n\u2502 \u2502 \u251c\u2500\u2500 gemma4-12b-with-proj-ltx-2.5-bf16.safetensors\n\u2502 \u2502 \u2514\u2500\u2500 gemma4_e2b_it_bf16.safetensors\n\u2502 \u251c\u2500\u2500 \ud83d\udcc2 loras/\n\u2502 \u2502 \u2514\u2500\u2500 ltx-2.3-22b-ic-lora-in-outpainting-0.9.safetensors\n\u2502 \u251c\u2500\u2500 \ud83d\udcc2 diffusion_models/\n\u2502 \u2502 \u2514\u2500\u2500 ltx-2.5-22b-distilled-transformer-bf16.safetensors\n\u2502 \u251c\u2500\u2500 \ud83d\udcc2 vae/\n\u2502 \u2502 \u2514\u2500\u2500 ltx-2.5-audio-vae-bf16.safetensors\n\u2502 \u2502 \u2514\u2500\u2500 ltx-2.5-video-vae-conv-bf16.safetensors / ltx-2.5-video-vae-bf16.safetensors\n\u2502 \u251c\u2500\u2500 \ud83d\udcc2 latent_upscale_models/\n\u2502 \u2514\u2500\u2500 ltx-2.5-latent-spatial-upscaler-x2-bf16-1.0.safetensors\n```\n\n## Report Issues\nTo report any issues when running this workflow, [go to GitHub](https://github.com/Lightricks/ComfyUI-LTXVideo/issues)\n" + "## Model Links\n\n**LTX-2.5 Model Weights**\n\nMake sure to click the \"Agree and Access\" button the first time you download.\n\n- [ Distilled model - ltx-2.5-22b-distilled-transformer-bf16.safetensors ](https://huggingface.co/Lightricks/LTX-2.5/blob/main/diffusion_models/ltx-2.5-22b-distilled-transformer-bf16.safetensors)\n\n- [ IC-LoRA In/Outpainting - ltx-2.3-22b-ic-lora-in-outpainting-0.9.safetensors ](https://huggingface.co/Lightricks/LTX-2.3-22b-IC-LoRA-In-Outpainting/blob/main/ltx-2.3-22b-ic-lora-in-outpainting-0.9.safetensors)\n\n- [ Audio VAE - ltx-2.5-audio-vae-bf16.safetensors ](https://huggingface.co/Lightricks/LTX-2.5/blob/main/vae/ltx-2.5-audio-vae-bf16.safetensors)\n\n- Video VAE - one of these:\n - [ Diffusion decoder ltx-2.5-video-vae-bf16.safetensors ](https://huggingface.co/Lightricks/LTX-2.5/blob/main/vae/ltx-2.5-video-vae-bf16.safetensors) - Best quality\n - [ Convolutional decoder - ltx-2.5-video-vae-conv-bf16.safetensors ](https://huggingface.co/Lightricks/LTX-2.5/blob/main/vae/ltx-2.5-video-vae-conv-bf16.safetensors) - Lower memory & faster\n\n- [ Upscaler - ltx-2.5-latent-spatial-upscaler-x2-bf16-1.0.safetensors ](https://huggingface.co/Lightricks/LTX-2.5/blob/main/latent_upscale_models/ltx-2.5-latent-spatial-upscaler-x2-bf16-1.0.safetensors)\n\n\n\n**Text Encoder - finetuned for LTX-2.5**\n- [gemma4-12b-with-proj-ltx-2.5-bf16.safetensors](https://huggingface.co/Lightricks/LTX-2.5/blob/main/text_encoders/gemma4-12b-with-proj-ltx-2.5-bf16.safetensors)\n\n**Text Enhancer**\n- [Google Gemma 4 E2B IT](https://huggingface.co/Comfy-Org/gemma-4/blob/main/text_encoders/gemma4_e2b_it_bf16.safetensors)\n\n\n**Model Storage Location**\n\n```\nšŸ“‚ ComfyUI/\nā”œā”€ā”€ šŸ“‚ models/\n│ ā”œā”€ā”€ šŸ“‚ text_encoders/\n│ │ ā”œā”€ā”€ gemma4-12b-with-proj-ltx-2.5-bf16.safetensors\n│ │ └── gemma4_e2b_it_bf16.safetensors\n│ ā”œā”€ā”€ šŸ“‚ loras/\n│ │ └── ltx-2.3-22b-ic-lora-in-outpainting-0.9.safetensors\n│ ā”œā”€ā”€ šŸ“‚ diffusion_models/\n│ │ └── ltx-2.5-22b-distilled-transformer-bf16.safetensors\n│ ā”œā”€ā”€ šŸ“‚ vae/\n│ │ └── ltx-2.5-audio-vae-bf16.safetensors\n│ │ └── ltx-2.5-video-vae-conv-bf16.safetensors / ltx-2.5-video-vae-bf16.safetensors\n│ ā”œā”€ā”€ šŸ“‚ latent_upscale_models/\n│ └── ltx-2.5-latent-spatial-upscaler-x2-bf16-1.0.safetensors\n```\n\n## Report Issues\nTo report any issues when running this workflow, [go to GitHub](https://github.com/Lightricks/ComfyUI-LTXVideo/issues)\n" ], + "widgets_values_named": { + "text": "## Model Links\n\n**LTX-2.5 Model Weights**\n\nMake sure to click the \"Agree and Access\" button the first time you download.\n\n- [ Distilled model - ltx-2.5-22b-distilled-transformer-bf16.safetensors ](https://huggingface.co/Lightricks/LTX-2.5/blob/main/diffusion_models/ltx-2.5-22b-distilled-transformer-bf16.safetensors)\n\n- [ IC-LoRA In/Outpainting - ltx-2.3-22b-ic-lora-in-outpainting-0.9.safetensors ](https://huggingface.co/Lightricks/LTX-2.3-22b-IC-LoRA-In-Outpainting/blob/main/ltx-2.3-22b-ic-lora-in-outpainting-0.9.safetensors)\n\n- [ Audio VAE - ltx-2.5-audio-vae-bf16.safetensors ](https://huggingface.co/Lightricks/LTX-2.5/blob/main/vae/ltx-2.5-audio-vae-bf16.safetensors)\n\n- Video VAE - one of these:\n - [ Diffusion decoder ltx-2.5-video-vae-bf16.safetensors ](https://huggingface.co/Lightricks/LTX-2.5/blob/main/vae/ltx-2.5-video-vae-bf16.safetensors) - Best quality\n - [ Convolutional decoder - ltx-2.5-video-vae-conv-bf16.safetensors ](https://huggingface.co/Lightricks/LTX-2.5/blob/main/vae/ltx-2.5-video-vae-conv-bf16.safetensors) - Lower memory & faster\n\n- [ Upscaler - ltx-2.5-latent-spatial-upscaler-x2-bf16-1.0.safetensors ](https://huggingface.co/Lightricks/LTX-2.5/blob/main/latent_upscale_models/ltx-2.5-latent-spatial-upscaler-x2-bf16-1.0.safetensors)\n\n\n\n**Text Encoder - finetuned for LTX-2.5**\n- [gemma4-12b-with-proj-ltx-2.5-bf16.safetensors](https://huggingface.co/Lightricks/LTX-2.5/blob/main/text_encoders/gemma4-12b-with-proj-ltx-2.5-bf16.safetensors)\n\n**Text Enhancer**\n- [Google Gemma 4 E2B IT](https://huggingface.co/Comfy-Org/gemma-4/blob/main/text_encoders/gemma4_e2b_it_bf16.safetensors)\n\n\n**Model Storage Location**\n\n```\nšŸ“‚ ComfyUI/\nā”œā”€ā”€ šŸ“‚ models/\n│ ā”œā”€ā”€ šŸ“‚ text_encoders/\n│ │ ā”œā”€ā”€ gemma4-12b-with-proj-ltx-2.5-bf16.safetensors\n│ │ └── gemma4_e2b_it_bf16.safetensors\n│ ā”œā”€ā”€ šŸ“‚ loras/\n│ │ └── ltx-2.3-22b-ic-lora-in-outpainting-0.9.safetensors\n│ ā”œā”€ā”€ šŸ“‚ diffusion_models/\n│ │ └── ltx-2.5-22b-distilled-transformer-bf16.safetensors\n│ ā”œā”€ā”€ šŸ“‚ vae/\n│ │ └── ltx-2.5-audio-vae-bf16.safetensors\n│ │ └── ltx-2.5-video-vae-conv-bf16.safetensors / ltx-2.5-video-vae-bf16.safetensors\n│ ā”œā”€ā”€ šŸ“‚ latent_upscale_models/\n│ └── ltx-2.5-latent-spatial-upscaler-x2-bf16-1.0.safetensors\n```\n\n## Report Issues\nTo report any issues when running this workflow, [go to GitHub](https://github.com/Lightricks/ComfyUI-LTXVideo/issues)\n" + }, "color": "#432", "bgcolor": "#653" }, @@ -565,6 +607,7 @@ "Node name for S&R": "PreviewAny" }, "widgets_values": [], + "widgets_values_named": {}, "color": "#232", "bgcolor": "#353" }, @@ -589,6 +632,9 @@ "widgets_values": [ "## Input Parameters\n\nEncodes the prompt and prepares the two input videos: extracts frames, fps and\naudio, builds the mask (`ImageToMask`), resizes to each stage's resolution and\n**dilates** the mask - set **mask dilation radius** to suit the object.\n\n**Prompt enhancement** is optional. Turn on **Enhance positive prompt** to rewrite\nthe prompt into a fuller description; the workflow picks the image-aware enhancer\nwhen **use image input** is on and the text-only one otherwise. **enhancer_seed**\nmakes that rewrite reproducible. The negative prompt is used as written.\n\n**use image input** also derives `bypass_i2v`, so the optional start image is only\nconditioned on when you actually supply one.\n\n**Save memory (LTX API):** paste a key into **LTX API key** and the prompt is\nencoded and enhanced through the API instead of the local Gemma models. The\nworkflow switches over on its own whenever a key is present - there is nothing to\nun-bypass.\n\nNote: the output **dimensions and length** are derived later in **Preprocess**,\nfrom the masked frames, not here." ], + "widgets_values_named": { + "text": "## Input Parameters\n\nEncodes the prompt and prepares the two input videos: extracts frames, fps and\naudio, builds the mask (`ImageToMask`), resizes to each stage's resolution and\n**dilates** the mask - set **mask dilation radius** to suit the object.\n\n**Prompt enhancement** is optional. Turn on **Enhance positive prompt** to rewrite\nthe prompt into a fuller description; the workflow picks the image-aware enhancer\nwhen **use image input** is on and the text-only one otherwise. **enhancer_seed**\nmakes that rewrite reproducible. The negative prompt is used as written.\n\n**use image input** also derives `bypass_i2v`, so the optional start image is only\nconditioned on when you actually supply one.\n\n**Save memory (LTX API):** paste a key into **LTX API key** and the prompt is\nencoded and enhanced through the API instead of the local Gemma models. The\nworkflow switches over on its own whenever a key is present - there is nothing to\nun-bypass.\n\nNote: the output **dimensions and length** are derived later in **Preprocess**,\nfrom the masked frames, not here." + }, "color": "#432", "bgcolor": "#653" }, @@ -611,8 +657,11 @@ "title": "Preprocess", "properties": {}, "widgets_values": [ - "## Preprocess (stage 1)\n\nMasks the frames (`LTXVInpaintPreprocess`), builds the empty AV latent **at the reference video's size/length** (GetImageSize is here), conditions on the optional start image, injects the IC-LoRA guide, and adds **frozen audio** (VAEEncodeAudio \u2192 SetAudioRefTokens).\n\n*Frozen audio keeps the result consistent with the original sound; remove the audio stream if you don't want that guidance.*" + "## Preprocess (stage 1)\n\nMasks the frames (`LTXVInpaintPreprocess`), builds the empty AV latent **at the reference video's size/length** (GetImageSize is here), conditions on the optional start image, injects the IC-LoRA guide, and adds **frozen audio** (VAEEncodeAudio → SetAudioRefTokens).\n\n*Frozen audio keeps the result consistent with the original sound; remove the audio stream if you don't want that guidance.*" ], + "widgets_values_named": { + "text": "## Preprocess (stage 1)\n\nMasks the frames (`LTXVInpaintPreprocess`), builds the empty AV latent **at the reference video's size/length** (GetImageSize is here), conditions on the optional start image, injects the IC-LoRA guide, and adds **frozen audio** (VAEEncodeAudio → SetAudioRefTokens).\n\n*Frozen audio keeps the result consistent with the original sound; remove the audio stream if you don't want that guidance.*" + }, "color": "#432", "bgcolor": "#653" }, @@ -692,7 +741,10 @@ }, "widgets_values": [ false - ] + ], + "widgets_values_named": { + "bypass": false + } }, { "id": 5368, @@ -728,6 +780,10 @@ "", "image" ], + "widgets_values_named": { + "file": "", + "upload": "image" + }, "color": "#232", "bgcolor": "#353" }, @@ -765,6 +821,10 @@ "", "image" ], + "widgets_values_named": { + "file": "", + "upload": "image" + }, "color": "#232", "bgcolor": "#353" }, @@ -799,6 +859,9 @@ "widgets_values": [ "" ], + "widgets_values_named": { + "value": "" + }, "color": "#322", "bgcolor": "#533" }, @@ -1025,7 +1088,17 @@ true, "pc game, console game, video game, cartoon, childish, ugly", 457289196 - ] + ], + "widgets_values_named": { + "positive_prompt": "", + "ltx_api_key": "", + "ckpt_name": "ltx-2.5-22b-distilled-transformer-bf16.safetensors", + "mask_dilation_radius": 15, + "use image input": false, + "Enhance positive prompt": true, + "Negative prompt": "pc game, console game, video game, cartoon, childish, ugly", + "enhancer_seed": 457289196 + } }, { "id": 5404, @@ -1060,6 +1133,9 @@ "widgets_values": [ "" ], + "widgets_values_named": { + "value": "" + }, "color": "#232", "bgcolor": "#353" }, @@ -1399,7 +1475,16 @@ "gemma4_e2b_it_bf16.safetensors", "gemma4-12b-with-proj-ltx-2.5-bf16.safetensors", "ltx-2.3-22b-ic-lora-in-outpainting-0.9.safetensors" - ] + ], + "widgets_values_named": { + "audio_vae": "ltx-2.5-audio-vae-bf16.safetensors", + "video_vae": "ltx-2.5-video-vae-bf16.safetensors", + "ltx_2.5_model_checkpoint": "ltx-2.5-22b-distilled-transformer-bf16.safetensors", + "spacial_latent_upscaler_model": "ltx-2.5-latent-spatial-upscaler-x2-bf16-1.0.safetensors", + "gemma4_e2b_enhancer": "gemma4_e2b_it_bf16.safetensors", + "gemma4_12b_encoder": "gemma4-12b-with-proj-ltx-2.5-bf16.safetensors", + "ic_lora": "ltx-2.3-22b-ic-lora-in-outpainting-0.9.safetensors" + } } ], "links": [ @@ -1491,14 +1576,6 @@ 0, "MODEL" ], - [ - 16, - 9006, - 0, - 5228, - 0, - "VIDEO" - ], [ 18, 5410, @@ -1762,6 +1839,14 @@ 5408, 11, "STRING" + ], + [ + 16, + 9006, + 0, + 5228, + 0, + "VIDEO" ] ], "groups": [ @@ -1808,10 +1893,10 @@ "id": "43b40f55-109c-4d2f-9e38-e8073a3474eb", "version": 1, "state": { - "lastGroupId": 157, - "lastNodeId": 9019, - "lastLinkId": 13765, - "lastRerouteId": 9052 + "lastGroupId": 158, + "lastNodeId": 9023, + "lastLinkId": 13938, + "lastRerouteId": 9086 }, "revision": 0, "config": {}, @@ -1840,7 +1925,7 @@ "name": "audio_vae", "type": "COMBO", "linkIds": [ - 1 + 13766 ], "label": "audio_vae", "pos": [ @@ -1853,7 +1938,7 @@ "name": "video_vae", "type": "COMBO", "linkIds": [ - 2 + 13767 ], "label": "video_vae", "pos": [ @@ -1866,8 +1951,8 @@ "name": "ltx_2.5_model_checkpoint", "type": "COMBO", "linkIds": [ - 3, - 4 + 13768, + 13769 ], "label": "ltx_2.5_model_checkpoint", "pos": [ @@ -1880,7 +1965,7 @@ "name": "spacial_latent_upscaler_model", "type": "COMBO", "linkIds": [ - 5 + 13770 ], "label": "spacial_latent_upscaler_model", "pos": [ @@ -1906,7 +1991,7 @@ "name": "gemma4_12b_encoder", "type": "COMBO", "linkIds": [ - 7 + 13771 ], "label": "gemma4_12b_encoder", "pos": [ @@ -1919,7 +2004,7 @@ "name": "ic_lora", "type": "COMBO", "linkIds": [ - 8 + 13772 ], "label": "ic_lora", "pos": [ @@ -1934,7 +2019,7 @@ "name": "Audio VAE", "type": "VAE", "linkIds": [ - 10 + 13773 ], "localized_name": "Audio VAE", "label": "Audio VAE", @@ -1948,7 +2033,7 @@ "name": "VAE", "type": "VAE", "linkIds": [ - 11 + 13774 ], "localized_name": "VAE", "label": "VAE", @@ -1990,7 +2075,7 @@ "name": "text enhancer", "type": "CLIP", "linkIds": [ - 14 + 13775 ], "localized_name": "enhancer_clip", "label": "text enhancer", @@ -2004,7 +2089,7 @@ "name": "text_encoder", "type": "CLIP", "linkIds": [ - 15 + 13776 ], "localized_name": "encoder_clip", "label": "text_encoder", @@ -2018,7 +2103,7 @@ "name": "ltx_2.5_model_checkpoint_path", "type": "*", "linkIds": [ - 16 + 13777 ], "localized_name": "ckpt_name", "label": "ltx_2.5_model_checkpoint_path", @@ -2066,7 +2151,7 @@ "widget": { "name": "vae_name" }, - "link": 1 + "link": 13766 } ], "outputs": [ @@ -2075,7 +2160,7 @@ "name": "VAE", "type": "VAE", "links": [ - 10 + 13773 ] } ], @@ -2092,7 +2177,10 @@ }, "widgets_values": [ "ltx-2.5-audio-vae-bf16.safetensors" - ] + ], + "widgets_values_named": { + "vae_name": "ltx-2.5-audio-vae-bf16.safetensors" + } }, { "id": 5601, @@ -2116,7 +2204,7 @@ "widget": { "name": "vae_name" }, - "link": 2 + "link": 13767 } ], "outputs": [ @@ -2125,7 +2213,7 @@ "name": "VAE", "type": "VAE", "links": [ - 11 + 13774 ] } ], @@ -2142,7 +2230,10 @@ }, "widgets_values": [ "ltx-2.5-video-vae-bf16.safetensors" - ] + ], + "widgets_values_named": { + "vae_name": "ltx-2.5-video-vae-bf16.safetensors" + } }, { "id": 5602, @@ -2166,7 +2257,7 @@ "widget": { "name": "unet_name" }, - "link": 3 + "link": 13768 } ], "outputs": [ @@ -2192,7 +2283,11 @@ "widgets_values": [ "ltx-2.5-22b-distilled-transformer-bf16.safetensors", "default" - ] + ], + "widgets_values_named": { + "unet_name": "ltx-2.5-22b-distilled-transformer-bf16.safetensors", + "weight_dtype": "default" + } }, { "id": 5603, @@ -2212,7 +2307,7 @@ { "name": "", "type": "*", - "link": 4 + "link": 13769 } ], "outputs": [ @@ -2220,7 +2315,7 @@ "name": "", "type": "*", "links": [ - 16 + 13777 ] } ], @@ -2253,7 +2348,7 @@ "widget": { "name": "model_name" }, - "link": 5 + "link": 13770 } ], "outputs": [ @@ -2280,7 +2375,10 @@ }, "widgets_values": [ "ltx-2.5-latent-spatial-upscaler-x2-bf16-1.0.safetensors" - ] + ], + "widgets_values_named": { + "model_name": "ltx-2.5-latent-spatial-upscaler-x2-bf16-1.0.safetensors" + } }, { "id": 5605, @@ -2313,7 +2411,7 @@ "name": "CLIP", "type": "CLIP", "links": [ - 14 + 13775 ] } ], @@ -2332,7 +2430,12 @@ "gemma4_e2b_it_bf16.safetensors", "ltxv", "default" - ] + ], + "widgets_values_named": { + "clip_name": "gemma4_e2b_it_bf16.safetensors", + "type": "ltxv", + "device": "default" + } }, { "id": 5606, @@ -2356,7 +2459,7 @@ "widget": { "name": "clip_name" }, - "link": 7 + "link": 13771 } ], "outputs": [ @@ -2365,7 +2468,7 @@ "name": "CLIP", "type": "CLIP", "links": [ - 15 + 13776 ] } ], @@ -2384,7 +2487,12 @@ "gemma4-12b-with-proj-ltx-2.5-bf16.safetensors", "ltxv", "default" - ] + ], + "widgets_values_named": { + "clip_name": "gemma4-12b-with-proj-ltx-2.5-bf16.safetensors", + "type": "ltxv", + "device": "default" + } }, { "id": 5607, @@ -2414,7 +2522,7 @@ "widget": { "name": "lora_name" }, - "link": 8 + "link": 13772 } ], "outputs": [ @@ -2448,12 +2556,16 @@ "widgets_values": [ "ltx-2.3-22b-ic-lora-in-outpainting-0.9.safetensors", 1 - ] + ], + "widgets_values_named": { + "lora_name": "ltx-2.3-22b-ic-lora-in-outpainting-0.9.safetensors", + "strength_model": 1 + } } ], "groups": [ { - "id": 1, + "id": 4, "title": "Load Models - one file per output", "bounding": [ -860, @@ -2467,7 +2579,7 @@ ], "links": [ { - "id": 1, + "id": 13766, "origin_id": -10, "origin_slot": 0, "target_id": 5600, @@ -2475,7 +2587,7 @@ "type": "COMBO" }, { - "id": 2, + "id": 13767, "origin_id": -10, "origin_slot": 1, "target_id": 5601, @@ -2483,7 +2595,7 @@ "type": "COMBO" }, { - "id": 3, + "id": 13768, "origin_id": -10, "origin_slot": 2, "target_id": 5602, @@ -2491,7 +2603,7 @@ "type": "COMBO" }, { - "id": 4, + "id": 13769, "origin_id": -10, "origin_slot": 2, "target_id": 5603, @@ -2499,7 +2611,7 @@ "type": "COMBO" }, { - "id": 5, + "id": 13770, "origin_id": -10, "origin_slot": 3, "target_id": 5604, @@ -2515,7 +2627,7 @@ "type": "COMBO" }, { - "id": 7, + "id": 13771, "origin_id": -10, "origin_slot": 5, "target_id": 5606, @@ -2523,7 +2635,7 @@ "type": "COMBO" }, { - "id": 8, + "id": 13772, "origin_id": -10, "origin_slot": 6, "target_id": 5607, @@ -2539,7 +2651,7 @@ "type": "MODEL" }, { - "id": 10, + "id": 13773, "origin_id": 5600, "origin_slot": 0, "target_id": -20, @@ -2547,7 +2659,7 @@ "type": "VAE" }, { - "id": 11, + "id": 13774, "origin_id": 5601, "origin_slot": 0, "target_id": -20, @@ -2571,7 +2683,7 @@ "type": "LATENT_UPSCALE_MODEL" }, { - "id": 14, + "id": 13775, "origin_id": 5605, "origin_slot": 0, "target_id": -20, @@ -2579,7 +2691,7 @@ "type": "CLIP" }, { - "id": 15, + "id": 13776, "origin_id": 5606, "origin_slot": 0, "target_id": -20, @@ -2587,7 +2699,7 @@ "type": "CLIP" }, { - "id": 16, + "id": 13777, "origin_id": 5603, "origin_slot": 0, "target_id": -20, @@ -2609,10 +2721,10 @@ "id": "c9a49931-8154-4596-8a93-d47126ad589a", "version": 1, "state": { - "lastGroupId": 157, - "lastNodeId": 9019, - "lastLinkId": 13765, - "lastRerouteId": 9052 + "lastGroupId": 158, + "lastNodeId": 9023, + "lastLinkId": 13938, + "lastRerouteId": 9086 }, "revision": 0, "config": {}, @@ -2641,10 +2753,10 @@ "name": "positive_prompt", "type": "STRING", "linkIds": [ - 38, - 13764, - 13810, - 13816 + 13805, + 13808, + 13815, + 13821 ], "label": "Positive prompt", "pos": [ @@ -2658,7 +2770,7 @@ "type": "STRING", "linkIds": [ 13758, - 13823 + 13828 ], "label": "LTX API key", "pos": [ @@ -2671,8 +2783,8 @@ "name": "encoder_clip", "type": "CLIP", "linkIds": [ - 5, - 6 + 13782, + 13783 ], "label": "text encoder clip", "pos": [ @@ -2685,8 +2797,8 @@ "name": "start_image", "type": "IMAGE", "linkIds": [ - 7, - 41 + 13784, + 13806 ], "label": "start image (optional)", "pos": [ @@ -2699,7 +2811,7 @@ "name": "reference_video", "type": "VIDEO", "linkIds": [ - 9 + 13786 ], "label": "reference video", "pos": [ @@ -2712,7 +2824,7 @@ "name": "mask_video", "type": "VIDEO", "linkIds": [ - 11 + 13788 ], "label": "mask video", "pos": [ @@ -2726,7 +2838,7 @@ "type": "CLIP", "linkIds": [ 36, - 13809 + 13814 ], "label": "text enhancer clip", "pos": [ @@ -2740,7 +2852,7 @@ "type": "COMBO", "linkIds": [ 13759, - 13763 + 13807 ], "label": "ltx model ckpt path", "pos": [ @@ -2753,7 +2865,7 @@ "name": "mask_dilation_radius", "type": "INT", "linkIds": [ - 13765 + 13809 ], "label": "mask dilation radius", "pos": [ @@ -2766,7 +2878,7 @@ "name": "use image input", "type": "BOOLEAN", "linkIds": [ - 13805 + 13810 ], "label": "use image input", "pos": [ @@ -2779,8 +2891,8 @@ "name": "Enhance positive prompt", "type": "BOOLEAN", "linkIds": [ - 13817, - 13822 + 13822, + 13827 ], "label": "Enhance positive prompt", "pos": [ @@ -2793,8 +2905,8 @@ "name": "Negative prompt", "type": "STRING", "linkIds": [ - 13820, - 13821 + 13825, + 13826 ], "label": "Negative prompt", "pos": [ @@ -2807,8 +2919,8 @@ "name": "enhancer_seed", "type": "INT", "linkIds": [ - 13811, - 13812 + 13816, + 13817 ], "label": "enhancer_seed", "pos": [ @@ -2823,7 +2935,7 @@ "name": "negative_encoded", "type": "CONDITIONING", "linkIds": [ - 13831 + 13836 ], "label": "negative_encoded", "pos": [ @@ -2836,7 +2948,7 @@ "name": "positive_encoded", "type": "CONDITIONING", "linkIds": [ - 13830 + 13835 ], "label": "positive_encoded", "pos": [ @@ -2849,7 +2961,7 @@ "name": "resized start image", "type": "IMAGE", "linkIds": [ - 29 + 13799 ], "label": "resized start image", "pos": [ @@ -2862,7 +2974,7 @@ "name": "mask (stage 1)", "type": "MASK", "linkIds": [ - 30 + 13800 ], "label": "mask (stage 1)", "pos": [ @@ -2888,7 +3000,7 @@ "name": "reference frames (stage 2)", "type": "IMAGE", "linkIds": [ - 32 + 13801 ], "label": "reference frames (stage 2)", "pos": [ @@ -2901,7 +3013,7 @@ "name": "reference frames (stage 1)", "type": "IMAGE", "linkIds": [ - 33 + 13802 ], "label": "reference frames (stage 1)", "pos": [ @@ -2914,7 +3026,7 @@ "name": "reference audio", "type": "AUDIO", "linkIds": [ - 34 + 13936 ], "label": "reference audio", "pos": [ @@ -2927,7 +3039,7 @@ "name": "fps", "type": "FLOAT", "linkIds": [ - 35 + 13804 ], "pos": [ -1492.9895139548019, @@ -2939,7 +3051,7 @@ "name": "effective_positive_prompt", "type": "STRING", "linkIds": [ - 13819 + 13824 ], "label": "effective_positive_prompt", "pos": [ @@ -2952,7 +3064,7 @@ "name": "bypass_i2v", "type": "BOOLEAN", "linkIds": [ - 13807 + 13812 ], "label": "bypass_i2v", "pos": [ @@ -2975,7 +3087,7 @@ 160 ], "flags": {}, - "order": 3, + "order": 7, "mode": 0, "inputs": [ { @@ -2985,7 +3097,7 @@ "widget": { "name": "api_key" }, - "link": 3 + "link": 13780 }, { "localized_name": "prompt", @@ -2994,7 +3106,7 @@ "widget": { "name": "prompt" }, - "link": 13821 + "link": 13826 }, { "localized_name": "ckpt_name", @@ -3012,11 +3124,11 @@ "name": "conditioning", "type": "CONDITIONING", "links": [ - 13828 + 13833 ] } ], - "title": "\ud83c\udd5b\ud83c\udd63\ud83c\udd67 Gemma API Text Encode - NEGATIVE", + "title": "šŸ…›šŸ…£šŸ…§ Gemma API Text Encode - NEGATIVE", "properties": { "Node name for S&R": "GemmaAPITextEncode" }, @@ -3025,7 +3137,13 @@ "pc game, console game, video game, cartoon, childish, ugly", false, "ltx-2.3-22b-dev.safetensors" - ] + ], + "widgets_values_named": { + "api_key": "", + "prompt": "pc game, console game, video game, cartoon, childish, ugly", + "enhance_prompt": false, + "ckpt_name": "ltx-2.3-22b-dev.safetensors" + } }, { "id": 2483, @@ -3039,14 +3157,14 @@ 88 ], "flags": {}, - "order": 1, + "order": 5, "mode": 0, "inputs": [ { "localized_name": "clip", "name": "clip", "type": "CLIP", - "link": 5 + "link": 13782 }, { "localized_name": "text", @@ -3055,7 +3173,7 @@ "widget": { "name": "text" }, - "link": 13818 + "link": 13823 } ], "outputs": [ @@ -3065,7 +3183,7 @@ "type": "CONDITIONING", "slot_index": 0, "links": [ - 1 + 13778 ] } ], @@ -3078,6 +3196,9 @@ "widgets_values": [ "" ], + "widgets_values_named": { + "text": "" + }, "color": "#232", "bgcolor": "#353" }, @@ -3090,10 +3211,10 @@ ], "size": [ 451, - 412 + 456 ], "flags": {}, - "order": 19, + "order": 23, "mode": 0, "inputs": [ { @@ -3107,7 +3228,7 @@ "name": "image", "shape": 7, "type": "IMAGE", - "link": 41 + "link": 13806 }, { "localized_name": "video", @@ -3123,6 +3244,13 @@ "type": "AUDIO", "link": null }, + { + "localized_name": "system_prompt", + "name": "system_prompt", + "shape": 7, + "type": "STRING", + "link": null + }, { "localized_name": "prompt", "name": "prompt", @@ -3130,7 +3258,7 @@ "widget": { "name": "prompt" }, - "link": 38 + "link": 13805 }, { "localized_name": "seed", @@ -3139,7 +3267,7 @@ "widget": { "name": "sampling_mode.seed" }, - "link": 13812 + "link": 13817 } ], "outputs": [ @@ -3148,8 +3276,14 @@ "name": "generated_text", "type": "STRING", "links": [ - 13813 + 13818 ] + }, + { + "localized_name": "thinking", + "name": "thinking", + "type": "STRING", + "links": null } ], "title": "Positive prompt enhancer - Generate LTX2 Prompt", @@ -3168,8 +3302,24 @@ 0, 0, false, - true + true, + "auto" ], + "widgets_values_named": { + "prompt": "", + "max_length": 512, + "sampling_mode": "on", + "sampling_mode.temperature": 0.7, + "sampling_mode.top_k": 64, + "sampling_mode.top_p": 0.95, + "sampling_mode.min_p": 0.05, + "sampling_mode.repetition_penalty": 1.05, + "sampling_mode.seed": 0, + "sampling_mode.presence_penalty": 0, + "thinking": false, + "use_default_template": true, + "mtp": "auto" + }, "color": "#232", "bgcolor": "#353" }, @@ -3185,14 +3335,14 @@ 106 ], "flags": {}, - "order": 7, + "order": 11, "mode": 0, "inputs": [ { "localized_name": "input", "name": "input", "type": "IMAGE,MASK", - "link": 7 + "link": 13784 } ], "outputs": [ @@ -3201,7 +3351,7 @@ "name": "resized", "type": "IMAGE", "links": [ - 29 + 13799 ] } ], @@ -3214,7 +3364,12 @@ "scale longer dimension", 1024, "lanczos" - ] + ], + "widgets_values_named": { + "resize_type": "scale longer dimension", + "resize_type.longer_size": 1024, + "scale_method": "lanczos" + } }, { "id": 2612, @@ -3228,14 +3383,14 @@ 120.13641397900165 ], "flags": {}, - "order": 2, + "order": 6, "mode": 0, "inputs": [ { "localized_name": "clip", "name": "clip", "type": "CLIP", - "link": 6 + "link": 13783 }, { "localized_name": "text", @@ -3244,7 +3399,7 @@ "widget": { "name": "text" }, - "link": 13820 + "link": 13825 } ], "outputs": [ @@ -3254,7 +3409,7 @@ "type": "CONDITIONING", "slot_index": 0, "links": [ - 2 + 13779 ] } ], @@ -3267,6 +3422,9 @@ "widgets_values": [ "pc game, console game, video game, cartoon, childish, ugly" ], + "widgets_values_named": { + "text": "pc game, console game, video game, cartoon, childish, ugly" + }, "color": "#322", "bgcolor": "#533" }, @@ -3279,19 +3437,19 @@ ], "size": [ 451, - 98 + 106 ], "flags": { "collapsed": false }, - "order": 11, + "order": 15, "mode": 0, "inputs": [ { "localized_name": "video", "name": "video", "type": "VIDEO", - "link": 11 + "link": 13788 } ], "outputs": [ @@ -3300,7 +3458,7 @@ "name": "images", "type": "IMAGE", "links": [ - 12 + 13789 ] }, { @@ -3318,16 +3476,21 @@ { "localized_name": "bit_depth", "name": "bit_depth", - "type": "INT", + "type": "COMBO", "links": [] + }, + { + "localized_name": "color_space", + "name": "color_space", + "type": "COMBO", + "links": null } ], "properties": { "Node name for S&R": "GetVideoComponents", "cnr_id": "comfy-core", "ver": "0.3.75" - }, - "widgets_values": [] + } }, { "id": 5377, @@ -3341,14 +3504,14 @@ 58 ], "flags": {}, - "order": 12, + "order": 16, "mode": 0, "inputs": [ { "localized_name": "image", "name": "image", "type": "IMAGE", - "link": 12 + "link": 13789 } ], "outputs": [ @@ -3357,8 +3520,8 @@ "name": "MASK", "type": "MASK", "links": [ - 10, - 15 + 13787, + 13792 ] } ], @@ -3369,7 +3532,10 @@ }, "widgets_values": [ "red" - ] + ], + "widgets_values_named": { + "channel": "red" + } }, { "id": 5373, @@ -3385,21 +3551,20 @@ "flags": { "collapsed": false }, - "order": 10, + "order": 14, "mode": 0, "inputs": [ { "localized_name": "input", "name": "input", "type": "IMAGE,MASK", - "link": 10 + "link": 13787 }, { - "label": "match", - "localized_name": "resize_type.match", + "localized_name": "match", "name": "resize_type.match", "type": "IMAGE,MASK", - "link": 18 + "link": 13937 } ], "outputs": [ @@ -3408,7 +3573,7 @@ "name": "resized", "type": "MASK", "links": [ - 13 + 13790 ] } ], @@ -3421,7 +3586,12 @@ "match size", "center", "area" - ] + ], + "widgets_values_named": { + "resize_type": "match size", + "resize_type.crop": "center", + "scale_method": "area" + } }, { "id": 5381, @@ -3437,21 +3607,20 @@ "flags": { "collapsed": false }, - "order": 14, + "order": 18, "mode": 0, "inputs": [ { "localized_name": "input", "name": "input", "type": "IMAGE,MASK", - "link": 15 + "link": 13792 }, { - "label": "match", - "localized_name": "resize_type.match", + "localized_name": "match", "name": "resize_type.match", "type": "IMAGE,MASK", - "link": 19 + "link": 13938 } ], "outputs": [ @@ -3460,7 +3629,7 @@ "name": "resized", "type": "MASK", "links": [ - 16 + 13793 ] } ], @@ -3473,7 +3642,12 @@ "match size", "center", "area" - ] + ], + "widgets_values_named": { + "resize_type": "match size", + "resize_type.crop": "center", + "scale_method": "area" + } }, { "id": 5382, @@ -3487,7 +3661,7 @@ 104.75854965840699 ], "flags": {}, - "order": 15, + "order": 19, "mode": 0, "inputs": [ { @@ -3495,7 +3669,7 @@ "name": "mask", "shape": 7, "type": "MASK", - "link": 16 + "link": 13793 }, { "localized_name": "image_as_mask", @@ -3520,7 +3694,7 @@ "name": "mask", "type": "MASK", "links": [ - 30 + 13800 ] } ], @@ -3530,7 +3704,11 @@ "widgets_values": [ 32, 0 - ] + ], + "widgets_values_named": { + "spatial_radius": 32, + "temporal_radius": 0 + } }, { "id": 5384, @@ -3546,14 +3724,14 @@ "flags": { "collapsed": false }, - "order": 16, + "order": 20, "mode": 0, "inputs": [ { "localized_name": "input", "name": "input", "type": "IMAGE,MASK", - "link": 17 + "link": 13794 } ], "outputs": [ @@ -3562,8 +3740,8 @@ "name": "resized", "type": "IMAGE", "links": [ - 19, - 33 + 13802, + 13938 ] } ], @@ -3576,7 +3754,12 @@ "scale by multiplier", 0.5, "lanczos" - ] + ], + "widgets_values_named": { + "resize_type": "scale by multiplier", + "resize_type.multiplier": 0.5, + "scale_method": "lanczos" + } }, { "id": 5371, @@ -3592,14 +3775,14 @@ "flags": { "collapsed": false }, - "order": 8, + "order": 12, "mode": 0, "inputs": [ { "localized_name": "input", "name": "input", "type": "IMAGE,MASK", - "link": 21 + "link": 13797 } ], "outputs": [ @@ -3608,9 +3791,9 @@ "name": "resized", "type": "IMAGE", "links": [ - 17, - 18, - 32 + 13794, + 13801, + 13937 ] } ], @@ -3623,7 +3806,12 @@ "scale to multiple", 64, "lanczos" - ] + ], + "widgets_values_named": { + "resize_type": "scale to multiple", + "resize_type.multiple": 64, + "scale_method": "lanczos" + } }, { "id": 5399, @@ -3639,7 +3827,7 @@ "flags": { "collapsed": false }, - "order": 17, + "order": 21, "mode": 0, "inputs": [ { @@ -3655,7 +3843,7 @@ "name": "resized", "type": "IMAGE", "links": [ - 21 + 13797 ] } ], @@ -3668,7 +3856,12 @@ "scale shorter dimension", 1024, "lanczos" - ] + ], + "widgets_values_named": { + "resize_type": "scale shorter dimension", + "resize_type.shorter_size": 1024, + "scale_method": "lanczos" + } }, { "id": 5168, @@ -3679,17 +3872,17 @@ ], "size": [ 451, - 86 + 106 ], "flags": {}, - "order": 6, + "order": 10, "mode": 0, "inputs": [ { "localized_name": "video", "name": "video", "type": "VIDEO", - "link": 9 + "link": 13786 } ], "outputs": [ @@ -3698,7 +3891,8 @@ "name": "images", "type": "IMAGE", "links": [ - 20 + 20, + 13933 ] }, { @@ -3706,7 +3900,7 @@ "name": "audio", "type": "AUDIO", "links": [ - 34 + 13935 ] }, { @@ -3714,23 +3908,29 @@ "name": "fps", "type": "FLOAT", "links": [ - 8, - 35 + 13785, + 13804, + 13934 ] }, { "localized_name": "bit_depth", "name": "bit_depth", - "type": "INT", + "type": "COMBO", "links": [] + }, + { + "localized_name": "color_space", + "name": "color_space", + "type": "COMBO", + "links": null } ], "properties": { "Node name for S&R": "GetVideoComponents", "cnr_id": "comfy-core", "ver": "0.18.1" - }, - "widgets_values": [] + } }, { "id": 5379, @@ -3746,7 +3946,7 @@ "flags": { "collapsed": false }, - "order": 13, + "order": 17, "mode": 0, "inputs": [ { @@ -3754,7 +3954,7 @@ "name": "mask", "shape": 7, "type": "MASK", - "link": 13 + "link": 13790 }, { "localized_name": "image_as_mask", @@ -3770,7 +3970,7 @@ "widget": { "name": "spatial_radius" }, - "link": 14 + "link": 13791 } ], "outputs": [ @@ -3789,7 +3989,11 @@ "widgets_values": [ 5, 0 - ] + ], + "widgets_values_named": { + "spatial_radius": 5, + "temporal_radius": 0 + } }, { "id": 1241, @@ -3803,20 +4007,20 @@ 78 ], "flags": {}, - "order": 0, + "order": 4, "mode": 0, "inputs": [ { "localized_name": "positive", "name": "positive", "type": "CONDITIONING", - "link": 1 + "link": 13778 }, { "localized_name": "negative", "name": "negative", "type": "CONDITIONING", - "link": 2 + "link": 13779 }, { "localized_name": "frame_rate", @@ -3825,7 +4029,7 @@ "widget": { "name": "frame_rate" }, - "link": 8 + "link": 13785 } ], "outputs": [ @@ -3835,7 +4039,7 @@ "type": "CONDITIONING", "slot_index": 0, "links": [ - 13827 + 13832 ] }, { @@ -3844,7 +4048,7 @@ "type": "CONDITIONING", "slot_index": 1, "links": [ - 13829 + 13834 ] } ], @@ -3855,7 +4059,10 @@ }, "widgets_values": [ 24 - ] + ], + "widgets_values_named": { + "frame_rate": 24 + } }, { "id": 5021, @@ -3869,7 +4076,7 @@ 160 ], "flags": {}, - "order": 4, + "order": 8, "mode": 0, "inputs": [ { @@ -3879,7 +4086,7 @@ "widget": { "name": "api_key" }, - "link": 4 + "link": 13781 }, { "localized_name": "prompt", @@ -3888,7 +4095,7 @@ "widget": { "name": "prompt" }, - "link": 13764 + "link": 13808 }, { "localized_name": "enhance_prompt", @@ -3897,7 +4104,7 @@ "widget": { "name": "enhance_prompt" }, - "link": 13822 + "link": 13827 }, { "localized_name": "ckpt_name", @@ -3906,7 +4113,7 @@ "widget": { "name": "ckpt_name" }, - "link": 13763 + "link": 13807 } ], "outputs": [ @@ -3915,11 +4122,11 @@ "name": "conditioning", "type": "CONDITIONING", "links": [ - 13826 + 13831 ] } ], - "title": "\ud83c\udd5b\ud83c\udd63\ud83c\udd67 Gemma API Text Encode - POSITIVE", + "title": "šŸ…›šŸ…£šŸ…§ Gemma API Text Encode - POSITIVE", "properties": { "Node name for S&R": "GemmaAPITextEncode" }, @@ -3928,7 +4135,13 @@ "", "ltx-2.3-22b-dev.safetensors", "ltx-2.3-22b-dev.safetensors" - ] + ], + "widgets_values_named": { + "api_key": "", + "prompt": "", + "enhance_prompt": "ltx-2.3-22b-dev.safetensors", + "ckpt_name": "ltx-2.3-22b-dev.safetensors" + } }, { "id": 5022, @@ -3942,7 +4155,7 @@ 58 ], "flags": {}, - "order": 5, + "order": 9, "mode": 0, "inputs": [ { @@ -3961,8 +4174,8 @@ "name": "STRING", "type": "STRING", "links": [ - 3, - 4 + 13780, + 13781 ] } ], @@ -3974,7 +4187,10 @@ }, "widgets_values": [ "" - ] + ], + "widgets_values_named": { + "value": "" + } }, { "id": 9018, @@ -3988,7 +4204,7 @@ 58 ], "flags": {}, - "order": 26, + "order": 30, "mode": 0, "inputs": [ { @@ -3998,7 +4214,7 @@ "widget": { "name": "value" }, - "link": 13805 + "link": 13810 } ], "outputs": [ @@ -4007,8 +4223,8 @@ "name": "BOOLEAN", "type": "BOOLEAN", "links": [ - 13806, - 13808 + 13811, + 13813 ] } ], @@ -4017,7 +4233,10 @@ }, "widgets_values": [ false - ] + ], + "widgets_values_named": { + "value": false + } }, { "id": 9019, @@ -4031,14 +4250,14 @@ 26 ], "flags": {}, - "order": 27, + "order": 31, "mode": 0, "inputs": [ { "localized_name": "value", "name": "value", "type": "*", - "link": 13806 + "link": 13811 } ], "outputs": [ @@ -4047,15 +4266,14 @@ "name": "BOOLEAN", "type": "BOOLEAN", "links": [ - 13807 + 13812 ] } ], "title": "Not (use image > bypass_i2v)", "properties": { "Node name for S&R": "ComfyNotNode" - }, - "widgets_values": [] + } }, { "id": 5609, @@ -4069,20 +4287,22 @@ 78 ], "flags": {}, - "order": 21, + "order": 25, "mode": 0, "inputs": [ { "localized_name": "on_false", "name": "on_false", + "shape": 7, "type": "STRING", - "link": 13814 + "link": 13819 }, { "localized_name": "on_true", "name": "on_true", + "shape": 7, "type": "STRING", - "link": 13813 + "link": 13818 }, { "localized_name": "switch", @@ -4091,7 +4311,7 @@ "widget": { "name": "switch" }, - "link": 13808 + "link": 13813 } ], "outputs": [ @@ -4100,7 +4320,7 @@ "name": "output", "type": "STRING", "links": [ - 13815 + 13820 ] } ], @@ -4110,7 +4330,10 @@ }, "widgets_values": [ false - ] + ], + "widgets_values_named": { + "switch": false + } }, { "id": 5610, @@ -4124,20 +4347,22 @@ 78 ], "flags": {}, - "order": 22, + "order": 26, "mode": 0, "inputs": [ { "localized_name": "on_false", "name": "on_false", + "shape": 7, "type": "STRING", - "link": 13816 + "link": 13821 }, { "localized_name": "on_true", "name": "on_true", + "shape": 7, "type": "STRING", - "link": 13815 + "link": 13820 }, { "localized_name": "switch", @@ -4146,7 +4371,7 @@ "widget": { "name": "switch" }, - "link": 13817 + "link": 13822 } ], "outputs": [ @@ -4155,8 +4380,8 @@ "name": "output", "type": "STRING", "links": [ - 13818, - 13819 + 13823, + 13824 ] } ], @@ -4166,7 +4391,10 @@ }, "widgets_values": [ false - ] + ], + "widgets_values_named": { + "switch": false + } }, { "id": 5612, @@ -4180,20 +4408,22 @@ 78 ], "flags": {}, - "order": 24, + "order": 28, "mode": 0, "inputs": [ { "localized_name": "on_false", "name": "on_false", + "shape": 7, "type": "CONDITIONING", - "link": 13827 + "link": 13832 }, { "localized_name": "on_true", "name": "on_true", + "shape": 7, "type": "CONDITIONING", - "link": 13826 + "link": 13831 }, { "localized_name": "switch", @@ -4202,7 +4432,7 @@ "widget": { "name": "switch" }, - "link": 13824 + "link": 13829 } ], "outputs": [ @@ -4211,7 +4441,7 @@ "name": "output", "type": "CONDITIONING", "links": [ - 13830 + 13835 ] } ], @@ -4221,7 +4451,10 @@ }, "widgets_values": [ false - ] + ], + "widgets_values_named": { + "switch": false + } }, { "id": 5613, @@ -4235,20 +4468,22 @@ 78 ], "flags": {}, - "order": 25, + "order": 29, "mode": 0, "inputs": [ { "localized_name": "on_false", "name": "on_false", + "shape": 7, "type": "CONDITIONING", - "link": 13829 + "link": 13834 }, { "localized_name": "on_true", "name": "on_true", + "shape": 7, "type": "CONDITIONING", - "link": 13828 + "link": 13833 }, { "localized_name": "switch", @@ -4257,7 +4492,7 @@ "widget": { "name": "switch" }, - "link": 13825 + "link": 13830 } ], "outputs": [ @@ -4266,7 +4501,7 @@ "name": "output", "type": "CONDITIONING", "links": [ - 13831 + 13836 ] } ], @@ -4276,7 +4511,10 @@ }, "widgets_values": [ false - ] + ], + "widgets_values_named": { + "switch": false + } }, { "id": 5608, @@ -4287,17 +4525,17 @@ ], "size": [ 451, - 412 + 456 ], "flags": {}, - "order": 20, + "order": 24, "mode": 0, "inputs": [ { "localized_name": "clip", "name": "clip", "type": "CLIP", - "link": 13809 + "link": 13814 }, { "localized_name": "image", @@ -4320,6 +4558,13 @@ "type": "AUDIO", "link": null }, + { + "localized_name": "system_prompt", + "name": "system_prompt", + "shape": 7, + "type": "STRING", + "link": null + }, { "localized_name": "prompt", "name": "prompt", @@ -4327,7 +4572,7 @@ "widget": { "name": "prompt" }, - "link": 13810 + "link": 13815 }, { "localized_name": "seed", @@ -4336,7 +4581,7 @@ "widget": { "name": "sampling_mode.seed" }, - "link": 13811 + "link": 13816 } ], "outputs": [ @@ -4345,8 +4590,14 @@ "name": "generated_text", "type": "STRING", "links": [ - 13814 + 13819 ] + }, + { + "localized_name": "thinking", + "name": "thinking", + "type": "STRING", + "links": null } ], "title": "Positive prompt (t2v) enhancer - TextGenerateLTX2Prompt", @@ -4365,8 +4616,24 @@ 0, 0, false, - true + true, + "auto" ], + "widgets_values_named": { + "prompt": "", + "max_length": 600, + "sampling_mode": "on", + "sampling_mode.temperature": 0.01, + "sampling_mode.top_k": 0, + "sampling_mode.top_p": 1, + "sampling_mode.min_p": 0, + "sampling_mode.repetition_penalty": 1.15, + "sampling_mode.seed": 0, + "sampling_mode.presence_penalty": 0, + "thinking": false, + "use_default_template": true, + "mtp": "auto" + }, "color": "#232", "bgcolor": "#353" }, @@ -4382,7 +4649,7 @@ 166 ], "flags": {}, - "order": 23, + "order": 27, "mode": 0, "inputs": [ { @@ -4392,7 +4659,7 @@ "widget": { "name": "string" }, - "link": 13823 + "link": 13828 } ], "outputs": [ @@ -4401,8 +4668,8 @@ "name": "contains", "type": "BOOLEAN", "links": [ - 13824, - 13825 + 13829, + 13830 ] } ], @@ -4414,7 +4681,12 @@ "", "ltxv_", true - ] + ], + "widgets_values_named": { + "string": "", + "substring": "ltxv_", + "case_sensitive": true + } }, { "id": 5400, @@ -4428,7 +4700,7 @@ 82 ], "flags": {}, - "order": 18, + "order": 22, "mode": 0, "inputs": [ { @@ -4438,7 +4710,7 @@ "widget": { "name": "value" }, - "link": 13765 + "link": 13809 } ], "outputs": [ @@ -4448,7 +4720,7 @@ "type": "INT", "links": [ 22, - 23 + 13798 ] } ], @@ -4461,7 +4733,11 @@ "widgets_values": [ 15, "fixed" - ] + ], + "widgets_values_named": { + "value": 15, + "fixed": "fixed" + } }, { "id": 5372, @@ -4477,19 +4753,18 @@ "flags": { "collapsed": false }, - "order": 9, + "order": 13, "mode": 0, "inputs": [ { "label": "a", - "localized_name": "values.a", + "localized_name": "a", "name": "values.a", "type": "FLOAT,INT,BOOLEAN", - "link": 23 + "link": 13798 }, { - "label": "b", - "localized_name": "values.b", + "localized_name": "b", "name": "values.b", "shape": 7, "type": "FLOAT,INT,BOOLEAN", @@ -4508,7 +4783,7 @@ "name": "INT", "type": "INT", "links": [ - 14 + 13791 ] }, { @@ -4525,12 +4800,237 @@ }, "widgets_values": [ "2*a" - ] + ], + "widgets_values_named": { + "expression": "2*a" + } + }, + { + "id": 9020, + "type": "GetImageSize", + "pos": [ + -3535.669169493311, + 6833.186221930729 + ], + "size": [ + 210, + 136 + ], + "flags": {}, + "order": 0, + "mode": 0, + "inputs": [ + { + "localized_name": "image", + "name": "image", + "type": "IMAGE", + "link": 13933 + } + ], + "outputs": [ + { + "localized_name": "width", + "name": "width", + "type": "INT", + "links": [] + }, + { + "localized_name": "height", + "name": "height", + "type": "INT", + "links": [] + }, + { + "localized_name": "batch_size", + "name": "batch_size", + "type": "INT", + "links": [ + 13930 + ] + } + ], + "properties": { + "Node name for S&R": "GetImageSize", + "cnr_id": "comfy-core", + "ver": "0.16.0" + } + }, + { + "id": 9021, + "type": "ComfyMathExpression", + "pos": [ + -3267.02572313034, + 6828.905225412277 + ], + "size": [ + 270, + 148 + ], + "flags": {}, + "order": 1, + "mode": 0, + "inputs": [ + { + "label": "a", + "localized_name": "a", + "name": "values.a", + "type": "FLOAT,INT,BOOLEAN", + "link": 13930 + }, + { + "localized_name": "b", + "name": "values.b", + "shape": 7, + "type": "FLOAT,INT,BOOLEAN", + "link": 13934 + }, + { + "localized_name": "c", + "name": "values.c", + "shape": 7, + "type": "FLOAT,INT,BOOLEAN", + "link": null + } + ], + "outputs": [ + { + "localized_name": "FLOAT", + "name": "FLOAT", + "type": "FLOAT", + "links": [ + 13931 + ] + }, + { + "localized_name": "INT", + "name": "INT", + "type": "INT", + "links": [] + }, + { + "localized_name": "BOOL", + "name": "BOOL", + "type": "BOOLEAN", + "links": [] + } + ], + "title": "audio duration = frames / fps", + "properties": { + "Node name for S&R": "ComfyMathExpression", + "cnr_id": "comfy-core" + }, + "widgets_values": [ + "a / b" + ], + "widgets_values_named": { + "expression": "a / b" + } + }, + { + "id": 9022, + "type": "EmptyAudio", + "pos": [ + -2964.6955953513198, + 6838.3039568380755 + ], + "size": [ + 270, + 110 + ], + "flags": {}, + "order": 2, + "mode": 0, + "inputs": [ + { + "localized_name": "duration", + "name": "duration", + "type": "FLOAT", + "widget": { + "name": "duration" + }, + "link": 13931 + } + ], + "outputs": [ + { + "localized_name": "AUDIO", + "name": "AUDIO", + "type": "AUDIO", + "links": [ + 13932 + ] + } + ], + "title": "silence fallback", + "properties": { + "Node name for S&R": "EmptyAudio", + "cnr_id": "comfy-core" + }, + "widgets_values": [ + 60, + 44100, + 2 + ], + "widgets_values_named": { + "duration": 60, + "sample_rate": 44100, + "channels": 2 + } + }, + { + "id": 9023, + "type": "AudioMerge", + "pos": [ + -2641.5231148299376, + 6840.906602078137 + ], + "size": [ + 270, + 110 + ], + "flags": {}, + "order": 31, + "mode": 0, + "inputs": [ + { + "localized_name": "audio1", + "name": "audio1", + "type": "AUDIO", + "link": 13935 + }, + { + "localized_name": "audio2", + "name": "audio2", + "type": "AUDIO", + "link": 13932 + } + ], + "outputs": [ + { + "localized_name": "AUDIO", + "name": "AUDIO", + "type": "AUDIO", + "links": [ + 13936 + ] + } + ], + "title": "use source audio, else silence", + "properties": { + "Node name for S&R": "AudioMerge", + "cnr_id": "comfy-core" + }, + "widgets_values": [ + "add" + ], + "widgets_values_named": { + "merge_method": "add" + } } ], "groups": [ { - "id": 1, + "id": 5, "title": "Start image - resized once, reused by both stages", "bounding": [ -3926, @@ -4542,7 +5042,7 @@ "flags": {} }, { - "id": 2, + "id": 6, "title": "Prompt enhancement - only runs when enhance_positive_prompt is on", "bounding": [ -3926, @@ -4554,7 +5054,7 @@ "flags": {} }, { - "id": 3, + "id": 7, "title": "Text encoding", "bounding": [ -3926, @@ -4566,7 +5066,7 @@ "flags": {} }, { - "id": 4, + "id": 8, "title": "Prompt encode via the LTX API - used whenever an API key is present", "bounding": [ -3926, @@ -4578,7 +5078,7 @@ "flags": {} }, { - "id": 5, + "id": 9, "title": "Reference and mask videos", "bounding": [ -3926, @@ -4588,11 +5088,23 @@ ], "color": "#3f789e", "flags": {} + }, + { + "id": 158, + "title": "Add silent sound for input video without sound", + "bounding": [ + -3575.198277876252, + 6728.946207339213, + 1248.2054775184756, + 290.2950671438002 + ], + "color": "#3f789e", + "flags": {} } ], "links": [ { - "id": 1, + "id": 13778, "origin_id": 2483, "origin_slot": 0, "target_id": 1241, @@ -4600,7 +5112,7 @@ "type": "CONDITIONING" }, { - "id": 2, + "id": 13779, "origin_id": 2612, "origin_slot": 0, "target_id": 1241, @@ -4608,7 +5120,7 @@ "type": "CONDITIONING" }, { - "id": 3, + "id": 13780, "origin_id": 5022, "origin_slot": 0, "target_id": 5020, @@ -4616,7 +5128,7 @@ "type": "STRING" }, { - "id": 4, + "id": 13781, "origin_id": 5022, "origin_slot": 0, "target_id": 5021, @@ -4624,7 +5136,7 @@ "type": "STRING" }, { - "id": 5, + "id": 13782, "origin_id": -10, "origin_slot": 2, "target_id": 2483, @@ -4632,7 +5144,7 @@ "type": "CLIP" }, { - "id": 6, + "id": 13783, "origin_id": -10, "origin_slot": 2, "target_id": 2612, @@ -4641,15 +5153,7 @@ "parentId": 502 }, { - "id": 7, - "origin_id": -10, - "origin_slot": 3, - "target_id": 5188, - "target_slot": 0, - "type": "IMAGE" - }, - { - "id": 8, + "id": 13785, "origin_id": 5168, "origin_slot": 2, "target_id": 1241, @@ -4657,7 +5161,7 @@ "type": "FLOAT" }, { - "id": 9, + "id": 13786, "origin_id": -10, "origin_slot": 4, "target_id": 5168, @@ -4665,15 +5169,7 @@ "type": "VIDEO" }, { - "id": 10, - "origin_id": 5377, - "origin_slot": 0, - "target_id": 5373, - "target_slot": 0, - "type": "MASK" - }, - { - "id": 11, + "id": 13788, "origin_id": -10, "origin_slot": 5, "target_id": 5376, @@ -4682,7 +5178,7 @@ "parentId": 504 }, { - "id": 12, + "id": 13789, "origin_id": 5376, "origin_slot": 0, "target_id": 5377, @@ -4690,7 +5186,7 @@ "type": "IMAGE" }, { - "id": 13, + "id": 13790, "origin_id": 5373, "origin_slot": 0, "target_id": 5379, @@ -4698,7 +5194,7 @@ "type": "MASK" }, { - "id": 14, + "id": 13791, "origin_id": 5372, "origin_slot": 1, "target_id": 5379, @@ -4707,61 +5203,13 @@ "parentId": 506 }, { - "id": 15, - "origin_id": 5377, - "origin_slot": 0, - "target_id": 5381, - "target_slot": 0, - "type": "MASK" - }, - { - "id": 16, + "id": 13793, "origin_id": 5381, "origin_slot": 0, "target_id": 5382, "target_slot": 0, "type": "MASK" }, - { - "id": 17, - "origin_id": 5371, - "origin_slot": 0, - "target_id": 5384, - "target_slot": 0, - "type": "IMAGE" - }, - { - "id": 18, - "origin_id": 5371, - "origin_slot": 0, - "target_id": 5373, - "target_slot": 1, - "type": "IMAGE" - }, - { - "id": 19, - "origin_id": 5384, - "origin_slot": 0, - "target_id": 5381, - "target_slot": 1, - "type": "IMAGE" - }, - { - "id": 20, - "origin_id": 5168, - "origin_slot": 0, - "target_id": 5399, - "target_slot": 0, - "type": "IMAGE" - }, - { - "id": 21, - "origin_id": 5399, - "origin_slot": 0, - "target_id": 5371, - "target_slot": 0, - "type": "IMAGE" - }, { "id": 22, "origin_id": 5400, @@ -4772,15 +5220,7 @@ "parentId": 510 }, { - "id": 23, - "origin_id": 5400, - "origin_slot": 0, - "target_id": 5372, - "target_slot": 0, - "type": "INT" - }, - { - "id": 29, + "id": 13799, "origin_id": 5188, "origin_slot": 0, "target_id": -20, @@ -4788,7 +5228,7 @@ "type": "IMAGE" }, { - "id": 30, + "id": 13800, "origin_id": 5382, "origin_slot": 0, "target_id": -20, @@ -4804,7 +5244,7 @@ "type": "MASK" }, { - "id": 32, + "id": 13801, "origin_id": 5371, "origin_slot": 0, "target_id": -20, @@ -4812,7 +5252,7 @@ "type": "IMAGE" }, { - "id": 33, + "id": 13802, "origin_id": 5384, "origin_slot": 0, "target_id": -20, @@ -4820,21 +5260,235 @@ "type": "IMAGE" }, { - "id": 34, - "origin_id": 5168, - "origin_slot": 1, - "target_id": -20, - "target_slot": 7, - "type": "AUDIO" - }, - { - "id": 35, + "id": 13804, "origin_id": 5168, "origin_slot": 2, "target_id": -20, "target_slot": 8, "type": "FLOAT" }, + { + "id": 13758, + "origin_id": -10, + "origin_slot": 1, + "target_id": 5022, + "target_slot": 0, + "type": "STRING" + }, + { + "id": 13807, + "origin_id": -10, + "origin_slot": 7, + "target_id": 5021, + "target_slot": 3, + "type": "COMBO" + }, + { + "id": 13808, + "origin_id": -10, + "origin_slot": 0, + "target_id": 5021, + "target_slot": 1, + "type": "STRING" + }, + { + "id": 13809, + "origin_id": -10, + "origin_slot": 8, + "target_id": 5400, + "target_slot": 0, + "type": "INT" + }, + { + "id": 13810, + "origin_id": -10, + "origin_slot": 9, + "target_id": 9018, + "target_slot": 0, + "type": "BOOLEAN" + }, + { + "id": 13811, + "origin_id": 9018, + "origin_slot": 0, + "target_id": 9019, + "target_slot": 0, + "type": "BOOLEAN" + }, + { + "id": 13812, + "origin_id": 9019, + "origin_slot": 0, + "target_id": -20, + "target_slot": 10, + "type": "BOOLEAN" + }, + { + "id": 13813, + "origin_id": 9018, + "origin_slot": 0, + "target_id": 5609, + "target_slot": 2, + "type": "BOOLEAN" + }, + { + "id": 13818, + "origin_id": 5406, + "origin_slot": 0, + "target_id": 5609, + "target_slot": 1, + "type": "STRING", + "parentId": 516 + }, + { + "id": 13819, + "origin_id": 5608, + "origin_slot": 0, + "target_id": 5609, + "target_slot": 0, + "type": "STRING" + }, + { + "id": 13820, + "origin_id": 5609, + "origin_slot": 0, + "target_id": 5610, + "target_slot": 1, + "type": "STRING" + }, + { + "id": 13821, + "origin_id": -10, + "origin_slot": 0, + "target_id": 5610, + "target_slot": 0, + "type": "STRING", + "parentId": 518 + }, + { + "id": 13822, + "origin_id": -10, + "origin_slot": 10, + "target_id": 5610, + "target_slot": 2, + "type": "BOOLEAN", + "parentId": 520 + }, + { + "id": 13823, + "origin_id": 5610, + "origin_slot": 0, + "target_id": 2483, + "target_slot": 1, + "type": "STRING" + }, + { + "id": 13824, + "origin_id": 5610, + "origin_slot": 0, + "target_id": -20, + "target_slot": 9, + "type": "STRING" + }, + { + "id": 13825, + "origin_id": -10, + "origin_slot": 11, + "target_id": 2612, + "target_slot": 1, + "type": "STRING", + "parentId": 522 + }, + { + "id": 13826, + "origin_id": -10, + "origin_slot": 11, + "target_id": 5020, + "target_slot": 1, + "type": "STRING" + }, + { + "id": 13827, + "origin_id": -10, + "origin_slot": 10, + "target_id": 5021, + "target_slot": 2, + "type": "BOOLEAN" + }, + { + "id": 13828, + "origin_id": -10, + "origin_slot": 1, + "target_id": 5611, + "target_slot": 0, + "type": "STRING", + "parentId": 524 + }, + { + "id": 13829, + "origin_id": 5611, + "origin_slot": 0, + "target_id": 5612, + "target_slot": 2, + "type": "BOOLEAN" + }, + { + "id": 13830, + "origin_id": 5611, + "origin_slot": 0, + "target_id": 5613, + "target_slot": 2, + "type": "BOOLEAN", + "parentId": 526 + }, + { + "id": 13831, + "origin_id": 5021, + "origin_slot": 0, + "target_id": 5612, + "target_slot": 1, + "type": "CONDITIONING" + }, + { + "id": 13832, + "origin_id": 1241, + "origin_slot": 0, + "target_id": 5612, + "target_slot": 0, + "type": "CONDITIONING" + }, + { + "id": 13833, + "origin_id": 5020, + "origin_slot": 0, + "target_id": 5613, + "target_slot": 1, + "type": "CONDITIONING" + }, + { + "id": 13834, + "origin_id": 1241, + "origin_slot": 1, + "target_id": 5613, + "target_slot": 0, + "type": "CONDITIONING" + }, + { + "id": 13835, + "origin_id": 5612, + "origin_slot": 0, + "target_id": -20, + "target_slot": 1, + "type": "CONDITIONING" + }, + { + "id": 13836, + "origin_id": 5613, + "origin_slot": 0, + "target_id": -20, + "target_slot": 0, + "type": "CONDITIONING" + }, { "id": 36, "origin_id": -10, @@ -4845,15 +5499,7 @@ "parentId": 512 }, { - "id": 38, - "origin_id": -10, - "origin_slot": 0, - "target_id": 5406, - "target_slot": 4, - "type": "STRING" - }, - { - "id": 41, + "id": 13806, "origin_id": -10, "origin_slot": 3, "target_id": 5406, @@ -4861,12 +5507,68 @@ "type": "IMAGE" }, { - "id": 13758, + "id": 13784, "origin_id": -10, - "origin_slot": 1, - "target_id": 5022, + "origin_slot": 3, + "target_id": 5188, "target_slot": 0, - "type": "STRING" + "type": "IMAGE" + }, + { + "id": 13787, + "origin_id": 5377, + "origin_slot": 0, + "target_id": 5373, + "target_slot": 0, + "type": "MASK" + }, + { + "id": 13792, + "origin_id": 5377, + "origin_slot": 0, + "target_id": 5381, + "target_slot": 0, + "type": "MASK" + }, + { + "id": 13794, + "origin_id": 5371, + "origin_slot": 0, + "target_id": 5384, + "target_slot": 0, + "type": "IMAGE" + }, + { + "id": 13797, + "origin_id": 5399, + "origin_slot": 0, + "target_id": 5371, + "target_slot": 0, + "type": "IMAGE" + }, + { + "id": 20, + "origin_id": 5168, + "origin_slot": 0, + "target_id": 5399, + "target_slot": 0, + "type": "IMAGE" + }, + { + "id": 13814, + "origin_id": -10, + "origin_slot": 6, + "target_id": 5608, + "target_slot": 0, + "type": "CLIP" + }, + { + "id": 13798, + "origin_id": 5400, + "origin_slot": 0, + "target_id": 5372, + "target_slot": 0, + "type": "INT" }, { "id": 13759, @@ -4877,251 +5579,109 @@ "type": "COMBO", "parentId": 514 }, - { - "id": 13763, - "origin_id": -10, - "origin_slot": 7, - "target_id": 5021, - "target_slot": 3, - "type": "COMBO" - }, - { - "id": 13764, - "origin_id": -10, - "origin_slot": 0, - "target_id": 5021, - "target_slot": 1, - "type": "STRING" - }, - { - "id": 13765, - "origin_id": -10, - "origin_slot": 8, - "target_id": 5400, - "target_slot": 0, - "type": "INT" - }, { "id": 13805, "origin_id": -10, - "origin_slot": 9, - "target_id": 9018, - "target_slot": 0, - "type": "BOOLEAN" - }, - { - "id": 13806, - "origin_id": 9018, "origin_slot": 0, - "target_id": 9019, - "target_slot": 0, - "type": "BOOLEAN" - }, - { - "id": 13807, - "origin_id": 9019, - "origin_slot": 0, - "target_id": -20, - "target_slot": 10, - "type": "BOOLEAN" - }, - { - "id": 13808, - "origin_id": 9018, - "origin_slot": 0, - "target_id": 5609, - "target_slot": 2, - "type": "BOOLEAN" - }, - { - "id": 13809, - "origin_id": -10, - "origin_slot": 6, - "target_id": 5608, - "target_slot": 0, - "type": "CLIP" - }, - { - "id": 13810, - "origin_id": -10, - "origin_slot": 0, - "target_id": 5608, - "target_slot": 4, + "target_id": 5406, + "target_slot": 5, "type": "STRING" }, { - "id": 13811, - "origin_id": -10, - "origin_slot": 12, - "target_id": 5608, - "target_slot": 5, - "type": "INT" - }, - { - "id": 13812, + "id": 13817, "origin_id": -10, "origin_slot": 12, "target_id": 5406, - "target_slot": 5, + "target_slot": 6, "type": "INT" }, - { - "id": 13813, - "origin_id": 5406, - "origin_slot": 0, - "target_id": 5609, - "target_slot": 1, - "type": "STRING", - "parentId": 516 - }, - { - "id": 13814, - "origin_id": 5608, - "origin_slot": 0, - "target_id": 5609, - "target_slot": 0, - "type": "STRING" - }, { "id": 13815, - "origin_id": 5609, + "origin_id": -10, "origin_slot": 0, - "target_id": 5610, - "target_slot": 1, + "target_id": 5608, + "target_slot": 5, "type": "STRING" }, { "id": 13816, "origin_id": -10, - "origin_slot": 0, - "target_id": 5610, + "origin_slot": 12, + "target_id": 5608, + "target_slot": 6, + "type": "INT" + }, + { + "id": 13930, + "origin_id": 9020, + "origin_slot": 2, + "target_id": 9021, "target_slot": 0, - "type": "STRING", - "parentId": 518 + "type": "INT" }, { - "id": 13817, - "origin_id": -10, - "origin_slot": 10, - "target_id": 5610, - "target_slot": 2, - "type": "BOOLEAN", - "parentId": 520 - }, - { - "id": 13818, - "origin_id": 5610, + "id": 13931, + "origin_id": 9021, "origin_slot": 0, - "target_id": 2483, - "target_slot": 1, - "type": "STRING" + "target_id": 9022, + "target_slot": 0, + "type": "FLOAT" }, { - "id": 13819, - "origin_id": 5610, + "id": 13932, + "origin_id": 9022, "origin_slot": 0, - "target_id": -20, - "target_slot": 9, - "type": "STRING" - }, - { - "id": 13820, - "origin_id": -10, - "origin_slot": 11, - "target_id": 2612, + "target_id": 9023, "target_slot": 1, - "type": "STRING", - "parentId": 522 + "type": "AUDIO" }, { - "id": 13821, - "origin_id": -10, - "origin_slot": 11, - "target_id": 5020, + "id": 13933, + "origin_id": 5168, + "origin_slot": 0, + "target_id": 9020, + "target_slot": 0, + "type": "IMAGE" + }, + { + "id": 13934, + "origin_id": 5168, + "origin_slot": 2, + "target_id": 9021, "target_slot": 1, - "type": "STRING" + "type": "FLOAT" }, { - "id": 13822, - "origin_id": -10, - "origin_slot": 10, - "target_id": 5021, - "target_slot": 2, - "type": "BOOLEAN" - }, - { - "id": 13823, - "origin_id": -10, + "id": 13935, + "origin_id": 5168, "origin_slot": 1, - "target_id": 5611, + "target_id": 9023, "target_slot": 0, - "type": "STRING", - "parentId": 524 + "type": "AUDIO" }, { - "id": 13824, - "origin_id": 5611, - "origin_slot": 0, - "target_id": 5612, - "target_slot": 2, - "type": "BOOLEAN" - }, - { - "id": 13825, - "origin_id": 5611, - "origin_slot": 0, - "target_id": 5613, - "target_slot": 2, - "type": "BOOLEAN", - "parentId": 526 - }, - { - "id": 13826, - "origin_id": 5021, - "origin_slot": 0, - "target_id": 5612, - "target_slot": 1, - "type": "CONDITIONING" - }, - { - "id": 13827, - "origin_id": 1241, - "origin_slot": 0, - "target_id": 5612, - "target_slot": 0, - "type": "CONDITIONING" - }, - { - "id": 13828, - "origin_id": 5020, - "origin_slot": 0, - "target_id": 5613, - "target_slot": 1, - "type": "CONDITIONING" - }, - { - "id": 13829, - "origin_id": 1241, - "origin_slot": 1, - "target_id": 5613, - "target_slot": 0, - "type": "CONDITIONING" - }, - { - "id": 13830, - "origin_id": 5612, + "id": 13936, + "origin_id": 9023, "origin_slot": 0, "target_id": -20, - "target_slot": 1, - "type": "CONDITIONING" + "target_slot": 7, + "type": "AUDIO" }, { - "id": 13831, - "origin_id": 5613, + "id": 13937, + "origin_id": 5371, "origin_slot": 0, - "target_id": -20, - "target_slot": 0, - "type": "CONDITIONING" + "target_id": 5373, + "target_slot": 1, + "type": "IMAGE" + }, + { + "id": 13938, + "origin_id": 5384, + "origin_slot": 0, + "target_id": 5381, + "target_slot": 1, + "type": "IMAGE" } ], "reroutes": [ @@ -5132,7 +5692,7 @@ 5172 ], "linkIds": [ - 6 + 13783 ] }, { @@ -5143,7 +5703,7 @@ 5172 ], "linkIds": [ - 6 + 13783 ] }, { @@ -5153,7 +5713,7 @@ 6250 ], "linkIds": [ - 11 + 13788 ] }, { @@ -5164,7 +5724,7 @@ 6250 ], "linkIds": [ - 11 + 13788 ] }, { @@ -5174,7 +5734,7 @@ 6624 ], "linkIds": [ - 14 + 13791 ] }, { @@ -5185,7 +5745,7 @@ 6624 ], "linkIds": [ - 14 + 13791 ] }, { @@ -5258,7 +5818,7 @@ 5172 ], "linkIds": [ - 13813 + 13818 ] }, { @@ -5269,7 +5829,7 @@ 5172 ], "linkIds": [ - 13813 + 13818 ] }, { @@ -5279,7 +5839,7 @@ 6624 ], "linkIds": [ - 13816 + 13821 ] }, { @@ -5290,7 +5850,7 @@ 6624 ], "linkIds": [ - 13816 + 13821 ] }, { @@ -5300,7 +5860,7 @@ 6648 ], "linkIds": [ - 13817 + 13822 ] }, { @@ -5311,7 +5871,7 @@ 6648 ], "linkIds": [ - 13817 + 13822 ] }, { @@ -5321,7 +5881,7 @@ 5172 ], "linkIds": [ - 13820 + 13825 ] }, { @@ -5332,7 +5892,7 @@ 5172 ], "linkIds": [ - 13820 + 13825 ] }, { @@ -5342,7 +5902,7 @@ 6250 ], "linkIds": [ - 13823 + 13828 ] }, { @@ -5353,7 +5913,7 @@ 6250 ], "linkIds": [ - 13823 + 13828 ] }, { @@ -5363,7 +5923,7 @@ 5806.840529449132 ], "linkIds": [ - 13825 + 13830 ] }, { @@ -5374,7 +5934,7 @@ 5798.673645265262 ], "linkIds": [ - 13825 + 13830 ] } ], @@ -5384,10 +5944,10 @@ "id": "e8498d2a-2b93-4e5f-b5bb-62240585529c", "version": 1, "state": { - "lastGroupId": 157, - "lastNodeId": 9019, - "lastLinkId": 13765, - "lastRerouteId": 9052 + "lastGroupId": 158, + "lastNodeId": 9023, + "lastLinkId": 13938, + "lastRerouteId": 9086 }, "revision": 0, "config": {}, @@ -5397,7 +5957,7 @@ "bounding": [ -67.97271438450686, 69.00935650732981, - 128, + 155.677734375, 228 ] }, @@ -5406,8 +5966,8 @@ "bounding": [ 2517.1943200034757, 119.00935650732981, - 128, - 127.99999999999999 + 137.71875, + 128 ] }, "inputs": [ @@ -5416,12 +5976,12 @@ "name": "vae", "type": "VAE", "linkIds": [ - 2, - 7 + 13838, + 13843 ], "pos": [ - 36.02728561549314, - 29.009356507329816 + 63.70501999049314, + 93.00935650732981 ] }, { @@ -5429,11 +5989,11 @@ "name": "negative", "type": "CONDITIONING", "linkIds": [ - 8 + 13844 ], "pos": [ - 36.02728561549314, - 49.00935650732981 + 63.70501999049314, + 113.00935650732981 ] }, { @@ -5441,11 +6001,11 @@ "name": "positive", "type": "CONDITIONING", "linkIds": [ - 9 + 13845 ], "pos": [ - 36.02728561549314, - 69.00935650732981 + 63.70501999049314, + 133.0093565073298 ] }, { @@ -5453,12 +6013,12 @@ "name": "bypass", "type": "BOOLEAN", "linkIds": [ - 10 + 13846 ], "label": "bypass start image", "pos": [ - 36.02728561549314, - 89.00935650732981 + 63.70501999049314, + 153.0093565073298 ] }, { @@ -5466,11 +6026,11 @@ "name": "mask", "type": "MASK", "linkIds": [ - 11 + 13847 ], "pos": [ - 36.02728561549314, - 109.00935650732981 + 63.70501999049314, + 173.0093565073298 ] }, { @@ -5478,12 +6038,12 @@ "name": "images", "type": "IMAGE", "linkIds": [ - 13 + 13849 ], "label": "reference frames", "pos": [ - 36.02728561549314, - 129.0093565073298 + 63.70501999049314, + 193.0093565073298 ] }, { @@ -5491,12 +6051,12 @@ "name": "image", "type": "IMAGE", "linkIds": [ - 15 + 13851 ], "label": "start image", "pos": [ - 36.02728561549314, - 149.0093565073298 + 63.70501999049314, + 213.0093565073298 ] }, { @@ -5504,11 +6064,11 @@ "name": "audio_vae", "type": "VAE", "linkIds": [ - 19 + 13855 ], "pos": [ - 36.02728561549314, - 169.0093565073298 + 63.70501999049314, + 233.0093565073298 ] }, { @@ -5516,12 +6076,12 @@ "name": "audio", "type": "AUDIO", "linkIds": [ - 20 + 13856 ], "label": "reference audio", "pos": [ - 36.02728561549314, - 189.0093565073298 + 63.70501999049314, + 253.0093565073298 ] } ], @@ -5531,11 +6091,11 @@ "name": "positive", "type": "CONDITIONING", "linkIds": [ - 24 + 13860 ], "pos": [ - 2128.413066506762, - 97.54439623954433 + 2541.1943200034757, + 143.0093565073298 ] }, { @@ -5546,8 +6106,8 @@ 25 ], "pos": [ - 2128.413066506762, - 117.54439623954433 + 2541.1943200034757, + 163.0093565073298 ] }, { @@ -5555,12 +6115,12 @@ "name": "image", "type": "IMAGE", "linkIds": [ - 26 + 13861 ], "label": "blend reference", "pos": [ - 2128.413066506762, - 137.5443962395443 + 2541.1943200034757, + 183.0093565073298 ] }, { @@ -5568,11 +6128,11 @@ "name": "latent", "type": "LATENT", "linkIds": [ - 27 + 13862 ], "pos": [ - 2128.413066506762, - 157.5443962395443 + 2541.1943200034757, + 203.0093565073298 ] } ], @@ -5600,7 +6160,7 @@ "widget": { "name": "width" }, - "link": 3 + "link": 13839 }, { "localized_name": "height", @@ -5609,7 +6169,7 @@ "widget": { "name": "height" }, - "link": 4 + "link": 13840 }, { "localized_name": "length", @@ -5618,7 +6178,7 @@ "widget": { "name": "length" }, - "link": 5 + "link": 13841 } ], "outputs": [ @@ -5627,7 +6187,7 @@ "name": "LATENT", "type": "LATENT", "links": [ - 1 + 13837 ] } ], @@ -5641,7 +6201,13 @@ 544, 121, 1 - ] + ], + "widgets_values_named": { + "width": 960, + "height": 544, + "length": 121, + "batch_size": 1 + } }, { "id": 5054, @@ -5662,7 +6228,7 @@ "localized_name": "image", "name": "image", "type": "IMAGE", - "link": 14 + "link": 13850 } ], "outputs": [ @@ -5671,7 +6237,7 @@ "name": "width", "type": "INT", "links": [ - 3 + 13839 ] }, { @@ -5679,7 +6245,7 @@ "name": "height", "type": "INT", "links": [ - 4 + 13840 ] }, { @@ -5687,7 +6253,7 @@ "name": "batch_size", "type": "INT", "links": [ - 5 + 13841 ] } ], @@ -5695,8 +6261,7 @@ "Node name for S&R": "GetImageSize", "cnr_id": "comfy-core", "ver": "0.16.0" - }, - "widgets_values": [] + } }, { "id": 5378, @@ -5717,13 +6282,13 @@ "localized_name": "images", "name": "images", "type": "IMAGE", - "link": 13 + "link": 13849 }, { "localized_name": "mask", "name": "mask", "type": "MASK", - "link": 11 + "link": 13847 } ], "outputs": [ @@ -5732,16 +6297,15 @@ "name": "image", "type": "IMAGE", "links": [ - 12, - 14, - 26 + 13848, + 13850, + 13861 ] } ], "properties": { "Node name for S&R": "LTXVInpaintPreprocess" - }, - "widgets_values": [] + } }, { "id": 3159, @@ -5762,19 +6326,19 @@ "localized_name": "vae", "name": "vae", "type": "VAE", - "link": 2 + "link": 13838 }, { "localized_name": "image", "name": "image", "type": "IMAGE", - "link": 16 + "link": 13852 }, { "localized_name": "latent", "name": "latent", "type": "LATENT", - "link": 1 + "link": 13837 }, { "localized_name": "bypass", @@ -5783,7 +6347,7 @@ "widget": { "name": "bypass" }, - "link": 10 + "link": 13846 } ], "outputs": [ @@ -5792,7 +6356,7 @@ "name": "latent", "type": "LATENT", "links": [ - 6 + 13842 ] } ], @@ -5802,7 +6366,11 @@ "widgets_values": [ 0.7, false - ] + ], + "widgets_values_named": { + "strength": 0.7, + "bypass": false + } }, { "id": 5114, @@ -5813,7 +6381,7 @@ ], "size": [ 330, - 326 + 374 ], "flags": {}, "order": 3, @@ -5823,31 +6391,31 @@ "localized_name": "positive", "name": "positive", "type": "CONDITIONING", - "link": 9 + "link": 13845 }, { "localized_name": "negative", "name": "negative", "type": "CONDITIONING", - "link": 8 + "link": 13844 }, { "localized_name": "vae", "name": "vae", "type": "VAE", - "link": 7 + "link": 13843 }, { "localized_name": "latent", "name": "latent", "type": "LATENT", - "link": 6 + "link": 13842 }, { "localized_name": "image", "name": "image", "type": "IMAGE", - "link": 12 + "link": 13848 }, { "localized_name": "attention_mask", @@ -5863,8 +6431,8 @@ "name": "positive", "type": "CONDITIONING", "links": [ - 22, - 24 + 13858, + 13860 ] }, { @@ -5872,8 +6440,8 @@ "name": "negative", "type": "CONDITIONING", "links": [ - 23, - 25 + 25, + 13859 ] }, { @@ -5881,7 +6449,7 @@ "name": "latent", "type": "LATENT", "links": [ - 21 + 13857 ] } ], @@ -5896,8 +6464,22 @@ false, 256, 64, - 1 - ] + 1, + false, + 97 + ], + "widgets_values_named": { + "frame_idx": 0, + "strength": 1, + "latent_downscale_factor": 1, + "crop": "disabled", + "use_tiled_encode": false, + "tile_size": 256, + "tile_overlap": 64, + "attention_strength": 1, + "use_streaming": false, + "tile_frames": 97 + } }, { "id": 5390, @@ -5918,19 +6500,19 @@ "localized_name": "positive", "name": "positive", "type": "CONDITIONING", - "link": 22 + "link": 13858 }, { "localized_name": "negative", "name": "negative", "type": "CONDITIONING", - "link": 23 + "link": 13859 }, { "localized_name": "audio_latent", "name": "audio_latent", "type": "LATENT", - "link": 17 + "link": 13853 } ], "outputs": [ @@ -5951,14 +6533,13 @@ "name": "frozen_audio", "type": "LATENT", "links": [ - 18 + 13854 ] } ], "properties": { "Node name for S&R": "LTXVSetAudioRefTokens" - }, - "widgets_values": [] + } }, { "id": 5391, @@ -5979,13 +6560,13 @@ "localized_name": "video_latent", "name": "video_latent", "type": "LATENT", - "link": 21 + "link": 13857 }, { "localized_name": "audio_latent", "name": "audio_latent", "type": "LATENT", - "link": 18 + "link": 13854 } ], "outputs": [ @@ -5994,7 +6575,7 @@ "name": "latent", "type": "LATENT", "links": [ - 27 + 13862 ] } ], @@ -6002,8 +6583,7 @@ "Node name for S&R": "LTXVConcatAVLatent", "cnr_id": "comfy-core", "ver": "0.5.1" - }, - "widgets_values": [] + } }, { "id": 5389, @@ -6024,13 +6604,13 @@ "localized_name": "audio", "name": "audio", "type": "AUDIO", - "link": 20 + "link": 13856 }, { "localized_name": "vae", "name": "vae", "type": "VAE", - "link": 19 + "link": 13855 } ], "outputs": [ @@ -6039,7 +6619,7 @@ "name": "LATENT", "type": "LATENT", "links": [ - 17 + 13853 ] } ], @@ -6047,8 +6627,7 @@ "Node name for S&R": "VAEEncodeAudio", "cnr_id": "comfy-core", "ver": "0.24.0" - }, - "widgets_values": [] + } }, { "id": 5388, @@ -6069,7 +6648,7 @@ "localized_name": "image", "name": "image", "type": "IMAGE", - "link": 15 + "link": 13851 } ], "outputs": [ @@ -6078,7 +6657,7 @@ "name": "output_image", "type": "IMAGE", "links": [ - 16 + 13852 ] } ], @@ -6089,13 +6668,16 @@ }, "widgets_values": [ 18 - ] + ], + "widgets_values_named": { + "img_compression": 18 + } } ], "groups": [], "links": [ { - "id": 1, + "id": 13837, "origin_id": 3059, "origin_slot": 0, "target_id": 3159, @@ -6103,16 +6685,16 @@ "type": "LATENT" }, { - "id": 2, + "id": 13838, "origin_id": -10, "origin_slot": 0, "target_id": 3159, "target_slot": 0, "type": "VAE", - "parentId": 502 + "parentId": 9054 }, { - "id": 3, + "id": 13839, "origin_id": 5054, "origin_slot": 0, "target_id": 3059, @@ -6120,7 +6702,7 @@ "type": "INT" }, { - "id": 4, + "id": 13840, "origin_id": 5054, "origin_slot": 1, "target_id": 3059, @@ -6128,7 +6710,7 @@ "type": "INT" }, { - "id": 5, + "id": 13841, "origin_id": 5054, "origin_slot": 2, "target_id": 3059, @@ -6136,7 +6718,7 @@ "type": "INT" }, { - "id": 6, + "id": 13842, "origin_id": 3159, "origin_slot": 0, "target_id": 5114, @@ -6144,25 +6726,25 @@ "type": "LATENT" }, { - "id": 7, + "id": 13843, "origin_id": -10, "origin_slot": 0, "target_id": 5114, "target_slot": 2, "type": "VAE", - "parentId": 504 + "parentId": 9056 }, { - "id": 8, + "id": 13844, "origin_id": -10, "origin_slot": 1, "target_id": 5114, "target_slot": 1, "type": "CONDITIONING", - "parentId": 506 + "parentId": 9058 }, { - "id": 9, + "id": 13845, "origin_id": -10, "origin_slot": 2, "target_id": 5114, @@ -6171,16 +6753,7 @@ "parentId": 508 }, { - "id": 10, - "origin_id": -10, - "origin_slot": 3, - "target_id": 3159, - "target_slot": 3, - "type": "BOOLEAN", - "parentId": 510 - }, - { - "id": 11, + "id": 13847, "origin_id": -10, "origin_slot": 4, "target_id": 5378, @@ -6188,16 +6761,16 @@ "type": "MASK" }, { - "id": 12, + "id": 13848, "origin_id": 5378, "origin_slot": 0, "target_id": 5114, "target_slot": 4, "type": "IMAGE", - "parentId": 512 + "parentId": 9062 }, { - "id": 13, + "id": 13849, "origin_id": -10, "origin_slot": 5, "target_id": 5378, @@ -6205,7 +6778,7 @@ "type": "IMAGE" }, { - "id": 14, + "id": 13850, "origin_id": 5378, "origin_slot": 0, "target_id": 5054, @@ -6213,7 +6786,7 @@ "type": "IMAGE" }, { - "id": 15, + "id": 13851, "origin_id": -10, "origin_slot": 6, "target_id": 5388, @@ -6221,25 +6794,25 @@ "type": "IMAGE" }, { - "id": 16, + "id": 13852, "origin_id": 5388, "origin_slot": 0, "target_id": 3159, "target_slot": 1, "type": "IMAGE", - "parentId": 514 + "parentId": 9064 }, { - "id": 17, + "id": 13853, "origin_id": 5389, "origin_slot": 0, "target_id": 5390, "target_slot": 2, "type": "LATENT", - "parentId": 516 + "parentId": 9066 }, { - "id": 18, + "id": 13854, "origin_id": 5390, "origin_slot": 2, "target_id": 5391, @@ -6247,7 +6820,7 @@ "type": "LATENT" }, { - "id": 19, + "id": 13855, "origin_id": -10, "origin_slot": 7, "target_id": 5389, @@ -6255,7 +6828,7 @@ "type": "VAE" }, { - "id": 20, + "id": 13856, "origin_id": -10, "origin_slot": 8, "target_id": 5389, @@ -6263,16 +6836,16 @@ "type": "AUDIO" }, { - "id": 21, + "id": 13857, "origin_id": 5114, "origin_slot": 2, "target_id": 5391, "target_slot": 0, "type": "LATENT", - "parentId": 518 + "parentId": 9068 }, { - "id": 22, + "id": 13858, "origin_id": 5114, "origin_slot": 0, "target_id": 5390, @@ -6280,7 +6853,7 @@ "type": "CONDITIONING" }, { - "id": 23, + "id": 13859, "origin_id": 5114, "origin_slot": 1, "target_id": 5390, @@ -6288,13 +6861,13 @@ "type": "CONDITIONING" }, { - "id": 24, + "id": 13860, "origin_id": 5114, "origin_slot": 0, "target_id": -20, "target_slot": 0, "type": "CONDITIONING", - "parentId": 520 + "parentId": 9070 }, { "id": 25, @@ -6303,88 +6876,97 @@ "target_id": -20, "target_slot": 1, "type": "CONDITIONING", - "parentId": 522 + "parentId": 9072 }, { - "id": 26, + "id": 13861, "origin_id": 5378, "origin_slot": 0, "target_id": -20, "target_slot": 2, "type": "IMAGE", - "parentId": 524 + "parentId": 9074 }, { - "id": 27, + "id": 13862, "origin_id": 5391, "origin_slot": 0, "target_id": -20, "target_slot": 3, "type": "LATENT" + }, + { + "id": 13846, + "origin_id": -10, + "origin_slot": 3, + "target_id": 3159, + "target_slot": 3, + "type": "BOOLEAN", + "parentId": 9060 } ], "reroutes": [ { - "id": 501, + "id": 9053, "pos": [ 84.02728561549314, 382 ], "linkIds": [ - 2 + 13838 ] }, { - "id": 502, - "parentId": 501, + "id": 9054, + "parentId": 9053, "pos": [ 1061.2755700034754, 382 ], "linkIds": [ - 2 + 13838 ] }, { - "id": 503, + "id": 9055, "pos": [ 84.02728561549314, 382 ], "linkIds": [ - 7 + 13843 ] }, { - "id": 504, - "parentId": 503, + "id": 9056, + "parentId": 9055, "pos": [ 1464.5378746909755, 382 ], "linkIds": [ - 7 + 13843 ] }, { - "id": 505, + "id": 9057, "pos": [ 84.02728561549314, 397 ], "linkIds": [ - 8 + 13844 ] }, { - "id": 506, - "parentId": 505, + "id": 9058, + "parentId": 9057, "pos": [ 1464.5378746909755, 397 ], "linkIds": [ - 8 + 13844 ] }, { @@ -6394,7 +6976,7 @@ 409 ], "linkIds": [ - 9 + 13845 ] }, { @@ -6405,137 +6987,137 @@ 409 ], "linkIds": [ - 9 + 13845 ] }, { - "id": 509, + "id": 9059, "pos": [ 84.02728561549314, 424 ], "linkIds": [ - 10 + 13846 ] }, { - "id": 510, - "parentId": 509, + "id": 9060, + "parentId": 9059, "pos": [ 1061.2755700034754, 424 ], "linkIds": [ - 10 + 13846 ] }, { - "id": 511, + "id": 9061, "pos": [ 514.0835715395484, 439 ], "linkIds": [ - 12 + 13848 ] }, { - "id": 512, - "parentId": 511, + "id": 9062, + "parentId": 9061, "pos": [ 1464.5378746909755, 439 ], "linkIds": [ - 12 + 13848 ] }, { - "id": 513, + "id": 9063, "pos": [ 466.0835715395484, 299 ], "linkIds": [ - 16 + 13852 ] }, { - "id": 514, - "parentId": 513, + "id": 9064, + "parentId": 9063, "pos": [ 1061.2755700034754, 299 ], "linkIds": [ - 16 + 13852 ] }, { - "id": 515, + "id": 9065, "pos": [ 466.0835715395484, 451 ], "linkIds": [ - 17 + 13853 ] }, { - "id": 516, - "parentId": 515, + "id": 9066, + "parentId": 9065, "pos": [ 1884.5378746909755, 451 ], "linkIds": [ - 17 + 13853 ] }, { - "id": 517, + "id": 9067, "pos": [ 1842.5378746909755, 299 ], "linkIds": [ - 21 + 13857 ] }, { - "id": 518, - "parentId": 517, + "id": 9068, + "parentId": 9067, "pos": [ 2201.8861168784756, 299 ], "linkIds": [ - 21 + 13857 ] }, { - "id": 519, + "id": 9069, "pos": [ 1842.5378746909755, 382 ], "linkIds": [ - 24 + 13860 ] }, { - "id": 520, - "parentId": 519, + "id": 9070, + "parentId": 9069, "pos": [ 2493.1943200034757, 382 ], "linkIds": [ - 24 + 13860 ] }, { - "id": 521, + "id": 9071, "pos": [ 1842.5378746909755, 397 @@ -6545,8 +7127,8 @@ ] }, { - "id": 522, - "parentId": 521, + "id": 9072, + "parentId": 9071, "pos": [ 2493.1943200034757, 397 @@ -6556,24 +7138,24 @@ ] }, { - "id": 523, + "id": 9073, "pos": [ 514.0835715395484, 439 ], "linkIds": [ - 26 + 13861 ] }, { - "id": 524, - "parentId": 523, + "id": 9074, + "parentId": 9073, "pos": [ 2493.1943200034757, 439 ], "linkIds": [ - 26 + 13861 ] } ], @@ -6583,10 +7165,10 @@ "id": "a0faecfd-06db-49d2-a37c-68822f750b66", "version": 1, "state": { - "lastGroupId": 157, - "lastNodeId": 9019, - "lastLinkId": 13765, - "lastRerouteId": 9052 + "lastGroupId": 158, + "lastNodeId": 9023, + "lastLinkId": 13938, + "lastRerouteId": 9086 }, "revision": 0, "config": {}, @@ -6615,7 +7197,7 @@ "name": "model", "type": "MODEL", "linkIds": [ - 1 + 13863 ], "pos": [ 94, @@ -6627,8 +7209,8 @@ "name": "positive", "type": "CONDITIONING", "linkIds": [ - 6, - 8 + 13868, + 13870 ], "pos": [ 94, @@ -6640,8 +7222,8 @@ "name": "negative", "type": "CONDITIONING", "linkIds": [ - 7, - 9 + 13869, + 13871 ], "pos": [ 94, @@ -6653,7 +7235,7 @@ "name": "latent_image", "type": "LATENT", "linkIds": [ - 10 + 13872 ], "pos": [ 94, @@ -6667,7 +7249,7 @@ "name": "latent", "type": "LATENT", "linkIds": [ - 13 + 13875 ], "label": "video_latent", "pos": [ @@ -6680,7 +7262,7 @@ "name": "positive", "type": "CONDITIONING", "linkIds": [ - 14 + 13876 ], "pos": [ 1692.624468837581, @@ -6692,7 +7274,7 @@ "name": "negative", "type": "CONDITIONING", "linkIds": [ - 15 + 13877 ], "pos": [ 1692.624468837581, @@ -6704,7 +7286,7 @@ "name": "audio_latent", "type": "LATENT", "linkIds": [ - 16 + 13878 ], "pos": [ 1692.624468837581, @@ -6735,7 +7317,7 @@ "name": "NOISE", "type": "NOISE", "links": [ - 2 + 13864 ] } ], @@ -6747,7 +7329,11 @@ "widgets_values": [ 43, "fixed" - ] + ], + "widgets_values_named": { + "noise_seed": 43, + "control_after_generate": "fixed" + } }, { "id": 4828, @@ -6768,19 +7354,19 @@ "localized_name": "model", "name": "model", "type": "MODEL", - "link": 1 + "link": 13863 }, { "localized_name": "positive", "name": "positive", "type": "CONDITIONING", - "link": 8 + "link": 13870 }, { "localized_name": "negative", "name": "negative", "type": "CONDITIONING", - "link": 9 + "link": 13871 } ], "outputs": [ @@ -6789,7 +7375,7 @@ "name": "GUIDER", "type": "GUIDER", "links": [ - 3 + 13865 ] } ], @@ -6800,7 +7386,10 @@ }, "widgets_values": [ 1 - ] + ], + "widgets_values_named": { + "cfg": 1 + } }, { "id": 5093, @@ -6821,31 +7410,31 @@ "localized_name": "noise", "name": "noise", "type": "NOISE", - "link": 2 + "link": 13864 }, { "localized_name": "guider", "name": "guider", "type": "GUIDER", - "link": 3 + "link": 13865 }, { "localized_name": "sampler", "name": "sampler", "type": "SAMPLER", - "link": 4 + "link": 13866 }, { "localized_name": "sigmas", "name": "sigmas", "type": "SIGMAS", - "link": 5 + "link": 13867 }, { "localized_name": "latent_image", "name": "latent_image", "type": "LATENT", - "link": 10 + "link": 13872 } ], "outputs": [ @@ -6860,7 +7449,7 @@ "name": "denoised_output", "type": "LATENT", "links": [ - 11 + 13873 ] } ], @@ -6868,8 +7457,7 @@ "Node name for S&R": "SamplerCustomAdvanced", "cnr_id": "comfy-core", "ver": "0.14.1" - }, - "widgets_values": [] + } }, { "id": 5394, @@ -6890,7 +7478,7 @@ "localized_name": "av_latent", "name": "av_latent", "type": "LATENT", - "link": 11 + "link": 13873 } ], "outputs": [ @@ -6899,7 +7487,7 @@ "name": "video_latent", "type": "LATENT", "links": [ - 12 + 13874 ] }, { @@ -6907,7 +7495,7 @@ "name": "audio_latent", "type": "LATENT", "links": [ - 16 + 13878 ] } ], @@ -6915,8 +7503,7 @@ "Node name for S&R": "LTXVSeparateAVLatent", "cnr_id": "comfy-core", "ver": "0.5.1" - }, - "widgets_values": [] + } }, { "id": 5013, @@ -6937,19 +7524,19 @@ "localized_name": "positive", "name": "positive", "type": "CONDITIONING", - "link": 6 + "link": 13868 }, { "localized_name": "negative", "name": "negative", "type": "CONDITIONING", - "link": 7 + "link": 13869 }, { "localized_name": "latent", "name": "latent", "type": "LATENT", - "link": 12 + "link": 13874 } ], "outputs": [ @@ -6958,7 +7545,7 @@ "name": "positive", "type": "CONDITIONING", "links": [ - 14 + 13876 ] }, { @@ -6966,7 +7553,7 @@ "name": "negative", "type": "CONDITIONING", "links": [ - 15 + 13877 ] }, { @@ -6974,7 +7561,7 @@ "name": "latent", "type": "LATENT", "links": [ - 13 + 13875 ] } ], @@ -6982,8 +7569,7 @@ "Node name for S&R": "LTXVCropGuides", "cnr_id": "comfy-core", "ver": "0.3.75" - }, - "widgets_values": [] + } }, { "id": 5025, @@ -7006,7 +7592,7 @@ "name": "SIGMAS", "type": "SIGMAS", "links": [ - 5 + 13867 ] } ], @@ -7017,7 +7603,10 @@ }, "widgets_values": [ "1.0, 0.99375, 0.9875, 0.98125, 0.975, 0.909375, 0.725, 0.421875, 0.0" - ] + ], + "widgets_values_named": { + "sigmas": "1.0, 0.99375, 0.9875, 0.98125, 0.975, 0.909375, 0.725, 0.421875, 0.0" + } }, { "id": 4831, @@ -7040,7 +7629,7 @@ "name": "SAMPLER", "type": "SAMPLER", "links": [ - 4 + 13866 ] } ], @@ -7051,13 +7640,16 @@ }, "widgets_values": [ "euler_ancestral" - ] + ], + "widgets_values_named": { + "sampler_name": "euler_ancestral" + } } ], "groups": [], "links": [ { - "id": 1, + "id": 13863, "origin_id": -10, "origin_slot": 0, "target_id": 4828, @@ -7065,7 +7657,7 @@ "type": "MODEL" }, { - "id": 2, + "id": 13864, "origin_id": 4832, "origin_slot": 0, "target_id": 5093, @@ -7073,7 +7665,7 @@ "type": "NOISE" }, { - "id": 3, + "id": 13865, "origin_id": 4828, "origin_slot": 0, "target_id": 5093, @@ -7081,7 +7673,7 @@ "type": "GUIDER" }, { - "id": 4, + "id": 13866, "origin_id": 4831, "origin_slot": 0, "target_id": 5093, @@ -7089,7 +7681,7 @@ "type": "SAMPLER" }, { - "id": 5, + "id": 13867, "origin_id": 5025, "origin_slot": 0, "target_id": 5093, @@ -7097,7 +7689,7 @@ "type": "SIGMAS" }, { - "id": 6, + "id": 13868, "origin_id": -10, "origin_slot": 1, "target_id": 5013, @@ -7106,7 +7698,7 @@ "parentId": 736 }, { - "id": 7, + "id": 13869, "origin_id": -10, "origin_slot": 2, "target_id": 5013, @@ -7115,7 +7707,7 @@ "parentId": 738 }, { - "id": 8, + "id": 13870, "origin_id": -10, "origin_slot": 1, "target_id": 4828, @@ -7123,7 +7715,7 @@ "type": "CONDITIONING" }, { - "id": 9, + "id": 13871, "origin_id": -10, "origin_slot": 2, "target_id": 4828, @@ -7131,7 +7723,7 @@ "type": "CONDITIONING" }, { - "id": 10, + "id": 13872, "origin_id": -10, "origin_slot": 3, "target_id": 5093, @@ -7140,7 +7732,7 @@ "parentId": 740 }, { - "id": 11, + "id": 13873, "origin_id": 5093, "origin_slot": 1, "target_id": 5394, @@ -7148,7 +7740,7 @@ "type": "LATENT" }, { - "id": 12, + "id": 13874, "origin_id": 5394, "origin_slot": 0, "target_id": 5013, @@ -7156,7 +7748,7 @@ "type": "LATENT" }, { - "id": 13, + "id": 13875, "origin_id": 5013, "origin_slot": 2, "target_id": -20, @@ -7164,7 +7756,7 @@ "type": "LATENT" }, { - "id": 14, + "id": 13876, "origin_id": 5013, "origin_slot": 0, "target_id": -20, @@ -7172,7 +7764,7 @@ "type": "CONDITIONING" }, { - "id": 15, + "id": 13877, "origin_id": 5013, "origin_slot": 1, "target_id": -20, @@ -7180,7 +7772,7 @@ "type": "CONDITIONING" }, { - "id": 16, + "id": 13878, "origin_id": 5394, "origin_slot": 1, "target_id": -20, @@ -7197,7 +7789,7 @@ 331 ], "linkIds": [ - 6 + 13868 ] }, { @@ -7208,7 +7800,7 @@ 331 ], "linkIds": [ - 6 + 13868 ] }, { @@ -7218,7 +7810,7 @@ 657 ], "linkIds": [ - 7 + 13869 ] }, { @@ -7229,7 +7821,7 @@ 657 ], "linkIds": [ - 7 + 13869 ] }, { @@ -7239,7 +7831,7 @@ 524 ], "linkIds": [ - 10 + 13872 ] }, { @@ -7250,7 +7842,7 @@ 524 ], "linkIds": [ - 10 + 13872 ] }, { @@ -7260,7 +7852,7 @@ 578 ], "linkIds": [ - 16 + 13878 ] }, { @@ -7271,7 +7863,7 @@ 578 ], "linkIds": [ - 16 + 13878 ] } ], @@ -7281,10 +7873,10 @@ "id": "7209520a-8490-4a0a-aacf-2393ee619e63", "version": 1, "state": { - "lastGroupId": 157, - "lastNodeId": 9019, - "lastLinkId": 13765, - "lastRerouteId": 9052 + "lastGroupId": 158, + "lastNodeId": 9023, + "lastLinkId": 13938, + "lastRerouteId": 9086 }, "revision": 0, "config": {}, @@ -7313,7 +7905,7 @@ "name": "bypass", "type": "BOOLEAN", "linkIds": [ - 1 + 13879 ], "label": "bypass start image", "pos": [ @@ -7326,7 +7918,7 @@ "name": "image", "type": "IMAGE", "linkIds": [ - 2 + 13880 ], "label": "start image", "pos": [ @@ -7339,8 +7931,8 @@ "name": "vae", "type": "VAE", "linkIds": [ - 3, - 4 + 13881, + 13882 ], "pos": [ 94, @@ -7352,7 +7944,7 @@ "name": "input", "type": "IMAGE", "linkIds": [ - 6 + 13884 ], "label": "stage 1 image", "pos": [ @@ -7365,7 +7957,7 @@ "name": "negative", "type": "CONDITIONING", "linkIds": [ - 8 + 13886 ], "pos": [ 94, @@ -7377,7 +7969,7 @@ "name": "positive", "type": "CONDITIONING", "linkIds": [ - 9 + 13887 ], "pos": [ 94, @@ -7389,7 +7981,7 @@ "name": "audio_latent", "type": "LATENT", "linkIds": [ - 10 + 13888 ], "pos": [ 94, @@ -7403,7 +7995,7 @@ "name": "latent", "type": "LATENT", "linkIds": [ - 13 + 13891 ], "pos": [ 1525.308203125, @@ -7432,7 +8024,7 @@ "localized_name": "input", "name": "input", "type": "IMAGE,MASK", - "link": 6 + "link": 13884 } ], "outputs": [ @@ -7441,7 +8033,7 @@ "name": "resized", "type": "IMAGE", "links": [ - 7 + 13885 ] } ], @@ -7454,7 +8046,12 @@ "scale by multiplier", 2, "lanczos" - ] + ], + "widgets_values_named": { + "resize_type": "scale by multiplier", + "resize_type.multiplier": 2, + "scale_method": "lanczos" + } }, { "id": 5267, @@ -7475,13 +8072,13 @@ "localized_name": "pixels", "name": "pixels", "type": "IMAGE", - "link": 7 + "link": 13885 }, { "localized_name": "vae", "name": "vae", "type": "VAE", - "link": 3 + "link": 13881 } ], "outputs": [ @@ -7490,7 +8087,7 @@ "name": "LATENT", "type": "LATENT", "links": [ - 5 + 13883 ] } ], @@ -7504,7 +8101,13 @@ 64, 500, 64 - ] + ], + "widgets_values_named": { + "tile_size": 512, + "overlap": 64, + "temporal_size": 500, + "temporal_overlap": 64 + } }, { "id": 5213, @@ -7525,19 +8128,19 @@ "localized_name": "vae", "name": "vae", "type": "VAE", - "link": 4 + "link": 13882 }, { "localized_name": "image", "name": "image", "type": "IMAGE", - "link": 2 + "link": 13880 }, { "localized_name": "latent", "name": "latent", "type": "LATENT", - "link": 5 + "link": 13883 }, { "localized_name": "bypass", @@ -7546,7 +8149,7 @@ "widget": { "name": "bypass" }, - "link": 1 + "link": 13879 } ], "outputs": [ @@ -7555,7 +8158,7 @@ "name": "latent", "type": "LATENT", "links": [ - 12 + 13890 ] } ], @@ -7565,7 +8168,11 @@ "widgets_values": [ 1, false - ] + ], + "widgets_values_named": { + "strength": 1, + "bypass": false + } }, { "id": 5396, @@ -7586,13 +8193,13 @@ "localized_name": "video_latent", "name": "video_latent", "type": "LATENT", - "link": 12 + "link": 13890 }, { "localized_name": "audio_latent", "name": "audio_latent", "type": "LATENT", - "link": 11 + "link": 13889 } ], "outputs": [ @@ -7601,7 +8208,7 @@ "name": "latent", "type": "LATENT", "links": [ - 13 + 13891 ] } ], @@ -7609,8 +8216,7 @@ "Node name for S&R": "LTXVConcatAVLatent", "cnr_id": "comfy-core", "ver": "0.5.1" - }, - "widgets_values": [] + } }, { "id": 5395, @@ -7631,19 +8237,19 @@ "localized_name": "positive", "name": "positive", "type": "CONDITIONING", - "link": 9 + "link": 13887 }, { "localized_name": "negative", "name": "negative", "type": "CONDITIONING", - "link": 8 + "link": 13886 }, { "localized_name": "audio_latent", "name": "audio_latent", "type": "LATENT", - "link": 10 + "link": 13888 } ], "outputs": [ @@ -7664,56 +8270,46 @@ "name": "frozen_audio", "type": "LATENT", "links": [ - 11 + 13889 ] } ], "properties": { "Node name for S&R": "LTXVSetAudioRefTokens" - }, - "widgets_values": [] + } } ], "groups": [], "links": [ { - "id": 1, - "origin_id": -10, - "origin_slot": 0, - "target_id": 5213, - "target_slot": 3, - "type": "BOOLEAN", - "parentId": 502 - }, - { - "id": 2, + "id": 13880, "origin_id": -10, "origin_slot": 1, "target_id": 5213, "target_slot": 1, "type": "IMAGE", - "parentId": 504 + "parentId": 9078 }, { - "id": 3, + "id": 13881, "origin_id": -10, "origin_slot": 2, "target_id": 5267, "target_slot": 1, "type": "VAE", - "parentId": 506 + "parentId": 9080 }, { - "id": 4, + "id": 13882, "origin_id": -10, "origin_slot": 2, "target_id": 5213, "target_slot": 0, "type": "VAE", - "parentId": 508 + "parentId": 9082 }, { - "id": 5, + "id": 13883, "origin_id": 5267, "origin_slot": 0, "target_id": 5213, @@ -7721,15 +8317,7 @@ "type": "LATENT" }, { - "id": 6, - "origin_id": -10, - "origin_slot": 3, - "target_id": 5385, - "target_slot": 0, - "type": "IMAGE" - }, - { - "id": 7, + "id": 13885, "origin_id": 5385, "origin_slot": 0, "target_id": 5267, @@ -7737,7 +8325,7 @@ "type": "IMAGE" }, { - "id": 8, + "id": 13886, "origin_id": -10, "origin_slot": 4, "target_id": 5395, @@ -7745,7 +8333,7 @@ "type": "CONDITIONING" }, { - "id": 9, + "id": 13887, "origin_id": -10, "origin_slot": 5, "target_id": 5395, @@ -7753,7 +8341,7 @@ "type": "CONDITIONING" }, { - "id": 10, + "id": 13888, "origin_id": -10, "origin_slot": 6, "target_id": 5395, @@ -7761,16 +8349,16 @@ "type": "LATENT" }, { - "id": 11, + "id": 13889, "origin_id": 5395, "origin_slot": 2, "target_id": 5396, "target_slot": 1, "type": "LATENT", - "parentId": 510 + "parentId": 9084 }, { - "id": 12, + "id": 13890, "origin_id": 5213, "origin_slot": 0, "target_id": 5396, @@ -7778,118 +8366,135 @@ "type": "LATENT" }, { - "id": 13, + "id": 13891, "origin_id": 5396, "origin_slot": 0, "target_id": -20, "target_slot": 0, "type": "LATENT" + }, + { + "id": 13884, + "origin_id": -10, + "origin_slot": 3, + "target_id": 5385, + "target_slot": 0, + "type": "IMAGE" + }, + { + "id": 13879, + "origin_id": -10, + "origin_slot": 0, + "target_id": 5213, + "target_slot": 3, + "type": "BOOLEAN", + "parentId": 9076 } ], "reroutes": [ { - "id": 501, + "id": 9075, "pos": [ 142, 508 ], "linkIds": [ - 1 + 13879 ] }, { - "id": 502, - "parentId": 501, + "id": 9076, + "parentId": 9075, "pos": [ 924, 508 ], "linkIds": [ - 1 + 13879 ] }, { - "id": 503, + "id": 9077, "pos": [ 142, 520 ], "linkIds": [ - 2 + 13880 ] }, { - "id": 504, - "parentId": 503, + "id": 9078, + "parentId": 9077, "pos": [ 924, 520 ], "linkIds": [ - 2 + 13880 ] }, { - "id": 505, + "id": 9079, "pos": [ 142, 532 ], "linkIds": [ - 3 + 13881 ] }, { - "id": 506, - "parentId": 505, + "id": 9080, + "parentId": 9079, "pos": [ 564, 532 ], "linkIds": [ - 3 + 13881 ] }, { - "id": 507, + "id": 9081, "pos": [ 142, 532 ], "linkIds": [ - 4 + 13882 ] }, { - "id": 508, - "parentId": 507, + "id": 9082, + "parentId": 9081, "pos": [ 924, 532 ], "linkIds": [ - 4 + 13882 ] }, { - "id": 509, + "id": 9083, "pos": [ 522, 544 ], "linkIds": [ - 11 + 13889 ] }, { - "id": 510, - "parentId": 509, + "id": 9084, + "parentId": 9083, "pos": [ 1327.2623046875, 544 ], "linkIds": [ - 11 + 13889 ] } ], @@ -7899,10 +8504,10 @@ "id": "1b59f03f-a847-420d-855c-4c97767093d6", "version": 1, "state": { - "lastGroupId": 157, - "lastNodeId": 9019, - "lastLinkId": 13765, - "lastRerouteId": 9052 + "lastGroupId": 158, + "lastNodeId": 9023, + "lastLinkId": 13938, + "lastRerouteId": 9086 }, "revision": 0, "config": {}, @@ -7931,7 +8536,7 @@ "name": "model", "type": "MODEL", "linkIds": [ - 5 + 13896 ], "pos": [ 57.827401620370324, @@ -7943,7 +8548,7 @@ "name": "positive", "type": "CONDITIONING", "linkIds": [ - 6 + 13897 ], "pos": [ 57.827401620370324, @@ -7955,7 +8560,7 @@ "name": "negative", "type": "CONDITIONING", "linkIds": [ - 7 + 13898 ], "pos": [ 57.827401620370324, @@ -7967,7 +8572,7 @@ "name": "latent_image", "type": "LATENT", "linkIds": [ - 8 + 13899 ], "pos": [ 57.827401620370324, @@ -7981,7 +8586,7 @@ "name": "video_latent", "type": "LATENT", "linkIds": [ - 10 + 13901 ], "pos": [ 1185.494924034912, @@ -7993,7 +8598,7 @@ "name": "audio_latent", "type": "LATENT", "linkIds": [ - 11 + 13902 ], "pos": [ 1185.494924034912, @@ -8024,7 +8629,7 @@ "name": "SIGMAS", "type": "SIGMAS", "links": [ - 1 + 13892 ] } ], @@ -8035,7 +8640,10 @@ }, "widgets_values": [ "0.7250, 0.4219, 0.0" - ] + ], + "widgets_values_named": { + "sigmas": "0.7250, 0.4219, 0.0" + } }, { "id": 5209, @@ -8056,19 +8664,19 @@ "localized_name": "model", "name": "model", "type": "MODEL", - "link": 5 + "link": 13896 }, { "localized_name": "positive", "name": "positive", "type": "CONDITIONING", - "link": 6 + "link": 13897 }, { "localized_name": "negative", "name": "negative", "type": "CONDITIONING", - "link": 7 + "link": 13898 } ], "outputs": [ @@ -8077,7 +8685,7 @@ "name": "GUIDER", "type": "GUIDER", "links": [ - 3 + 13894 ] } ], @@ -8088,7 +8696,10 @@ }, "widgets_values": [ 1 - ] + ], + "widgets_values_named": { + "cfg": 1 + } }, { "id": 5210, @@ -8104,7 +8715,7 @@ "flags": { "collapsed": false }, - "order": 2, + "order": 1, "mode": 0, "inputs": [], "outputs": [ @@ -8113,7 +8724,7 @@ "name": "NOISE", "type": "NOISE", "links": [ - 2 + 13893 ] } ], @@ -8125,7 +8736,11 @@ "widgets_values": [ 42, "fixed" - ] + ], + "widgets_values_named": { + "noise_seed": 42, + "control_after_generate": "fixed" + } }, { "id": 5214, @@ -8146,31 +8761,31 @@ "localized_name": "noise", "name": "noise", "type": "NOISE", - "link": 2 + "link": 13893 }, { "localized_name": "guider", "name": "guider", "type": "GUIDER", - "link": 3 + "link": 13894 }, { "localized_name": "sampler", "name": "sampler", "type": "SAMPLER", - "link": 4 + "link": 13895 }, { "localized_name": "sigmas", "name": "sigmas", "type": "SIGMAS", - "link": 1 + "link": 13892 }, { "localized_name": "latent_image", "name": "latent_image", "type": "LATENT", - "link": 8 + "link": 13899 } ], "outputs": [ @@ -8179,7 +8794,7 @@ "name": "output", "type": "LATENT", "links": [ - 9 + 13900 ] }, { @@ -8193,8 +8808,7 @@ "Node name for S&R": "SamplerCustomAdvanced", "cnr_id": "comfy-core", "ver": "0.3.71" - }, - "widgets_values": [] + } }, { "id": 5397, @@ -8215,7 +8829,7 @@ "localized_name": "av_latent", "name": "av_latent", "type": "LATENT", - "link": 9 + "link": 13900 } ], "outputs": [ @@ -8224,7 +8838,7 @@ "name": "video_latent", "type": "LATENT", "links": [ - 10 + 13901 ] }, { @@ -8232,7 +8846,7 @@ "name": "audio_latent", "type": "LATENT", "links": [ - 11 + 13902 ] } ], @@ -8240,8 +8854,7 @@ "Node name for S&R": "LTXVSeparateAVLatent", "cnr_id": "comfy-core", "ver": "0.5.1" - }, - "widgets_values": [] + } }, { "id": 5215, @@ -8255,7 +8868,7 @@ 74 ], "flags": {}, - "order": 1, + "order": 2, "mode": 0, "inputs": [], "outputs": [ @@ -8264,7 +8877,7 @@ "name": "SAMPLER", "type": "SAMPLER", "links": [ - 4 + 13895 ] } ], @@ -8275,13 +8888,16 @@ }, "widgets_values": [ "euler" - ] + ], + "widgets_values_named": { + "sampler_name": "euler" + } } ], "groups": [], "links": [ { - "id": 1, + "id": 13892, "origin_id": 5211, "origin_slot": 0, "target_id": 5214, @@ -8289,7 +8905,7 @@ "type": "SIGMAS" }, { - "id": 2, + "id": 13893, "origin_id": 5210, "origin_slot": 0, "target_id": 5214, @@ -8297,7 +8913,7 @@ "type": "NOISE" }, { - "id": 3, + "id": 13894, "origin_id": 5209, "origin_slot": 0, "target_id": 5214, @@ -8305,7 +8921,7 @@ "type": "GUIDER" }, { - "id": 4, + "id": 13895, "origin_id": 5215, "origin_slot": 0, "target_id": 5214, @@ -8313,7 +8929,7 @@ "type": "SAMPLER" }, { - "id": 5, + "id": 13896, "origin_id": -10, "origin_slot": 0, "target_id": 5209, @@ -8321,7 +8937,7 @@ "type": "MODEL" }, { - "id": 6, + "id": 13897, "origin_id": -10, "origin_slot": 1, "target_id": 5209, @@ -8329,7 +8945,7 @@ "type": "CONDITIONING" }, { - "id": 7, + "id": 13898, "origin_id": -10, "origin_slot": 2, "target_id": 5209, @@ -8337,7 +8953,7 @@ "type": "CONDITIONING" }, { - "id": 8, + "id": 13899, "origin_id": -10, "origin_slot": 3, "target_id": 5214, @@ -8346,7 +8962,7 @@ "parentId": 753 }, { - "id": 9, + "id": 13900, "origin_id": 5214, "origin_slot": 0, "target_id": 5397, @@ -8354,7 +8970,7 @@ "type": "LATENT" }, { - "id": 10, + "id": 13901, "origin_id": 5397, "origin_slot": 0, "target_id": -20, @@ -8362,7 +8978,7 @@ "type": "LATENT" }, { - "id": 11, + "id": 13902, "origin_id": 5397, "origin_slot": 1, "target_id": -20, @@ -8378,7 +8994,7 @@ 448 ], "linkIds": [ - 8 + 13899 ] }, { @@ -8389,7 +9005,7 @@ 448 ], "linkIds": [ - 8 + 13899 ] } ], @@ -8399,10 +9015,10 @@ "id": "f09a2fcf-1b11-4f77-b498-3cc2929dd325", "version": 1, "state": { - "lastGroupId": 157, - "lastNodeId": 9019, - "lastLinkId": 13765, - "lastRerouteId": 9052 + "lastGroupId": 158, + "lastNodeId": 9023, + "lastLinkId": 13938, + "lastRerouteId": 9086 }, "revision": 0, "config": {}, @@ -8431,7 +9047,7 @@ "name": "vae", "type": "VAE", "linkIds": [ - 1 + 13903 ], "pos": [ 94, @@ -8443,7 +9059,7 @@ "name": "samples", "type": "LATENT", "linkIds": [ - 2 + 13904 ], "label": "video latent", "pos": [ @@ -8456,7 +9072,7 @@ "name": "image_b", "type": "IMAGE", "linkIds": [ - 3 + 13905 ], "label": "blend reference", "pos": [ @@ -8469,7 +9085,7 @@ "name": "mask", "type": "MASK", "linkIds": [ - 4 + 13906 ], "pos": [ 94, @@ -8481,7 +9097,7 @@ "name": "tile_size", "type": "INT", "linkIds": [ - 7 + 13909 ], "label": "tile_size", "pos": [ @@ -8494,7 +9110,7 @@ "name": "overlap", "type": "INT", "linkIds": [ - 8 + 13910 ], "label": "overlap", "pos": [ @@ -8507,7 +9123,7 @@ "name": "temporal_size", "type": "INT", "linkIds": [ - 9 + 13911 ], "label": "temporal_size", "pos": [ @@ -8520,7 +9136,7 @@ "name": "temporal_overlap", "type": "INT", "linkIds": [ - 10 + 13912 ], "label": "temporal_overlap", "pos": [ @@ -8535,7 +9151,7 @@ "name": "image", "type": "IMAGE", "linkIds": [ - 5 + 13907 ], "pos": [ 954, @@ -8564,13 +9180,13 @@ "localized_name": "samples", "name": "samples", "type": "LATENT", - "link": 2 + "link": 13904 }, { "localized_name": "vae", "name": "vae", "type": "VAE", - "link": 1 + "link": 13903 }, { "localized_name": "tile_size", @@ -8579,7 +9195,7 @@ "widget": { "name": "tile_size" }, - "link": 7 + "link": 13909 }, { "localized_name": "overlap", @@ -8588,7 +9204,7 @@ "widget": { "name": "overlap" }, - "link": 8 + "link": 13910 }, { "localized_name": "temporal_size", @@ -8597,7 +9213,7 @@ "widget": { "name": "temporal_size" }, - "link": 9 + "link": 13911 }, { "localized_name": "temporal_overlap", @@ -8606,7 +9222,7 @@ "widget": { "name": "temporal_overlap" }, - "link": 10 + "link": 13912 } ], "outputs": [ @@ -8615,7 +9231,7 @@ "name": "IMAGE", "type": "IMAGE", "links": [ - 6 + 13908 ] } ], @@ -8629,7 +9245,13 @@ 64, 128, 32 - ] + ], + "widgets_values_named": { + "tile_size": 512, + "overlap": 64, + "temporal_size": 128, + "temporal_overlap": 32 + } }, { "id": 5266, @@ -8650,19 +9272,19 @@ "localized_name": "image_a", "name": "image_a", "type": "IMAGE", - "link": 6 + "link": 13908 }, { "localized_name": "image_b", "name": "image_b", "type": "IMAGE", - "link": 3 + "link": 13905 }, { "localized_name": "mask", "name": "mask", "type": "MASK", - "link": 4 + "link": 13906 } ], "outputs": [ @@ -8671,7 +9293,7 @@ "name": "image", "type": "IMAGE", "links": [ - 5 + 13907 ] } ], @@ -8681,13 +9303,17 @@ "widgets_values": [ true, 5 - ] + ], + "widgets_values_named": { + "trim_to_shortest": true, + "mask_low_res_dilation": 5 + } } ], "groups": [], "links": [ { - "id": 1, + "id": 13903, "origin_id": -10, "origin_slot": 0, "target_id": 4851, @@ -8695,7 +9321,7 @@ "type": "VAE" }, { - "id": 2, + "id": 13904, "origin_id": -10, "origin_slot": 1, "target_id": 4851, @@ -8703,16 +9329,16 @@ "type": "LATENT" }, { - "id": 3, + "id": 13905, "origin_id": -10, "origin_slot": 2, "target_id": 5266, "target_slot": 1, "type": "IMAGE", - "parentId": 742 + "parentId": 9086 }, { - "id": 4, + "id": 13906, "origin_id": -10, "origin_slot": 3, "target_id": 5266, @@ -8721,7 +9347,7 @@ "parentId": 744 }, { - "id": 5, + "id": 13907, "origin_id": 5266, "origin_slot": 0, "target_id": -20, @@ -8729,7 +9355,7 @@ "type": "IMAGE" }, { - "id": 6, + "id": 13908, "origin_id": 4851, "origin_slot": 0, "target_id": 5266, @@ -8737,7 +9363,7 @@ "type": "IMAGE" }, { - "id": 7, + "id": 13909, "origin_id": -10, "origin_slot": 4, "target_id": 4851, @@ -8745,7 +9371,7 @@ "type": "INT" }, { - "id": 8, + "id": 13910, "origin_id": -10, "origin_slot": 5, "target_id": 4851, @@ -8753,7 +9379,7 @@ "type": "INT" }, { - "id": 9, + "id": 13911, "origin_id": -10, "origin_slot": 6, "target_id": 4851, @@ -8761,7 +9387,7 @@ "type": "INT" }, { - "id": 10, + "id": 13912, "origin_id": -10, "origin_slot": 7, "target_id": 4851, @@ -8771,24 +9397,24 @@ ], "reroutes": [ { - "id": 741, + "id": 9085, "pos": [ 158, 397 ], "linkIds": [ - 3 + 13905 ] }, { - "id": 742, - "parentId": 741, + "id": 9086, + "parentId": 9085, "pos": [ 548, 397 ], "linkIds": [ - 3 + 13905 ] }, { @@ -8798,7 +9424,7 @@ 434 ], "linkIds": [ - 4 + 13906 ] }, { @@ -8809,7 +9435,7 @@ 434 ], "linkIds": [ - 4 + 13906 ] } ], @@ -8819,10 +9445,10 @@ "id": "68dd05a7-f058-439b-b018-2f22e6f2efa8", "version": 1, "state": { - "lastGroupId": 157, - "lastNodeId": 9019, - "lastLinkId": 13765, - "lastRerouteId": 9052 + "lastGroupId": 158, + "lastNodeId": 9023, + "lastLinkId": 13938, + "lastRerouteId": 9086 }, "revision": 0, "config": {}, @@ -8851,7 +9477,7 @@ "name": "vae", "type": "VAE", "linkIds": [ - 1 + 13913 ], "pos": [ 0, @@ -8863,7 +9489,7 @@ "name": "latents", "type": "LATENT", "linkIds": [ - 2 + 13914 ], "label": "video latent", "pos": [ @@ -8876,7 +9502,7 @@ "name": "samples", "type": "LATENT", "linkIds": [ - 3 + 13915 ], "label": "audio latent", "pos": [ @@ -8889,7 +9515,7 @@ "name": "audio_vae", "type": "VAE", "linkIds": [ - 4 + 13916 ], "pos": [ 0, @@ -8901,8 +9527,8 @@ "name": "mask", "type": "MASK", "linkIds": [ - 5, - 7 + 13917, + 13919 ], "pos": [ 0, @@ -8914,7 +9540,7 @@ "name": "images", "type": "IMAGE", "linkIds": [ - 8 + 13920 ], "label": "reference frames", "pos": [ @@ -8927,7 +9553,7 @@ "name": "fps", "type": "FLOAT", "linkIds": [ - 10 + 13922 ], "pos": [ 0, @@ -8939,7 +9565,7 @@ "name": "tile_size", "type": "INT", "linkIds": [ - 14 + 13926 ], "label": "tile_size", "pos": [ @@ -8952,7 +9578,7 @@ "name": "overlap", "type": "INT", "linkIds": [ - 15 + 13927 ], "label": "overlap", "pos": [ @@ -8965,7 +9591,7 @@ "name": "temporal_size", "type": "INT", "linkIds": [ - 16 + 13928 ], "label": "temporal_size", "pos": [ @@ -8978,7 +9604,7 @@ "name": "temporal_overlap", "type": "INT", "linkIds": [ - 17 + 13929 ], "label": "temporal_overlap", "pos": [ @@ -8993,7 +9619,7 @@ "name": "video", "type": "VIDEO", "linkIds": [ - 11 + 13923 ], "pos": [ 0, @@ -9022,13 +9648,13 @@ "localized_name": "samples", "name": "samples", "type": "LATENT", - "link": 2 + "link": 13914 }, { "localized_name": "vae", "name": "vae", "type": "VAE", - "link": 1 + "link": 13913 }, { "localized_name": "tile_size", @@ -9037,7 +9663,7 @@ "widget": { "name": "tile_size" }, - "link": 14 + "link": 13926 }, { "localized_name": "overlap", @@ -9046,7 +9672,7 @@ "widget": { "name": "overlap" }, - "link": 15 + "link": 13927 }, { "localized_name": "temporal_size", @@ -9055,7 +9681,7 @@ "widget": { "name": "temporal_size" }, - "link": 16 + "link": 13928 }, { "localized_name": "temporal_overlap", @@ -9064,7 +9690,7 @@ "widget": { "name": "temporal_overlap" }, - "link": 17 + "link": 13929 } ], "outputs": [ @@ -9073,7 +9699,7 @@ "name": "IMAGE", "type": "IMAGE", "links": [ - 12 + 13924 ] } ], @@ -9085,7 +9711,13 @@ 64, 128, 32 - ] + ], + "widgets_values_named": { + "tile_size": 512, + "overlap": 64, + "temporal_size": 128, + "temporal_overlap": 32 + } }, { "id": 5398, @@ -9106,14 +9738,14 @@ "localized_name": "samples", "name": "samples", "type": "LATENT", - "link": 3 + "link": 13915 }, { "label": "Audio VAE", - "localized_name": "audio_vae", + "localized_name": "Audio VAE", "name": "audio_vae", "type": "VAE", - "link": 4 + "link": 13916 } ], "outputs": [ @@ -9122,7 +9754,7 @@ "name": "Audio", "type": "AUDIO", "links": [ - 13 + 13925 ] } ], @@ -9130,8 +9762,7 @@ "Node name for S&R": "LTXVAudioVAEDecode", "cnr_id": "comfy-core", "ver": "0.24.0" - }, - "widgets_values": [] + } }, { "id": 5226, @@ -9152,19 +9783,19 @@ "localized_name": "image_a", "name": "image_a", "type": "IMAGE", - "link": 12 + "link": 13924 }, { "localized_name": "image_b", "name": "image_b", "type": "IMAGE", - "link": 6 + "link": 13918 }, { "localized_name": "mask", "name": "mask", "type": "MASK", - "link": 7 + "link": 13919 } ], "outputs": [ @@ -9173,7 +9804,7 @@ "name": "image", "type": "IMAGE", "links": [ - 9 + 13921 ] } ], @@ -9183,7 +9814,11 @@ "widgets_values": [ true, 6 - ] + ], + "widgets_values_named": { + "trim_to_shortest": true, + "mask_low_res_dilation": 6 + } }, { "id": 5227, @@ -9194,7 +9829,7 @@ ], "size": [ 210, - 102 + 150 ], "flags": {}, "order": 1, @@ -9204,14 +9839,14 @@ "localized_name": "images", "name": "images", "type": "IMAGE", - "link": 9 + "link": 13921 }, { "localized_name": "audio", "name": "audio", "shape": 7, "type": "AUDIO", - "link": 13 + "link": 13925 }, { "localized_name": "fps", @@ -9220,7 +9855,7 @@ "widget": { "name": "fps" }, - "link": 10 + "link": 13922 } ], "outputs": [ @@ -9229,7 +9864,7 @@ "name": "VIDEO", "type": "VIDEO", "links": [ - 11 + 13923 ] } ], @@ -9240,8 +9875,16 @@ }, "widgets_values": [ 30, - 8 - ] + 8, + "sRGB", + "none" + ], + "widgets_values_named": { + "fps": 30, + "bit_depth": 8, + "color_space": "sRGB", + "codec": "none" + } }, { "id": 5380, @@ -9262,13 +9905,13 @@ "localized_name": "images", "name": "images", "type": "IMAGE", - "link": 8 + "link": 13920 }, { "localized_name": "mask", "name": "mask", "type": "MASK", - "link": 5 + "link": 13917 } ], "outputs": [ @@ -9277,20 +9920,19 @@ "name": "image", "type": "IMAGE", "links": [ - 6 + 13918 ] } ], "properties": { "Node name for S&R": "LTXVInpaintPreprocess" - }, - "widgets_values": [] + } } ], "groups": [], "links": [ { - "id": 1, + "id": 13913, "origin_id": -10, "origin_slot": 0, "target_id": 5387, @@ -9298,7 +9940,7 @@ "type": "VAE" }, { - "id": 2, + "id": 13914, "origin_id": -10, "origin_slot": 1, "target_id": 5387, @@ -9306,7 +9948,7 @@ "type": "LATENT" }, { - "id": 3, + "id": 13915, "origin_id": -10, "origin_slot": 2, "target_id": 5398, @@ -9314,7 +9956,7 @@ "type": "LATENT" }, { - "id": 4, + "id": 13916, "origin_id": -10, "origin_slot": 3, "target_id": 5398, @@ -9322,7 +9964,7 @@ "type": "VAE" }, { - "id": 5, + "id": 13917, "origin_id": -10, "origin_slot": 4, "target_id": 5380, @@ -9330,7 +9972,7 @@ "type": "MASK" }, { - "id": 6, + "id": 13918, "origin_id": 5380, "origin_slot": 0, "target_id": 5226, @@ -9338,7 +9980,7 @@ "type": "IMAGE" }, { - "id": 7, + "id": 13919, "origin_id": -10, "origin_slot": 4, "target_id": 5226, @@ -9347,7 +9989,7 @@ "parentId": 750 }, { - "id": 8, + "id": 13920, "origin_id": -10, "origin_slot": 5, "target_id": 5380, @@ -9355,7 +9997,7 @@ "type": "IMAGE" }, { - "id": 9, + "id": 13921, "origin_id": 5226, "origin_slot": 0, "target_id": 5227, @@ -9363,7 +10005,7 @@ "type": "IMAGE" }, { - "id": 10, + "id": 13922, "origin_id": -10, "origin_slot": 6, "target_id": 5227, @@ -9372,7 +10014,7 @@ "parentId": 746 }, { - "id": 11, + "id": 13923, "origin_id": 5227, "origin_slot": 0, "target_id": -20, @@ -9380,7 +10022,7 @@ "type": "VIDEO" }, { - "id": 12, + "id": 13924, "origin_id": 5387, "origin_slot": 0, "target_id": 5226, @@ -9388,7 +10030,7 @@ "type": "IMAGE" }, { - "id": 13, + "id": 13925, "origin_id": 5398, "origin_slot": 0, "target_id": 5227, @@ -9397,7 +10039,7 @@ "parentId": 748 }, { - "id": 14, + "id": 13926, "origin_id": -10, "origin_slot": 7, "target_id": 5387, @@ -9405,7 +10047,7 @@ "type": "INT" }, { - "id": 15, + "id": 13927, "origin_id": -10, "origin_slot": 8, "target_id": 5387, @@ -9413,7 +10055,7 @@ "type": "INT" }, { - "id": 16, + "id": 13928, "origin_id": -10, "origin_slot": 9, "target_id": 5387, @@ -9421,7 +10063,7 @@ "type": "INT" }, { - "id": 17, + "id": 13929, "origin_id": -10, "origin_slot": 10, "target_id": 5387, @@ -9437,7 +10079,7 @@ 547 ], "linkIds": [ - 10 + 13922 ] }, { @@ -9448,7 +10090,7 @@ 547 ], "linkIds": [ - 10 + 13922 ] }, { @@ -9458,7 +10100,7 @@ 519 ], "linkIds": [ - 13 + 13925 ] }, { @@ -9469,7 +10111,7 @@ 519 ], "linkIds": [ - 13 + 13925 ] }, { @@ -9479,7 +10121,7 @@ 422 ], "linkIds": [ - 7 + 13919 ] }, { @@ -9490,7 +10132,7 @@ 422 ], "linkIds": [ - 7 + 13919 ] } ], @@ -9500,7 +10142,7 @@ }, "config": {}, "extra": { - "frontendVersion": "1.48.7", + "frontendVersion": "1.53.6", "reroutes": [ { "id": 9001, @@ -10049,13 +10691,6 @@ ] } ], - "ds": { - "scale": 0.42336333126390646, - "offset": [ - 5215.851212947477, - -2362.9531834531363 - ] - }, "linkExtensions": [ { "id": 1, @@ -10161,7 +10796,14 @@ "id": 13764, "parentId": 9052 } - ] + ], + "ds": { + "scale": 0.8394328892579358, + "offset": [ + 3231.8197318301327, + -5579.52985681442 + ] + } }, "version": 0.4 } diff --git a/example_workflows/2.5/LTX-2.5_ICLoRA_Motion_Track_Distilled.json b/example_workflows/2.5/LTX-2.5_ICLoRA_Motion_Track_Distilled.json index 25b3d6f..dfc806b 100644 --- a/example_workflows/2.5/LTX-2.5_ICLoRA_Motion_Track_Distilled.json +++ b/example_workflows/2.5/LTX-2.5_ICLoRA_Motion_Track_Distilled.json @@ -502,7 +502,7 @@ "ver": "0.3.56" }, "widgets_values": [ - "", + "example.png", "image" ], "color": "#232", diff --git a/example_workflows/2.5/LTX-2.5_ICLoRA_Outpaint_Two_Stage_Distilled.json b/example_workflows/2.5/LTX-2.5_ICLoRA_Outpaint_Two_Stage_Distilled.json index cbb935f..3be11b9 100644 --- a/example_workflows/2.5/LTX-2.5_ICLoRA_Outpaint_Two_Stage_Distilled.json +++ b/example_workflows/2.5/LTX-2.5_ICLoRA_Outpaint_Two_Stage_Distilled.json @@ -1,8 +1,8 @@ { "id": "93d1aec9-c1fe-4b64-95b8-2a11b9f88b14", "revision": 0, - "last_node_id": 9024, - "last_link_id": 13805, + "last_node_id": 9028, + "last_link_id": 13957, "nodes": [ { "id": 5433, @@ -25,6 +25,9 @@ "widgets_values": [ "## Decode + Blend (stage 1)\n\nDecodes the stage-1 latent with the native tiled VAE decode and\n**Laplacian-pyramid blends** it with the inpaint reference. The blend **dilation**\nis crucial - increase it if low frequencies bleed into the blend area.\n\nTiling is exposed on the node: `512 / 64 / 128 / 32` suits most hardware. Fewer,\nlarger tiles run faster but need more memory." ], + "widgets_values_named": { + "text": "## Decode + Blend (stage 1)\n\nDecodes the stage-1 latent with the native tiled VAE decode and\n**Laplacian-pyramid blends** it with the inpaint reference. The blend **dilation**\nis crucial - increase it if low frequencies bleed into the blend area.\n\nTiling is exposed on the node: `512 / 64 / 128 / 32` suits most hardware. Fewer,\nlarger tiles run faster but need more memory." + }, "color": "#432", "bgcolor": "#653" }, @@ -49,6 +52,9 @@ "widgets_values": [ "## Preprocess - Stage 2\n\nVAE-encodes the blended stage-1 result, re-conditions on the high-res start image, and re-attaches the frozen audio for the high-resolution refinement pass." ], + "widgets_values_named": { + "text": "## Preprocess - Stage 2\n\nVAE-encodes the blended stage-1 result, re-conditions on the high-res start image, and re-attaches the frozen audio for the high-resolution refinement pass." + }, "color": "#432", "bgcolor": "#653" }, @@ -73,6 +79,9 @@ "widgets_values": [ "## Decode + Blend (stage 2)\n\nDecodes the high-res latent (video and audio) with the native tiled VAE decode and\ndoes the **final Laplacian-pyramid blend** with the original video for a seamless\ntransition, then assembles the output video.\n\nTiling is exposed on the node: `512 / 64 / 128 / 32` suits most hardware. Fewer,\nlarger tiles run faster but need more memory." ], + "widgets_values_named": { + "text": "## Decode + Blend (stage 2)\n\nDecodes the high-res latent (video and audio) with the native tiled VAE decode and\ndoes the **final Laplacian-pyramid blend** with the original video for a seamless\ntransition, then assembles the output video.\n\nTiling is exposed on the node: `512 / 64 / 128 / 32` suits most hardware. Fewer,\nlarger tiles run faster but need more memory." + }, "color": "#432", "bgcolor": "#653" }, @@ -189,7 +198,10 @@ }, "widgets_values": [ false - ] + ], + "widgets_values_named": { + "bypass": false + } }, { "id": 9006, @@ -307,7 +319,14 @@ 64, 128, 32 - ] + ], + "widgets_values_named": { + "fps": 24, + "tile_size": 512, + "overlap": 64, + "temporal_size": 128, + "temporal_overlap": 32 + } }, { "id": 9005, @@ -403,7 +422,13 @@ 64, 128, 32 - ] + ], + "widgets_values_named": { + "tile_size": 512, + "overlap": 64, + "temporal_size": 128, + "temporal_overlap": 32 + } }, { "id": 9007, @@ -421,11 +446,14 @@ "mode": 0, "inputs": [], "outputs": [], - "title": "How to use \u2014 Outpainting", + "title": "How to use — Outpainting", "properties": {}, "widgets_values": [ - "# How to Use Outpainting\n\nThis workflow supports **outpainting** (extending the canvas beyond the original frame). You provide a mask telling the model where to generate, and an optional prompt describing what should be there.\n\n## 1. No prompt = the simple case\n\n- without a prompt \u2192 just extends the existing canvas. The model fills the new area to match the surrounding scene.\n\n\n## 2. Prompts describe the scene, not the edit\n\nIt's not an edit tool. Write a regular T2V-style prompt describing the out-painting region.\n\n\n\n## 3. Green leftovers\n\nThe pipeline composites green under the mask before diffusion \u2014 sometimes traces leak through at mask edges. Try a bigger dilation, a different seed, or re-encode the mask losslessly or the blending parameter is very important." + "# How to Use Outpainting\n\nThis workflow supports **outpainting** (extending the canvas beyond the original frame). You provide a mask telling the model where to generate, and an optional prompt describing what should be there.\n\n## 1. No prompt = the simple case\n\n- without a prompt → just extends the existing canvas. The model fills the new area to match the surrounding scene.\n\n\n## 2. Prompts describe the scene, not the edit\n\nIt's not an edit tool. Write a regular T2V-style prompt describing the out-painting region.\n\n\n\n## 3. Green leftovers\n\nThe pipeline composites green under the mask before diffusion — sometimes traces leak through at mask edges. Try a bigger dilation, a different seed, or re-encode the mask losslessly or the blending parameter is very important." ], + "widgets_values_named": { + "text": "# How to Use Outpainting\n\nThis workflow supports **outpainting** (extending the canvas beyond the original frame). You provide a mask telling the model where to generate, and an optional prompt describing what should be there.\n\n## 1. No prompt = the simple case\n\n- without a prompt → just extends the existing canvas. The model fills the new area to match the surrounding scene.\n\n\n## 2. Prompts describe the scene, not the edit\n\nIt's not an edit tool. Write a regular T2V-style prompt describing the out-painting region.\n\n\n\n## 3. Green leftovers\n\nThe pipeline composites green under the mask before diffusion — sometimes traces leak through at mask edges. Try a bigger dilation, a different seed, or re-encode the mask losslessly or the blending parameter is very important." + }, "color": "#432", "bgcolor": "#653" }, @@ -448,8 +476,11 @@ "title": "Model Links", "properties": {}, "widgets_values": [ - "## Model Links\n\n**LTX-2.5 Model Weights**\n\nMake sure to click the \"Agree and Access\" button the first time you download.\n\n- [ Distilled model - ltx-2.5-22b-distilled-transformer-bf16.safetensors ](https://huggingface.co/Lightricks/LTX-2.5/blob/main/diffusion_models/ltx-2.5-22b-distilled-transformer-bf16.safetensors)\n\n- [ IC-LoRA In/Outpainting - ltx-2.3-22b-ic-lora-in-outpainting-0.9.safetensors ](https://huggingface.co/Lightricks/LTX-2.3-22b-IC-LoRA-In-Outpainting/blob/main/ltx-2.3-22b-ic-lora-in-outpainting-0.9.safetensors)\n\n- [ Audio VAE - ltx-2.5-audio-vae-bf16.safetensors ](https://huggingface.co/Lightricks/LTX-2.5/blob/main/vae/ltx-2.5-audio-vae-bf16.safetensors)\n\n- Video VAE - one of these:\n - [ Diffusion decoder ltx-2.5-video-vae-bf16.safetensors ](https://huggingface.co/Lightricks/LTX-2.5/blob/main/vae/ltx-2.5-video-vae-bf16.safetensors) - Best quality\n - [ Convolutional decoder - ltx-2.5-video-vae-conv-bf16.safetensors ](https://huggingface.co/Lightricks/LTX-2.5/blob/main/vae/ltx-2.5-video-vae-conv-bf16.safetensors) - Lower memory & faster\n\n- [ Upscaler - ltx-2.5-latent-spatial-upscaler-x2-bf16-1.0.safetensors ](https://huggingface.co/Lightricks/LTX-2.5/blob/main/latent_upscale_models/ltx-2.5-latent-spatial-upscaler-x2-bf16-1.0.safetensors)\n\n\n\n**Text Encoder - finetuned for LTX-2.5**\n- [gemma4-12b-with-proj-ltx-2.5-bf16.safetensors](https://huggingface.co/Lightricks/LTX-2.5/blob/main/text_encoders/gemma4-12b-with-proj-ltx-2.5-bf16.safetensors)\n\n**Text Enhancer**\n- [Google Gemma 4 E2B IT](https://huggingface.co/Comfy-Org/gemma-4/blob/main/text_encoders/gemma4_e2b_it_bf16.safetensors)\n\n\n**Model Storage Location**\n\n```\n\ud83d\udcc2 ComfyUI/\n\u251c\u2500\u2500 \ud83d\udcc2 models/\n\u2502 \u251c\u2500\u2500 \ud83d\udcc2 text_encoders/\n\u2502 \u2502 \u251c\u2500\u2500 gemma4-12b-with-proj-ltx-2.5-bf16.safetensors\n\u2502 \u2502 \u2514\u2500\u2500 gemma4_e2b_it_bf16.safetensors\n\u2502 \u251c\u2500\u2500 \ud83d\udcc2 loras/\n\u2502 \u2502 \u2514\u2500\u2500 ltx-2.3-22b-ic-lora-in-outpainting-0.9.safetensors\n\u2502 \u251c\u2500\u2500 \ud83d\udcc2 diffusion_models/\n\u2502 \u2502 \u2514\u2500\u2500 ltx-2.5-22b-distilled-transformer-bf16.safetensors\n\u2502 \u251c\u2500\u2500 \ud83d\udcc2 vae/\n\u2502 \u2502 \u2514\u2500\u2500 ltx-2.5-audio-vae-bf16.safetensors\n\u2502 \u2502 \u2514\u2500\u2500 ltx-2.5-video-vae-conv-bf16.safetensors / ltx-2.5-video-vae-bf16.safetensors\n\u2502 \u251c\u2500\u2500 \ud83d\udcc2 latent_upscale_models/\n\u2502 \u2514\u2500\u2500 ltx-2.5-latent-spatial-upscaler-x2-bf16-1.0.safetensors\n```\n\n## Report Issues\nTo report any issues when running this workflow, [go to GitHub](https://github.com/Lightricks/ComfyUI-LTXVideo/issues)\n" + "## Model Links\n\n**LTX-2.5 Model Weights**\n\nMake sure to click the \"Agree and Access\" button the first time you download.\n\n- [ Distilled model - ltx-2.5-22b-distilled-transformer-bf16.safetensors ](https://huggingface.co/Lightricks/LTX-2.5/blob/main/diffusion_models/ltx-2.5-22b-distilled-transformer-bf16.safetensors)\n\n- [ IC-LoRA In/Outpainting - ltx-2.3-22b-ic-lora-in-outpainting-0.9.safetensors ](https://huggingface.co/Lightricks/LTX-2.3-22b-IC-LoRA-In-Outpainting/blob/main/ltx-2.3-22b-ic-lora-in-outpainting-0.9.safetensors)\n\n- [ Audio VAE - ltx-2.5-audio-vae-bf16.safetensors ](https://huggingface.co/Lightricks/LTX-2.5/blob/main/vae/ltx-2.5-audio-vae-bf16.safetensors)\n\n- Video VAE - one of these:\n - [ Diffusion decoder ltx-2.5-video-vae-bf16.safetensors ](https://huggingface.co/Lightricks/LTX-2.5/blob/main/vae/ltx-2.5-video-vae-bf16.safetensors) - Best quality\n - [ Convolutional decoder - ltx-2.5-video-vae-conv-bf16.safetensors ](https://huggingface.co/Lightricks/LTX-2.5/blob/main/vae/ltx-2.5-video-vae-conv-bf16.safetensors) - Lower memory & faster\n\n- [ Upscaler - ltx-2.5-latent-spatial-upscaler-x2-bf16-1.0.safetensors ](https://huggingface.co/Lightricks/LTX-2.5/blob/main/latent_upscale_models/ltx-2.5-latent-spatial-upscaler-x2-bf16-1.0.safetensors)\n\n\n\n**Text Encoder - finetuned for LTX-2.5**\n- [gemma4-12b-with-proj-ltx-2.5-bf16.safetensors](https://huggingface.co/Lightricks/LTX-2.5/blob/main/text_encoders/gemma4-12b-with-proj-ltx-2.5-bf16.safetensors)\n\n**Text Enhancer**\n- [Google Gemma 4 E2B IT](https://huggingface.co/Comfy-Org/gemma-4/blob/main/text_encoders/gemma4_e2b_it_bf16.safetensors)\n\n\n**Model Storage Location**\n\n```\nšŸ“‚ ComfyUI/\nā”œā”€ā”€ šŸ“‚ models/\n│ ā”œā”€ā”€ šŸ“‚ text_encoders/\n│ │ ā”œā”€ā”€ gemma4-12b-with-proj-ltx-2.5-bf16.safetensors\n│ │ └── gemma4_e2b_it_bf16.safetensors\n│ ā”œā”€ā”€ šŸ“‚ loras/\n│ │ └── ltx-2.3-22b-ic-lora-in-outpainting-0.9.safetensors\n│ ā”œā”€ā”€ šŸ“‚ diffusion_models/\n│ │ └── ltx-2.5-22b-distilled-transformer-bf16.safetensors\n│ ā”œā”€ā”€ šŸ“‚ vae/\n│ │ └── ltx-2.5-audio-vae-bf16.safetensors\n│ │ └── ltx-2.5-video-vae-conv-bf16.safetensors / ltx-2.5-video-vae-bf16.safetensors\n│ ā”œā”€ā”€ šŸ“‚ latent_upscale_models/\n│ └── ltx-2.5-latent-spatial-upscaler-x2-bf16-1.0.safetensors\n```\n\n## Report Issues\nTo report any issues when running this workflow, [go to GitHub](https://github.com/Lightricks/ComfyUI-LTXVideo/issues)\n" ], + "widgets_values_named": { + "text": "## Model Links\n\n**LTX-2.5 Model Weights**\n\nMake sure to click the \"Agree and Access\" button the first time you download.\n\n- [ Distilled model - ltx-2.5-22b-distilled-transformer-bf16.safetensors ](https://huggingface.co/Lightricks/LTX-2.5/blob/main/diffusion_models/ltx-2.5-22b-distilled-transformer-bf16.safetensors)\n\n- [ IC-LoRA In/Outpainting - ltx-2.3-22b-ic-lora-in-outpainting-0.9.safetensors ](https://huggingface.co/Lightricks/LTX-2.3-22b-IC-LoRA-In-Outpainting/blob/main/ltx-2.3-22b-ic-lora-in-outpainting-0.9.safetensors)\n\n- [ Audio VAE - ltx-2.5-audio-vae-bf16.safetensors ](https://huggingface.co/Lightricks/LTX-2.5/blob/main/vae/ltx-2.5-audio-vae-bf16.safetensors)\n\n- Video VAE - one of these:\n - [ Diffusion decoder ltx-2.5-video-vae-bf16.safetensors ](https://huggingface.co/Lightricks/LTX-2.5/blob/main/vae/ltx-2.5-video-vae-bf16.safetensors) - Best quality\n - [ Convolutional decoder - ltx-2.5-video-vae-conv-bf16.safetensors ](https://huggingface.co/Lightricks/LTX-2.5/blob/main/vae/ltx-2.5-video-vae-conv-bf16.safetensors) - Lower memory & faster\n\n- [ Upscaler - ltx-2.5-latent-spatial-upscaler-x2-bf16-1.0.safetensors ](https://huggingface.co/Lightricks/LTX-2.5/blob/main/latent_upscale_models/ltx-2.5-latent-spatial-upscaler-x2-bf16-1.0.safetensors)\n\n\n\n**Text Encoder - finetuned for LTX-2.5**\n- [gemma4-12b-with-proj-ltx-2.5-bf16.safetensors](https://huggingface.co/Lightricks/LTX-2.5/blob/main/text_encoders/gemma4-12b-with-proj-ltx-2.5-bf16.safetensors)\n\n**Text Enhancer**\n- [Google Gemma 4 E2B IT](https://huggingface.co/Comfy-Org/gemma-4/blob/main/text_encoders/gemma4_e2b_it_bf16.safetensors)\n\n\n**Model Storage Location**\n\n```\nšŸ“‚ ComfyUI/\nā”œā”€ā”€ šŸ“‚ models/\n│ ā”œā”€ā”€ šŸ“‚ text_encoders/\n│ │ ā”œā”€ā”€ gemma4-12b-with-proj-ltx-2.5-bf16.safetensors\n│ │ └── gemma4_e2b_it_bf16.safetensors\n│ ā”œā”€ā”€ šŸ“‚ loras/\n│ │ └── ltx-2.3-22b-ic-lora-in-outpainting-0.9.safetensors\n│ ā”œā”€ā”€ šŸ“‚ diffusion_models/\n│ │ └── ltx-2.5-22b-distilled-transformer-bf16.safetensors\n│ ā”œā”€ā”€ šŸ“‚ vae/\n│ │ └── ltx-2.5-audio-vae-bf16.safetensors\n│ │ └── ltx-2.5-video-vae-conv-bf16.safetensors / ltx-2.5-video-vae-bf16.safetensors\n│ ā”œā”€ā”€ šŸ“‚ latent_upscale_models/\n│ └── ltx-2.5-latent-spatial-upscaler-x2-bf16-1.0.safetensors\n```\n\n## Report Issues\nTo report any issues when running this workflow, [go to GitHub](https://github.com/Lightricks/ComfyUI-LTXVideo/issues)\n" + }, "color": "#432", "bgcolor": "#653" }, @@ -474,6 +505,9 @@ "widgets_values": [ "## Input Parameters\n\nEncodes the prompt and prepares the two input videos: extracts frames, fps and\naudio, builds the mask (`ImageToMask`), resizes to each stage's resolution and\n**dilates** the mask - set **mask dilation radius** to suit the object.\n\n**Prompt enhancement** is optional. Turn on **Enhance positive prompt** to rewrite\nthe prompt into a fuller description; the workflow picks the image-aware enhancer\nwhen **use image input** is on and the text-only one otherwise. **enhancer_seed**\nmakes that rewrite reproducible. The negative prompt is used as written.\n\n**use image input** also derives `bypass_i2v`, so the optional start image is only\nconditioned on when you actually supply one.\n\n**Save memory (LTX API):** paste a key into **LTX API key** and the prompt is\nencoded and enhanced through the API instead of the local Gemma models. The\nworkflow switches over on its own whenever a key is present - there is nothing to\nun-bypass.\n\nNote: the output **dimensions and length** are derived later in **Preprocess**,\nfrom the masked frames, not here." ], + "widgets_values_named": { + "text": "## Input Parameters\n\nEncodes the prompt and prepares the two input videos: extracts frames, fps and\naudio, builds the mask (`ImageToMask`), resizes to each stage's resolution and\n**dilates** the mask - set **mask dilation radius** to suit the object.\n\n**Prompt enhancement** is optional. Turn on **Enhance positive prompt** to rewrite\nthe prompt into a fuller description; the workflow picks the image-aware enhancer\nwhen **use image input** is on and the text-only one otherwise. **enhancer_seed**\nmakes that rewrite reproducible. The negative prompt is used as written.\n\n**use image input** also derives `bypass_i2v`, so the optional start image is only\nconditioned on when you actually supply one.\n\n**Save memory (LTX API):** paste a key into **LTX API key** and the prompt is\nencoded and enhanced through the API instead of the local Gemma models. The\nworkflow switches over on its own whenever a key is present - there is nothing to\nun-bypass.\n\nNote: the output **dimensions and length** are derived later in **Preprocess**,\nfrom the masked frames, not here." + }, "color": "#432", "bgcolor": "#653" }, @@ -496,8 +530,11 @@ "title": "Preprocess", "properties": {}, "widgets_values": [ - "## Preprocess (stage 1)\n\nMasks the frames (`LTXVInpaintPreprocess`), builds the empty AV latent **at the reference video's size/length** (GetImageSize is here), conditions on the optional start image, injects the IC-LoRA guide, and adds **frozen audio** (VAEEncodeAudio \u2192 SetAudioRefTokens).\n\n*Frozen audio keeps the result consistent with the original sound; remove the audio stream if you don't want that guidance.*" + "## Preprocess (stage 1)\n\nMasks the frames (`LTXVInpaintPreprocess`), builds the empty AV latent **at the reference video's size/length** (GetImageSize is here), conditions on the optional start image, injects the IC-LoRA guide, and adds **frozen audio** (VAEEncodeAudio → SetAudioRefTokens).\n\n*Frozen audio keeps the result consistent with the original sound; remove the audio stream if you don't want that guidance.*" ], + "widgets_values_named": { + "text": "## Preprocess (stage 1)\n\nMasks the frames (`LTXVInpaintPreprocess`), builds the empty AV latent **at the reference video's size/length** (GetImageSize is here), conditions on the optional start image, injects the IC-LoRA guide, and adds **frozen audio** (VAEEncodeAudio → SetAudioRefTokens).\n\n*Frozen audio keeps the result consistent with the original sound; remove the audio stream if you don't want that guidance.*" + }, "color": "#432", "bgcolor": "#653" }, @@ -578,14 +615,17 @@ }, "widgets_values": [ false - ] + ], + "widgets_values_named": { + "bypass": false + } }, { "id": 9010, "type": "PrimitiveInt", "pos": [ - -4268.732437164265, - 3988.4497022550445 + -3910.2968516726064, + 4000.6778342506186 ], "size": [ 270, @@ -614,6 +654,10 @@ 1088, "fixed" ], + "widgets_values_named": { + "value": 1088, + "fixed": "fixed" + }, "color": "#2a363b", "bgcolor": "#3f5159" }, @@ -621,8 +665,8 @@ "id": 9009, "type": "PrimitiveInt", "pos": [ - -4269.286039667585, - 3844.041998607774 + -4253.213611994481, + 3990.4769465119557 ], "size": [ 270, @@ -651,6 +695,10 @@ 1920, "fixed" ], + "widgets_values_named": { + "value": 1920, + "fixed": "fixed" + }, "color": "#2a363b", "bgcolor": "#3f5159" }, @@ -827,6 +875,9 @@ "widgets_values": [ "" ], + "widgets_values_named": { + "value": "" + }, "color": "#322", "bgcolor": "#533" }, @@ -834,8 +885,8 @@ "id": 5429, "type": "PreviewAny", "pos": [ - -3496.992029028006, - 3815.7973589594003 + -3500.099291061963, + 3819.2739834936774 ], "size": [ 311.6901601488511, @@ -863,6 +914,7 @@ "Node name for S&R": "PreviewAny" }, "widgets_values": [], + "widgets_values_named": {}, "color": "#232", "bgcolor": "#353" }, @@ -870,8 +922,8 @@ "id": 5368, "type": "LoadVideo", "pos": [ - -4304.119802258575, - 3227.509586997592 + -4287.834711420336, + 3259.278192128558 ], "size": [ 340, @@ -900,6 +952,10 @@ "", "image" ], + "widgets_values_named": { + "file": "", + "upload": "image" + }, "color": "#232", "bgcolor": "#353" }, @@ -941,6 +997,10 @@ "", "image" ], + "widgets_values_named": { + "image": "", + "upload": "image" + }, "color": "#232", "bgcolor": "#353" }, @@ -980,8 +1040,15 @@ "widgets_values": [ "output", "auto", + "auto", "auto" - ] + ], + "widgets_values_named": { + "filename_prefix": "output", + "format": "auto", + "format.codec": "auto", + "codec": "auto" + } }, { "id": 5404, @@ -1016,6 +1083,9 @@ "widgets_values": [ "" ], + "widgets_values_named": { + "value": "" + }, "color": "#232", "bgcolor": "#353" }, @@ -1213,7 +1283,16 @@ "gemma4-12b-with-proj-ltx-2.5-bf16.safetensors", "ltx-2.3-22b-ic-lora-in-outpainting-0.9.safetensors", "ltx-2.5-22b-distilled-transformer-bf16.safetensors" - ] + ], + "widgets_values_named": { + "audio_vae": "ltx-2.5-audio-vae-bf16.safetensors", + "video_vae": "ltx-2.5-video-vae-bf16.safetensors", + "spacial_latent_upscaler_model": "ltx-2.5-latent-spatial-upscaler-x2-bf16-1.0.safetensors", + "gemma4_e2b_enhancer": "gemma4_e2b_it_bf16.safetensors", + "gemma4_12b_encoder": "gemma4-12b-with-proj-ltx-2.5-bf16.safetensors", + "ic_lora": "ltx-2.3-22b-ic-lora-in-outpainting-0.9.safetensors", + "unet_name": "ltx-2.5-22b-distilled-transformer-bf16.safetensors" + } }, { "id": 5408, @@ -1440,7 +1519,18 @@ 457289196, 1088, "ltx-2.5-22b-distilled-transformer-bf16.safetensors" - ] + ], + "widgets_values_named": { + "positive_prompt": "", + "ltx_api_key": "", + "use image input": false, + "Enhance positive prompt": true, + "Negative prompt": "", + "enhancer_seed": 0, + "target_width": 457289196, + "target_height": 1088, + "ckpt_name": "ltx-2.5-22b-distilled-transformer-bf16.safetensors" + } } ], "links": [ @@ -1524,14 +1614,6 @@ 0, "MODEL" ], - [ - 16, - 9006, - 0, - 5228, - 0, - "VIDEO" - ], [ 18, 5410, @@ -1811,6 +1893,14 @@ 5408, 12, "*" + ], + [ + 16, + 9006, + 0, + 5228, + 0, + "VIDEO" ] ], "groups": [ @@ -1857,10 +1947,10 @@ "id": "43b40f55-109c-4d2f-9e38-e8073a3474eb", "version": 1, "state": { - "lastGroupId": 157, - "lastNodeId": 9024, - "lastLinkId": 13805, - "lastRerouteId": 9055 + "lastGroupId": 158, + "lastNodeId": 9028, + "lastLinkId": 13957, + "lastRerouteId": 9077 }, "revision": 0, "config": {}, @@ -1889,7 +1979,7 @@ "name": "audio_vae", "type": "COMBO", "linkIds": [ - 1 + 13806 ], "label": "audio_vae", "pos": [ @@ -1902,7 +1992,7 @@ "name": "video_vae", "type": "COMBO", "linkIds": [ - 2 + 13807 ], "label": "video_vae", "pos": [ @@ -1941,7 +2031,7 @@ "name": "gemma4_12b_encoder", "type": "COMBO", "linkIds": [ - 7 + 13808 ], "label": "gemma4_12b_encoder", "pos": [ @@ -1954,7 +2044,7 @@ "name": "ic_lora", "type": "COMBO", "linkIds": [ - 8 + 13809 ], "label": "ic_lora", "pos": [ @@ -1983,7 +2073,7 @@ "name": "Audio VAE", "type": "VAE", "linkIds": [ - 10 + 13810 ], "localized_name": "Audio VAE", "label": "Audio VAE", @@ -1997,7 +2087,7 @@ "name": "VAE", "type": "VAE", "linkIds": [ - 11 + 13811 ], "localized_name": "VAE", "label": "VAE", @@ -2039,7 +2129,7 @@ "name": "text enhancer", "type": "CLIP", "linkIds": [ - 14 + 13812 ], "localized_name": "enhancer_clip", "label": "text enhancer", @@ -2053,7 +2143,7 @@ "name": "text_encoder", "type": "CLIP", "linkIds": [ - 15 + 13813 ], "localized_name": "encoder_clip", "label": "text_encoder", @@ -2114,7 +2204,7 @@ "widget": { "name": "vae_name" }, - "link": 1 + "link": 13806 } ], "outputs": [ @@ -2123,7 +2213,7 @@ "name": "VAE", "type": "VAE", "links": [ - 10 + 13810 ] } ], @@ -2140,7 +2230,10 @@ }, "widgets_values": [ "ltx-2.5-audio-vae-bf16.safetensors" - ] + ], + "widgets_values_named": { + "vae_name": "ltx-2.5-audio-vae-bf16.safetensors" + } }, { "id": 5601, @@ -2164,7 +2257,7 @@ "widget": { "name": "vae_name" }, - "link": 2 + "link": 13807 } ], "outputs": [ @@ -2173,7 +2266,7 @@ "name": "VAE", "type": "VAE", "links": [ - 11 + 13811 ] } ], @@ -2190,7 +2283,10 @@ }, "widgets_values": [ "ltx-2.5-video-vae-bf16.safetensors" - ] + ], + "widgets_values_named": { + "vae_name": "ltx-2.5-video-vae-bf16.safetensors" + } }, { "id": 5604, @@ -2243,7 +2339,10 @@ }, "widgets_values": [ "ltx-2.5-latent-spatial-upscaler-x2-bf16-1.0.safetensors" - ] + ], + "widgets_values_named": { + "model_name": "ltx-2.5-latent-spatial-upscaler-x2-bf16-1.0.safetensors" + } }, { "id": 5605, @@ -2276,7 +2375,7 @@ "name": "CLIP", "type": "CLIP", "links": [ - 14 + 13812 ] } ], @@ -2295,7 +2394,12 @@ "gemma4_e2b_it_bf16.safetensors", "ltxv", "default" - ] + ], + "widgets_values_named": { + "clip_name": "gemma4_e2b_it_bf16.safetensors", + "type": "ltxv", + "device": "default" + } }, { "id": 5607, @@ -2325,7 +2429,7 @@ "widget": { "name": "lora_name" }, - "link": 8 + "link": 13809 } ], "outputs": [ @@ -2359,7 +2463,11 @@ "widgets_values": [ "ltx-2.3-22b-ic-lora-in-outpainting-0.9.safetensors", 1 - ] + ], + "widgets_values_named": { + "lora_name": "ltx-2.3-22b-ic-lora-in-outpainting-0.9.safetensors", + "strength_model": 1 + } }, { "id": 5606, @@ -2383,7 +2491,7 @@ "widget": { "name": "clip_name" }, - "link": 7 + "link": 13808 } ], "outputs": [ @@ -2392,7 +2500,7 @@ "name": "CLIP", "type": "CLIP", "links": [ - 15 + 13813 ] } ], @@ -2411,7 +2519,12 @@ "gemma4-12b-with-proj-ltx-2.5-bf16.safetensors", "ltxv", "default" - ] + ], + "widgets_values_named": { + "clip_name": "gemma4-12b-with-proj-ltx-2.5-bf16.safetensors", + "type": "ltxv", + "device": "default" + } }, { "id": 5602, @@ -2461,7 +2574,11 @@ "widgets_values": [ "ltx-2.5-22b-distilled-transformer-bf16.safetensors", "default" - ] + ], + "widgets_values_named": { + "unet_name": "ltx-2.5-22b-distilled-transformer-bf16.safetensors", + "weight_dtype": "default" + } }, { "id": 9020, @@ -2501,7 +2618,7 @@ ], "groups": [ { - "id": 1, + "id": 4, "title": "Load Models - one file per output", "bounding": [ -860, @@ -2515,7 +2632,7 @@ ], "links": [ { - "id": 1, + "id": 13806, "origin_id": -10, "origin_slot": 0, "target_id": 5600, @@ -2523,7 +2640,7 @@ "type": "COMBO" }, { - "id": 2, + "id": 13807, "origin_id": -10, "origin_slot": 1, "target_id": 5601, @@ -2547,7 +2664,7 @@ "type": "COMBO" }, { - "id": 7, + "id": 13808, "origin_id": -10, "origin_slot": 4, "target_id": 5606, @@ -2555,7 +2672,7 @@ "type": "COMBO" }, { - "id": 8, + "id": 13809, "origin_id": -10, "origin_slot": 5, "target_id": 5607, @@ -2571,7 +2688,7 @@ "type": "MODEL" }, { - "id": 10, + "id": 13810, "origin_id": 5600, "origin_slot": 0, "target_id": -20, @@ -2579,7 +2696,7 @@ "type": "VAE" }, { - "id": 11, + "id": 13811, "origin_id": 5601, "origin_slot": 0, "target_id": -20, @@ -2603,7 +2720,7 @@ "type": "LATENT_UPSCALE_MODEL" }, { - "id": 14, + "id": 13812, "origin_id": 5605, "origin_slot": 0, "target_id": -20, @@ -2611,7 +2728,7 @@ "type": "CLIP" }, { - "id": 15, + "id": 13813, "origin_id": 5606, "origin_slot": 0, "target_id": -20, @@ -2657,10 +2774,10 @@ "id": "c9a49931-8154-4596-8a93-d47126ad589a", "version": 1, "state": { - "lastGroupId": 157, - "lastNodeId": 9024, - "lastLinkId": 13805, - "lastRerouteId": 9055 + "lastGroupId": 158, + "lastNodeId": 9028, + "lastLinkId": 13957, + "lastRerouteId": 9077 }, "revision": 0, "config": {}, @@ -2689,9 +2806,9 @@ "name": "positive_prompt", "type": "STRING", "linkIds": [ - 38, - 13810, - 13816, + 13823, + 13830, + 13836, 13798 ], "label": "Positive prompt", @@ -2706,7 +2823,7 @@ "type": "STRING", "linkIds": [ 13758, - 13823 + 13840 ], "label": "LTX API key", "pos": [ @@ -2733,8 +2850,8 @@ "name": "start_image", "type": "IMAGE", "linkIds": [ - 7, - 41 + 13816, + 13824 ], "label": "start image (optional)", "pos": [ @@ -2747,7 +2864,7 @@ "name": "reference_video", "type": "VIDEO", "linkIds": [ - 9 + 13818 ], "label": "reference video", "pos": [ @@ -2760,7 +2877,7 @@ "name": "enhancer_clip", "type": "CLIP", "linkIds": [ - 13809, + 13829, 13772 ], "label": "text enhancer clip", @@ -2774,7 +2891,7 @@ "name": "use image input", "type": "BOOLEAN", "linkIds": [ - 13805 + 13825 ], "label": "use image input", "pos": [ @@ -2787,7 +2904,7 @@ "name": "Enhance positive prompt", "type": "BOOLEAN", "linkIds": [ - 13817, + 13837, 13800 ], "label": "Enhance positive prompt", @@ -2815,8 +2932,8 @@ "name": "enhancer_seed", "type": "INT", "linkIds": [ - 13811, - 13812 + 13831, + 13832 ], "label": "enhancer_seed", "pos": [ @@ -2829,7 +2946,7 @@ "name": "target_width", "type": "INT", "linkIds": [ - 13833 + 13848 ], "localized_name": "target_width", "label": "target_width", @@ -2843,7 +2960,7 @@ "name": "target_height", "type": "INT", "linkIds": [ - 13834 + 13849 ], "localized_name": "target_height", "label": "target_height", @@ -2873,7 +2990,7 @@ "name": "negative_encoded", "type": "CONDITIONING", "linkIds": [ - 13831 + 13846 ], "label": "negative_encoded", "pos": [ @@ -2886,7 +3003,7 @@ "name": "positive_encoded", "type": "CONDITIONING", "linkIds": [ - 13830 + 13845 ], "label": "positive_encoded", "pos": [ @@ -2899,7 +3016,7 @@ "name": "resized start image", "type": "IMAGE", "linkIds": [ - 29 + 13820 ], "label": "resized start image", "pos": [ @@ -2912,7 +3029,7 @@ "name": "mask (stage 1)", "type": "MASK", "linkIds": [ - 13842 + 13857 ], "label": "mask (stage 1)", "pos": [ @@ -2925,7 +3042,7 @@ "name": "mask (stage 2)", "type": "MASK", "linkIds": [ - 13841 + 13856 ], "label": "mask (stage 2)", "pos": [ @@ -2938,7 +3055,7 @@ "name": "reference frames (stage 2)", "type": "IMAGE", "linkIds": [ - 13838 + 13853 ], "label": "reference frames (stage 2)", "pos": [ @@ -2951,7 +3068,7 @@ "name": "reference frames (stage 1)", "type": "IMAGE", "linkIds": [ - 13844 + 13859 ], "label": "reference frames (stage 1)", "pos": [ @@ -2964,7 +3081,7 @@ "name": "reference audio", "type": "AUDIO", "linkIds": [ - 34 + 13957 ], "label": "reference audio", "pos": [ @@ -2977,7 +3094,7 @@ "name": "fps", "type": "FLOAT", "linkIds": [ - 35 + 13822 ], "pos": [ -1492.9895139548019, @@ -2989,7 +3106,7 @@ "name": "effective_positive_prompt", "type": "STRING", "linkIds": [ - 13819 + 13839 ], "label": "effective_positive_prompt", "pos": [ @@ -3002,7 +3119,7 @@ "name": "bypass_i2v", "type": "BOOLEAN", "linkIds": [ - 13807 + 13827 ], "label": "bypass_i2v", "pos": [ @@ -3025,14 +3142,14 @@ 106 ], "flags": {}, - "order": 6, + "order": 5, "mode": 0, "inputs": [ { "localized_name": "input", "name": "input", "type": "IMAGE,MASK", - "link": 7 + "link": 13816 } ], "outputs": [ @@ -3041,7 +3158,7 @@ "name": "resized", "type": "IMAGE", "links": [ - 29 + 13820 ] } ], @@ -3054,7 +3171,12 @@ "scale longer dimension", 1024, "lanczos" - ] + ], + "widgets_values_named": { + "resize_type": "scale longer dimension", + "resize_type.longer_size": 1024, + "scale_method": "lanczos" + } }, { "id": 5371, @@ -3070,53 +3192,58 @@ "flags": { "collapsed": false }, + "order": 11, + "mode": 0, + "inputs": [ + { + "localized_name": "input", + "name": "input", + "type": "IMAGE,MASK", + "link": 13819 + } + ], + "outputs": [ + { + "localized_name": "resized", + "name": "resized", + "type": "IMAGE", + "links": [ + 13847 + ] + } + ], + "properties": { + "Node name for S&R": "ResizeImageMaskNode", + "cnr_id": "comfy-core", + "ver": "0.24.0" + }, + "widgets_values": [ + "scale to multiple", + 64, + "lanczos" + ], + "widgets_values_named": { + "resize_type": "scale to multiple", + "resize_type.multiple": 64, + "scale_method": "lanczos" + } + }, + { + "id": 5399, + "type": "ResizeImageMaskNode", + "pos": [ + -3393, + 5970.136413979002 + ], + "size": [ + 451, + 106 + ], + "flags": { + "collapsed": false + }, "order": 12, "mode": 0, - "inputs": [ - { - "localized_name": "input", - "name": "input", - "type": "IMAGE,MASK", - "link": 21 - } - ], - "outputs": [ - { - "localized_name": "resized", - "name": "resized", - "type": "IMAGE", - "links": [ - 13832 - ] - } - ], - "properties": { - "Node name for S&R": "ResizeImageMaskNode", - "cnr_id": "comfy-core", - "ver": "0.24.0" - }, - "widgets_values": [ - "scale to multiple", - 64, - "lanczos" - ] - }, - { - "id": 5399, - "type": "ResizeImageMaskNode", - "pos": [ - -3393, - 5970.136413979002 - ], - "size": [ - 451, - 106 - ], - "flags": { - "collapsed": false - }, - "order": 13, - "mode": 0, "inputs": [ { "localized_name": "input", @@ -3131,7 +3258,7 @@ "name": "resized", "type": "IMAGE", "links": [ - 21 + 13819 ] } ], @@ -3144,7 +3271,12 @@ "scale shorter dimension", 1024, "lanczos" - ] + ], + "widgets_values_named": { + "resize_type": "scale shorter dimension", + "resize_type.shorter_size": 1024, + "scale_method": "lanczos" + } }, { "id": 5168, @@ -3155,17 +3287,17 @@ ], "size": [ 451, - 86 + 106 ], "flags": {}, - "order": 5, + "order": 4, "mode": 0, "inputs": [ { "localized_name": "video", "name": "video", "type": "VIDEO", - "link": 9 + "link": 13818 } ], "outputs": [ @@ -3174,7 +3306,8 @@ "name": "images", "type": "IMAGE", "links": [ - 20 + 20, + 13954 ] }, { @@ -3182,7 +3315,7 @@ "name": "audio", "type": "AUDIO", "links": [ - 34 + 13956 ] }, { @@ -3190,23 +3323,29 @@ "name": "fps", "type": "FLOAT", "links": [ - 8, - 35 + 13817, + 13822, + 13955 ] }, { "localized_name": "bit_depth", "name": "bit_depth", - "type": "INT", + "type": "COMBO", "links": [] + }, + { + "localized_name": "color_space", + "name": "color_space", + "type": "COMBO", + "links": null } ], "properties": { "Node name for S&R": "GetVideoComponents", "cnr_id": "comfy-core", "ver": "0.18.1" - }, - "widgets_values": [] + } }, { "id": 1241, @@ -3220,20 +3359,20 @@ 78 ], "flags": {}, - "order": 1, + "order": 0, "mode": 0, "inputs": [ { "localized_name": "positive", "name": "positive", "type": "CONDITIONING", - "link": 1 + "link": 13814 }, { "localized_name": "negative", "name": "negative", "type": "CONDITIONING", - "link": 2 + "link": 13815 }, { "localized_name": "frame_rate", @@ -3242,7 +3381,7 @@ "widget": { "name": "frame_rate" }, - "link": 8 + "link": 13817 } ], "outputs": [ @@ -3252,7 +3391,7 @@ "type": "CONDITIONING", "slot_index": 0, "links": [ - 13827 + 13843 ] }, { @@ -3261,7 +3400,7 @@ "type": "CONDITIONING", "slot_index": 1, "links": [ - 13829 + 13844 ] } ], @@ -3272,7 +3411,10 @@ }, "widgets_values": [ 24 - ] + ], + "widgets_values_named": { + "frame_rate": 24 + } }, { "id": 9018, @@ -3286,7 +3428,7 @@ 58 ], "flags": {}, - "order": 21, + "order": 20, "mode": 0, "inputs": [ { @@ -3296,7 +3438,7 @@ "widget": { "name": "value" }, - "link": 13805 + "link": 13825 } ], "outputs": [ @@ -3305,8 +3447,8 @@ "name": "BOOLEAN", "type": "BOOLEAN", "links": [ - 13806, - 13808 + 13826, + 13828 ] } ], @@ -3315,7 +3457,10 @@ }, "widgets_values": [ false - ] + ], + "widgets_values_named": { + "value": false + } }, { "id": 9019, @@ -3329,14 +3474,14 @@ 26 ], "flags": {}, - "order": 22, + "order": 21, "mode": 0, "inputs": [ { "localized_name": "value", "name": "value", "type": "*", - "link": 13806 + "link": 13826 } ], "outputs": [ @@ -3345,15 +3490,14 @@ "name": "BOOLEAN", "type": "BOOLEAN", "links": [ - 13807 + 13827 ] } ], "title": "Not (use image > bypass_i2v)", "properties": { "Node name for S&R": "ComfyNotNode" - }, - "widgets_values": [] + } }, { "id": 5609, @@ -3367,20 +3511,22 @@ 78 ], "flags": {}, - "order": 16, + "order": 15, "mode": 0, "inputs": [ { "localized_name": "on_false", "name": "on_false", + "shape": 7, "type": "STRING", - "link": 13814 + "link": 13834 }, { "localized_name": "on_true", "name": "on_true", + "shape": 7, "type": "STRING", - "link": 13813 + "link": 13833 }, { "localized_name": "switch", @@ -3389,7 +3535,7 @@ "widget": { "name": "switch" }, - "link": 13808 + "link": 13828 } ], "outputs": [ @@ -3398,7 +3544,7 @@ "name": "output", "type": "STRING", "links": [ - 13815 + 13835 ] } ], @@ -3408,34 +3554,39 @@ }, "widgets_values": [ false - ] + ], + "widgets_values_named": { + "switch": false + } }, { "id": 5610, "type": "ComfySwitchNode", "pos": [ - -2886, - 3790 + -2889.461662287582, + 4177.143304292231 ], "size": [ 451, 78 ], "flags": {}, - "order": 17, + "order": 16, "mode": 0, "inputs": [ { "localized_name": "on_false", "name": "on_false", + "shape": 7, "type": "STRING", - "link": 13816 + "link": 13836 }, { "localized_name": "on_true", "name": "on_true", + "shape": 7, "type": "STRING", - "link": 13815 + "link": 13835 }, { "localized_name": "switch", @@ -3444,7 +3595,7 @@ "widget": { "name": "switch" }, - "link": 13817 + "link": 13837 } ], "outputs": [ @@ -3453,8 +3604,8 @@ "name": "output", "type": "STRING", "links": [ - 13818, - 13819 + 13838, + 13839 ] } ], @@ -3464,7 +3615,10 @@ }, "widgets_values": [ false - ] + ], + "widgets_values_named": { + "switch": false + } }, { "id": 5612, @@ -3478,18 +3632,20 @@ 78 ], "flags": {}, - "order": 19, + "order": 18, "mode": 0, "inputs": [ { "localized_name": "on_false", "name": "on_false", + "shape": 7, "type": "CONDITIONING", - "link": 13827 + "link": 13843 }, { "localized_name": "on_true", "name": "on_true", + "shape": 7, "type": "CONDITIONING", "link": 13802 }, @@ -3500,7 +3656,7 @@ "widget": { "name": "switch" }, - "link": 13824 + "link": 13841 } ], "outputs": [ @@ -3509,7 +3665,7 @@ "name": "output", "type": "CONDITIONING", "links": [ - 13830 + 13845 ] } ], @@ -3519,7 +3675,10 @@ }, "widgets_values": [ false - ] + ], + "widgets_values_named": { + "switch": false + } }, { "id": 5613, @@ -3533,18 +3692,20 @@ 78 ], "flags": {}, - "order": 20, + "order": 19, "mode": 0, "inputs": [ { "localized_name": "on_false", "name": "on_false", + "shape": 7, "type": "CONDITIONING", - "link": 13829 + "link": 13844 }, { "localized_name": "on_true", "name": "on_true", + "shape": 7, "type": "CONDITIONING", "link": 13803 }, @@ -3555,7 +3716,7 @@ "widget": { "name": "switch" }, - "link": 13825 + "link": 13842 } ], "outputs": [ @@ -3564,7 +3725,7 @@ "name": "output", "type": "CONDITIONING", "links": [ - 13831 + 13846 ] } ], @@ -3574,7 +3735,10 @@ }, "widgets_values": [ false - ] + ], + "widgets_values_named": { + "switch": false + } }, { "id": 5608, @@ -3585,17 +3749,17 @@ ], "size": [ 451, - 412 + 456 ], "flags": {}, - "order": 15, + "order": 14, "mode": 0, "inputs": [ { "localized_name": "clip", "name": "clip", "type": "CLIP", - "link": 13809 + "link": 13829 }, { "localized_name": "image", @@ -3618,6 +3782,13 @@ "type": "AUDIO", "link": null }, + { + "localized_name": "system_prompt", + "name": "system_prompt", + "shape": 7, + "type": "STRING", + "link": null + }, { "localized_name": "prompt", "name": "prompt", @@ -3625,7 +3796,7 @@ "widget": { "name": "prompt" }, - "link": 13810 + "link": 13830 }, { "localized_name": "seed", @@ -3634,7 +3805,7 @@ "widget": { "name": "sampling_mode.seed" }, - "link": 13811 + "link": 13831 } ], "outputs": [ @@ -3643,8 +3814,14 @@ "name": "generated_text", "type": "STRING", "links": [ - 13814 + 13834 ] + }, + { + "localized_name": "thinking", + "name": "thinking", + "type": "STRING", + "links": null } ], "title": "Positive prompt (t2v) enhancer - TextGenerateLTX2Prompt", @@ -3663,8 +3840,24 @@ 0, 0, false, - true + true, + "auto" ], + "widgets_values_named": { + "prompt": "", + "max_length": 600, + "sampling_mode": "on", + "sampling_mode.temperature": 0.01, + "sampling_mode.top_k": 0, + "sampling_mode.top_p": 1, + "sampling_mode.min_p": 0, + "sampling_mode.repetition_penalty": 1.15, + "sampling_mode.seed": 0, + "sampling_mode.presence_penalty": 0, + "thinking": false, + "use_default_template": true, + "mtp": "auto" + }, "color": "#232", "bgcolor": "#353" }, @@ -3672,22 +3865,22 @@ "id": 5363, "type": "ImagePadForOutpaintTargetSize", "pos": [ - -3150.996745897117, - 3770.580695016483 + -3353.630635901777, + 3961.2043054989895 ], "size": [ 333.648046875, 150 ], "flags": {}, - "order": 9, + "order": 8, "mode": 0, "inputs": [ { "localized_name": "image", "name": "image", "type": "IMAGE", - "link": 13832 + "link": 13847 }, { "localized_name": "mask", @@ -3703,7 +3896,7 @@ "widget": { "name": "target_width" }, - "link": 13833 + "link": 13848 }, { "localized_name": "target_height", @@ -3712,7 +3905,7 @@ "widget": { "name": "target_height" }, - "link": 13834 + "link": 13849 } ], "outputs": [ @@ -3721,7 +3914,7 @@ "name": "IMAGE", "type": "IMAGE", "links": [ - 13835 + 13850 ] }, { @@ -3729,7 +3922,7 @@ "name": "MASK", "type": "MASK", "links": [ - 13836 + 13851 ] } ], @@ -3741,14 +3934,20 @@ 1088, 0, "nearest-exact" - ] + ], + "widgets_values_named": { + "target_width": 1920, + "target_height": 1088, + "feathering": 0, + "upscale_method": "nearest-exact" + } }, { "id": 5360, "type": "ResizeImageMaskNode", "pos": [ - -2750.411843465803, - 3670.0667008292335 + -3351.7630915494265, + 4535.876283065813 ], "size": [ 270, @@ -3757,14 +3956,14 @@ "flags": { "collapsed": false }, - "order": 8, + "order": 7, "mode": 0, "inputs": [ { "localized_name": "input", "name": "input", "type": "IMAGE,MASK", - "link": 13835 + "link": 13850 } ], "outputs": [ @@ -3773,9 +3972,9 @@ "name": "resized", "type": "IMAGE", "links": [ - 13837, - 13838, - 13839 + 13852, + 13853, + 13854 ] } ], @@ -3788,14 +3987,19 @@ "scale to multiple", 64, "lanczos" - ] + ], + "widgets_values_named": { + "resize_type": "scale to multiple", + "resize_type.multiple": 64, + "scale_method": "lanczos" + } }, { "id": 5365, "type": "ResizeImageMaskNode", "pos": [ - -2468.299959631632, - 3835.9485773929637 + -3106.6493602615988, + 4307.976598782902 ], "size": [ 270, @@ -3804,21 +4008,20 @@ "flags": { "collapsed": false }, - "order": 11, + "order": 10, "mode": 0, "inputs": [ { "localized_name": "input", "name": "input", "type": "IMAGE,MASK", - "link": 13836 + "link": 13851 }, { - "label": "match", - "localized_name": "resize_type.match", + "localized_name": "match", "name": "resize_type.match", "type": "IMAGE,MASK", - "link": 13837 + "link": 13852 } ], "outputs": [ @@ -3827,8 +4030,8 @@ "name": "resized", "type": "MASK", "links": [ - 13840, - 13841 + 13855, + 13856 ] } ], @@ -3841,28 +4044,33 @@ "match size", "center", "area" - ] + ], + "widgets_values_named": { + "resize_type": "match size", + "resize_type.crop": "center", + "scale_method": "area" + } }, { "id": 5364, "type": "ResizeImageMaskNode", "pos": [ - -2163.359629272321, - 3848.4068109126906 + -2829.968840195983, + 4542.104232826552 ], "size": [ 270, 106 ], "flags": {}, - "order": 10, + "order": 9, "mode": 0, "inputs": [ { "localized_name": "input", "name": "input", "type": "IMAGE,MASK", - "link": 13840 + "link": 13855 } ], "outputs": [ @@ -3871,8 +4079,8 @@ "name": "resized", "type": "MASK", "links": [ - 13842, - 13843 + 13857, + 13858 ] } ], @@ -3885,35 +4093,39 @@ "scale by multiplier", 0.5, "area" - ] + ], + "widgets_values_named": { + "resize_type": "scale by multiplier", + "resize_type.multiplier": 0.5, + "scale_method": "area" + } }, { "id": 5357, "type": "ResizeImageMaskNode", "pos": [ - -1865.05376412745, - 3675.2847965945525 + -2727.9645559931328, + 4315.628996706153 ], "size": [ 270, 126 ], "flags": {}, - "order": 7, + "order": 6, "mode": 0, "inputs": [ { "localized_name": "input", "name": "input", "type": "IMAGE,MASK", - "link": 13839 + "link": 13854 }, { - "label": "match", - "localized_name": "resize_type.match", + "localized_name": "match", "name": "resize_type.match", "type": "IMAGE,MASK", - "link": 13843 + "link": 13858 } ], "outputs": [ @@ -3922,7 +4134,7 @@ "name": "resized", "type": "IMAGE", "links": [ - 13844 + 13859 ] } ], @@ -3935,21 +4147,26 @@ "match size", "center", "area" - ] + ], + "widgets_values_named": { + "resize_type": "match size", + "resize_type.crop": "center", + "scale_method": "area" + } }, { "id": 5406, "type": "TextGenerateLTX2Prompt", "pos": [ - -3900, - 4248 + -3896.186542764496, + 4291.988440288502 ], "size": [ 451, - 412 + 456 ], "flags": {}, - "order": 14, + "order": 13, "mode": 0, "inputs": [ { @@ -3963,7 +4180,7 @@ "name": "image", "shape": 7, "type": "IMAGE", - "link": 41 + "link": 13824 }, { "localized_name": "video", @@ -3979,6 +4196,13 @@ "type": "AUDIO", "link": null }, + { + "localized_name": "system_prompt", + "name": "system_prompt", + "shape": 7, + "type": "STRING", + "link": null + }, { "localized_name": "prompt", "name": "prompt", @@ -3986,7 +4210,7 @@ "widget": { "name": "prompt" }, - "link": 38 + "link": 13823 }, { "localized_name": "seed", @@ -3995,7 +4219,7 @@ "widget": { "name": "sampling_mode.seed" }, - "link": 13812 + "link": 13832 } ], "outputs": [ @@ -4004,8 +4228,14 @@ "name": "generated_text", "type": "STRING", "links": [ - 13813 + 13833 ] + }, + { + "localized_name": "thinking", + "name": "thinking", + "type": "STRING", + "links": null } ], "title": "Positive prompt enhancer - Generate LTX2 Prompt", @@ -4024,8 +4254,24 @@ 0, 0, false, - true + true, + "auto" ], + "widgets_values_named": { + "prompt": "", + "max_length": 512, + "sampling_mode": "on", + "sampling_mode.temperature": 0.7, + "sampling_mode.top_k": 64, + "sampling_mode.top_p": 0.95, + "sampling_mode.min_p": 0.05, + "sampling_mode.repetition_penalty": 1.05, + "sampling_mode.seed": 0, + "sampling_mode.presence_penalty": 0, + "thinking": false, + "use_default_template": true, + "mtp": "auto" + }, "color": "#232", "bgcolor": "#353" }, @@ -4041,7 +4287,7 @@ 88 ], "flags": {}, - "order": 2, + "order": 1, "mode": 0, "inputs": [ { @@ -4057,7 +4303,7 @@ "widget": { "name": "text" }, - "link": 13818 + "link": 13838 } ], "outputs": [ @@ -4067,7 +4313,7 @@ "type": "CONDITIONING", "slot_index": 0, "links": [ - 1 + 13814 ] } ], @@ -4080,6 +4326,9 @@ "widgets_values": [ "" ], + "widgets_values_named": { + "text": "" + }, "color": "#232", "bgcolor": "#353" }, @@ -4095,7 +4344,7 @@ 120.13641397900165 ], "flags": {}, - "order": 3, + "order": 2, "mode": 0, "inputs": [ { @@ -4121,7 +4370,7 @@ "type": "CONDITIONING", "slot_index": 0, "links": [ - 2 + 13815 ] } ], @@ -4134,6 +4383,9 @@ "widgets_values": [ "pc game, console game, video game, cartoon, childish, ugly" ], + "widgets_values_named": { + "text": "pc game, console game, video game, cartoon, childish, ugly" + }, "color": "#322", "bgcolor": "#533" }, @@ -4149,7 +4401,7 @@ 166 ], "flags": {}, - "order": 18, + "order": 17, "mode": 0, "inputs": [ { @@ -4159,7 +4411,7 @@ "widget": { "name": "string" }, - "link": 13823 + "link": 13840 } ], "outputs": [ @@ -4168,8 +4420,8 @@ "name": "contains", "type": "BOOLEAN", "links": [ - 13824, - 13825 + 13841, + 13842 ] } ], @@ -4181,7 +4433,12 @@ "", "ltxv_", true - ] + ], + "widgets_values_named": { + "string": "", + "substring": "ltxv_", + "case_sensitive": true + } }, { "id": 5022, @@ -4195,7 +4452,7 @@ 58 ], "flags": {}, - "order": 4, + "order": 3, "mode": 0, "inputs": [ { @@ -4227,7 +4484,10 @@ }, "widgets_values": [ "" - ] + ], + "widgets_values_named": { + "value": "" + } }, { "id": 9023, @@ -4241,7 +4501,7 @@ 160 ], "flags": {}, - "order": 23, + "order": 22, "mode": 0, "inputs": [ { @@ -4291,7 +4551,7 @@ ] } ], - "title": "\ud83c\udd5b\ud83c\udd63\ud83c\udd67 Gemma API Text Encode - POSITIVE", + "title": "šŸ…›šŸ…£šŸ…§ Gemma API Text Encode - POSITIVE", "properties": { "Node name for S&R": "GemmaAPITextEncode" }, @@ -4300,7 +4560,13 @@ "", "ltx-2.3-22b-dev.safetensors", "ltx-2.3-22b-dev.safetensors" - ] + ], + "widgets_values_named": { + "api_key": "", + "prompt": "", + "enhance_prompt": "ltx-2.3-22b-dev.safetensors", + "ckpt_name": "ltx-2.3-22b-dev.safetensors" + } }, { "id": 9024, @@ -4314,7 +4580,7 @@ 160 ], "flags": {}, - "order": 22, + "order": 23, "mode": 0, "inputs": [ { @@ -4355,7 +4621,7 @@ ] } ], - "title": "\ud83c\udd5b\ud83c\udd63\ud83c\udd67 Gemma API Text Encode - NEGATIVE", + "title": "šŸ…›šŸ…£šŸ…§ Gemma API Text Encode - NEGATIVE", "properties": { "Node name for S&R": "GemmaAPITextEncode" }, @@ -4364,12 +4630,240 @@ "", "ltx-2.3-22b-dev.safetensors", "ltx-2.3-22b-dev.safetensors" - ] + ], + "widgets_values_named": { + "api_key": "", + "prompt": "", + "enhance_prompt": "ltx-2.3-22b-dev.safetensors", + "ckpt_name": "ltx-2.3-22b-dev.safetensors" + } + }, + { + "id": 9025, + "type": "GetImageSize", + "pos": [ + -3758.4778690277226, + 6304.977864004389 + ], + "size": [ + 210, + 136 + ], + "flags": {}, + "order": 24, + "mode": 0, + "inputs": [ + { + "localized_name": "image", + "name": "image", + "type": "IMAGE", + "link": 13954 + } + ], + "outputs": [ + { + "localized_name": "width", + "name": "width", + "type": "INT", + "links": [] + }, + { + "localized_name": "height", + "name": "height", + "type": "INT", + "links": [] + }, + { + "localized_name": "batch_size", + "name": "batch_size", + "type": "INT", + "links": [ + 13951 + ] + } + ], + "properties": { + "Node name for S&R": "GetImageSize", + "cnr_id": "comfy-core", + "ver": "0.16.0" + } + }, + { + "id": 9026, + "type": "ComfyMathExpression", + "pos": [ + -3504.776055745212, + 6303.350973362067 + ], + "size": [ + 270, + 148 + ], + "flags": {}, + "order": 25, + "mode": 0, + "inputs": [ + { + "label": "a", + "localized_name": "a", + "name": "values.a", + "type": "FLOAT,INT,BOOLEAN", + "link": 13951 + }, + { + "localized_name": "b", + "name": "values.b", + "shape": 7, + "type": "FLOAT,INT,BOOLEAN", + "link": 13955 + }, + { + "localized_name": "c", + "name": "values.c", + "shape": 7, + "type": "FLOAT,INT,BOOLEAN", + "link": null + } + ], + "outputs": [ + { + "localized_name": "FLOAT", + "name": "FLOAT", + "type": "FLOAT", + "links": [ + 13952 + ] + }, + { + "localized_name": "INT", + "name": "INT", + "type": "INT", + "links": [] + }, + { + "localized_name": "BOOL", + "name": "BOOL", + "type": "BOOLEAN", + "links": [] + } + ], + "title": "audio duration = frames / fps", + "properties": { + "Node name for S&R": "ComfyMathExpression", + "cnr_id": "comfy-core" + }, + "widgets_values": [ + "a / b" + ], + "widgets_values_named": { + "expression": "a / b" + } + }, + { + "id": 9027, + "type": "EmptyAudio", + "pos": [ + -3187.504294885731, + 6310.095598911736 + ], + "size": [ + 270, + 110 + ], + "flags": {}, + "order": 26, + "mode": 0, + "inputs": [ + { + "localized_name": "duration", + "name": "duration", + "type": "FLOAT", + "widget": { + "name": "duration" + }, + "link": 13952 + } + ], + "outputs": [ + { + "localized_name": "AUDIO", + "name": "AUDIO", + "type": "AUDIO", + "links": [ + 13953 + ] + } + ], + "title": "silence fallback", + "properties": { + "Node name for S&R": "EmptyAudio", + "cnr_id": "comfy-core" + }, + "widgets_values": [ + 60, + 44100, + 2 + ], + "widgets_values_named": { + "duration": 60, + "sample_rate": 44100, + "channels": 2 + } + }, + { + "id": 9028, + "type": "AudioMerge", + "pos": [ + -2864.331814364349, + 6312.698244151798 + ], + "size": [ + 270, + 110 + ], + "flags": {}, + "order": 27, + "mode": 0, + "inputs": [ + { + "localized_name": "audio1", + "name": "audio1", + "type": "AUDIO", + "link": 13956 + }, + { + "localized_name": "audio2", + "name": "audio2", + "type": "AUDIO", + "link": 13953 + } + ], + "outputs": [ + { + "localized_name": "AUDIO", + "name": "AUDIO", + "type": "AUDIO", + "links": [ + 13957 + ] + } + ], + "title": "use source audio, else silence", + "properties": { + "Node name for S&R": "AudioMerge", + "cnr_id": "comfy-core" + }, + "widgets_values": [ + "add" + ], + "widgets_values_named": { + "merge_method": "add" + } } ], "groups": [ { - "id": 1, + "id": 5, "title": "Start image - resized once, reused by both stages", "bounding": [ -3926, @@ -4381,19 +4875,19 @@ "flags": {} }, { - "id": 2, + "id": 6, "title": "Prompt enhancement - only runs when enhance_positive_prompt is on", "bounding": [ -3926, 3716, - 1517, - 970 + 1551.511084391419, + 1053.7694129998436 ], "color": "#3f789e", "flags": {} }, { - "id": 3, + "id": 7, "title": "Text encoding", "bounding": [ -3926, @@ -4405,7 +4899,7 @@ "flags": {} }, { - "id": 4, + "id": 8, "title": "Prompt encode via the LTX API - used whenever an API key is present", "bounding": [ -3926, @@ -4417,13 +4911,25 @@ "flags": {} }, { - "id": 5, + "id": 9, "title": "Reference and mask videos", "bounding": [ -3926, 5896.136413979002, - 3029.9529459452356, - 568.7554588884977 + 1553.0613477551478, + 222.20235419040364 + ], + "color": "#3f789e", + "flags": {} + }, + { + "id": 158, + "title": "Add silent sound for input video without sound", + "bounding": [ + -3798.0069774106632, + 6200.737849412873, + 1248.2054775184756, + 290.2950671438002 ], "color": "#3f789e", "flags": {} @@ -4431,7 +4937,7 @@ ], "links": [ { - "id": 1, + "id": 13814, "origin_id": 2483, "origin_slot": 0, "target_id": 1241, @@ -4439,7 +4945,7 @@ "type": "CONDITIONING" }, { - "id": 2, + "id": 13815, "origin_id": 2612, "origin_slot": 0, "target_id": 1241, @@ -4447,15 +4953,7 @@ "type": "CONDITIONING" }, { - "id": 7, - "origin_id": -10, - "origin_slot": 3, - "target_id": 5188, - "target_slot": 0, - "type": "IMAGE" - }, - { - "id": 8, + "id": 13817, "origin_id": 5168, "origin_slot": 2, "target_id": 1241, @@ -4463,7 +4961,7 @@ "type": "FLOAT" }, { - "id": 9, + "id": 13818, "origin_id": -10, "origin_slot": 4, "target_id": 5168, @@ -4471,23 +4969,7 @@ "type": "VIDEO" }, { - "id": 20, - "origin_id": 5168, - "origin_slot": 0, - "target_id": 5399, - "target_slot": 0, - "type": "IMAGE" - }, - { - "id": 21, - "origin_id": 5399, - "origin_slot": 0, - "target_id": 5371, - "target_slot": 0, - "type": "IMAGE" - }, - { - "id": 29, + "id": 13820, "origin_id": 5188, "origin_slot": 0, "target_id": -20, @@ -4495,37 +4977,13 @@ "type": "IMAGE" }, { - "id": 34, - "origin_id": 5168, - "origin_slot": 1, - "target_id": -20, - "target_slot": 7, - "type": "AUDIO" - }, - { - "id": 35, + "id": 13822, "origin_id": 5168, "origin_slot": 2, "target_id": -20, "target_slot": 8, "type": "FLOAT" }, - { - "id": 38, - "origin_id": -10, - "origin_slot": 0, - "target_id": 5406, - "target_slot": 4, - "type": "STRING" - }, - { - "id": 41, - "origin_id": -10, - "origin_slot": 3, - "target_id": 5406, - "target_slot": 1, - "type": "IMAGE" - }, { "id": 13758, "origin_id": -10, @@ -4535,7 +4993,7 @@ "type": "STRING" }, { - "id": 13805, + "id": 13825, "origin_id": -10, "origin_slot": 6, "target_id": 9018, @@ -4543,7 +5001,7 @@ "type": "BOOLEAN" }, { - "id": 13806, + "id": 13826, "origin_id": 9018, "origin_slot": 0, "target_id": 9019, @@ -4551,7 +5009,7 @@ "type": "BOOLEAN" }, { - "id": 13807, + "id": 13827, "origin_id": 9019, "origin_slot": 0, "target_id": -20, @@ -4559,7 +5017,7 @@ "type": "BOOLEAN" }, { - "id": 13808, + "id": 13828, "origin_id": 9018, "origin_slot": 0, "target_id": 5609, @@ -4567,48 +5025,15 @@ "type": "BOOLEAN" }, { - "id": 13809, - "origin_id": -10, - "origin_slot": 5, - "target_id": 5608, - "target_slot": 0, - "type": "CLIP" - }, - { - "id": 13810, - "origin_id": -10, - "origin_slot": 0, - "target_id": 5608, - "target_slot": 4, - "type": "STRING" - }, - { - "id": 13811, - "origin_id": -10, - "origin_slot": 9, - "target_id": 5608, - "target_slot": 5, - "type": "INT" - }, - { - "id": 13812, - "origin_id": -10, - "origin_slot": 9, - "target_id": 5406, - "target_slot": 5, - "type": "INT" - }, - { - "id": 13813, + "id": 13833, "origin_id": 5406, "origin_slot": 0, "target_id": 5609, "target_slot": 1, - "type": "STRING", - "parentId": 516 + "type": "STRING" }, { - "id": 13814, + "id": 13834, "origin_id": 5608, "origin_slot": 0, "target_id": 5609, @@ -4616,7 +5041,7 @@ "type": "STRING" }, { - "id": 13815, + "id": 13835, "origin_id": 5609, "origin_slot": 0, "target_id": 5610, @@ -4624,25 +5049,23 @@ "type": "STRING" }, { - "id": 13816, + "id": 13836, "origin_id": -10, "origin_slot": 0, "target_id": 5610, "target_slot": 0, - "type": "STRING", - "parentId": 518 + "type": "STRING" }, { - "id": 13817, + "id": 13837, "origin_id": -10, "origin_slot": 7, "target_id": 5610, "target_slot": 2, - "type": "BOOLEAN", - "parentId": 520 + "type": "BOOLEAN" }, { - "id": 13818, + "id": 13838, "origin_id": 5610, "origin_slot": 0, "target_id": 2483, @@ -4650,7 +5073,7 @@ "type": "STRING" }, { - "id": 13819, + "id": 13839, "origin_id": 5610, "origin_slot": 0, "target_id": -20, @@ -4658,16 +5081,15 @@ "type": "STRING" }, { - "id": 13823, + "id": 13840, "origin_id": -10, "origin_slot": 1, "target_id": 5611, "target_slot": 0, - "type": "STRING", - "parentId": 524 + "type": "STRING" }, { - "id": 13824, + "id": 13841, "origin_id": 5611, "origin_slot": 0, "target_id": 5612, @@ -4675,7 +5097,7 @@ "type": "BOOLEAN" }, { - "id": 13825, + "id": 13842, "origin_id": 5611, "origin_slot": 0, "target_id": 5613, @@ -4684,7 +5106,7 @@ "parentId": 526 }, { - "id": 13827, + "id": 13843, "origin_id": 1241, "origin_slot": 0, "target_id": 5612, @@ -4692,7 +5114,7 @@ "type": "CONDITIONING" }, { - "id": 13829, + "id": 13844, "origin_id": 1241, "origin_slot": 1, "target_id": 5613, @@ -4700,7 +5122,7 @@ "type": "CONDITIONING" }, { - "id": 13830, + "id": 13845, "origin_id": 5612, "origin_slot": 0, "target_id": -20, @@ -4708,7 +5130,7 @@ "type": "CONDITIONING" }, { - "id": 13831, + "id": 13846, "origin_id": 5613, "origin_slot": 0, "target_id": -20, @@ -4716,7 +5138,7 @@ "type": "CONDITIONING" }, { - "id": 13832, + "id": 13847, "origin_id": 5371, "origin_slot": 0, "target_id": 5363, @@ -4724,7 +5146,7 @@ "type": "IMAGE" }, { - "id": 13833, + "id": 13848, "origin_id": -10, "origin_slot": 10, "target_id": 5363, @@ -4732,7 +5154,7 @@ "type": "INT" }, { - "id": 13834, + "id": 13849, "origin_id": -10, "origin_slot": 11, "target_id": 5363, @@ -4740,31 +5162,7 @@ "type": "INT" }, { - "id": 13835, - "origin_id": 5363, - "origin_slot": 0, - "target_id": 5360, - "target_slot": 0, - "type": "IMAGE" - }, - { - "id": 13836, - "origin_id": 5363, - "origin_slot": 1, - "target_id": 5365, - "target_slot": 0, - "type": "MASK" - }, - { - "id": 13837, - "origin_id": 5360, - "origin_slot": 0, - "target_id": 5365, - "target_slot": 1, - "type": "IMAGE" - }, - { - "id": 13838, + "id": 13853, "origin_id": 5360, "origin_slot": 0, "target_id": -20, @@ -4772,23 +5170,7 @@ "type": "IMAGE" }, { - "id": 13839, - "origin_id": 5360, - "origin_slot": 0, - "target_id": 5357, - "target_slot": 0, - "type": "IMAGE" - }, - { - "id": 13840, - "origin_id": 5365, - "origin_slot": 0, - "target_id": 5364, - "target_slot": 0, - "type": "MASK" - }, - { - "id": 13841, + "id": 13856, "origin_id": 5365, "origin_slot": 0, "target_id": -20, @@ -4796,7 +5178,7 @@ "type": "MASK" }, { - "id": 13842, + "id": 13857, "origin_id": 5364, "origin_slot": 0, "target_id": -20, @@ -4804,15 +5186,7 @@ "type": "MASK" }, { - "id": 13843, - "origin_id": 5364, - "origin_slot": 0, - "target_id": 5357, - "target_slot": 1, - "type": "MASK" - }, - { - "id": 13844, + "id": 13859, "origin_id": 5357, "origin_slot": 0, "target_id": -20, @@ -4827,14 +5201,6 @@ "target_slot": 1, "type": "STRING" }, - { - "id": 13772, - "origin_id": -10, - "origin_slot": 5, - "target_id": 5406, - "target_slot": 0, - "type": "CLIP" - }, { "id": 13773, "origin_id": -10, @@ -4876,15 +5242,6 @@ "target_slot": 0, "type": "STRING" }, - { - "id": 13797, - "origin_id": -10, - "origin_slot": 12, - "target_id": 9024, - "target_slot": 2, - "type": "COMBO", - "parentId": 9055 - }, { "id": 13798, "origin_id": -10, @@ -4924,93 +5281,202 @@ "target_id": 5613, "target_slot": 1, "type": "CONDITIONING" + }, + { + "id": 13952, + "origin_id": 9026, + "origin_slot": 0, + "target_id": 9027, + "target_slot": 0, + "type": "FLOAT" + }, + { + "id": 13953, + "origin_id": 9027, + "origin_slot": 0, + "target_id": 9028, + "target_slot": 1, + "type": "AUDIO" + }, + { + "id": 13954, + "origin_id": 5168, + "origin_slot": 0, + "target_id": 9025, + "target_slot": 0, + "type": "IMAGE" + }, + { + "id": 13956, + "origin_id": 5168, + "origin_slot": 1, + "target_id": 9028, + "target_slot": 0, + "type": "AUDIO" + }, + { + "id": 13957, + "origin_id": 9028, + "origin_slot": 0, + "target_id": -20, + "target_slot": 7, + "type": "AUDIO" + }, + { + "id": 13797, + "origin_id": -10, + "origin_slot": 12, + "target_id": 9024, + "target_slot": 2, + "type": "COMBO", + "parentId": 9055 + }, + { + "id": 13816, + "origin_id": -10, + "origin_slot": 3, + "target_id": 5188, + "target_slot": 0, + "type": "IMAGE" + }, + { + "id": 13819, + "origin_id": 5399, + "origin_slot": 0, + "target_id": 5371, + "target_slot": 0, + "type": "IMAGE" + }, + { + "id": 20, + "origin_id": 5168, + "origin_slot": 0, + "target_id": 5399, + "target_slot": 0, + "type": "IMAGE" + }, + { + "id": 13829, + "origin_id": -10, + "origin_slot": 5, + "target_id": 5608, + "target_slot": 0, + "type": "CLIP" + }, + { + "id": 13830, + "origin_id": -10, + "origin_slot": 0, + "target_id": 5608, + "target_slot": 5, + "type": "STRING" + }, + { + "id": 13831, + "origin_id": -10, + "origin_slot": 9, + "target_id": 5608, + "target_slot": 6, + "type": "INT" + }, + { + "id": 13850, + "origin_id": 5363, + "origin_slot": 0, + "target_id": 5360, + "target_slot": 0, + "type": "IMAGE" + }, + { + "id": 13851, + "origin_id": 5363, + "origin_slot": 1, + "target_id": 5365, + "target_slot": 0, + "type": "MASK" + }, + { + "id": 13852, + "origin_id": 5360, + "origin_slot": 0, + "target_id": 5365, + "target_slot": 1, + "type": "IMAGE" + }, + { + "id": 13855, + "origin_id": 5365, + "origin_slot": 0, + "target_id": 5364, + "target_slot": 0, + "type": "MASK" + }, + { + "id": 13854, + "origin_id": 5360, + "origin_slot": 0, + "target_id": 5357, + "target_slot": 0, + "type": "IMAGE" + }, + { + "id": 13858, + "origin_id": 5364, + "origin_slot": 0, + "target_id": 5357, + "target_slot": 1, + "type": "MASK" + }, + { + "id": 13772, + "origin_id": -10, + "origin_slot": 5, + "target_id": 5406, + "target_slot": 0, + "type": "CLIP" + }, + { + "id": 13824, + "origin_id": -10, + "origin_slot": 3, + "target_id": 5406, + "target_slot": 1, + "type": "IMAGE" + }, + { + "id": 13823, + "origin_id": -10, + "origin_slot": 0, + "target_id": 5406, + "target_slot": 5, + "type": "STRING" + }, + { + "id": 13832, + "origin_id": -10, + "origin_slot": 9, + "target_id": 5406, + "target_slot": 6, + "type": "INT" + }, + { + "id": 13951, + "origin_id": 9025, + "origin_slot": 2, + "target_id": 9026, + "target_slot": 0, + "type": "INT" + }, + { + "id": 13955, + "origin_id": 5168, + "origin_slot": 2, + "target_id": 9026, + "target_slot": 1, + "type": "FLOAT" } ], "reroutes": [ - { - "id": 515, - "pos": [ - -3425, - 5172 - ], - "linkIds": [ - 13813 - ] - }, - { - "id": 516, - "parentId": 515, - "pos": [ - -3417, - 5172 - ], - "linkIds": [ - 13813 - ] - }, - { - "id": 517, - "pos": [ - -4077.35546875, - 6624 - ], - "linkIds": [ - 13816 - ] - }, - { - "id": 518, - "parentId": 517, - "pos": [ - -2926, - 6624 - ], - "linkIds": [ - 13816 - ] - }, - { - "id": 519, - "pos": [ - -4077.35546875, - 6648 - ], - "linkIds": [ - 13817 - ] - }, - { - "id": 520, - "parentId": 519, - "pos": [ - -2926, - 6648 - ], - "linkIds": [ - 13817 - ] - }, - { - "id": 523, - "pos": [ - -4045.35546875, - 6250 - ], - "linkIds": [ - 13823 - ] - }, - { - "id": 524, - "parentId": 523, - "pos": [ - -4028, - 6250 - ], - "linkIds": [ - 13823 - ] - }, { "id": 525, "pos": [ @@ -5018,7 +5484,7 @@ 5806.840529449132 ], "linkIds": [ - 13825 + 13842 ] }, { @@ -5029,7 +5495,7 @@ 5798.673645265262 ], "linkIds": [ - 13825 + 13842 ] }, { @@ -5050,10 +5516,10 @@ "id": "e8498d2a-2b93-4e5f-b5bb-62240585529c", "version": 1, "state": { - "lastGroupId": 157, - "lastNodeId": 9024, - "lastLinkId": 13805, - "lastRerouteId": 9055 + "lastGroupId": 158, + "lastNodeId": 9028, + "lastLinkId": 13957, + "lastRerouteId": 9077 }, "revision": 0, "config": {}, @@ -5082,8 +5548,8 @@ "name": "vae", "type": "VAE", "linkIds": [ - 2, - 7 + 13861, + 13866 ], "pos": [ 36.02728561549314, @@ -5095,7 +5561,7 @@ "name": "negative", "type": "CONDITIONING", "linkIds": [ - 8 + 13867 ], "pos": [ 36.02728561549314, @@ -5107,7 +5573,7 @@ "name": "positive", "type": "CONDITIONING", "linkIds": [ - 9 + 13868 ], "pos": [ 36.02728561549314, @@ -5119,7 +5585,7 @@ "name": "bypass", "type": "BOOLEAN", "linkIds": [ - 10 + 13869 ], "label": "bypass start image", "pos": [ @@ -5132,7 +5598,7 @@ "name": "mask", "type": "MASK", "linkIds": [ - 11 + 13870 ], "pos": [ 36.02728561549314, @@ -5144,7 +5610,7 @@ "name": "images", "type": "IMAGE", "linkIds": [ - 13 + 13872 ], "label": "reference frames", "pos": [ @@ -5157,7 +5623,7 @@ "name": "image", "type": "IMAGE", "linkIds": [ - 15 + 13874 ], "label": "start image", "pos": [ @@ -5170,7 +5636,7 @@ "name": "audio_vae", "type": "VAE", "linkIds": [ - 19 + 13878 ], "pos": [ 36.02728561549314, @@ -5182,7 +5648,7 @@ "name": "audio", "type": "AUDIO", "linkIds": [ - 20 + 13879 ], "label": "reference audio", "pos": [ @@ -5197,7 +5663,7 @@ "name": "positive", "type": "CONDITIONING", "linkIds": [ - 24 + 13882 ], "pos": [ 2128.413066506762, @@ -5234,7 +5700,7 @@ "name": "latent", "type": "LATENT", "linkIds": [ - 27 + 13883 ], "pos": [ 2128.413066506762, @@ -5266,7 +5732,7 @@ "widget": { "name": "width" }, - "link": 3 + "link": 13862 }, { "localized_name": "height", @@ -5275,7 +5741,7 @@ "widget": { "name": "height" }, - "link": 4 + "link": 13863 }, { "localized_name": "length", @@ -5284,7 +5750,7 @@ "widget": { "name": "length" }, - "link": 5 + "link": 13864 } ], "outputs": [ @@ -5293,7 +5759,7 @@ "name": "LATENT", "type": "LATENT", "links": [ - 1 + 13860 ] } ], @@ -5307,7 +5773,13 @@ 544, 121, 1 - ] + ], + "widgets_values_named": { + "width": 960, + "height": 544, + "length": 121, + "batch_size": 1 + } }, { "id": 5054, @@ -5328,7 +5800,7 @@ "localized_name": "image", "name": "image", "type": "IMAGE", - "link": 14 + "link": 13873 } ], "outputs": [ @@ -5337,7 +5809,7 @@ "name": "width", "type": "INT", "links": [ - 3 + 13862 ] }, { @@ -5345,7 +5817,7 @@ "name": "height", "type": "INT", "links": [ - 4 + 13863 ] }, { @@ -5353,7 +5825,7 @@ "name": "batch_size", "type": "INT", "links": [ - 5 + 13864 ] } ], @@ -5361,8 +5833,7 @@ "Node name for S&R": "GetImageSize", "cnr_id": "comfy-core", "ver": "0.16.0" - }, - "widgets_values": [] + } }, { "id": 5378, @@ -5383,13 +5854,13 @@ "localized_name": "images", "name": "images", "type": "IMAGE", - "link": 13 + "link": 13872 }, { "localized_name": "mask", "name": "mask", "type": "MASK", - "link": 11 + "link": 13870 } ], "outputs": [ @@ -5398,16 +5869,15 @@ "name": "image", "type": "IMAGE", "links": [ - 12, - 14, - 26 + 26, + 13871, + 13873 ] } ], "properties": { "Node name for S&R": "LTXVInpaintPreprocess" - }, - "widgets_values": [] + } }, { "id": 3159, @@ -5428,19 +5898,19 @@ "localized_name": "vae", "name": "vae", "type": "VAE", - "link": 2 + "link": 13861 }, { "localized_name": "image", "name": "image", "type": "IMAGE", - "link": 16 + "link": 13875 }, { "localized_name": "latent", "name": "latent", "type": "LATENT", - "link": 1 + "link": 13860 }, { "localized_name": "bypass", @@ -5450,7 +5920,7 @@ "widget": { "name": "bypass" }, - "link": 10 + "link": 13869 } ], "outputs": [ @@ -5459,7 +5929,7 @@ "name": "latent", "type": "LATENT", "links": [ - 6 + 13865 ] } ], @@ -5469,7 +5939,11 @@ "widgets_values": [ 0.7, false - ] + ], + "widgets_values_named": { + "strength": 0.7, + "bypass": false + } }, { "id": 5114, @@ -5480,7 +5954,7 @@ ], "size": [ 330, - 326 + 374 ], "flags": {}, "order": 3, @@ -5490,31 +5964,31 @@ "localized_name": "positive", "name": "positive", "type": "CONDITIONING", - "link": 9 + "link": 13868 }, { "localized_name": "negative", "name": "negative", "type": "CONDITIONING", - "link": 8 + "link": 13867 }, { "localized_name": "vae", "name": "vae", "type": "VAE", - "link": 7 + "link": 13866 }, { "localized_name": "latent", "name": "latent", "type": "LATENT", - "link": 6 + "link": 13865 }, { "localized_name": "image", "name": "image", "type": "IMAGE", - "link": 12 + "link": 13871 }, { "localized_name": "attention_mask", @@ -5531,7 +6005,7 @@ "type": "CONDITIONING", "links": [ 22, - 24 + 13882 ] }, { @@ -5539,8 +6013,8 @@ "name": "negative", "type": "CONDITIONING", "links": [ - 23, - 25 + 25, + 13881 ] }, { @@ -5548,7 +6022,7 @@ "name": "latent", "type": "LATENT", "links": [ - 21 + 13880 ] } ], @@ -5563,8 +6037,22 @@ false, 256, 64, - 1 - ] + 1, + false, + 97 + ], + "widgets_values_named": { + "frame_idx": 0, + "strength": 1, + "latent_downscale_factor": 1, + "crop": "disabled", + "use_tiled_encode": false, + "tile_size": 256, + "tile_overlap": 64, + "attention_strength": 1, + "use_streaming": false, + "tile_frames": 97 + } }, { "id": 5390, @@ -5591,13 +6079,13 @@ "localized_name": "negative", "name": "negative", "type": "CONDITIONING", - "link": 23 + "link": 13881 }, { "localized_name": "audio_latent", "name": "audio_latent", "type": "LATENT", - "link": 17 + "link": 13876 } ], "outputs": [ @@ -5618,14 +6106,13 @@ "name": "frozen_audio", "type": "LATENT", "links": [ - 18 + 13877 ] } ], "properties": { "Node name for S&R": "LTXVSetAudioRefTokens" - }, - "widgets_values": [] + } }, { "id": 5391, @@ -5646,13 +6133,13 @@ "localized_name": "video_latent", "name": "video_latent", "type": "LATENT", - "link": 21 + "link": 13880 }, { "localized_name": "audio_latent", "name": "audio_latent", "type": "LATENT", - "link": 18 + "link": 13877 } ], "outputs": [ @@ -5661,7 +6148,7 @@ "name": "latent", "type": "LATENT", "links": [ - 27 + 13883 ] } ], @@ -5669,8 +6156,7 @@ "Node name for S&R": "LTXVConcatAVLatent", "cnr_id": "comfy-core", "ver": "0.5.1" - }, - "widgets_values": [] + } }, { "id": 5389, @@ -5691,13 +6177,13 @@ "localized_name": "audio", "name": "audio", "type": "AUDIO", - "link": 20 + "link": 13879 }, { "localized_name": "vae", "name": "vae", "type": "VAE", - "link": 19 + "link": 13878 } ], "outputs": [ @@ -5706,7 +6192,7 @@ "name": "LATENT", "type": "LATENT", "links": [ - 17 + 13876 ] } ], @@ -5714,8 +6200,7 @@ "Node name for S&R": "VAEEncodeAudio", "cnr_id": "comfy-core", "ver": "0.24.0" - }, - "widgets_values": [] + } }, { "id": 5388, @@ -5736,7 +6221,7 @@ "localized_name": "image", "name": "image", "type": "IMAGE", - "link": 15 + "link": 13874 } ], "outputs": [ @@ -5745,7 +6230,7 @@ "name": "output_image", "type": "IMAGE", "links": [ - 16 + 13875 ] } ], @@ -5756,13 +6241,16 @@ }, "widgets_values": [ 18 - ] + ], + "widgets_values_named": { + "img_compression": 18 + } } ], "groups": [], "links": [ { - "id": 1, + "id": 13860, "origin_id": 3059, "origin_slot": 0, "target_id": 3159, @@ -5770,7 +6258,7 @@ "type": "LATENT" }, { - "id": 2, + "id": 13861, "origin_id": -10, "origin_slot": 0, "target_id": 3159, @@ -5779,7 +6267,7 @@ "parentId": 502 }, { - "id": 3, + "id": 13862, "origin_id": 5054, "origin_slot": 0, "target_id": 3059, @@ -5787,7 +6275,7 @@ "type": "INT" }, { - "id": 4, + "id": 13863, "origin_id": 5054, "origin_slot": 1, "target_id": 3059, @@ -5795,7 +6283,7 @@ "type": "INT" }, { - "id": 5, + "id": 13864, "origin_id": 5054, "origin_slot": 2, "target_id": 3059, @@ -5803,7 +6291,7 @@ "type": "INT" }, { - "id": 6, + "id": 13865, "origin_id": 3159, "origin_slot": 0, "target_id": 5114, @@ -5811,7 +6299,7 @@ "type": "LATENT" }, { - "id": 7, + "id": 13866, "origin_id": -10, "origin_slot": 0, "target_id": 5114, @@ -5820,7 +6308,7 @@ "parentId": 504 }, { - "id": 8, + "id": 13867, "origin_id": -10, "origin_slot": 1, "target_id": 5114, @@ -5829,7 +6317,7 @@ "parentId": 506 }, { - "id": 9, + "id": 13868, "origin_id": -10, "origin_slot": 2, "target_id": 5114, @@ -5838,16 +6326,7 @@ "parentId": 508 }, { - "id": 10, - "origin_id": -10, - "origin_slot": 3, - "target_id": 3159, - "target_slot": 3, - "type": "BOOLEAN", - "parentId": 510 - }, - { - "id": 11, + "id": 13870, "origin_id": -10, "origin_slot": 4, "target_id": 5378, @@ -5855,7 +6334,7 @@ "type": "MASK" }, { - "id": 12, + "id": 13871, "origin_id": 5378, "origin_slot": 0, "target_id": 5114, @@ -5864,7 +6343,7 @@ "parentId": 512 }, { - "id": 13, + "id": 13872, "origin_id": -10, "origin_slot": 5, "target_id": 5378, @@ -5872,7 +6351,7 @@ "type": "IMAGE" }, { - "id": 14, + "id": 13873, "origin_id": 5378, "origin_slot": 0, "target_id": 5054, @@ -5880,7 +6359,7 @@ "type": "IMAGE" }, { - "id": 15, + "id": 13874, "origin_id": -10, "origin_slot": 6, "target_id": 5388, @@ -5888,7 +6367,7 @@ "type": "IMAGE" }, { - "id": 16, + "id": 13875, "origin_id": 5388, "origin_slot": 0, "target_id": 3159, @@ -5897,16 +6376,16 @@ "parentId": 514 }, { - "id": 17, + "id": 13876, "origin_id": 5389, "origin_slot": 0, "target_id": 5390, "target_slot": 2, "type": "LATENT", - "parentId": 516 + "parentId": 9057 }, { - "id": 18, + "id": 13877, "origin_id": 5390, "origin_slot": 2, "target_id": 5391, @@ -5914,7 +6393,7 @@ "type": "LATENT" }, { - "id": 19, + "id": 13878, "origin_id": -10, "origin_slot": 7, "target_id": 5389, @@ -5922,7 +6401,7 @@ "type": "VAE" }, { - "id": 20, + "id": 13879, "origin_id": -10, "origin_slot": 8, "target_id": 5389, @@ -5930,13 +6409,13 @@ "type": "AUDIO" }, { - "id": 21, + "id": 13880, "origin_id": 5114, "origin_slot": 2, "target_id": 5391, "target_slot": 0, "type": "LATENT", - "parentId": 518 + "parentId": 9059 }, { "id": 22, @@ -5947,7 +6426,7 @@ "type": "CONDITIONING" }, { - "id": 23, + "id": 13881, "origin_id": 5114, "origin_slot": 1, "target_id": 5390, @@ -5955,13 +6434,13 @@ "type": "CONDITIONING" }, { - "id": 24, + "id": 13882, "origin_id": 5114, "origin_slot": 0, "target_id": -20, "target_slot": 0, "type": "CONDITIONING", - "parentId": 520 + "parentId": 9061 }, { "id": 25, @@ -5979,15 +6458,24 @@ "target_id": -20, "target_slot": 2, "type": "IMAGE", - "parentId": 524 + "parentId": 9063 }, { - "id": 27, + "id": 13883, "origin_id": 5391, "origin_slot": 0, "target_id": -20, "target_slot": 3, "type": "LATENT" + }, + { + "id": 13869, + "origin_id": -10, + "origin_slot": 3, + "target_id": 3159, + "target_slot": 3, + "type": "BOOLEAN", + "parentId": 510 } ], "reroutes": [ @@ -5998,7 +6486,7 @@ 382 ], "linkIds": [ - 2 + 13861 ] }, { @@ -6009,7 +6497,7 @@ 382 ], "linkIds": [ - 2 + 13861 ] }, { @@ -6019,7 +6507,7 @@ 382 ], "linkIds": [ - 7 + 13866 ] }, { @@ -6030,7 +6518,7 @@ 382 ], "linkIds": [ - 7 + 13866 ] }, { @@ -6040,7 +6528,7 @@ 397 ], "linkIds": [ - 8 + 13867 ] }, { @@ -6051,7 +6539,7 @@ 397 ], "linkIds": [ - 8 + 13867 ] }, { @@ -6061,7 +6549,7 @@ 409 ], "linkIds": [ - 9 + 13868 ] }, { @@ -6072,7 +6560,7 @@ 409 ], "linkIds": [ - 9 + 13868 ] }, { @@ -6082,7 +6570,7 @@ 424 ], "linkIds": [ - 10 + 13869 ] }, { @@ -6093,7 +6581,7 @@ 424 ], "linkIds": [ - 10 + 13869 ] }, { @@ -6103,7 +6591,7 @@ 439 ], "linkIds": [ - 12 + 13871 ] }, { @@ -6114,7 +6602,7 @@ 439 ], "linkIds": [ - 12 + 13871 ] }, { @@ -6124,7 +6612,7 @@ 299 ], "linkIds": [ - 16 + 13875 ] }, { @@ -6135,70 +6623,70 @@ 299 ], "linkIds": [ - 16 + 13875 ] }, { - "id": 515, + "id": 9056, "pos": [ 466.0835715395484, 451 ], "linkIds": [ - 17 + 13876 ] }, { - "id": 516, - "parentId": 515, + "id": 9057, + "parentId": 9056, "pos": [ 1884.5378746909755, 451 ], "linkIds": [ - 17 + 13876 ] }, { - "id": 517, + "id": 9058, "pos": [ 1842.5378746909755, 299 ], "linkIds": [ - 21 + 13880 ] }, { - "id": 518, - "parentId": 517, + "id": 9059, + "parentId": 9058, "pos": [ 2201.8861168784756, 299 ], "linkIds": [ - 21 + 13880 ] }, { - "id": 519, + "id": 9060, "pos": [ 1842.5378746909755, 382 ], "linkIds": [ - 24 + 13882 ] }, { - "id": 520, - "parentId": 519, + "id": 9061, + "parentId": 9060, "pos": [ 2493.1943200034757, 382 ], "linkIds": [ - 24 + 13882 ] }, { @@ -6223,7 +6711,7 @@ ] }, { - "id": 523, + "id": 9062, "pos": [ 514.0835715395484, 439 @@ -6233,8 +6721,8 @@ ] }, { - "id": 524, - "parentId": 523, + "id": 9063, + "parentId": 9062, "pos": [ 2493.1943200034757, 439 @@ -6250,10 +6738,10 @@ "id": "a0faecfd-06db-49d2-a37c-68822f750b66", "version": 1, "state": { - "lastGroupId": 157, - "lastNodeId": 9024, - "lastLinkId": 13805, - "lastRerouteId": 9055 + "lastGroupId": 158, + "lastNodeId": 9028, + "lastLinkId": 13957, + "lastRerouteId": 9077 }, "revision": 0, "config": {}, @@ -6282,7 +6770,7 @@ "name": "model", "type": "MODEL", "linkIds": [ - 1 + 13884 ], "pos": [ 94, @@ -6294,8 +6782,8 @@ "name": "positive", "type": "CONDITIONING", "linkIds": [ - 6, - 8 + 13889, + 13891 ], "pos": [ 94, @@ -6307,8 +6795,8 @@ "name": "negative", "type": "CONDITIONING", "linkIds": [ - 7, - 9 + 13890, + 13892 ], "pos": [ 94, @@ -6320,7 +6808,7 @@ "name": "latent_image", "type": "LATENT", "linkIds": [ - 10 + 13893 ], "pos": [ 94, @@ -6334,7 +6822,7 @@ "name": "latent", "type": "LATENT", "linkIds": [ - 13 + 13896 ], "label": "video_latent", "pos": [ @@ -6347,7 +6835,7 @@ "name": "positive", "type": "CONDITIONING", "linkIds": [ - 14 + 13897 ], "pos": [ 1692.624468837581, @@ -6359,7 +6847,7 @@ "name": "negative", "type": "CONDITIONING", "linkIds": [ - 15 + 13898 ], "pos": [ 1692.624468837581, @@ -6371,7 +6859,7 @@ "name": "audio_latent", "type": "LATENT", "linkIds": [ - 16 + 13899 ], "pos": [ 1692.624468837581, @@ -6402,7 +6890,7 @@ "name": "NOISE", "type": "NOISE", "links": [ - 2 + 13885 ] } ], @@ -6414,7 +6902,11 @@ "widgets_values": [ 43, "fixed" - ] + ], + "widgets_values_named": { + "noise_seed": 43, + "control_after_generate": "fixed" + } }, { "id": 4828, @@ -6435,19 +6927,19 @@ "localized_name": "model", "name": "model", "type": "MODEL", - "link": 1 + "link": 13884 }, { "localized_name": "positive", "name": "positive", "type": "CONDITIONING", - "link": 8 + "link": 13891 }, { "localized_name": "negative", "name": "negative", "type": "CONDITIONING", - "link": 9 + "link": 13892 } ], "outputs": [ @@ -6456,7 +6948,7 @@ "name": "GUIDER", "type": "GUIDER", "links": [ - 3 + 13886 ] } ], @@ -6467,7 +6959,10 @@ }, "widgets_values": [ 1 - ] + ], + "widgets_values_named": { + "cfg": 1 + } }, { "id": 5093, @@ -6488,31 +6983,31 @@ "localized_name": "noise", "name": "noise", "type": "NOISE", - "link": 2 + "link": 13885 }, { "localized_name": "guider", "name": "guider", "type": "GUIDER", - "link": 3 + "link": 13886 }, { "localized_name": "sampler", "name": "sampler", "type": "SAMPLER", - "link": 4 + "link": 13887 }, { "localized_name": "sigmas", "name": "sigmas", "type": "SIGMAS", - "link": 5 + "link": 13888 }, { "localized_name": "latent_image", "name": "latent_image", "type": "LATENT", - "link": 10 + "link": 13893 } ], "outputs": [ @@ -6527,7 +7022,7 @@ "name": "denoised_output", "type": "LATENT", "links": [ - 11 + 13894 ] } ], @@ -6535,8 +7030,7 @@ "Node name for S&R": "SamplerCustomAdvanced", "cnr_id": "comfy-core", "ver": "0.14.1" - }, - "widgets_values": [] + } }, { "id": 5394, @@ -6557,7 +7051,7 @@ "localized_name": "av_latent", "name": "av_latent", "type": "LATENT", - "link": 11 + "link": 13894 } ], "outputs": [ @@ -6566,7 +7060,7 @@ "name": "video_latent", "type": "LATENT", "links": [ - 12 + 13895 ] }, { @@ -6574,7 +7068,7 @@ "name": "audio_latent", "type": "LATENT", "links": [ - 16 + 13899 ] } ], @@ -6582,8 +7076,7 @@ "Node name for S&R": "LTXVSeparateAVLatent", "cnr_id": "comfy-core", "ver": "0.5.1" - }, - "widgets_values": [] + } }, { "id": 5013, @@ -6604,19 +7097,19 @@ "localized_name": "positive", "name": "positive", "type": "CONDITIONING", - "link": 6 + "link": 13889 }, { "localized_name": "negative", "name": "negative", "type": "CONDITIONING", - "link": 7 + "link": 13890 }, { "localized_name": "latent", "name": "latent", "type": "LATENT", - "link": 12 + "link": 13895 } ], "outputs": [ @@ -6625,7 +7118,7 @@ "name": "positive", "type": "CONDITIONING", "links": [ - 14 + 13897 ] }, { @@ -6633,7 +7126,7 @@ "name": "negative", "type": "CONDITIONING", "links": [ - 15 + 13898 ] }, { @@ -6641,7 +7134,7 @@ "name": "latent", "type": "LATENT", "links": [ - 13 + 13896 ] } ], @@ -6649,8 +7142,7 @@ "Node name for S&R": "LTXVCropGuides", "cnr_id": "comfy-core", "ver": "0.3.75" - }, - "widgets_values": [] + } }, { "id": 5025, @@ -6673,7 +7165,7 @@ "name": "SIGMAS", "type": "SIGMAS", "links": [ - 5 + 13888 ] } ], @@ -6684,7 +7176,10 @@ }, "widgets_values": [ "1.0, 0.99375, 0.9875, 0.98125, 0.975, 0.909375, 0.725, 0.421875, 0.0" - ] + ], + "widgets_values_named": { + "sigmas": "1.0, 0.99375, 0.9875, 0.98125, 0.975, 0.909375, 0.725, 0.421875, 0.0" + } }, { "id": 4831, @@ -6707,7 +7202,7 @@ "name": "SAMPLER", "type": "SAMPLER", "links": [ - 4 + 13887 ] } ], @@ -6718,13 +7213,16 @@ }, "widgets_values": [ "euler_ancestral" - ] + ], + "widgets_values_named": { + "sampler_name": "euler_ancestral" + } } ], "groups": [], "links": [ { - "id": 1, + "id": 13884, "origin_id": -10, "origin_slot": 0, "target_id": 4828, @@ -6732,7 +7230,7 @@ "type": "MODEL" }, { - "id": 2, + "id": 13885, "origin_id": 4832, "origin_slot": 0, "target_id": 5093, @@ -6740,7 +7238,7 @@ "type": "NOISE" }, { - "id": 3, + "id": 13886, "origin_id": 4828, "origin_slot": 0, "target_id": 5093, @@ -6748,7 +7246,7 @@ "type": "GUIDER" }, { - "id": 4, + "id": 13887, "origin_id": 4831, "origin_slot": 0, "target_id": 5093, @@ -6756,7 +7254,7 @@ "type": "SAMPLER" }, { - "id": 5, + "id": 13888, "origin_id": 5025, "origin_slot": 0, "target_id": 5093, @@ -6764,7 +7262,7 @@ "type": "SIGMAS" }, { - "id": 6, + "id": 13889, "origin_id": -10, "origin_slot": 1, "target_id": 5013, @@ -6773,7 +7271,7 @@ "parentId": 736 }, { - "id": 7, + "id": 13890, "origin_id": -10, "origin_slot": 2, "target_id": 5013, @@ -6782,7 +7280,7 @@ "parentId": 738 }, { - "id": 8, + "id": 13891, "origin_id": -10, "origin_slot": 1, "target_id": 4828, @@ -6790,7 +7288,7 @@ "type": "CONDITIONING" }, { - "id": 9, + "id": 13892, "origin_id": -10, "origin_slot": 2, "target_id": 4828, @@ -6798,7 +7296,7 @@ "type": "CONDITIONING" }, { - "id": 10, + "id": 13893, "origin_id": -10, "origin_slot": 3, "target_id": 5093, @@ -6807,7 +7305,7 @@ "parentId": 740 }, { - "id": 11, + "id": 13894, "origin_id": 5093, "origin_slot": 1, "target_id": 5394, @@ -6815,7 +7313,7 @@ "type": "LATENT" }, { - "id": 12, + "id": 13895, "origin_id": 5394, "origin_slot": 0, "target_id": 5013, @@ -6823,7 +7321,7 @@ "type": "LATENT" }, { - "id": 13, + "id": 13896, "origin_id": 5013, "origin_slot": 2, "target_id": -20, @@ -6831,7 +7329,7 @@ "type": "LATENT" }, { - "id": 14, + "id": 13897, "origin_id": 5013, "origin_slot": 0, "target_id": -20, @@ -6839,7 +7337,7 @@ "type": "CONDITIONING" }, { - "id": 15, + "id": 13898, "origin_id": 5013, "origin_slot": 1, "target_id": -20, @@ -6847,7 +7345,7 @@ "type": "CONDITIONING" }, { - "id": 16, + "id": 13899, "origin_id": 5394, "origin_slot": 1, "target_id": -20, @@ -6864,7 +7362,7 @@ 331 ], "linkIds": [ - 6 + 13889 ] }, { @@ -6875,7 +7373,7 @@ 331 ], "linkIds": [ - 6 + 13889 ] }, { @@ -6885,7 +7383,7 @@ 657 ], "linkIds": [ - 7 + 13890 ] }, { @@ -6896,7 +7394,7 @@ 657 ], "linkIds": [ - 7 + 13890 ] }, { @@ -6906,7 +7404,7 @@ 524 ], "linkIds": [ - 10 + 13893 ] }, { @@ -6917,7 +7415,7 @@ 524 ], "linkIds": [ - 10 + 13893 ] }, { @@ -6927,7 +7425,7 @@ 578 ], "linkIds": [ - 16 + 13899 ] }, { @@ -6938,7 +7436,7 @@ 578 ], "linkIds": [ - 16 + 13899 ] } ], @@ -6948,10 +7446,10 @@ "id": "7209520a-8490-4a0a-aacf-2393ee619e63", "version": 1, "state": { - "lastGroupId": 157, - "lastNodeId": 9024, - "lastLinkId": 13805, - "lastRerouteId": 9055 + "lastGroupId": 158, + "lastNodeId": 9028, + "lastLinkId": 13957, + "lastRerouteId": 9077 }, "revision": 0, "config": {}, @@ -6980,7 +7478,7 @@ "name": "bypass", "type": "BOOLEAN", "linkIds": [ - 1 + 13900 ], "label": "bypass start image", "pos": [ @@ -6993,7 +7491,7 @@ "name": "image", "type": "IMAGE", "linkIds": [ - 2 + 13901 ], "label": "start image", "pos": [ @@ -7006,8 +7504,8 @@ "name": "vae", "type": "VAE", "linkIds": [ - 3, - 4 + 13902, + 13903 ], "pos": [ 94, @@ -7019,7 +7517,7 @@ "name": "input", "type": "IMAGE", "linkIds": [ - 6 + 13905 ], "label": "stage 1 image", "pos": [ @@ -7032,7 +7530,7 @@ "name": "negative", "type": "CONDITIONING", "linkIds": [ - 8 + 13907 ], "pos": [ 94, @@ -7044,7 +7542,7 @@ "name": "positive", "type": "CONDITIONING", "linkIds": [ - 9 + 13908 ], "pos": [ 94, @@ -7056,7 +7554,7 @@ "name": "audio_latent", "type": "LATENT", "linkIds": [ - 10 + 13909 ], "pos": [ 94, @@ -7070,7 +7568,7 @@ "name": "latent", "type": "LATENT", "linkIds": [ - 13 + 13912 ], "pos": [ 1525.308203125, @@ -7099,7 +7597,7 @@ "localized_name": "input", "name": "input", "type": "IMAGE,MASK", - "link": 6 + "link": 13905 } ], "outputs": [ @@ -7108,7 +7606,7 @@ "name": "resized", "type": "IMAGE", "links": [ - 7 + 13906 ] } ], @@ -7121,7 +7619,12 @@ "scale by multiplier", 2, "lanczos" - ] + ], + "widgets_values_named": { + "resize_type": "scale by multiplier", + "resize_type.multiplier": 2, + "scale_method": "lanczos" + } }, { "id": 5267, @@ -7142,13 +7645,13 @@ "localized_name": "pixels", "name": "pixels", "type": "IMAGE", - "link": 7 + "link": 13906 }, { "localized_name": "vae", "name": "vae", "type": "VAE", - "link": 3 + "link": 13902 } ], "outputs": [ @@ -7157,7 +7660,7 @@ "name": "LATENT", "type": "LATENT", "links": [ - 5 + 13904 ] } ], @@ -7171,7 +7674,13 @@ 64, 500, 64 - ] + ], + "widgets_values_named": { + "tile_size": 512, + "overlap": 64, + "temporal_size": 500, + "temporal_overlap": 64 + } }, { "id": 5213, @@ -7192,19 +7701,19 @@ "localized_name": "vae", "name": "vae", "type": "VAE", - "link": 4 + "link": 13903 }, { "localized_name": "image", "name": "image", "type": "IMAGE", - "link": 2 + "link": 13901 }, { "localized_name": "latent", "name": "latent", "type": "LATENT", - "link": 5 + "link": 13904 }, { "localized_name": "bypass", @@ -7214,7 +7723,7 @@ "widget": { "name": "bypass" }, - "link": 1 + "link": 13900 } ], "outputs": [ @@ -7223,7 +7732,7 @@ "name": "latent", "type": "LATENT", "links": [ - 12 + 13911 ] } ], @@ -7233,7 +7742,11 @@ "widgets_values": [ 1, false - ] + ], + "widgets_values_named": { + "strength": 1, + "bypass": false + } }, { "id": 5396, @@ -7254,13 +7767,13 @@ "localized_name": "video_latent", "name": "video_latent", "type": "LATENT", - "link": 12 + "link": 13911 }, { "localized_name": "audio_latent", "name": "audio_latent", "type": "LATENT", - "link": 11 + "link": 13910 } ], "outputs": [ @@ -7269,7 +7782,7 @@ "name": "latent", "type": "LATENT", "links": [ - 13 + 13912 ] } ], @@ -7277,8 +7790,7 @@ "Node name for S&R": "LTXVConcatAVLatent", "cnr_id": "comfy-core", "ver": "0.5.1" - }, - "widgets_values": [] + } }, { "id": 5395, @@ -7299,19 +7811,19 @@ "localized_name": "positive", "name": "positive", "type": "CONDITIONING", - "link": 9 + "link": 13908 }, { "localized_name": "negative", "name": "negative", "type": "CONDITIONING", - "link": 8 + "link": 13907 }, { "localized_name": "audio_latent", "name": "audio_latent", "type": "LATENT", - "link": 10 + "link": 13909 } ], "outputs": [ @@ -7332,56 +7844,46 @@ "name": "frozen_audio", "type": "LATENT", "links": [ - 11 + 13910 ] } ], "properties": { "Node name for S&R": "LTXVSetAudioRefTokens" - }, - "widgets_values": [] + } } ], "groups": [], "links": [ { - "id": 1, - "origin_id": -10, - "origin_slot": 0, - "target_id": 5213, - "target_slot": 3, - "type": "BOOLEAN", - "parentId": 502 - }, - { - "id": 2, + "id": 13901, "origin_id": -10, "origin_slot": 1, "target_id": 5213, "target_slot": 1, "type": "IMAGE", - "parentId": 504 + "parentId": 9067 }, { - "id": 3, + "id": 13902, "origin_id": -10, "origin_slot": 2, "target_id": 5267, "target_slot": 1, "type": "VAE", - "parentId": 506 + "parentId": 9069 }, { - "id": 4, + "id": 13903, "origin_id": -10, "origin_slot": 2, "target_id": 5213, "target_slot": 0, "type": "VAE", - "parentId": 508 + "parentId": 9071 }, { - "id": 5, + "id": 13904, "origin_id": 5267, "origin_slot": 0, "target_id": 5213, @@ -7389,15 +7891,7 @@ "type": "LATENT" }, { - "id": 6, - "origin_id": -10, - "origin_slot": 3, - "target_id": 5385, - "target_slot": 0, - "type": "IMAGE" - }, - { - "id": 7, + "id": 13906, "origin_id": 5385, "origin_slot": 0, "target_id": 5267, @@ -7405,7 +7899,7 @@ "type": "IMAGE" }, { - "id": 8, + "id": 13907, "origin_id": -10, "origin_slot": 4, "target_id": 5395, @@ -7413,7 +7907,7 @@ "type": "CONDITIONING" }, { - "id": 9, + "id": 13908, "origin_id": -10, "origin_slot": 5, "target_id": 5395, @@ -7421,7 +7915,7 @@ "type": "CONDITIONING" }, { - "id": 10, + "id": 13909, "origin_id": -10, "origin_slot": 6, "target_id": 5395, @@ -7429,16 +7923,16 @@ "type": "LATENT" }, { - "id": 11, + "id": 13910, "origin_id": 5395, "origin_slot": 2, "target_id": 5396, "target_slot": 1, "type": "LATENT", - "parentId": 510 + "parentId": 9073 }, { - "id": 12, + "id": 13911, "origin_id": 5213, "origin_slot": 0, "target_id": 5396, @@ -7446,118 +7940,135 @@ "type": "LATENT" }, { - "id": 13, + "id": 13912, "origin_id": 5396, "origin_slot": 0, "target_id": -20, "target_slot": 0, "type": "LATENT" + }, + { + "id": 13900, + "origin_id": -10, + "origin_slot": 0, + "target_id": 5213, + "target_slot": 3, + "type": "BOOLEAN", + "parentId": 9065 + }, + { + "id": 13905, + "origin_id": -10, + "origin_slot": 3, + "target_id": 5385, + "target_slot": 0, + "type": "IMAGE" } ], "reroutes": [ { - "id": 501, + "id": 9064, "pos": [ 142, 508 ], "linkIds": [ - 1 + 13900 ] }, { - "id": 502, - "parentId": 501, + "id": 9065, + "parentId": 9064, "pos": [ 924, 508 ], "linkIds": [ - 1 + 13900 ] }, { - "id": 503, + "id": 9066, "pos": [ 142, 520 ], "linkIds": [ - 2 + 13901 ] }, { - "id": 504, - "parentId": 503, + "id": 9067, + "parentId": 9066, "pos": [ 924, 520 ], "linkIds": [ - 2 + 13901 ] }, { - "id": 505, + "id": 9068, "pos": [ 142, 532 ], "linkIds": [ - 3 + 13902 ] }, { - "id": 506, - "parentId": 505, + "id": 9069, + "parentId": 9068, "pos": [ 564, 532 ], "linkIds": [ - 3 + 13902 ] }, { - "id": 507, + "id": 9070, "pos": [ 142, 532 ], "linkIds": [ - 4 + 13903 ] }, { - "id": 508, - "parentId": 507, + "id": 9071, + "parentId": 9070, "pos": [ 924, 532 ], "linkIds": [ - 4 + 13903 ] }, { - "id": 509, + "id": 9072, "pos": [ 522, 544 ], "linkIds": [ - 11 + 13910 ] }, { - "id": 510, - "parentId": 509, + "id": 9073, + "parentId": 9072, "pos": [ 1327.2623046875, 544 ], "linkIds": [ - 11 + 13910 ] } ], @@ -7567,10 +8078,10 @@ "id": "1b59f03f-a847-420d-855c-4c97767093d6", "version": 1, "state": { - "lastGroupId": 157, - "lastNodeId": 9024, - "lastLinkId": 13805, - "lastRerouteId": 9055 + "lastGroupId": 158, + "lastNodeId": 9028, + "lastLinkId": 13957, + "lastRerouteId": 9077 }, "revision": 0, "config": {}, @@ -7599,7 +8110,7 @@ "name": "model", "type": "MODEL", "linkIds": [ - 5 + 13917 ], "pos": [ 57.827401620370324, @@ -7611,7 +8122,7 @@ "name": "positive", "type": "CONDITIONING", "linkIds": [ - 6 + 13918 ], "pos": [ 57.827401620370324, @@ -7623,7 +8134,7 @@ "name": "negative", "type": "CONDITIONING", "linkIds": [ - 7 + 13919 ], "pos": [ 57.827401620370324, @@ -7635,7 +8146,7 @@ "name": "latent_image", "type": "LATENT", "linkIds": [ - 8 + 13920 ], "pos": [ 57.827401620370324, @@ -7649,7 +8160,7 @@ "name": "video_latent", "type": "LATENT", "linkIds": [ - 10 + 13922 ], "pos": [ 1185.494924034912, @@ -7661,7 +8172,7 @@ "name": "audio_latent", "type": "LATENT", "linkIds": [ - 11 + 13923 ], "pos": [ 1185.494924034912, @@ -7692,7 +8203,7 @@ "name": "SIGMAS", "type": "SIGMAS", "links": [ - 1 + 13913 ] } ], @@ -7703,7 +8214,10 @@ }, "widgets_values": [ "0.7250, 0.4219, 0.0" - ] + ], + "widgets_values_named": { + "sigmas": "0.7250, 0.4219, 0.0" + } }, { "id": 5209, @@ -7724,19 +8238,19 @@ "localized_name": "model", "name": "model", "type": "MODEL", - "link": 5 + "link": 13917 }, { "localized_name": "positive", "name": "positive", "type": "CONDITIONING", - "link": 6 + "link": 13918 }, { "localized_name": "negative", "name": "negative", "type": "CONDITIONING", - "link": 7 + "link": 13919 } ], "outputs": [ @@ -7745,7 +8259,7 @@ "name": "GUIDER", "type": "GUIDER", "links": [ - 3 + 13915 ] } ], @@ -7756,7 +8270,10 @@ }, "widgets_values": [ 1 - ] + ], + "widgets_values_named": { + "cfg": 1 + } }, { "id": 5210, @@ -7781,7 +8298,7 @@ "name": "NOISE", "type": "NOISE", "links": [ - 2 + 13914 ] } ], @@ -7793,7 +8310,11 @@ "widgets_values": [ 42, "fixed" - ] + ], + "widgets_values_named": { + "noise_seed": 42, + "control_after_generate": "fixed" + } }, { "id": 5214, @@ -7814,31 +8335,31 @@ "localized_name": "noise", "name": "noise", "type": "NOISE", - "link": 2 + "link": 13914 }, { "localized_name": "guider", "name": "guider", "type": "GUIDER", - "link": 3 + "link": 13915 }, { "localized_name": "sampler", "name": "sampler", "type": "SAMPLER", - "link": 4 + "link": 13916 }, { "localized_name": "sigmas", "name": "sigmas", "type": "SIGMAS", - "link": 1 + "link": 13913 }, { "localized_name": "latent_image", "name": "latent_image", "type": "LATENT", - "link": 8 + "link": 13920 } ], "outputs": [ @@ -7847,7 +8368,7 @@ "name": "output", "type": "LATENT", "links": [ - 9 + 13921 ] }, { @@ -7861,8 +8382,7 @@ "Node name for S&R": "SamplerCustomAdvanced", "cnr_id": "comfy-core", "ver": "0.3.71" - }, - "widgets_values": [] + } }, { "id": 5397, @@ -7883,7 +8403,7 @@ "localized_name": "av_latent", "name": "av_latent", "type": "LATENT", - "link": 9 + "link": 13921 } ], "outputs": [ @@ -7892,7 +8412,7 @@ "name": "video_latent", "type": "LATENT", "links": [ - 10 + 13922 ] }, { @@ -7900,7 +8420,7 @@ "name": "audio_latent", "type": "LATENT", "links": [ - 11 + 13923 ] } ], @@ -7908,8 +8428,7 @@ "Node name for S&R": "LTXVSeparateAVLatent", "cnr_id": "comfy-core", "ver": "0.5.1" - }, - "widgets_values": [] + } }, { "id": 5215, @@ -7932,7 +8451,7 @@ "name": "SAMPLER", "type": "SAMPLER", "links": [ - 4 + 13916 ] } ], @@ -7943,13 +8462,16 @@ }, "widgets_values": [ "euler" - ] + ], + "widgets_values_named": { + "sampler_name": "euler" + } } ], "groups": [], "links": [ { - "id": 1, + "id": 13913, "origin_id": 5211, "origin_slot": 0, "target_id": 5214, @@ -7957,7 +8479,7 @@ "type": "SIGMAS" }, { - "id": 2, + "id": 13914, "origin_id": 5210, "origin_slot": 0, "target_id": 5214, @@ -7965,7 +8487,7 @@ "type": "NOISE" }, { - "id": 3, + "id": 13915, "origin_id": 5209, "origin_slot": 0, "target_id": 5214, @@ -7973,7 +8495,7 @@ "type": "GUIDER" }, { - "id": 4, + "id": 13916, "origin_id": 5215, "origin_slot": 0, "target_id": 5214, @@ -7981,7 +8503,7 @@ "type": "SAMPLER" }, { - "id": 5, + "id": 13917, "origin_id": -10, "origin_slot": 0, "target_id": 5209, @@ -7989,7 +8511,7 @@ "type": "MODEL" }, { - "id": 6, + "id": 13918, "origin_id": -10, "origin_slot": 1, "target_id": 5209, @@ -7997,7 +8519,7 @@ "type": "CONDITIONING" }, { - "id": 7, + "id": 13919, "origin_id": -10, "origin_slot": 2, "target_id": 5209, @@ -8005,7 +8527,7 @@ "type": "CONDITIONING" }, { - "id": 8, + "id": 13920, "origin_id": -10, "origin_slot": 3, "target_id": 5214, @@ -8014,7 +8536,7 @@ "parentId": 753 }, { - "id": 9, + "id": 13921, "origin_id": 5214, "origin_slot": 0, "target_id": 5397, @@ -8022,7 +8544,7 @@ "type": "LATENT" }, { - "id": 10, + "id": 13922, "origin_id": 5397, "origin_slot": 0, "target_id": -20, @@ -8030,7 +8552,7 @@ "type": "LATENT" }, { - "id": 11, + "id": 13923, "origin_id": 5397, "origin_slot": 1, "target_id": -20, @@ -8046,7 +8568,7 @@ 448 ], "linkIds": [ - 8 + 13920 ] }, { @@ -8057,7 +8579,7 @@ 448 ], "linkIds": [ - 8 + 13920 ] } ], @@ -8067,10 +8589,10 @@ "id": "f09a2fcf-1b11-4f77-b498-3cc2929dd325", "version": 1, "state": { - "lastGroupId": 157, - "lastNodeId": 9024, - "lastLinkId": 13805, - "lastRerouteId": 9055 + "lastGroupId": 158, + "lastNodeId": 9028, + "lastLinkId": 13957, + "lastRerouteId": 9077 }, "revision": 0, "config": {}, @@ -8099,7 +8621,7 @@ "name": "vae", "type": "VAE", "linkIds": [ - 1 + 13924 ], "pos": [ 94, @@ -8111,7 +8633,7 @@ "name": "samples", "type": "LATENT", "linkIds": [ - 2 + 13925 ], "label": "video latent", "pos": [ @@ -8124,7 +8646,7 @@ "name": "image_b", "type": "IMAGE", "linkIds": [ - 3 + 13926 ], "label": "blend reference", "pos": [ @@ -8137,7 +8659,7 @@ "name": "mask", "type": "MASK", "linkIds": [ - 4 + 13927 ], "pos": [ 94, @@ -8149,7 +8671,7 @@ "name": "tile_size", "type": "INT", "linkIds": [ - 7 + 13930 ], "label": "tile_size", "pos": [ @@ -8162,7 +8684,7 @@ "name": "overlap", "type": "INT", "linkIds": [ - 8 + 13931 ], "label": "overlap", "pos": [ @@ -8175,7 +8697,7 @@ "name": "temporal_size", "type": "INT", "linkIds": [ - 9 + 13932 ], "label": "temporal_size", "pos": [ @@ -8188,7 +8710,7 @@ "name": "temporal_overlap", "type": "INT", "linkIds": [ - 10 + 13933 ], "label": "temporal_overlap", "pos": [ @@ -8203,7 +8725,7 @@ "name": "image", "type": "IMAGE", "linkIds": [ - 5 + 13928 ], "pos": [ 954, @@ -8232,13 +8754,13 @@ "localized_name": "samples", "name": "samples", "type": "LATENT", - "link": 2 + "link": 13925 }, { "localized_name": "vae", "name": "vae", "type": "VAE", - "link": 1 + "link": 13924 }, { "localized_name": "tile_size", @@ -8247,7 +8769,7 @@ "widget": { "name": "tile_size" }, - "link": 7 + "link": 13930 }, { "localized_name": "overlap", @@ -8256,7 +8778,7 @@ "widget": { "name": "overlap" }, - "link": 8 + "link": 13931 }, { "localized_name": "temporal_size", @@ -8265,7 +8787,7 @@ "widget": { "name": "temporal_size" }, - "link": 9 + "link": 13932 }, { "localized_name": "temporal_overlap", @@ -8274,7 +8796,7 @@ "widget": { "name": "temporal_overlap" }, - "link": 10 + "link": 13933 } ], "outputs": [ @@ -8283,7 +8805,7 @@ "name": "IMAGE", "type": "IMAGE", "links": [ - 6 + 13929 ] } ], @@ -8297,7 +8819,13 @@ 64, 128, 32 - ] + ], + "widgets_values_named": { + "tile_size": 512, + "overlap": 64, + "temporal_size": 128, + "temporal_overlap": 32 + } }, { "id": 5266, @@ -8318,19 +8846,19 @@ "localized_name": "image_a", "name": "image_a", "type": "IMAGE", - "link": 6 + "link": 13929 }, { "localized_name": "image_b", "name": "image_b", "type": "IMAGE", - "link": 3 + "link": 13926 }, { "localized_name": "mask", "name": "mask", "type": "MASK", - "link": 4 + "link": 13927 } ], "outputs": [ @@ -8339,7 +8867,7 @@ "name": "image", "type": "IMAGE", "links": [ - 5 + 13928 ] } ], @@ -8349,13 +8877,17 @@ "widgets_values": [ true, 5 - ] + ], + "widgets_values_named": { + "trim_to_shortest": true, + "mask_low_res_dilation": 5 + } } ], "groups": [], "links": [ { - "id": 1, + "id": 13924, "origin_id": -10, "origin_slot": 0, "target_id": 4851, @@ -8363,7 +8895,7 @@ "type": "VAE" }, { - "id": 2, + "id": 13925, "origin_id": -10, "origin_slot": 1, "target_id": 4851, @@ -8371,16 +8903,16 @@ "type": "LATENT" }, { - "id": 3, + "id": 13926, "origin_id": -10, "origin_slot": 2, "target_id": 5266, "target_slot": 1, "type": "IMAGE", - "parentId": 742 + "parentId": 9075 }, { - "id": 4, + "id": 13927, "origin_id": -10, "origin_slot": 3, "target_id": 5266, @@ -8389,7 +8921,7 @@ "parentId": 744 }, { - "id": 5, + "id": 13928, "origin_id": 5266, "origin_slot": 0, "target_id": -20, @@ -8397,7 +8929,7 @@ "type": "IMAGE" }, { - "id": 6, + "id": 13929, "origin_id": 4851, "origin_slot": 0, "target_id": 5266, @@ -8405,7 +8937,7 @@ "type": "IMAGE" }, { - "id": 7, + "id": 13930, "origin_id": -10, "origin_slot": 4, "target_id": 4851, @@ -8413,7 +8945,7 @@ "type": "INT" }, { - "id": 8, + "id": 13931, "origin_id": -10, "origin_slot": 5, "target_id": 4851, @@ -8421,7 +8953,7 @@ "type": "INT" }, { - "id": 9, + "id": 13932, "origin_id": -10, "origin_slot": 6, "target_id": 4851, @@ -8429,7 +8961,7 @@ "type": "INT" }, { - "id": 10, + "id": 13933, "origin_id": -10, "origin_slot": 7, "target_id": 4851, @@ -8439,24 +8971,24 @@ ], "reroutes": [ { - "id": 741, + "id": 9074, "pos": [ 158, 397 ], "linkIds": [ - 3 + 13926 ] }, { - "id": 742, - "parentId": 741, + "id": 9075, + "parentId": 9074, "pos": [ 548, 397 ], "linkIds": [ - 3 + 13926 ] }, { @@ -8466,7 +8998,7 @@ 434 ], "linkIds": [ - 4 + 13927 ] }, { @@ -8477,7 +9009,7 @@ 434 ], "linkIds": [ - 4 + 13927 ] } ], @@ -8487,10 +9019,10 @@ "id": "68dd05a7-f058-439b-b018-2f22e6f2efa8", "version": 1, "state": { - "lastGroupId": 157, - "lastNodeId": 9024, - "lastLinkId": 13805, - "lastRerouteId": 9055 + "lastGroupId": 158, + "lastNodeId": 9028, + "lastLinkId": 13957, + "lastRerouteId": 9077 }, "revision": 0, "config": {}, @@ -8519,7 +9051,7 @@ "name": "vae", "type": "VAE", "linkIds": [ - 1 + 13934 ], "pos": [ 0, @@ -8531,7 +9063,7 @@ "name": "latents", "type": "LATENT", "linkIds": [ - 2 + 13935 ], "label": "video latent", "pos": [ @@ -8544,7 +9076,7 @@ "name": "samples", "type": "LATENT", "linkIds": [ - 3 + 13936 ], "label": "audio latent", "pos": [ @@ -8557,7 +9089,7 @@ "name": "audio_vae", "type": "VAE", "linkIds": [ - 4 + 13937 ], "pos": [ 0, @@ -8569,8 +9101,8 @@ "name": "mask", "type": "MASK", "linkIds": [ - 5, - 7 + 13938, + 13940 ], "pos": [ 0, @@ -8582,7 +9114,7 @@ "name": "images", "type": "IMAGE", "linkIds": [ - 8 + 13941 ], "label": "reference frames", "pos": [ @@ -8595,7 +9127,7 @@ "name": "fps", "type": "FLOAT", "linkIds": [ - 10 + 13943 ], "pos": [ 0, @@ -8607,7 +9139,7 @@ "name": "tile_size", "type": "INT", "linkIds": [ - 14 + 13947 ], "label": "tile_size", "pos": [ @@ -8620,7 +9152,7 @@ "name": "overlap", "type": "INT", "linkIds": [ - 15 + 13948 ], "label": "overlap", "pos": [ @@ -8633,7 +9165,7 @@ "name": "temporal_size", "type": "INT", "linkIds": [ - 16 + 13949 ], "label": "temporal_size", "pos": [ @@ -8646,7 +9178,7 @@ "name": "temporal_overlap", "type": "INT", "linkIds": [ - 17 + 13950 ], "label": "temporal_overlap", "pos": [ @@ -8661,7 +9193,7 @@ "name": "video", "type": "VIDEO", "linkIds": [ - 11 + 13944 ], "pos": [ 0, @@ -8690,13 +9222,13 @@ "localized_name": "samples", "name": "samples", "type": "LATENT", - "link": 2 + "link": 13935 }, { "localized_name": "vae", "name": "vae", "type": "VAE", - "link": 1 + "link": 13934 }, { "localized_name": "tile_size", @@ -8705,7 +9237,7 @@ "widget": { "name": "tile_size" }, - "link": 14 + "link": 13947 }, { "localized_name": "overlap", @@ -8714,7 +9246,7 @@ "widget": { "name": "overlap" }, - "link": 15 + "link": 13948 }, { "localized_name": "temporal_size", @@ -8723,7 +9255,7 @@ "widget": { "name": "temporal_size" }, - "link": 16 + "link": 13949 }, { "localized_name": "temporal_overlap", @@ -8732,7 +9264,7 @@ "widget": { "name": "temporal_overlap" }, - "link": 17 + "link": 13950 } ], "outputs": [ @@ -8741,7 +9273,7 @@ "name": "IMAGE", "type": "IMAGE", "links": [ - 12 + 13945 ] } ], @@ -8753,7 +9285,13 @@ 64, 128, 32 - ] + ], + "widgets_values_named": { + "tile_size": 512, + "overlap": 64, + "temporal_size": 128, + "temporal_overlap": 32 + } }, { "id": 5398, @@ -8774,14 +9312,14 @@ "localized_name": "samples", "name": "samples", "type": "LATENT", - "link": 3 + "link": 13936 }, { "label": "Audio VAE", - "localized_name": "audio_vae", + "localized_name": "Audio VAE", "name": "audio_vae", "type": "VAE", - "link": 4 + "link": 13937 } ], "outputs": [ @@ -8790,7 +9328,7 @@ "name": "Audio", "type": "AUDIO", "links": [ - 13 + 13946 ] } ], @@ -8798,8 +9336,7 @@ "Node name for S&R": "LTXVAudioVAEDecode", "cnr_id": "comfy-core", "ver": "0.24.0" - }, - "widgets_values": [] + } }, { "id": 5226, @@ -8820,19 +9357,19 @@ "localized_name": "image_a", "name": "image_a", "type": "IMAGE", - "link": 12 + "link": 13945 }, { "localized_name": "image_b", "name": "image_b", "type": "IMAGE", - "link": 6 + "link": 13939 }, { "localized_name": "mask", "name": "mask", "type": "MASK", - "link": 7 + "link": 13940 } ], "outputs": [ @@ -8841,7 +9378,7 @@ "name": "image", "type": "IMAGE", "links": [ - 9 + 13942 ] } ], @@ -8851,7 +9388,11 @@ "widgets_values": [ true, 6 - ] + ], + "widgets_values_named": { + "trim_to_shortest": true, + "mask_low_res_dilation": 6 + } }, { "id": 5227, @@ -8862,7 +9403,7 @@ ], "size": [ 210, - 102 + 150 ], "flags": {}, "order": 1, @@ -8872,14 +9413,14 @@ "localized_name": "images", "name": "images", "type": "IMAGE", - "link": 9 + "link": 13942 }, { "localized_name": "audio", "name": "audio", "shape": 7, "type": "AUDIO", - "link": 13 + "link": 13946 }, { "localized_name": "fps", @@ -8888,7 +9429,7 @@ "widget": { "name": "fps" }, - "link": 10 + "link": 13943 } ], "outputs": [ @@ -8897,7 +9438,7 @@ "name": "VIDEO", "type": "VIDEO", "links": [ - 11 + 13944 ] } ], @@ -8908,8 +9449,16 @@ }, "widgets_values": [ 30, - 8 - ] + 8, + "sRGB", + "none" + ], + "widgets_values_named": { + "fps": 30, + "bit_depth": 8, + "color_space": "sRGB", + "codec": "none" + } }, { "id": 5380, @@ -8930,13 +9479,13 @@ "localized_name": "images", "name": "images", "type": "IMAGE", - "link": 8 + "link": 13941 }, { "localized_name": "mask", "name": "mask", "type": "MASK", - "link": 5 + "link": 13938 } ], "outputs": [ @@ -8945,20 +9494,19 @@ "name": "image", "type": "IMAGE", "links": [ - 6 + 13939 ] } ], "properties": { "Node name for S&R": "LTXVInpaintPreprocess" - }, - "widgets_values": [] + } } ], "groups": [], "links": [ { - "id": 1, + "id": 13934, "origin_id": -10, "origin_slot": 0, "target_id": 5387, @@ -8966,7 +9514,7 @@ "type": "VAE" }, { - "id": 2, + "id": 13935, "origin_id": -10, "origin_slot": 1, "target_id": 5387, @@ -8974,7 +9522,7 @@ "type": "LATENT" }, { - "id": 3, + "id": 13936, "origin_id": -10, "origin_slot": 2, "target_id": 5398, @@ -8982,7 +9530,7 @@ "type": "LATENT" }, { - "id": 4, + "id": 13937, "origin_id": -10, "origin_slot": 3, "target_id": 5398, @@ -8990,7 +9538,7 @@ "type": "VAE" }, { - "id": 5, + "id": 13938, "origin_id": -10, "origin_slot": 4, "target_id": 5380, @@ -8998,7 +9546,7 @@ "type": "MASK" }, { - "id": 6, + "id": 13939, "origin_id": 5380, "origin_slot": 0, "target_id": 5226, @@ -9006,7 +9554,7 @@ "type": "IMAGE" }, { - "id": 7, + "id": 13940, "origin_id": -10, "origin_slot": 4, "target_id": 5226, @@ -9015,7 +9563,7 @@ "parentId": 750 }, { - "id": 8, + "id": 13941, "origin_id": -10, "origin_slot": 5, "target_id": 5380, @@ -9023,7 +9571,7 @@ "type": "IMAGE" }, { - "id": 9, + "id": 13942, "origin_id": 5226, "origin_slot": 0, "target_id": 5227, @@ -9031,7 +9579,7 @@ "type": "IMAGE" }, { - "id": 10, + "id": 13943, "origin_id": -10, "origin_slot": 6, "target_id": 5227, @@ -9040,7 +9588,7 @@ "parentId": 746 }, { - "id": 11, + "id": 13944, "origin_id": 5227, "origin_slot": 0, "target_id": -20, @@ -9048,7 +9596,7 @@ "type": "VIDEO" }, { - "id": 12, + "id": 13945, "origin_id": 5387, "origin_slot": 0, "target_id": 5226, @@ -9056,7 +9604,7 @@ "type": "IMAGE" }, { - "id": 13, + "id": 13946, "origin_id": 5398, "origin_slot": 0, "target_id": 5227, @@ -9065,7 +9613,7 @@ "parentId": 748 }, { - "id": 14, + "id": 13947, "origin_id": -10, "origin_slot": 7, "target_id": 5387, @@ -9073,7 +9621,7 @@ "type": "INT" }, { - "id": 15, + "id": 13948, "origin_id": -10, "origin_slot": 8, "target_id": 5387, @@ -9081,7 +9629,7 @@ "type": "INT" }, { - "id": 16, + "id": 13949, "origin_id": -10, "origin_slot": 9, "target_id": 5387, @@ -9089,7 +9637,7 @@ "type": "INT" }, { - "id": 17, + "id": 13950, "origin_id": -10, "origin_slot": 10, "target_id": 5387, @@ -9105,7 +9653,7 @@ 547 ], "linkIds": [ - 10 + 13943 ] }, { @@ -9116,7 +9664,7 @@ 547 ], "linkIds": [ - 10 + 13943 ] }, { @@ -9126,7 +9674,7 @@ 519 ], "linkIds": [ - 13 + 13946 ] }, { @@ -9137,7 +9685,7 @@ 519 ], "linkIds": [ - 13 + 13946 ] }, { @@ -9147,7 +9695,7 @@ 422 ], "linkIds": [ - 7 + 13940 ] }, { @@ -9158,7 +9706,7 @@ 422 ], "linkIds": [ - 7 + 13940 ] } ], @@ -9168,7 +9716,7 @@ }, "config": {}, "extra": { - "frontendVersion": "1.48.7", + "frontendVersion": "1.55.14", "reroutes": [ { "id": 9001, @@ -9247,34 +9795,13 @@ "id": 9008, "parentId": 9007, "pos": [ - -3536, - 4148 + -3525.4962538971145, + 4158.821859556289 ], "linkIds": [ 13771 ] }, - { - "id": 9009, - "pos": [ - -3538, - 4148 - ], - "linkIds": [ - 14 - ] - }, - { - "id": 9010, - "parentId": 9009, - "pos": [ - -3536, - 4148 - ], - "linkIds": [ - 14 - ] - }, { "id": 9011, "pos": [ @@ -9362,8 +9889,8 @@ { "id": 9019, "pos": [ - -3191.732421875, - 3900 + -3074.5244664604857, + 3912.92307048 ], "linkIds": [ 23 @@ -9676,10 +10203,10 @@ } ], "ds": { - "scale": 0.2718259881270088, + "scale": 0.8460523191390685, "offset": [ - 3551.3317883769673, - -2438.487906841676 + 4537.781064822057, + -2876.765530958025 ] }, "linkExtensions": [ @@ -9695,10 +10222,6 @@ "id": 3, "parentId": 9006 }, - { - "id": 14, - "parentId": 9010 - }, { "id": 15, "parentId": 9012 diff --git a/example_workflows/2.5/LTX-2.5_ICLoRA_Union_Control_Distilled.json b/example_workflows/2.5/LTX-2.5_ICLoRA_Union_Control_Distilled.json index 706c0f8..5bcd656 100644 --- a/example_workflows/2.5/LTX-2.5_ICLoRA_Union_Control_Distilled.json +++ b/example_workflows/2.5/LTX-2.5_ICLoRA_Union_Control_Distilled.json @@ -823,7 +823,7 @@ "ver": "0.3.56" }, "widgets_values": [ - "", + "example.png", "image" ], "color": "#232", diff --git a/example_workflows/2.5/LTX-2.5_T2V_I2V_Single_Stage_Distilled.json b/example_workflows/2.5/LTX-2.5_T2V_I2V_Single_Stage_Distilled.json index 9d2bb04..2320366 100644 --- a/example_workflows/2.5/LTX-2.5_T2V_I2V_Single_Stage_Distilled.json +++ b/example_workflows/2.5/LTX-2.5_T2V_I2V_Single_Stage_Distilled.json @@ -837,7 +837,7 @@ "ver": "0.3.56" }, "widgets_values": [ - "", + "example.png", "image" ], "color": "#232", diff --git a/example_workflows/2.5/LTX-2.5_T2V_I2V_Two_Stage_Distilled.json b/example_workflows/2.5/LTX-2.5_T2V_I2V_Two_Stage_Distilled.json index e0569bb..e615cbb 100644 --- a/example_workflows/2.5/LTX-2.5_T2V_I2V_Two_Stage_Distilled.json +++ b/example_workflows/2.5/LTX-2.5_T2V_I2V_Two_Stage_Distilled.json @@ -536,7 +536,7 @@ "ver": "0.3.56" }, "widgets_values": [ - "", + "example.png", "image" ], "color": "#232", diff --git a/example_workflows/2.5/LTX-2.5_V2V_ICLoRA_Single_Stage_Distilled.json b/example_workflows/2.5/LTX-2.5_V2V_ICLoRA_Single_Stage_Distilled.json index 2e9fe4c..6e4749d 100644 --- a/example_workflows/2.5/LTX-2.5_V2V_ICLoRA_Single_Stage_Distilled.json +++ b/example_workflows/2.5/LTX-2.5_V2V_ICLoRA_Single_Stage_Distilled.json @@ -1,8 +1,8 @@ { "id": "6b1f4c07-92ae-4d35-8f7c-1a2b5e63d8f4", "revision": 0, - "last_node_id": 9008, - "last_link_id": 13796, + "last_node_id": 9012, + "last_link_id": 13828, "nodes": [ { "id": 5509, @@ -37,6 +37,9 @@ "widgets_values": [ "" ], + "widgets_values_named": { + "value": "" + }, "color": "#322", "bgcolor": "#533" }, @@ -63,6 +66,9 @@ "widgets_values": [ "## Decode\n\nMake sure to adjust the number of tiles and overlap to fit your hardware.\n(fewer tiles will result in faster execution, but will require more memory).\n\n### Recommended settings\n\n| node settings (pixels) | resolved latent geometry |\n| ------------------------------------------ | ------------------------------- |\n| `512 / 64 / 128 / 32` | 16x16, ov 2 - 16f ov 4 |\n| `768 / 192 / 128 / 32` | 24x24, ov 6 - 16f ov 4 |\n| `1024 / 256 / 128 / 48` | 32x32, ov 8 - 16f, ov 6 |\n| `1536 / 384 / 192 / 48` | 48x48, ov 12 - 24f, ov 6 |\n| `768 / 192 / spatial-only` | 24x24, ov 6 - no temporal split |" ], + "widgets_values_named": { + "text": "## Decode\n\nMake sure to adjust the number of tiles and overlap to fit your hardware.\n(fewer tiles will result in faster execution, but will require more memory).\n\n### Recommended settings\n\n| node settings (pixels) | resolved latent geometry |\n| ------------------------------------------ | ------------------------------- |\n| `512 / 64 / 128 / 32` | 16x16, ov 2 - 16f ov 4 |\n| `768 / 192 / 128 / 32` | 24x24, ov 6 - 16f ov 4 |\n| `1024 / 256 / 128 / 48` | 32x32, ov 8 - 16f, ov 6 |\n| `1536 / 384 / 192 / 48` | 48x48, ov 12 - 24f, ov 6 |\n| `768 / 192 / spatial-only` | 24x24, ov 6 - no temporal split |" + }, "color": "#432", "bgcolor": "#653" }, @@ -87,8 +93,11 @@ "title": "Save video", "properties": {}, "widgets_values": [ - "## Save video\n\nThis is your output preview \ud83c\udf89\ud83e\udd73" + "## Save video\n\nThis is your output preview šŸŽ‰šŸ„³" ], + "widgets_values_named": { + "text": "## Save video\n\nThis is your output preview šŸŽ‰šŸ„³" + }, "color": "#432", "bgcolor": "#653" }, @@ -115,6 +124,9 @@ "widgets_values": [ "## Inputs\n\nEverything here is optional.\n\n### Prompt\n\nEnter a positive prompt. To rewrite it into a fuller description first, enable\n**enhance positive prompt** on the Input Parameters node below. The negative\nprompt is used as written and is never enhanced.\n\nSupplying an **LTX API key** encodes and enhances the prompt through the API\ninstead of locally, which saves memory. The workflow switches over on its own\nwhenever a key is present - there is nothing to un-bypass.\n\nSee the [prompting guide](https://docs.ltx.io/open-source-model/usage-guides/prompting-guide).\n\n### Image input\n\nCondition the video to open on a still by loading an image and enabling\n**use image input** on the Input Parameters node.\n\n### Source video\n\nThe source video is the subject of the edit. Its frames are resized and handed\nstraight to the IC-LoRA as guide frames.\n\nIts width, height, length and frame rate drive the whole generation, and its audio\ntrack is carried through so the result keeps the original sound. The deblur\n**IC-LoRA** is loaded in **Load Models**, the guide frames are injected in\n**Preprocess**, then cropped out during sampling.\n" ], + "widgets_values_named": { + "text": "## Inputs\n\nEverything here is optional.\n\n### Prompt\n\nEnter a positive prompt. To rewrite it into a fuller description first, enable\n**enhance positive prompt** on the Input Parameters node below. The negative\nprompt is used as written and is never enhanced.\n\nSupplying an **LTX API key** encodes and enhances the prompt through the API\ninstead of locally, which saves memory. The workflow switches over on its own\nwhenever a key is present - there is nothing to un-bypass.\n\nSee the [prompting guide](https://docs.ltx.io/open-source-model/usage-guides/prompting-guide).\n\n### Image input\n\nCondition the video to open on a still by loading an image and enabling\n**use image input** on the Input Parameters node.\n\n### Source video\n\nThe source video is the subject of the edit. Its frames are resized and handed\nstraight to the IC-LoRA as guide frames.\n\nIts width, height, length and frame rate drive the whole generation, and its audio\ntrack is carried through so the result keeps the original sound. The deblur\n**IC-LoRA** is loaded in **Load Models**, the guide frames are injected in\n**Preprocess**, then cropped out during sampling.\n" + }, "color": "#432", "bgcolor": "#653" }, @@ -151,6 +163,7 @@ "Node name for S&R": "PreviewAny" }, "widgets_values": [], + "widgets_values_named": {}, "color": "#232", "bgcolor": "#353" }, @@ -175,8 +188,11 @@ "title": "Model Links", "properties": {}, "widgets_values": [ - "## Model Links\n\n**LTX-2.5 Model Weights**\n\nMake sure to click the \"Agree and Access\" button the first time you download.\n\n- [ Distilled model - ltx-2.5-22b-distilled-transformer-bf16.safetensors ](https://huggingface.co/Lightricks/LTX-2.5/blob/main/diffusion_models/ltx-2.5-22b-distilled-transformer-bf16.safetensors)\n\n- [ IC-LoRA Deblur - ltx-2.3-22b-ic-lora-deblur-0.9.safetensors ](https://huggingface.co/Lightricks/LTX-2.3-22b-IC-LoRA-Deblur/blob/main/ltx-2.3-22b-ic-lora-deblur-0.9.safetensors)\n\n- [ Audio VAE - ltx-2.5-audio-vae-bf16.safetensors ](https://huggingface.co/Lightricks/LTX-2.5/blob/main/vae/ltx-2.5-audio-vae-bf16.safetensors)\n\n- Video VAE - one of these:\n - [ Diffusion decoder ltx-2.5-video-vae-bf16.safetensors ](https://huggingface.co/Lightricks/LTX-2.5/blob/main/vae/ltx-2.5-video-vae-bf16.safetensors) - Best quality\n - [ Convolutional decoder - ltx-2.5-video-vae-conv-bf16.safetensors ](https://huggingface.co/Lightricks/LTX-2.5/blob/main/vae/ltx-2.5-video-vae-conv-bf16.safetensors) - Lower memory & faster\n\n\n**Text Encoder - finetuned for LTX-2.5**\n- [gemma4-12b-with-proj-ltx-2.5-bf16.safetensors](https://huggingface.co/Lightricks/LTX-2.5/blob/main/text_encoders/gemma4-12b-with-proj-ltx-2.5-bf16.safetensors)\n\n**Text Enhancer**\n- [Google Gemma 4 E2B IT](https://huggingface.co/Comfy-Org/gemma-4/blob/main/text_encoders/gemma4_e2b_it_bf16.safetensors)\n\n\n**Model Storage Location**\n\n```\n\ud83d\udcc2 ComfyUI/\n\u251c\u2500\u2500 \ud83d\udcc2 models/\n\u2502 \u251c\u2500\u2500 \ud83d\udcc2 text_encoders/\n\u2502 \u2502 \u251c\u2500\u2500 gemma4-12b-with-proj-ltx-2.5-bf16.safetensors\n\u2502 \u2502 \u2514\u2500\u2500 gemma4_e2b_it_bf16.safetensors\n\u2502 \u251c\u2500\u2500 \ud83d\udcc2 loras/\n\u2502 \u2502 \u2514\u2500\u2500 ltx-2.3-22b-ic-lora-deblur-0.9.safetensors\n\u2502 \u251c\u2500\u2500 \ud83d\udcc2 diffusion_models/\n\u2502 \u2502 \u2514\u2500\u2500 ltx-2.5-22b-distilled-transformer-bf16.safetensors\n\u2502 \u251c\u2500\u2500 \ud83d\udcc2 vae/\n\u2502 \u2502 \u2514\u2500\u2500 ltx-2.5-audio-vae-bf16.safetensors\n\u2502 \u2502 \u2514\u2500\u2500 ltx-2.5-video-vae-conv-bf16.safetensors / ltx-2.5-video-vae-bf16.safetensors\n```\n\n## Report Issues\nTo report any issues when running this workflow, [go to GitHub](https://github.com/Lightricks/ComfyUI-LTXVideo/issues)\n" + "## Model Links\n\n**LTX-2.5 Model Weights**\n\nMake sure to click the \"Agree and Access\" button the first time you download.\n\n- [ Distilled model - ltx-2.5-22b-distilled-transformer-bf16.safetensors ](https://huggingface.co/Lightricks/LTX-2.5/blob/main/diffusion_models/ltx-2.5-22b-distilled-transformer-bf16.safetensors)\n\n- [ IC-LoRA Deblur - ltx-2.3-22b-ic-lora-deblur-0.9.safetensors ](https://huggingface.co/Lightricks/LTX-2.3-22b-IC-LoRA-Deblur/blob/main/ltx-2.3-22b-ic-lora-deblur-0.9.safetensors)\n\n- [ Audio VAE - ltx-2.5-audio-vae-bf16.safetensors ](https://huggingface.co/Lightricks/LTX-2.5/blob/main/vae/ltx-2.5-audio-vae-bf16.safetensors)\n\n- Video VAE - one of these:\n - [ Diffusion decoder ltx-2.5-video-vae-bf16.safetensors ](https://huggingface.co/Lightricks/LTX-2.5/blob/main/vae/ltx-2.5-video-vae-bf16.safetensors) - Best quality\n - [ Convolutional decoder - ltx-2.5-video-vae-conv-bf16.safetensors ](https://huggingface.co/Lightricks/LTX-2.5/blob/main/vae/ltx-2.5-video-vae-conv-bf16.safetensors) - Lower memory & faster\n\n\n**Text Encoder - finetuned for LTX-2.5**\n- [gemma4-12b-with-proj-ltx-2.5-bf16.safetensors](https://huggingface.co/Lightricks/LTX-2.5/blob/main/text_encoders/gemma4-12b-with-proj-ltx-2.5-bf16.safetensors)\n\n**Text Enhancer**\n- [Google Gemma 4 E2B IT](https://huggingface.co/Comfy-Org/gemma-4/blob/main/text_encoders/gemma4_e2b_it_bf16.safetensors)\n\n\n**Model Storage Location**\n\n```\nšŸ“‚ ComfyUI/\nā”œā”€ā”€ šŸ“‚ models/\n│ ā”œā”€ā”€ šŸ“‚ text_encoders/\n│ │ ā”œā”€ā”€ gemma4-12b-with-proj-ltx-2.5-bf16.safetensors\n│ │ └── gemma4_e2b_it_bf16.safetensors\n│ ā”œā”€ā”€ šŸ“‚ loras/\n│ │ └── ltx-2.3-22b-ic-lora-deblur-0.9.safetensors\n│ ā”œā”€ā”€ šŸ“‚ diffusion_models/\n│ │ └── ltx-2.5-22b-distilled-transformer-bf16.safetensors\n│ ā”œā”€ā”€ šŸ“‚ vae/\n│ │ └── ltx-2.5-audio-vae-bf16.safetensors\n│ │ └── ltx-2.5-video-vae-conv-bf16.safetensors / ltx-2.5-video-vae-bf16.safetensors\n```\n\n## Report Issues\nTo report any issues when running this workflow, [go to GitHub](https://github.com/Lightricks/ComfyUI-LTXVideo/issues)\n" ], + "widgets_values_named": { + "text": "## Model Links\n\n**LTX-2.5 Model Weights**\n\nMake sure to click the \"Agree and Access\" button the first time you download.\n\n- [ Distilled model - ltx-2.5-22b-distilled-transformer-bf16.safetensors ](https://huggingface.co/Lightricks/LTX-2.5/blob/main/diffusion_models/ltx-2.5-22b-distilled-transformer-bf16.safetensors)\n\n- [ IC-LoRA Deblur - ltx-2.3-22b-ic-lora-deblur-0.9.safetensors ](https://huggingface.co/Lightricks/LTX-2.3-22b-IC-LoRA-Deblur/blob/main/ltx-2.3-22b-ic-lora-deblur-0.9.safetensors)\n\n- [ Audio VAE - ltx-2.5-audio-vae-bf16.safetensors ](https://huggingface.co/Lightricks/LTX-2.5/blob/main/vae/ltx-2.5-audio-vae-bf16.safetensors)\n\n- Video VAE - one of these:\n - [ Diffusion decoder ltx-2.5-video-vae-bf16.safetensors ](https://huggingface.co/Lightricks/LTX-2.5/blob/main/vae/ltx-2.5-video-vae-bf16.safetensors) - Best quality\n - [ Convolutional decoder - ltx-2.5-video-vae-conv-bf16.safetensors ](https://huggingface.co/Lightricks/LTX-2.5/blob/main/vae/ltx-2.5-video-vae-conv-bf16.safetensors) - Lower memory & faster\n\n\n**Text Encoder - finetuned for LTX-2.5**\n- [gemma4-12b-with-proj-ltx-2.5-bf16.safetensors](https://huggingface.co/Lightricks/LTX-2.5/blob/main/text_encoders/gemma4-12b-with-proj-ltx-2.5-bf16.safetensors)\n\n**Text Enhancer**\n- [Google Gemma 4 E2B IT](https://huggingface.co/Comfy-Org/gemma-4/blob/main/text_encoders/gemma4_e2b_it_bf16.safetensors)\n\n\n**Model Storage Location**\n\n```\nšŸ“‚ ComfyUI/\nā”œā”€ā”€ šŸ“‚ models/\n│ ā”œā”€ā”€ šŸ“‚ text_encoders/\n│ │ ā”œā”€ā”€ gemma4-12b-with-proj-ltx-2.5-bf16.safetensors\n│ │ └── gemma4_e2b_it_bf16.safetensors\n│ ā”œā”€ā”€ šŸ“‚ loras/\n│ │ └── ltx-2.3-22b-ic-lora-deblur-0.9.safetensors\n│ ā”œā”€ā”€ šŸ“‚ diffusion_models/\n│ │ └── ltx-2.5-22b-distilled-transformer-bf16.safetensors\n│ ā”œā”€ā”€ šŸ“‚ vae/\n│ │ └── ltx-2.5-audio-vae-bf16.safetensors\n│ │ └── ltx-2.5-video-vae-conv-bf16.safetensors / ltx-2.5-video-vae-bf16.safetensors\n```\n\n## Report Issues\nTo report any issues when running this workflow, [go to GitHub](https://github.com/Lightricks/ComfyUI-LTXVideo/issues)\n" + }, "color": "#432", "bgcolor": "#653" }, @@ -203,6 +219,9 @@ "widgets_values": [ "## Generate\n\n**Sampler - Distilled (8 steps)**\n\nRuns the distilled ltx-2.5 model with the deblur IC-LoRA applied, in 8\nsteps. You can change the noise seed, the guider cfg (used for both video and\naudio) and the sampler. The guide frames are cropped out afterwards\n(`LTXVCropGuides`) so only the generated video is decoded." ], + "widgets_values_named": { + "text": "## Generate\n\n**Sampler - Distilled (8 steps)**\n\nRuns the distilled ltx-2.5 model with the deblur IC-LoRA applied, in 8\nsteps. You can change the noise seed, the guider cfg (used for both video and\naudio) and the sampler. The guide frames are cropped out afterwards\n(`LTXVCropGuides`) so only the generated video is decoded." + }, "color": "#432", "bgcolor": "#653" }, @@ -285,7 +304,12 @@ 42, 1, "euler_ancestral" - ] + ], + "widgets_values_named": { + "noise_seed": 42, + "cfg": 1, + "sampler_name": "euler_ancestral" + } }, { "id": 4852, @@ -296,7 +320,7 @@ ], "size": [ 523.0556530433919, - 106 + 394.39820339125544 ], "flags": {}, "order": 17, @@ -322,8 +346,15 @@ "widgets_values": [ "output", "auto", + "auto", "auto" - ] + ], + "widgets_values_named": { + "filename_prefix": "output", + "format": "auto", + "format.codec": "auto", + "codec": "auto" + } }, { "id": 5001, @@ -358,6 +389,10 @@ "", "image" ], + "widgets_values_named": { + "file": "", + "upload": "image" + }, "color": "#232", "bgcolor": "#353" }, @@ -394,6 +429,9 @@ "widgets_values": [ "" ], + "widgets_values_named": { + "value": "" + }, "color": "#232", "bgcolor": "#353" }, @@ -554,7 +592,17 @@ "", "ltx-2.3-22b-dev.safetensors", 24 - ] + ], + "widgets_values_named": { + "value_3": true, + "value_2": "", + "cond": false, + "text": "", + "seed": 457289196, + "value_4": "", + "ckpt_name": "ltx-2.3-22b-dev.safetensors", + "value": 24 + } }, { "id": 9002, @@ -689,7 +737,15 @@ 544, 121, 24 - ] + ], + "widgets_values_named": { + "bypass": false, + "latent_downscale_factor": 1, + "width": 960, + "height": 544, + "length": 121, + "fps": 24 + } }, { "id": 9003, @@ -712,6 +768,9 @@ "widgets_values": [ "## Preprocess\n\nBuilds the audio-video latent at the **source video's** size and length, conditions on the optional start image, sets the conditioning frame rate from the source fps, and injects the source **guide frames** via the IC-LoRA (`LTXAddVideoICLoRAGuide`).\n\nThe source audio is encoded and frozen (`LTXVSetAudioRefTokens`), so it is carried through denoising unchanged rather than regenerated.\n\nThe guide frames are cropped out after sampling (`LTXVCropGuides`) so only the generated video is decoded." ], + "widgets_values_named": { + "text": "## Preprocess\n\nBuilds the audio-video latent at the **source video's** size and length, conditions on the optional start image, sets the conditioning frame rate from the source fps, and injects the source **guide frames** via the IC-LoRA (`LTXAddVideoICLoRAGuide`).\n\nThe source audio is encoded and frozen (`LTXVSetAudioRefTokens`), so it is carried through denoising unchanged rather than regenerated.\n\nThe guide frames are cropped out after sampling (`LTXVCropGuides`) so only the generated video is decoded." + }, "color": "#432", "bgcolor": "#653" }, @@ -821,9 +880,13 @@ "ver": "0.3.56" }, "widgets_values": [ - "", + "example.png", "image" ], + "widgets_values_named": { + "image": "", + "upload": "image" + }, "color": "#232", "bgcolor": "#353" }, @@ -894,7 +957,15 @@ 64, 128, 32 - ] + ], + "widgets_values_named": { + "fps": 30, + "bit_depth": 8, + "tile_size": 512, + "overlap": 64, + "temporal_size": 128, + "temporal_overlap": 32 + } }, { "id": 5004, @@ -1078,7 +1149,16 @@ "gemma4-12b-with-proj-ltx-2.5-bf16.safetensors", "ltx-2.3-22b-ic-lora-deblur-0.9.safetensors", 1 - ] + ], + "widgets_values_named": { + "audio_vae": "ltx-2.5-audio-vae-bf16.safetensors", + "video_vae": "ltx-2.5-video-vae-bf16.safetensors", + "ltx_2.5_model_checkpoint": "ltx-2.5-22b-distilled-transformer-bf16.safetensors", + "gemma4_e2b_enhancer": "gemma4_e2b_it_bf16.safetensors", + "gemma4_12b_encoder": "gemma4-12b-with-proj-ltx-2.5-bf16.safetensors", + "ic_lora": "ltx-2.3-22b-ic-lora-deblur-0.9.safetensors", + "lora strength": 1 + } } ], "links": [ @@ -1138,14 +1218,6 @@ 3, "VAE" ], - [ - 13675, - 5518, - 0, - 4852, - 0, - "VIDEO" - ], [ 13758, 5001, @@ -1337,6 +1409,14 @@ 5518, 1, "LATENT" + ], + [ + 13675, + 5518, + 0, + 4852, + 0, + "VIDEO" ] ], "groups": [ @@ -1371,9 +1451,9 @@ "id": "b7c1e94a-3f52-4d08-9a61-2e7c5d4f8a13", "version": 1, "state": { - "lastGroupId": 158, - "lastNodeId": 9008, - "lastLinkId": 13796, + "lastGroupId": 160, + "lastNodeId": 9012, + "lastLinkId": 13828, "lastRerouteId": 5033 }, "revision": 0, @@ -1635,7 +1715,10 @@ }, "widgets_values": [ "ltx-2.5-audio-vae-bf16.safetensors" - ] + ], + "widgets_values_named": { + "vae_name": "ltx-2.5-audio-vae-bf16.safetensors" + } }, { "id": 5601, @@ -1685,7 +1768,10 @@ }, "widgets_values": [ "ltx-2.5-video-vae-bf16.safetensors" - ] + ], + "widgets_values_named": { + "vae_name": "ltx-2.5-video-vae-bf16.safetensors" + } }, { "id": 5602, @@ -1735,7 +1821,11 @@ "widgets_values": [ "ltx-2.5-22b-distilled-transformer-bf16.safetensors", "default" - ] + ], + "widgets_values_named": { + "unet_name": "ltx-2.5-22b-distilled-transformer-bf16.safetensors", + "weight_dtype": "default" + } }, { "id": 5603, @@ -1822,7 +1912,12 @@ "gemma4_e2b_it_bf16.safetensors", "ltxv", "default" - ] + ], + "widgets_values_named": { + "clip_name": "gemma4_e2b_it_bf16.safetensors", + "type": "ltxv", + "device": "default" + } }, { "id": 5605, @@ -1874,7 +1969,12 @@ "gemma4-12b-with-proj-ltx-2.5-bf16.safetensors", "ltxv", "default" - ] + ], + "widgets_values_named": { + "clip_name": "gemma4-12b-with-proj-ltx-2.5-bf16.safetensors", + "type": "ltxv", + "device": "default" + } }, { "id": 5606, @@ -1947,12 +2047,16 @@ "widgets_values": [ "ltx-2.3-22b-ic-lora-deblur-0.9.safetensors", 1 - ] + ], + "widgets_values_named": { + "lora_name": "ltx-2.3-22b-ic-lora-deblur-0.9.safetensors", + "strength_model": 1 + } } ], "groups": [ { - "id": 1, + "id": 3, "title": "Load Models - one file per output", "bounding": [ -860, @@ -2100,9 +2204,9 @@ "id": "c28230e9-b195-4ec2-9679-39e1e920f733", "version": 1, "state": { - "lastGroupId": 158, - "lastNodeId": 9008, - "lastLinkId": 13796, + "lastGroupId": 160, + "lastNodeId": 9012, + "lastLinkId": 13828, "lastRerouteId": 5033 }, "revision": 0, @@ -2192,7 +2296,7 @@ 13619, 13728, 13755, - 13779 + 13798 ], "label": "Positive prompt", "pos": [ @@ -2206,7 +2310,7 @@ "type": "BOOLEAN", "linkIds": [ 13621, - 13780 + 13799 ], "label": "Enhance positive prompt", "pos": [ @@ -2249,7 +2353,7 @@ "linkIds": [ 13617, 13618, - 13783 + 13801 ], "label": "LTX API key", "pos": [ @@ -2400,6 +2504,11 @@ 1536, "lanczos" ], + "widgets_values_named": { + "resize_type": "scale longer dimension", + "resize_type.longer_size": 1536, + "scale_method": "lanczos" + }, "color": "#432", "bgcolor": "#653" }, @@ -2441,7 +2550,6 @@ "cnr_id": "comfy-core", "ver": "0.25.0" }, - "widgets_values": [], "color": "#432", "bgcolor": "#653" }, @@ -2496,6 +2604,9 @@ "widgets_values": [ "" ], + "widgets_values_named": { + "text": "" + }, "color": "#322", "bgcolor": "#533" }, @@ -2542,7 +2653,10 @@ }, "widgets_values": [ false - ] + ], + "widgets_values_named": { + "value": false + } }, { "id": 9004, @@ -2553,7 +2667,7 @@ ], "size": [ 429.2408203125, - 412 + 456 ], "flags": { "collapsed": false @@ -2588,6 +2702,13 @@ "type": "AUDIO", "link": null }, + { + "localized_name": "system_prompt", + "name": "system_prompt", + "shape": 7, + "type": "STRING", + "link": null + }, { "localized_name": "prompt", "name": "prompt", @@ -2613,8 +2734,14 @@ "name": "generated_text", "type": "STRING", "links": [ - 13778 + 13797 ] + }, + { + "localized_name": "thinking", + "name": "thinking", + "type": "STRING", + "links": null } ], "title": "Positive prompt (t2v) enhancer - TextGenerateLTX2Prompt", @@ -2633,8 +2760,24 @@ 0, 0, false, - true + true, + "auto" ], + "widgets_values_named": { + "prompt": "", + "max_length": 600, + "sampling_mode": "on", + "sampling_mode.temperature": 0.01, + "sampling_mode.top_k": 0, + "sampling_mode.top_p": 1, + "sampling_mode.min_p": 0, + "sampling_mode.repetition_penalty": 1.15, + "sampling_mode.seed": 0, + "sampling_mode.presence_penalty": 0, + "thinking": false, + "use_default_template": true, + "mtp": "auto" + }, "color": "#232", "bgcolor": "#353" }, @@ -2647,7 +2790,7 @@ ], "size": [ 451.50546875, - 412 + 456 ], "flags": {}, "order": 8, @@ -2680,6 +2823,13 @@ "type": "AUDIO", "link": null }, + { + "localized_name": "system_prompt", + "name": "system_prompt", + "shape": 7, + "type": "STRING", + "link": null + }, { "localized_name": "prompt", "name": "prompt", @@ -2707,6 +2857,12 @@ "links": [ 13777 ] + }, + { + "localized_name": "thinking", + "name": "thinking", + "type": "STRING", + "links": null } ], "title": "Positive prompt + image enhancer - TextGenerateLTX2Prompt", @@ -2725,8 +2881,24 @@ 0, 0, false, - true + true, + "auto" ], + "widgets_values_named": { + "prompt": "", + "max_length": 600, + "sampling_mode": "on", + "sampling_mode.temperature": 0.01, + "sampling_mode.top_k": 0, + "sampling_mode.top_p": 1, + "sampling_mode.min_p": 0, + "sampling_mode.repetition_penalty": 1.15, + "sampling_mode.seed": 0, + "sampling_mode.presence_penalty": 0, + "thinking": false, + "use_default_template": true, + "mtp": "auto" + }, "color": "#232", "bgcolor": "#353" }, @@ -2748,12 +2920,14 @@ { "localized_name": "on_false", "name": "on_false", + "shape": 7, "type": "STRING", - "link": 13778 + "link": 13797 }, { "localized_name": "on_true", "name": "on_true", + "shape": 7, "type": "STRING", "link": 13777 }, @@ -2773,7 +2947,7 @@ "name": "output", "type": "STRING", "links": [ - 13781 + 13800 ] } ], @@ -2782,7 +2956,10 @@ }, "widgets_values": [ false - ] + ], + "widgets_values_named": { + "switch": false + } }, { "id": 2483, @@ -2835,6 +3012,9 @@ "widgets_values": [ "" ], + "widgets_values_named": { + "text": "" + }, "color": "#232", "bgcolor": "#353" }, @@ -2860,7 +3040,7 @@ "widget": { "name": "string" }, - "link": 13783 + "link": 13801 } ], "outputs": [ @@ -2869,8 +3049,8 @@ "name": "contains", "type": "BOOLEAN", "links": [ - 13784, - 13787 + 13787, + 13802 ] } ], @@ -2882,7 +3062,12 @@ "", "ltxv_", true - ] + ], + "widgets_values_named": { + "string": "", + "substring": "ltxv_", + "case_sensitive": true + } }, { "id": 1241, @@ -2948,7 +3133,10 @@ }, "widgets_values": [ 24 - ] + ], + "widgets_values_named": { + "frame_rate": 24 + } }, { "id": 5560, @@ -2968,12 +3156,14 @@ { "localized_name": "on_false", "name": "on_false", + "shape": 7, "type": "CONDITIONING", "link": 13789 }, { "localized_name": "on_true", "name": "on_true", + "shape": 7, "type": "CONDITIONING", "link": 13788 }, @@ -3003,7 +3193,10 @@ }, "widgets_values": [ false - ] + ], + "widgets_values_named": { + "switch": false + } }, { "id": 5558, @@ -3023,14 +3216,16 @@ { "localized_name": "on_false", "name": "on_false", + "shape": 7, "type": "CONDITIONING", "link": 13786 }, { "localized_name": "on_true", "name": "on_true", + "shape": 7, "type": "CONDITIONING", - "link": 13785 + "link": 13803 }, { "localized_name": "switch", @@ -3039,7 +3234,7 @@ "widget": { "name": "switch" }, - "link": 13784 + "link": 13802 } ], "outputs": [ @@ -3058,7 +3253,10 @@ }, "widgets_values": [ false - ] + ], + "widgets_values_named": { + "switch": false + } }, { "id": 5556, @@ -3078,14 +3276,16 @@ { "localized_name": "on_false", "name": "on_false", + "shape": 7, "type": "STRING", - "link": 13779 + "link": 13798 }, { "localized_name": "on_true", "name": "on_true", + "shape": 7, "type": "STRING", - "link": 13781 + "link": 13800 }, { "localized_name": "switch", @@ -3094,7 +3294,7 @@ "widget": { "name": "switch" }, - "link": 13780 + "link": 13799 } ], "outputs": [ @@ -3113,7 +3313,10 @@ }, "widgets_values": [ false - ] + ], + "widgets_values_named": { + "switch": false + } }, { "id": 5504, @@ -3173,11 +3376,11 @@ "name": "conditioning", "type": "CONDITIONING", "links": [ - 13785 + 13803 ] } ], - "title": "\ud83c\udd5b\ud83c\udd63\ud83c\udd67 Gemma API Text Encode - POSITIVE", + "title": "šŸ…›šŸ…£šŸ…§ Gemma API Text Encode - POSITIVE", "properties": { "Node name for S&R": "GemmaAPITextEncode" }, @@ -3186,7 +3389,13 @@ "", "ltx-2.3-22b-dev.safetensors", "ltx-2.3-22b-dev.safetensors" - ] + ], + "widgets_values_named": { + "api_key": "", + "prompt": "", + "enhance_prompt": "ltx-2.3-22b-dev.safetensors", + "ckpt_name": "ltx-2.3-22b-dev.safetensors" + } }, { "id": 5505, @@ -3241,7 +3450,7 @@ ] } ], - "title": "\ud83c\udd5b\ud83c\udd63\ud83c\udd67 Gemma API Text Encode - NEGATIVE", + "title": "šŸ…›šŸ…£šŸ…§ Gemma API Text Encode - NEGATIVE", "properties": { "Node name for S&R": "GemmaAPITextEncode" }, @@ -3250,7 +3459,13 @@ "", false, "ltx-2.3-22b-dev.safetensors" - ] + ], + "widgets_values_named": { + "api_key": "", + "prompt": "", + "enhance_prompt": false, + "ckpt_name": "ltx-2.3-22b-dev.safetensors" + } } ], "groups": [ @@ -3363,14 +3578,6 @@ "target_slot": 0, "type": "BOOLEAN" }, - { - "id": 13601, - "origin_id": -10, - "origin_slot": 2, - "target_id": 4990, - "target_slot": 0, - "type": "IMAGE,MASK" - }, { "id": 13615, "origin_id": -10, @@ -3379,14 +3586,6 @@ "target_slot": 3, "type": "COMBO" }, - { - "id": 13616, - "origin_id": -10, - "origin_slot": 9, - "target_id": 5505, - "target_slot": 2, - "type": "COMBO" - }, { "id": 13617, "origin_id": -10, @@ -3444,63 +3643,6 @@ "target_slot": 0, "type": "BOOLEAN" }, - { - "id": 13727, - "origin_id": -10, - "origin_slot": 1, - "target_id": 5546, - "target_slot": 0, - "type": "CLIP" - }, - { - "id": 13728, - "origin_id": -10, - "origin_slot": 4, - "target_id": 5546, - "target_slot": 4, - "type": "STRING" - }, - { - "id": 13730, - "origin_id": -10, - "origin_slot": 7, - "target_id": 5546, - "target_slot": 5, - "type": "INT" - }, - { - "id": 13744, - "origin_id": 4990, - "origin_slot": 0, - "target_id": 5546, - "target_slot": 1, - "type": "IMAGE", - "parentId": 58 - }, - { - "id": 13746, - "origin_id": -10, - "origin_slot": 7, - "target_id": 9004, - "target_slot": 5, - "type": "INT" - }, - { - "id": 13754, - "origin_id": -10, - "origin_slot": 1, - "target_id": 9004, - "target_slot": 0, - "type": "CLIP" - }, - { - "id": 13755, - "origin_id": -10, - "origin_slot": 4, - "target_id": 9004, - "target_slot": 4, - "type": "STRING" - }, { "id": 13776, "origin_id": 5506, @@ -3518,7 +3660,7 @@ "type": "STRING" }, { - "id": 13778, + "id": 13797, "origin_id": 9004, "origin_slot": 0, "target_id": 5555, @@ -3526,7 +3668,7 @@ "type": "STRING" }, { - "id": 13779, + "id": 13798, "origin_id": -10, "origin_slot": 4, "target_id": 5556, @@ -3535,7 +3677,7 @@ "parentId": 3013 }, { - "id": 13780, + "id": 13799, "origin_id": -10, "origin_slot": 5, "target_id": 5556, @@ -3544,7 +3686,7 @@ "parentId": 3015 }, { - "id": 13781, + "id": 13800, "origin_id": 5555, "origin_slot": 0, "target_id": 5556, @@ -3561,7 +3703,7 @@ "type": "STRING" }, { - "id": 13783, + "id": 13801, "origin_id": -10, "origin_slot": 8, "target_id": 5557, @@ -3569,7 +3711,7 @@ "type": "STRING" }, { - "id": 13784, + "id": 13802, "origin_id": 5557, "origin_slot": 0, "target_id": 5558, @@ -3577,7 +3719,7 @@ "type": "BOOLEAN" }, { - "id": 13785, + "id": 13803, "origin_id": 5504, "origin_slot": 0, "target_id": 5558, @@ -3650,6 +3792,79 @@ "target_slot": 2, "type": "FLOAT", "parentId": 3002 + }, + { + "id": 13601, + "origin_id": -10, + "origin_slot": 2, + "target_id": 4990, + "target_slot": 0, + "type": "IMAGE,MASK" + }, + { + "id": 13754, + "origin_id": -10, + "origin_slot": 1, + "target_id": 9004, + "target_slot": 0, + "type": "CLIP" + }, + { + "id": 13727, + "origin_id": -10, + "origin_slot": 1, + "target_id": 5546, + "target_slot": 0, + "type": "CLIP" + }, + { + "id": 13744, + "origin_id": 4990, + "origin_slot": 0, + "target_id": 5546, + "target_slot": 1, + "type": "IMAGE", + "parentId": 58 + }, + { + "id": 13755, + "origin_id": -10, + "origin_slot": 4, + "target_id": 9004, + "target_slot": 5, + "type": "STRING" + }, + { + "id": 13746, + "origin_id": -10, + "origin_slot": 7, + "target_id": 9004, + "target_slot": 6, + "type": "INT" + }, + { + "id": 13728, + "origin_id": -10, + "origin_slot": 4, + "target_id": 5546, + "target_slot": 5, + "type": "STRING" + }, + { + "id": 13730, + "origin_id": -10, + "origin_slot": 7, + "target_id": 5546, + "target_slot": 6, + "type": "INT" + }, + { + "id": 13616, + "origin_id": -10, + "origin_slot": 9, + "target_id": 5505, + "target_slot": 2, + "type": "COMBO" } ], "reroutes": [ @@ -3681,7 +3896,7 @@ 4214 ], "linkIds": [ - 13785 + 13803 ] }, { @@ -3692,7 +3907,7 @@ 4214 ], "linkIds": [ - 13785 + 13803 ] }, { @@ -3723,8 +3938,8 @@ 3970 ], "linkIds": [ - 13439, - 13438 + 13438, + 13439 ] }, { @@ -3735,8 +3950,8 @@ 3970 ], "linkIds": [ - 13439, - 13438 + 13438, + 13439 ] }, { @@ -3778,7 +3993,7 @@ 4033 ], "linkIds": [ - 13779 + 13798 ] }, { @@ -3789,7 +4004,7 @@ 4033 ], "linkIds": [ - 13779 + 13798 ] }, { @@ -3799,7 +4014,7 @@ 4070 ], "linkIds": [ - 13780 + 13799 ] }, { @@ -3810,7 +4025,7 @@ 4070 ], "linkIds": [ - 13780 + 13799 ] }, { @@ -3842,7 +4057,7 @@ 3533.9948586055657 ], "linkIds": [ - 13781 + 13800 ] }, { @@ -3852,7 +4067,7 @@ 3443.014610059973 ], "linkIds": [ - 13781 + 13800 ] }, { @@ -3883,9 +4098,9 @@ "id": "f9337bd7-ca7a-4a59-99f1-65b664bed7e7", "version": 1, "state": { - "lastGroupId": 158, - "lastNodeId": 9008, - "lastLinkId": 13796, + "lastGroupId": 160, + "lastNodeId": 9012, + "lastLinkId": 13828, "lastRerouteId": 5033 }, "revision": 0, @@ -4075,7 +4290,11 @@ "widgets_values": [ 42, "fixed" - ] + ], + "widgets_values_named": { + "noise_seed": 42, + "control_after_generate": "fixed" + } }, { "id": 4828, @@ -4138,7 +4357,10 @@ }, "widgets_values": [ 1 - ] + ], + "widgets_values_named": { + "cfg": 1 + } }, { "id": 4831, @@ -4182,7 +4404,10 @@ }, "widgets_values": [ "euler_ancestral" - ] + ], + "widgets_values_named": { + "sampler_name": "euler_ancestral" + } }, { "id": 4984, @@ -4216,7 +4441,10 @@ }, "widgets_values": [ "1.0, 0.99375, 0.9875, 0.98125, 0.975, 0.909375, 0.725, 0.421875, 0.0" - ] + ], + "widgets_values_named": { + "sigmas": "1.0, 0.99375, 0.9875, 0.98125, 0.975, 0.909375, 0.725, 0.421875, 0.0" + } }, { "id": 4999, @@ -4238,6 +4466,9 @@ "widgets_values": [ "Do explore various samplers and cfg values (although we advise them to be kept close to 1)" ], + "widgets_values_named": { + "text": "Do explore various samplers and cfg values (although we advise them to be kept close to 1)" + }, "color": "#432", "bgcolor": "#653" }, @@ -4307,8 +4538,7 @@ "Node name for S&R": "SamplerCustomAdvanced", "cnr_id": "comfy-core", "ver": "0.14.1" - }, - "widgets_values": [] + } }, { "id": 4845, @@ -4354,8 +4584,7 @@ "Node name for S&R": "LTXVSeparateAVLatent", "cnr_id": "comfy-core", "ver": "0.10.0" - }, - "widgets_values": [] + } }, { "id": 5000, @@ -4415,8 +4644,7 @@ ], "properties": { "Node name for S&R": "LTXVCropGuides" - }, - "widgets_values": [] + } } ], "groups": [ @@ -4667,9 +4895,9 @@ "id": "bee43e38-9234-4e41-86ff-63874164f482", "version": 1, "state": { - "lastGroupId": 158, - "lastNodeId": 9008, - "lastLinkId": 13796, + "lastGroupId": 160, + "lastNodeId": 9012, + "lastLinkId": 13828, "lastRerouteId": 5033 }, "revision": 0, @@ -4861,7 +5089,7 @@ "link": 13669 }, { - "localized_name": "audio_vae", + "localized_name": "Audio VAE", "name": "audio_vae", "type": "VAE", "link": 13429 @@ -4881,8 +5109,7 @@ "Node name for S&R": "LTXVAudioVAEDecode", "cnr_id": "comfy-core", "ver": "0.3.64" - }, - "widgets_values": [] + } }, { "id": 4849, @@ -4893,7 +5120,7 @@ ], "size": [ 270, - 102 + 150 ], "flags": {}, "order": 1, @@ -4925,7 +5152,7 @@ "localized_name": "bit_depth", "name": "bit_depth", "shape": 7, - "type": "INT", + "type": "COMBO", "widget": { "name": "bit_depth" }, @@ -4949,8 +5176,16 @@ }, "widgets_values": [ 30, - 8 - ] + 8, + "sRGB", + "none" + ], + "widgets_values_named": { + "fps": 30, + "bit_depth": 8, + "color_space": "sRGB", + "codec": "none" + } }, { "id": 5538, @@ -5034,7 +5269,13 @@ 64, 64, 8 - ] + ], + "widgets_values_named": { + "tile_size": 512, + "overlap": 64, + "temporal_size": 64, + "temporal_overlap": 8 + } } ], "groups": [ @@ -5209,9 +5450,9 @@ "id": "c4a8f261-5b93-4e17-8d2a-6f01b3e97c45", "version": 1, "state": { - "lastGroupId": 158, - "lastNodeId": 9008, - "lastLinkId": 13796, + "lastGroupId": 160, + "lastNodeId": 9012, + "lastLinkId": 13828, "lastRerouteId": 5033 }, "revision": 0, @@ -5222,15 +5463,15 @@ "bounding": [ -3700, 4505, - 184.962890625, + 128, 68 ] }, "outputNode": { "id": -20, "bounding": [ - -2289.88125, - 4455, + -2108.47196852312, + 4493.2703940308575, 128, 168 ] @@ -5241,11 +5482,11 @@ "name": "video", "type": "VIDEO", "linkIds": [ - 10 + 13806 ], "pos": [ - -3539.037109375, - 4352 + -3596, + 4529 ] } ], @@ -5255,11 +5496,11 @@ "name": "image", "type": "IMAGE", "linkIds": [ - 12 + 13807 ], "pos": [ - -1278.0503900176145, - 4312 + -2084.47196852312, + 4517.2703940308575 ] }, { @@ -5267,11 +5508,11 @@ "name": "width", "type": "INT", "linkIds": [ - 13 + 13808 ], "pos": [ - -1278.0503900176145, - 4332 + -2084.47196852312, + 4537.2703940308575 ] }, { @@ -5279,11 +5520,11 @@ "name": "height", "type": "INT", "linkIds": [ - 14 + 13809 ], "pos": [ - -1278.0503900176145, - 4352 + -2084.47196852312, + 4557.2703940308575 ] }, { @@ -5291,11 +5532,11 @@ "name": "length", "type": "INT", "linkIds": [ - 15 + 13810 ], "pos": [ - -1278.0503900176145, - 4372 + -2084.47196852312, + 4577.2703940308575 ] }, { @@ -5303,11 +5544,11 @@ "name": "fps", "type": "FLOAT", "linkIds": [ - 16 + 13811 ], "pos": [ - -1278.0503900176145, - 4392 + -2084.47196852312, + 4597.2703940308575 ] }, { @@ -5319,8 +5560,8 @@ ], "label": "audio", "pos": [ - 0, - 0 + -2084.47196852312, + 4617.2703940308575 ] } ], @@ -5345,7 +5586,7 @@ "localized_name": "image", "name": "image", "type": "IMAGE", - "link": 4 + "link": 13805 } ], "outputs": [ @@ -5354,7 +5595,7 @@ "name": "width", "type": "INT", "links": [ - 13 + 13808 ] }, { @@ -5362,7 +5603,7 @@ "name": "height", "type": "INT", "links": [ - 14 + 13809 ] }, { @@ -5370,7 +5611,8 @@ "name": "batch_size", "type": "INT", "links": [ - 15 + 19, + 13810 ] } ], @@ -5378,8 +5620,7 @@ "Node name for S&R": "GetImageSize", "cnr_id": "comfy-core", "ver": "0.16.0" - }, - "widgets_values": [] + } }, { "id": 9006, @@ -5390,7 +5631,7 @@ ], "size": [ 374.163671875, - 90 + 106 ], "flags": {}, "order": 3, @@ -5400,7 +5641,7 @@ "localized_name": "video", "name": "video", "type": "VIDEO", - "link": 10 + "link": 13806 } ], "outputs": [ @@ -5409,7 +5650,7 @@ "name": "images", "type": "IMAGE", "links": [ - 1 + 13804 ] }, { @@ -5417,7 +5658,7 @@ "name": "audio", "type": "AUDIO", "links": [ - 18 + 22 ] }, { @@ -5425,22 +5666,28 @@ "name": "fps", "type": "FLOAT", "links": [ - 16 + 20, + 13811 ] }, { "localized_name": "bit_depth", "name": "bit_depth", - "type": "INT", + "type": "COMBO", "links": [] + }, + { + "localized_name": "color_space", + "name": "color_space", + "type": "COMBO", + "links": null } ], "properties": { "Node name for S&R": "GetVideoComponents", "cnr_id": "comfy-core", "ver": "0.3.75" - }, - "widgets_values": [] + } }, { "id": 5026, @@ -5461,7 +5708,7 @@ "localized_name": "input", "name": "input", "type": "IMAGE,MASK", - "link": 1 + "link": 13804 } ], "outputs": [ @@ -5470,8 +5717,8 @@ "name": "resized", "type": "IMAGE", "links": [ - 4, - 12 + 13805, + 13807 ] } ], @@ -5484,42 +5731,234 @@ "scale shorter dimension", 544, "lanczos" - ] + ], + "widgets_values_named": { + "resize_type": "scale shorter dimension", + "resize_type.shorter_size": 544, + "scale_method": "lanczos" + } }, { "id": 9001, "type": "MarkdownNote", "pos": [ - -3405.037109375, - 4192.07904379799 + -3411.2188058700176, + 4246.271717699809 ], "size": [ - 396, - 110 + 436.338997282327, + 151.81139750823695 ], "flags": {}, "order": 0, "mode": 0, "inputs": [], "outputs": [], - "title": "Source video \u2192 guide frames", + "title": "Source video → guide frames", "properties": {}, "widgets_values": [ - "## Source video\n\nEverything the generation is sized and timed by comes from here. The frames are\nresized to the generation resolution and handed to the IC-LoRA as guide frames,\nand the width, height, length and frame rate are all read off this video.\n\nThe audio track is passed through too, so the result keeps the original sound." + "## Source video\n\nEverything the generation is sized and timed by comes from here. The frames are\nresized to the generation resolution and handed to the IC-LoRA as guide frames,\nand the width, height, length and frame rate are all read off this video.\n\nThe audio track is passed through so the result keeps the original sound. If the\nclip has no audio track, silence is substituted (EmptyAudio + AudioMerge) so\nVAEEncodeAudio still runs." ], + "widgets_values_named": { + "text": "## Source video\n\nEverything the generation is sized and timed by comes from here. The frames are\nresized to the generation resolution and handed to the IC-LoRA as guide frames,\nand the width, height, length and frame rate are all read off this video.\n\nThe audio track is passed through so the result keeps the original sound. If the\nclip has no audio track, silence is substituted (EmptyAudio + AudioMerge) so\nVAEEncodeAudio still runs." + }, "color": "#432", "bgcolor": "#653" + }, + { + "id": 9010, + "type": "ComfyMathExpression", + "pos": [ + -3236.939032163386, + 5010.476629647744 + ], + "size": [ + 270, + 128 + ], + "flags": {}, + "order": 4, + "mode": 0, + "inputs": [ + { + "label": "a", + "localized_name": "a", + "name": "values.a", + "type": "FLOAT,INT,BOOLEAN", + "link": 19 + }, + { + "localized_name": "b", + "name": "values.b", + "shape": 7, + "type": "FLOAT,INT,BOOLEAN", + "link": 20 + }, + { + "localized_name": "c", + "name": "values.c", + "shape": 7, + "type": "FLOAT,INT,BOOLEAN", + "link": null + } + ], + "outputs": [ + { + "localized_name": "FLOAT", + "name": "FLOAT", + "type": "FLOAT", + "links": [ + 21 + ] + }, + { + "localized_name": "INT", + "name": "INT", + "type": "INT", + "links": [] + }, + { + "localized_name": "BOOL", + "name": "BOOL", + "type": "BOOLEAN", + "links": [] + } + ], + "title": "audio duration = frames / fps", + "properties": { + "Node name for S&R": "ComfyMathExpression", + "cnr_id": "comfy-core" + }, + "widgets_values": [ + "a / b" + ], + "widgets_values_named": { + "expression": "a / b" + } + }, + { + "id": 9011, + "type": "EmptyAudio", + "pos": [ + -2928.246149841344, + 5017.904331103209 + ], + "size": [ + 270, + 110 + ], + "flags": {}, + "order": 5, + "mode": 0, + "inputs": [ + { + "localized_name": "duration", + "name": "duration", + "type": "FLOAT", + "widget": { + "name": "duration" + }, + "link": 21 + } + ], + "outputs": [ + { + "localized_name": "AUDIO", + "name": "AUDIO", + "type": "AUDIO", + "links": [ + 23 + ] + } + ], + "title": "silence fallback", + "properties": { + "Node name for S&R": "EmptyAudio", + "cnr_id": "comfy-core" + }, + "widgets_values": [ + 60, + 44100, + 2 + ], + "widgets_values_named": { + "duration": 60, + "sample_rate": 44100, + "channels": 2 + } + }, + { + "id": 9012, + "type": "AudioMerge", + "pos": [ + -2622.8429166951155, + 5011.641088682029 + ], + "size": [ + 270, + 110 + ], + "flags": {}, + "order": 6, + "mode": 0, + "inputs": [ + { + "localized_name": "audio1", + "name": "audio1", + "type": "AUDIO", + "link": 22 + }, + { + "localized_name": "audio2", + "name": "audio2", + "type": "AUDIO", + "link": 23 + } + ], + "outputs": [ + { + "localized_name": "AUDIO", + "name": "AUDIO", + "type": "AUDIO", + "links": [ + 18 + ] + } + ], + "title": "use source audio, else silence", + "properties": { + "Node name for S&R": "AudioMerge", + "cnr_id": "comfy-core" + }, + "widgets_values": [ + "add" + ], + "widgets_values_named": { + "merge_method": "add" + } } ], "groups": [ { - "id": 1, + "id": 159, "title": "Source Video", "bounding": [ -3431.037109375, 4420, - 1057.155859375, - 228 + 1200, + 420 + ], + "color": "#3f789e", + "flags": {} + }, + { + "id": 160, + "title": "Add silent sound for input video without sound", + "bounding": [ + -3272.0902111704645, + 4906.605529276147, + 941.5866593575402, + 274.3619503493783 ], "color": "#3f789e", "flags": {} @@ -5527,15 +5966,7 @@ ], "links": [ { - "id": 1, - "origin_id": 9006, - "origin_slot": 0, - "target_id": 5026, - "target_slot": 0, - "type": "IMAGE" - }, - { - "id": 4, + "id": 13805, "origin_id": 5026, "origin_slot": 0, "target_id": 5029, @@ -5543,7 +5974,7 @@ "type": "IMAGE" }, { - "id": 10, + "id": 13806, "origin_id": -10, "origin_slot": 0, "target_id": 9006, @@ -5551,7 +5982,7 @@ "type": "VIDEO" }, { - "id": 12, + "id": 13807, "origin_id": 5026, "origin_slot": 0, "target_id": -20, @@ -5560,7 +5991,7 @@ "parentId": 4006 }, { - "id": 13, + "id": 13808, "origin_id": 5029, "origin_slot": 0, "target_id": -20, @@ -5568,7 +5999,7 @@ "type": "INT" }, { - "id": 14, + "id": 13809, "origin_id": 5029, "origin_slot": 1, "target_id": -20, @@ -5576,7 +6007,7 @@ "type": "INT" }, { - "id": 15, + "id": 13810, "origin_id": 5029, "origin_slot": 2, "target_id": -20, @@ -5584,7 +6015,7 @@ "type": "INT" }, { - "id": 16, + "id": 13811, "origin_id": 9006, "origin_slot": 2, "target_id": -20, @@ -5594,12 +6025,59 @@ }, { "id": 18, - "origin_id": 9006, - "origin_slot": 1, + "origin_id": 9012, + "origin_slot": 0, "target_id": -20, "target_slot": 5, - "type": "AUDIO", - "parentId": 4004 + "type": "AUDIO" + }, + { + "id": 21, + "origin_id": 9010, + "origin_slot": 0, + "target_id": 9011, + "target_slot": 0, + "type": "FLOAT" + }, + { + "id": 22, + "origin_id": 9006, + "origin_slot": 1, + "target_id": 9012, + "target_slot": 0, + "type": "AUDIO" + }, + { + "id": 23, + "origin_id": 9011, + "origin_slot": 0, + "target_id": 9012, + "target_slot": 1, + "type": "AUDIO" + }, + { + "id": 13804, + "origin_id": 9006, + "origin_slot": 0, + "target_id": 5026, + "target_slot": 0, + "type": "IMAGE" + }, + { + "id": 19, + "origin_id": 5029, + "origin_slot": 2, + "target_id": 9010, + "target_slot": 0, + "type": "INT" + }, + { + "id": 20, + "origin_id": 9006, + "origin_slot": 2, + "target_id": 9010, + "target_slot": 1, + "type": "FLOAT" } ], "reroutes": [ @@ -5610,7 +6088,7 @@ 4639 ], "linkIds": [ - 16 + 13811 ] }, { @@ -5621,28 +6099,7 @@ 4639 ], "linkIds": [ - 16 - ] - }, - { - "id": 4003, - "pos": [ - -2990.8734375, - 4670 - ], - "linkIds": [ - 18 - ] - }, - { - "id": 4004, - "parentId": 4003, - "pos": [ - -2329.88125, - 4670 - ], - "linkIds": [ - 18 + 13811 ] }, { @@ -5652,7 +6109,7 @@ 4710 ], "linkIds": [ - 12 + 13807 ] }, { @@ -5663,7 +6120,7 @@ 4710 ], "linkIds": [ - 12 + 13807 ] } ], @@ -5673,9 +6130,9 @@ "id": "d92e6f38-7a14-4c85-b3e0-9f52a1d68b74", "version": 1, "state": { - "lastGroupId": 158, - "lastNodeId": 9008, - "lastLinkId": 13796, + "lastGroupId": 160, + "lastNodeId": 9012, + "lastLinkId": 13828, "lastRerouteId": 5033 }, "revision": 0, @@ -5705,7 +6162,7 @@ "name": "positive", "type": "CONDITIONING", "linkIds": [ - 8 + 13817 ], "pos": [ -2820, @@ -5717,7 +6174,7 @@ "name": "negative", "type": "CONDITIONING", "linkIds": [ - 9 + 13818 ], "pos": [ -2820, @@ -5729,8 +6186,8 @@ "name": "vae", "type": "VAE", "linkIds": [ - 10, - 11 + 13819, + 13820 ], "pos": [ -2820, @@ -5754,7 +6211,7 @@ "name": "image", "type": "IMAGE", "linkIds": [ - 13 + 13821 ], "pos": [ -2820, @@ -5766,7 +6223,7 @@ "name": "bypass", "type": "BOOLEAN", "linkIds": [ - 14 + 13822 ], "pos": [ -2820, @@ -5778,7 +6235,7 @@ "name": "latent_downscale_factor", "type": "FLOAT", "linkIds": [ - 15 + 13823 ], "pos": [ -2820, @@ -5790,7 +6247,7 @@ "name": "guide_image", "type": "IMAGE", "linkIds": [ - 16 + 13824 ], "pos": [ -2820, @@ -5814,7 +6271,7 @@ "name": "height", "type": "INT", "linkIds": [ - 18 + 13825 ], "pos": [ -2820, @@ -5826,7 +6283,7 @@ "name": "length", "type": "INT", "linkIds": [ - 19 + 13826 ], "pos": [ -2820, @@ -5838,7 +6295,7 @@ "name": "fps", "type": "FLOAT", "linkIds": [ - 21 + 13827 ], "pos": [ -2820, @@ -5865,7 +6322,7 @@ "name": "positive", "type": "CONDITIONING", "linkIds": [ - 23 + 13828 ], "pos": [ -1360, @@ -5918,7 +6375,7 @@ "localized_name": "video_latent", "name": "video_latent", "type": "LATENT", - "link": 6 + "link": 13816 }, { "localized_name": "audio_latent", @@ -5941,8 +6398,7 @@ "Node name for S&R": "LTXVConcatAVLatent", "cnr_id": "comfy-core", "ver": "0.10.0" - }, - "widgets_values": [] + } }, { "id": 3059, @@ -5975,7 +6431,7 @@ "widget": { "name": "height" }, - "link": 18 + "link": 13825 }, { "localized_name": "length", @@ -5984,7 +6440,7 @@ "widget": { "name": "length" }, - "link": 19 + "link": 13826 } ], "outputs": [ @@ -5993,7 +6449,7 @@ "name": "LATENT", "type": "LATENT", "links": [ - 1 + 13812 ] } ], @@ -6007,7 +6463,13 @@ 544, 121, 1 - ] + ], + "widgets_values_named": { + "width": 960, + "height": 544, + "length": 121, + "batch_size": 1 + } }, { "id": 5012, @@ -6018,7 +6480,7 @@ ], "size": [ 316.886328125, - 282 + 330 ], "flags": {}, "order": 3, @@ -6028,31 +6490,31 @@ "localized_name": "positive", "name": "positive", "type": "CONDITIONING", - "link": 4 + "link": 13814 }, { "localized_name": "negative", "name": "negative", "type": "CONDITIONING", - "link": 5 + "link": 13815 }, { "localized_name": "vae", "name": "vae", "type": "VAE", - "link": 11 + "link": 13820 }, { "localized_name": "latent", "name": "latent", "type": "LATENT", - "link": 3 + "link": 13813 }, { "localized_name": "image", "name": "image", "type": "IMAGE", - "link": 16 + "link": 13824 }, { "localized_name": "latent_downscale_factor", @@ -6061,7 +6523,7 @@ "widget": { "name": "latent_downscale_factor" }, - "link": 15 + "link": 13823 } ], "outputs": [ @@ -6070,7 +6532,7 @@ "name": "positive", "type": "CONDITIONING", "links": [ - 23 + 13828 ] }, { @@ -6086,7 +6548,7 @@ "name": "latent", "type": "LATENT", "links": [ - 6 + 13816 ] } ], @@ -6100,8 +6562,21 @@ "disabled", false, 256, - 64 - ] + 64, + false, + 97 + ], + "widgets_values_named": { + "frame_idx": 0, + "strength": 1, + "latent_downscale_factor": 1, + "crop": "disabled", + "use_tiled_encode": false, + "tile_size": 256, + "tile_overlap": 64, + "use_streaming": false, + "tile_frames": 97 + } }, { "id": 3159, @@ -6122,19 +6597,19 @@ "localized_name": "vae", "name": "vae", "type": "VAE", - "link": 10 + "link": 13819 }, { "localized_name": "image", "name": "image", "type": "IMAGE", - "link": 13 + "link": 13821 }, { "localized_name": "latent", "name": "latent", "type": "LATENT", - "link": 1 + "link": 13812 }, { "localized_name": "bypass", @@ -6143,7 +6618,7 @@ "widget": { "name": "bypass" }, - "link": 14 + "link": 13822 } ], "outputs": [ @@ -6152,7 +6627,7 @@ "name": "latent", "type": "LATENT", "links": [ - 3 + 13813 ] } ], @@ -6162,7 +6637,11 @@ "widgets_values": [ 0.7, false - ] + ], + "widgets_values_named": { + "strength": 0.7, + "bypass": false + } }, { "id": 9005, @@ -6183,13 +6662,13 @@ "localized_name": "positive", "name": "positive", "type": "CONDITIONING", - "link": 8 + "link": 13817 }, { "localized_name": "negative", "name": "negative", "type": "CONDITIONING", - "link": 9 + "link": 13818 }, { "localized_name": "frame_rate", @@ -6198,7 +6677,7 @@ "widget": { "name": "frame_rate" }, - "link": 21 + "link": 13827 } ], "outputs": [ @@ -6208,8 +6687,8 @@ "type": "CONDITIONING", "slot_index": 0, "links": [ - 4, - 29 + 29, + 13814 ] }, { @@ -6218,8 +6697,8 @@ "type": "CONDITIONING", "slot_index": 1, "links": [ - 5, - 30 + 30, + 13815 ] } ], @@ -6230,7 +6709,10 @@ }, "widgets_values": [ 24 - ] + ], + "widgets_values_named": { + "frame_rate": 24 + } }, { "id": 9007, @@ -6272,8 +6754,7 @@ ], "properties": { "Node name for S&R": "VAEEncodeAudio" - }, - "widgets_values": [] + } }, { "id": 9008, @@ -6334,14 +6815,13 @@ "title": "freeze the source audio", "properties": { "Node name for S&R": "LTXVSetAudioRefTokens" - }, - "widgets_values": [] + } } ], "groups": [], "links": [ { - "id": 1, + "id": 13812, "origin_id": 3059, "origin_slot": 0, "target_id": 3159, @@ -6349,7 +6829,7 @@ "type": "LATENT" }, { - "id": 3, + "id": 13813, "origin_id": 3159, "origin_slot": 0, "target_id": 5012, @@ -6357,7 +6837,7 @@ "type": "LATENT" }, { - "id": 4, + "id": 13814, "origin_id": 9005, "origin_slot": 0, "target_id": 5012, @@ -6366,7 +6846,7 @@ "parentId": 3040 }, { - "id": 5, + "id": 13815, "origin_id": 9005, "origin_slot": 1, "target_id": 5012, @@ -6375,7 +6855,7 @@ "parentId": 3042 }, { - "id": 6, + "id": 13816, "origin_id": 5012, "origin_slot": 2, "target_id": 4528, @@ -6383,7 +6863,7 @@ "type": "LATENT" }, { - "id": 8, + "id": 13817, "origin_id": -10, "origin_slot": 0, "target_id": 9005, @@ -6391,7 +6871,7 @@ "type": "CONDITIONING" }, { - "id": 9, + "id": 13818, "origin_id": -10, "origin_slot": 1, "target_id": 9005, @@ -6399,7 +6879,7 @@ "type": "CONDITIONING" }, { - "id": 10, + "id": 13819, "origin_id": -10, "origin_slot": 2, "target_id": 3159, @@ -6408,7 +6888,7 @@ "parentId": 3031 }, { - "id": 11, + "id": 13820, "origin_id": -10, "origin_slot": 2, "target_id": 5012, @@ -6417,7 +6897,7 @@ "parentId": 3032 }, { - "id": 13, + "id": 13821, "origin_id": -10, "origin_slot": 4, "target_id": 3159, @@ -6426,25 +6906,7 @@ "parentId": 3044 }, { - "id": 14, - "origin_id": -10, - "origin_slot": 5, - "target_id": 3159, - "target_slot": 3, - "type": "BOOLEAN", - "parentId": 3046 - }, - { - "id": 15, - "origin_id": -10, - "origin_slot": 6, - "target_id": 5012, - "target_slot": 5, - "type": "FLOAT", - "parentId": 3034 - }, - { - "id": 16, + "id": 13824, "origin_id": -10, "origin_slot": 7, "target_id": 5012, @@ -6461,7 +6923,7 @@ "type": "INT" }, { - "id": 18, + "id": 13825, "origin_id": -10, "origin_slot": 9, "target_id": 3059, @@ -6469,7 +6931,7 @@ "type": "INT" }, { - "id": 19, + "id": 13826, "origin_id": -10, "origin_slot": 10, "target_id": 3059, @@ -6477,7 +6939,7 @@ "type": "INT" }, { - "id": 21, + "id": 13827, "origin_id": -10, "origin_slot": 11, "target_id": 9005, @@ -6485,7 +6947,7 @@ "type": "FLOAT" }, { - "id": 23, + "id": 13828, "origin_id": 5012, "origin_slot": 0, "target_id": -20, @@ -6558,6 +7020,24 @@ "target_slot": 1, "type": "LATENT", "parentId": 3038 + }, + { + "id": 13823, + "origin_id": -10, + "origin_slot": 6, + "target_id": 5012, + "target_slot": 5, + "type": "FLOAT", + "parentId": 3034 + }, + { + "id": 13822, + "origin_id": -10, + "origin_slot": 5, + "target_id": 3159, + "target_slot": 3, + "type": "BOOLEAN", + "parentId": 3046 } ], "reroutes": [ @@ -6568,8 +7048,8 @@ 3503 ], "linkIds": [ - 10, - 11 + 13819, + 13820 ] }, { @@ -6580,8 +7060,8 @@ 3503 ], "linkIds": [ - 10, - 11 + 13819, + 13820 ] }, { @@ -6592,7 +7072,7 @@ 3503 ], "linkIds": [ - 11 + 13820 ] }, { @@ -6602,7 +7082,7 @@ 3882 ], "linkIds": [ - 15 + 13823 ] }, { @@ -6613,7 +7093,7 @@ 3882 ], "linkIds": [ - 15 + 13823 ] }, { @@ -6623,7 +7103,7 @@ 3936 ], "linkIds": [ - 16 + 13824 ] }, { @@ -6634,7 +7114,7 @@ 3936 ], "linkIds": [ - 16 + 13824 ] }, { @@ -6665,7 +7145,7 @@ 3656 ], "linkIds": [ - 4 + 13814 ] }, { @@ -6676,7 +7156,7 @@ 3656 ], "linkIds": [ - 4 + 13814 ] }, { @@ -6686,7 +7166,7 @@ 3856 ], "linkIds": [ - 5 + 13815 ] }, { @@ -6697,7 +7177,7 @@ 3856 ], "linkIds": [ - 5 + 13815 ] }, { @@ -6707,7 +7187,7 @@ 3764 ], "linkIds": [ - 13 + 13821 ] }, { @@ -6718,7 +7198,7 @@ 3764 ], "linkIds": [ - 13 + 13821 ] }, { @@ -6728,7 +7208,7 @@ 3964 ], "linkIds": [ - 14 + 13822 ] }, { @@ -6739,7 +7219,7 @@ 3964 ], "linkIds": [ - 14 + 13822 ] }, { @@ -6749,7 +7229,7 @@ 3682 ], "linkIds": [ - 23 + 13828 ] }, { @@ -6760,7 +7240,7 @@ 3682 ], "linkIds": [ - 23 + 13828 ] }, { @@ -6791,7 +7271,7 @@ }, "config": {}, "extra": { - "frontendVersion": "1.48.7", + "frontendVersion": "1.53.6", "VHS_latentpreview": false, "VHS_latentpreviewrate": 0, "VHS_MetadataImage": true, @@ -6812,8 +7292,8 @@ 3183 ], "linkIds": [ - 13762, - 13670 + 13670, + 13762 ] }, { @@ -6824,8 +7304,8 @@ 3183 ], "linkIds": [ - 13762, - 13670 + 13670, + 13762 ] }, { @@ -6846,8 +7326,8 @@ 4414.821237738759 ], "linkIds": [ - 13763, - 13673 + 13673, + 13763 ] }, { @@ -6858,8 +7338,8 @@ 4414.821237738759 ], "linkIds": [ - 13763, - 13673 + 13673, + 13763 ] }, { @@ -7022,10 +7502,10 @@ } ], "ds": { - "scale": 0.41343517958791276, + "scale": 0.5002565673013762, "offset": [ - 4255.2539667922165, - -2409.604904551357 + 3980.7442216677364, + -2680.104298247339 ] }, "linkExtensions": [ diff --git a/example_workflows/2.5/LTX-2.5_V2V_TiledFusion_Native_4K_8K.json b/example_workflows/2.5/LTX-2.5_V2V_TiledFusion_Native_4K_8K.json index dfa6b5b..c27153e 100644 --- a/example_workflows/2.5/LTX-2.5_V2V_TiledFusion_Native_4K_8K.json +++ b/example_workflows/2.5/LTX-2.5_V2V_TiledFusion_Native_4K_8K.json @@ -1,8 +1,8 @@ { "id": "ltx-2.5-v2v-tiledfusion-native-4k-8k", "revision": 0, - "last_node_id": 9313, - "last_link_id": 13808, + "last_node_id": 9316, + "last_link_id": 14005, "nodes": [ { "id": 5509, @@ -30,9 +30,9 @@ ], "title": "Prompt (negative)", "properties": { + "Node name for S&R": "PrimitiveStringMultiline", "cnr_id": "comfy-core", - "ver": "0.25.0", - "Node name for S&R": "PrimitiveStringMultiline" + "ver": "0.25.0" }, "widgets_values": [ "" @@ -160,9 +160,9 @@ ], "title": "Effective positive prompt (enhanced if enabled)", "properties": { + "Node name for S&R": "PreviewAny", "cnr_id": "comfy-core", - "ver": "0.34.0", - "Node name for S&R": "PreviewAny" + "ver": "0.34.0" }, "widgets_values": [], "widgets_values_named": {}, @@ -454,9 +454,9 @@ } ], "properties": { + "Node name for S&R": "LoadVideo", "cnr_id": "comfy-core", - "ver": "0.10.0", - "Node name for S&R": "LoadVideo" + "ver": "0.10.0" }, "widgets_values": [ "", @@ -495,9 +495,9 @@ ], "title": "Prompt (positive)", "properties": { + "Node name for S&R": "PrimitiveStringMultiline", "cnr_id": "comfy-core", - "ver": "0.25.0", - "Node name for S&R": "PrimitiveStringMultiline" + "ver": "0.25.0" }, "widgets_values": [ "" @@ -1354,9 +1354,9 @@ ], "title": "Prompt (stage 2)", "properties": { + "Node name for S&R": "PrimitiveStringMultiline", "cnr_id": "comfy-core", - "ver": "0.25.0", - "Node name for S&R": "PrimitiveStringMultiline" + "ver": "0.25.0" }, "widgets_values": [ "The same scene, sharper and more detailed, fine textures, clean edges." @@ -1744,9 +1744,9 @@ ], "title": "Tiling sizes", "properties": { + "Node name for S&R": "PreviewAny", "cnr_id": "comfy-core", - "ver": "0.34.0", - "Node name for S&R": "PreviewAny" + "ver": "0.34.0" }, "widgets_values": [], "widgets_values_named": {}, @@ -1837,14 +1837,6 @@ 3, "VAE" ], - [ - 13675, - 5518, - 0, - 4852, - 0, - "VIDEO" - ], [ 13758, 5001, @@ -2284,6 +2276,14 @@ 9018, 14, "BOOLEAN" + ], + [ + 13675, + 5518, + 0, + 4852, + 0, + "VIDEO" ] ], "groups": [ @@ -2318,10 +2318,10 @@ "id": "b7c1e94a-3f52-4d08-9a61-2e7c5d4f8a13", "version": 1, "state": { - "lastGroupId": 158, - "lastNodeId": 9313, - "lastLinkId": 13808, - "lastRerouteId": 9038 + "lastGroupId": 163, + "lastNodeId": 9316, + "lastLinkId": 14005, + "lastRerouteId": 9179 }, "revision": 0, "config": {}, @@ -2638,9 +2638,9 @@ ], "title": "Load VAE - Audio", "properties": { + "Node name for S&R": "VAELoader", "cnr_id": "comfy-core", "ver": "0.34.0", - "Node name for S&R": "VAELoader", "models": [ { "name": "ltx-2.5-audio-vae-bf16.safetensors", @@ -2693,9 +2693,9 @@ ], "title": "Load VAE - Video", "properties": { + "Node name for S&R": "VAELoader", "cnr_id": "comfy-core", "ver": "0.34.0", - "Node name for S&R": "VAELoader", "models": [ { "name": "ltx-2.5-video-vae-bf16.safetensors", @@ -2748,9 +2748,9 @@ } ], "properties": { + "Node name for S&R": "UNETLoader", "cnr_id": "comfy-core", "ver": "0.34.0", - "Node name for S&R": "UNETLoader", "models": [ { "name": "ltx-2.5-22b-distilled-transformer-bf16.safetensors", @@ -2840,9 +2840,9 @@ ], "title": "Load CLIP - Text Enhancer", "properties": { + "Node name for S&R": "CLIPLoader", "cnr_id": "comfy-core", "ver": "0.34.0", - "Node name for S&R": "CLIPLoader", "models": [ { "name": "gemma4_e2b_it_bf16.safetensors", @@ -2899,9 +2899,9 @@ ], "title": "Load CLIP - Text Encoder", "properties": { + "Node name for S&R": "CLIPLoader", "cnr_id": "comfy-core", "ver": "0.34.0", - "Node name for S&R": "CLIPLoader", "models": [ { "name": "gemma4-12b-with-proj-ltx-2.5-bf16.safetensors", @@ -2980,9 +2980,9 @@ } ], "properties": { + "Node name for S&R": "LTXICLoRALoaderModelOnly", "aux_id": "LightricksResearch/ComfyUI-LTXVideo-Internal", "ver": "65bfc50105d620a6a21675e022d229f947c6eb57", - "Node name for S&R": "LTXICLoRALoaderModelOnly", "models": [ { "name": "ltx-2.5-22b-ic-lora-day-to-night-0.9.safetensors", @@ -3057,9 +3057,9 @@ } ], "properties": { + "Node name for S&R": "LTXICLoRALoaderModelOnly", "aux_id": "LightricksResearch/ComfyUI-LTXVideo-Internal", "ver": "65bfc50105d620a6a21675e022d229f947c6eb57", - "Node name for S&R": "LTXICLoRALoaderModelOnly", "models": [ { "name": "ltx-2.5-22b-ic-lora-refine-details-1.0.safetensors", @@ -3113,9 +3113,9 @@ } ], "properties": { + "Node name for S&R": "LatentUpscaleModelLoader", "cnr_id": "comfy-core", "ver": "0.34.0", - "Node name for S&R": "LatentUpscaleModelLoader", "models": [ { "name": "ltx-2.5-latent-spatial-upscaler-x2-bf16-1.0.safetensors", @@ -3134,7 +3134,7 @@ ], "groups": [ { - "id": 1, + "id": 3, "title": "Load Models - one file per output", "bounding": [ 306, @@ -3596,10 +3596,10 @@ "id": "c28230e9-b195-4ec2-9679-39e1e920f733", "version": 1, "state": { - "lastGroupId": 158, - "lastNodeId": 9313, - "lastLinkId": 13808, - "lastRerouteId": 9038 + "lastGroupId": 163, + "lastNodeId": 9316, + "lastLinkId": 14005, + "lastRerouteId": 9179 }, "revision": 0, "config": {}, @@ -3659,7 +3659,7 @@ "linkIds": [ 13619, 13755, - 2 + 13921 ], "label": "Positive prompt", "pos": [ @@ -3673,7 +3673,7 @@ "type": "BOOLEAN", "linkIds": [ 13621, - 3 + 13922 ], "label": "Enhance positive prompt", "pos": [ @@ -3840,9 +3840,9 @@ ], "title": "CLIP Text Encode (Negative Prompt)", "properties": { + "Node name for S&R": "CLIPTextEncode", "cnr_id": "comfy-core", - "ver": "0.3.28", - "Node name for S&R": "CLIPTextEncode" + "ver": "0.3.28" }, "widgets_values": [ "" @@ -3862,7 +3862,7 @@ ], "size": [ 429.2408203125, - 412 + 456 ], "flags": { "collapsed": false @@ -3897,6 +3897,13 @@ "type": "AUDIO", "link": null }, + { + "localized_name": "system_prompt", + "name": "system_prompt", + "shape": 7, + "type": "STRING", + "link": null + }, { "localized_name": "prompt", "name": "prompt", @@ -3922,15 +3929,21 @@ "name": "generated_text", "type": "STRING", "links": [ - 4 + 13924 ] + }, + { + "localized_name": "thinking", + "name": "thinking", + "type": "STRING", + "links": null } ], "title": "Positive prompt (t2v) enhancer - TextGenerateLTX2Prompt", "properties": { + "Node name for S&R": "TextGenerateLTX2Prompt", "cnr_id": "comfy-core", - "ver": "0.34.0", - "Node name for S&R": "TextGenerateLTX2Prompt" + "ver": "0.34.0" }, "widgets_values": [ "", @@ -3944,7 +3957,8 @@ 0, 0, false, - true + true, + "auto" ], "widgets_values_named": { "prompt": "", @@ -3958,7 +3972,8 @@ "sampling_mode.seed": 0, "sampling_mode.presence_penalty": 0, "thinking": false, - "use_default_template": true + "use_default_template": true, + "mtp": "auto" }, "color": "#232", "bgcolor": "#353" @@ -4007,9 +4022,9 @@ ], "title": "CLIP Text Encode (Positive Prompt)", "properties": { + "Node name for S&R": "CLIPTextEncode", "cnr_id": "comfy-core", - "ver": "0.3.28", - "Node name for S&R": "CLIPTextEncode" + "ver": "0.3.28" }, "widgets_values": [ "" @@ -4051,16 +4066,16 @@ "name": "contains", "type": "BOOLEAN", "links": [ - 5, - 13787 + 13787, + 13923 ] } ], "title": "has ltxv api key?", "properties": { + "Node name for S&R": "StringContains", "cnr_id": "comfy-core", - "ver": "0.34.0", - "Node name for S&R": "StringContains" + "ver": "0.34.0" }, "widgets_values": [ "", @@ -4131,9 +4146,9 @@ } ], "properties": { + "Node name for S&R": "LTXVConditioning", "cnr_id": "comfy-core", - "ver": "0.3.28", - "Node name for S&R": "LTXVConditioning" + "ver": "0.3.28" }, "widgets_values": [ 24 @@ -4193,9 +4208,9 @@ ], "title": "negative conditioning source - If/Else Switch", "properties": { + "Node name for S&R": "ComfySwitchNode", "cnr_id": "comfy-core", - "ver": "0.34.0", - "Node name for S&R": "ComfySwitchNode" + "ver": "0.34.0" }, "widgets_values": [ false @@ -4240,7 +4255,7 @@ "widget": { "name": "switch" }, - "link": 5 + "link": 13923 } ], "outputs": [ @@ -4255,9 +4270,9 @@ ], "title": "positive conditioning source - If/Else Switch", "properties": { + "Node name for S&R": "ComfySwitchNode", "cnr_id": "comfy-core", - "ver": "0.34.0", - "Node name for S&R": "ComfySwitchNode" + "ver": "0.34.0" }, "widgets_values": [ false @@ -4286,14 +4301,14 @@ "name": "on_false", "shape": 7, "type": "STRING", - "link": 2 + "link": 13921 }, { "localized_name": "on_true", "name": "on_true", "shape": 7, "type": "STRING", - "link": 4 + "link": 13924 }, { "localized_name": "switch", @@ -4302,7 +4317,7 @@ "widget": { "name": "switch" }, - "link": 3 + "link": 13922 } ], "outputs": [ @@ -4317,9 +4332,9 @@ } ], "properties": { + "Node name for S&R": "ComfySwitchNode", "cnr_id": "comfy-core", - "ver": "0.34.0", - "Node name for S&R": "ComfySwitchNode" + "ver": "0.34.0" }, "widgets_values": [ false @@ -4392,9 +4407,9 @@ ], "title": "šŸ…›šŸ…£šŸ…§ Gemma API Text Encode - POSITIVE", "properties": { + "Node name for S&R": "GemmaAPITextEncode", "aux_id": "LightricksResearch/ComfyUI-LTXVideo-Internal", - "ver": "65bfc50105d620a6a21675e022d229f947c6eb57", - "Node name for S&R": "GemmaAPITextEncode" + "ver": "65bfc50105d620a6a21675e022d229f947c6eb57" }, "widgets_values": [ "", @@ -4464,9 +4479,9 @@ ], "title": "šŸ…›šŸ…£šŸ…§ Gemma API Text Encode - NEGATIVE", "properties": { + "Node name for S&R": "GemmaAPITextEncode", "aux_id": "LightricksResearch/ComfyUI-LTXVideo-Internal", - "ver": "65bfc50105d620a6a21675e022d229f947c6eb57", - "Node name for S&R": "GemmaAPITextEncode" + "ver": "65bfc50105d620a6a21675e022d229f947c6eb57" }, "widgets_values": [ "", @@ -4544,7 +4559,7 @@ "target_id": 2612, "target_slot": 0, "type": "CLIP", - "parentId": 9001 + "parentId": 9025 }, { "id": 13438, @@ -4553,7 +4568,7 @@ "target_id": 2483, "target_slot": 0, "type": "CLIP", - "parentId": 9003 + "parentId": 9027 }, { "id": 13487, @@ -4562,7 +4577,7 @@ "target_id": 2612, "target_slot": 1, "type": "STRING", - "parentId": 9005 + "parentId": 9029 }, { "id": 13615, @@ -4572,14 +4587,6 @@ "target_slot": 3, "type": "COMBO" }, - { - "id": 13616, - "origin_id": -10, - "origin_slot": 7, - "target_id": 5505, - "target_slot": 2, - "type": "COMBO" - }, { "id": 13617, "origin_id": -10, @@ -4621,46 +4628,22 @@ "type": "BOOLEAN" }, { - "id": 13746, - "origin_id": -10, - "origin_slot": 5, - "target_id": 9004, - "target_slot": 5, - "type": "INT" - }, - { - "id": 13754, - "origin_id": -10, - "origin_slot": 1, - "target_id": 9004, - "target_slot": 0, - "type": "CLIP" - }, - { - "id": 13755, - "origin_id": -10, - "origin_slot": 2, - "target_id": 9004, - "target_slot": 4, - "type": "STRING" - }, - { - "id": 2, + "id": 13921, "origin_id": -10, "origin_slot": 2, "target_id": 5556, "target_slot": 0, "type": "STRING", - "parentId": 9007 + "parentId": 9031 }, { - "id": 3, + "id": 13922, "origin_id": -10, "origin_slot": 3, "target_id": 5556, "target_slot": 2, "type": "BOOLEAN", - "parentId": 9009 + "parentId": 9033 }, { "id": 13782, @@ -4677,10 +4660,10 @@ "target_id": 5557, "target_slot": 0, "type": "STRING", - "parentId": 9011 + "parentId": 9035 }, { - "id": 5, + "id": 13923, "origin_id": 5557, "origin_slot": 0, "target_id": 5558, @@ -4694,7 +4677,7 @@ "target_id": 5558, "target_slot": 1, "type": "CONDITIONING", - "parentId": 9013 + "parentId": 9037 }, { "id": 13786, @@ -4719,7 +4702,7 @@ "target_id": 5560, "target_slot": 1, "type": "CONDITIONING", - "parentId": 9015 + "parentId": 9039 }, { "id": 13789, @@ -4736,7 +4719,7 @@ "target_id": -20, "target_slot": 1, "type": "CONDITIONING", - "parentId": 9017 + "parentId": 9041 }, { "id": 13791, @@ -4753,7 +4736,7 @@ "target_id": -20, "target_slot": 0, "type": "STRING", - "parentId": 9019 + "parentId": 9043 }, { "id": 13793, @@ -4762,20 +4745,52 @@ "target_id": 1241, "target_slot": 2, "type": "FLOAT", - "parentId": 9021 + "parentId": 9045 }, { - "id": 4, + "id": 13924, "origin_id": 9004, "origin_slot": 0, "target_id": 5556, "target_slot": 1, "type": "STRING" + }, + { + "id": 13754, + "origin_id": -10, + "origin_slot": 1, + "target_id": 9004, + "target_slot": 0, + "type": "CLIP" + }, + { + "id": 13755, + "origin_id": -10, + "origin_slot": 2, + "target_id": 9004, + "target_slot": 5, + "type": "STRING" + }, + { + "id": 13746, + "origin_id": -10, + "origin_slot": 5, + "target_id": 9004, + "target_slot": 6, + "type": "INT" + }, + { + "id": 13616, + "origin_id": -10, + "origin_slot": 7, + "target_id": 5505, + "target_slot": 2, + "type": "COMBO" } ], "reroutes": [ { - "id": 9000, + "id": 9024, "pos": [ 268, 934.1857542723956 @@ -4785,8 +4800,8 @@ ] }, { - "id": 9001, - "parentId": 9000, + "id": 9025, + "parentId": 9024, "pos": [ 1171.2408203125, 934.1857542723956 @@ -4796,7 +4811,7 @@ ] }, { - "id": 9002, + "id": 9026, "pos": [ 268, 952.1857542723956 @@ -4806,8 +4821,8 @@ ] }, { - "id": 9003, - "parentId": 9002, + "id": 9027, + "parentId": 9026, "pos": [ 1171.2408203125, 952.1857542723956 @@ -4817,7 +4832,7 @@ ] }, { - "id": 9004, + "id": 9028, "pos": [ 268, 970.1857542723956 @@ -4827,8 +4842,8 @@ ] }, { - "id": 9005, - "parentId": 9004, + "id": 9029, + "parentId": 9028, "pos": [ 1171.2408203125, 970.1857542723956 @@ -4838,49 +4853,49 @@ ] }, { - "id": 9006, + "id": 9030, "pos": [ 268, 988.1857542723956 ], "linkIds": [ - 2 + 13921 ] }, { - "id": 9007, - "parentId": 9006, + "id": 9031, + "parentId": 9030, "pos": [ 821.2408203125, 988.1857542723956 ], "linkIds": [ - 2 + 13921 ] }, { - "id": 9008, + "id": 9032, "pos": [ 268, 1006.1857542723956 ], "linkIds": [ - 3 + 13922 ] }, { - "id": 9009, - "parentId": 9008, + "id": 9033, + "parentId": 9032, "pos": [ 821.2408203125, 1006.1857542723956 ], "linkIds": [ - 3 + 13922 ] }, { - "id": 9010, + "id": 9034, "pos": [ 268, 1024.1857542723956 @@ -4890,8 +4905,8 @@ ] }, { - "id": 9011, - "parentId": 9010, + "id": 9035, + "parentId": 9034, "pos": [ 1532.7228515625002, 1024.1857542723956 @@ -4901,7 +4916,7 @@ ] }, { - "id": 9012, + "id": 9036, "pos": [ 721.6919921875, 1042.1857542723956 @@ -4911,8 +4926,8 @@ ] }, { - "id": 9013, - "parentId": 9012, + "id": 9037, + "parentId": 9036, "pos": [ 1822.7228515625002, 1042.1857542723956 @@ -4922,7 +4937,7 @@ ] }, { - "id": 9014, + "id": 9038, "pos": [ 721.6919921875, 1060.1857542723956 @@ -4932,8 +4947,8 @@ ] }, { - "id": 9015, - "parentId": 9014, + "id": 9039, + "parentId": 9038, "pos": [ 1822.7228515625002, 1060.1857542723956 @@ -4943,7 +4958,7 @@ ] }, { - "id": 9016, + "id": 9040, "pos": [ 2188.4939453125003, 1078.1857542723956 @@ -4953,8 +4968,8 @@ ] }, { - "id": 9017, - "parentId": 9016, + "id": 9041, + "parentId": 9040, "pos": [ 2237.6277343750003, 1078.1857542723956 @@ -4964,7 +4979,7 @@ ] }, { - "id": 9018, + "id": 9042, "pos": [ 1127.2408203125, 1096.1857542723956 @@ -4974,8 +4989,8 @@ ] }, { - "id": 9019, - "parentId": 9018, + "id": 9043, + "parentId": 9042, "pos": [ 2237.6277343750003, 1096.1857542723956 @@ -4985,7 +5000,7 @@ ] }, { - "id": 9020, + "id": 9044, "pos": [ 268, 1114.1857542723956 @@ -4995,8 +5010,8 @@ ] }, { - "id": 9021, - "parentId": 9020, + "id": 9045, + "parentId": 9044, "pos": [ 1532.7228515625002, 1114.1857542723956 @@ -5012,10 +5027,10 @@ "id": "f9337bd7-ca7a-4a59-99f1-65b664bed7e7", "version": 1, "state": { - "lastGroupId": 158, - "lastNodeId": 9313, - "lastLinkId": 13808, - "lastRerouteId": 9038 + "lastGroupId": 163, + "lastNodeId": 9316, + "lastLinkId": 14005, + "lastRerouteId": 9179 }, "revision": 0, "config": {}, @@ -5044,7 +5059,7 @@ "name": "model", "type": "MODEL", "linkIds": [ - 1 + 13925 ], "localized_name": "model", "pos": [ @@ -5057,7 +5072,7 @@ "name": "positive", "type": "CONDITIONING", "linkIds": [ - 2 + 13926 ], "localized_name": "positive", "pos": [ @@ -5070,7 +5085,7 @@ "name": "negative", "type": "CONDITIONING", "linkIds": [ - 3 + 13927 ], "localized_name": "negative", "pos": [ @@ -5083,7 +5098,7 @@ "name": "latent_image", "type": "LATENT", "linkIds": [ - 4 + 13928 ], "localized_name": "latent_image", "pos": [ @@ -5096,7 +5111,7 @@ "name": "noise_seed", "type": "INT", "linkIds": [ - 5 + 13931 ], "label": "noise seed", "pos": [ @@ -5109,7 +5124,7 @@ "name": "cfg", "type": "FLOAT", "linkIds": [ - 13 + 13932 ], "label": "guider cfg", "pos": [ @@ -5122,7 +5137,7 @@ "name": "sampler_name", "type": "COMBO", "linkIds": [ - 8 + 13938 ], "pos": [ 250, @@ -5134,7 +5149,7 @@ "name": "tile_width", "type": "INT", "linkIds": [ - 14 + 13933 ], "label": "tile_width", "pos": [ @@ -5147,7 +5162,7 @@ "name": "tile_height", "type": "INT", "linkIds": [ - 6 + 13934 ], "label": "tile_height", "pos": [ @@ -5160,7 +5175,7 @@ "name": "overlap_frac", "type": "FLOAT", "linkIds": [ - 15 + 13935 ], "label": "overlap_frac", "pos": [ @@ -5173,7 +5188,7 @@ "name": "tile_frames", "type": "INT", "linkIds": [ - 16 + 13936 ], "label": "tile_frames", "pos": [ @@ -5186,7 +5201,7 @@ "name": "vae", "type": "VAE", "linkIds": [ - 7 + 13937 ], "label": "vae", "pos": [ @@ -5199,7 +5214,7 @@ "name": "audio_latent", "type": "LATENT", "linkIds": [ - 10 + 13940 ], "label": "audio_latent", "pos": [ @@ -5214,7 +5229,7 @@ "name": "video_latent", "type": "LATENT", "linkIds": [ - 9 + 13939 ], "pos": [ 1619.9463328320699, @@ -5226,7 +5241,7 @@ "name": "audio_latent", "type": "LATENT", "linkIds": [ - 17 + 13941 ], "pos": [ 1619.9463328320699, @@ -5258,7 +5273,7 @@ "widget": { "name": "sampler_name" }, - "link": 8 + "link": 13938 } ], "outputs": [ @@ -5267,14 +5282,14 @@ "name": "SAMPLER", "type": "SAMPLER", "links": [ - 12 + 13930 ] } ], "properties": { + "Node name for S&R": "KSamplerSelect", "cnr_id": "comfy-core", - "ver": "0.14.1", - "Node name for S&R": "KSamplerSelect" + "ver": "0.14.1" }, "widgets_values": [ "euler" @@ -5304,14 +5319,14 @@ "name": "SIGMAS", "type": "SIGMAS", "links": [ - 11 + 13929 ] } ], "properties": { + "Node name for S&R": "ManualSigmas", "cnr_id": "comfy-core", - "ver": "0.14.1", - "Node name for S&R": "ManualSigmas" + "ver": "0.14.1" }, "widgets_values": [ "1.0, 0.99375, 0.9875, 0.98125, 0.975, 0.909375, 0.725, 0.421875, 0.0" @@ -5365,44 +5380,44 @@ "localized_name": "model", "name": "model", "type": "MODEL", - "link": 1 + "link": 13925 }, { "localized_name": "positive", "name": "positive", "type": "CONDITIONING", - "link": 2 + "link": 13926 }, { "localized_name": "negative", "name": "negative", "type": "CONDITIONING", - "link": 3 + "link": 13927 }, { "localized_name": "latents", "name": "latents", "type": "LATENT", - "link": 4 + "link": 13928 }, { "localized_name": "sigmas", "name": "sigmas", "type": "SIGMAS", - "link": 11 + "link": 13929 }, { "localized_name": "sampler", "name": "sampler", "type": "SAMPLER", - "link": 12 + "link": 13930 }, { "localized_name": "vae", "name": "vae", "shape": 7, "type": "VAE", - "link": 7 + "link": 13937 }, { "localized_name": "seed", @@ -5411,7 +5426,7 @@ "widget": { "name": "seed" }, - "link": 5 + "link": 13931 }, { "localized_name": "cfg", @@ -5420,7 +5435,7 @@ "widget": { "name": "cfg" }, - "link": 13 + "link": 13932 }, { "localized_name": "tile_width", @@ -5429,7 +5444,7 @@ "widget": { "name": "tile_width" }, - "link": 14 + "link": 13933 }, { "localized_name": "tile_height", @@ -5438,7 +5453,7 @@ "widget": { "name": "tile_height" }, - "link": 6 + "link": 13934 }, { "localized_name": "overlap_frac", @@ -5447,7 +5462,7 @@ "widget": { "name": "overlap_frac" }, - "link": 15 + "link": 13935 }, { "localized_name": "tile_frames", @@ -5456,7 +5471,7 @@ "widget": { "name": "tile_frames" }, - "link": 16 + "link": 13936 } ], "outputs": [ @@ -5465,14 +5480,14 @@ "name": "output", "type": "LATENT", "links": [ - 9 + 13939 ] } ], "properties": { + "Node name for S&R": "LTXVTiledFusionSampler", "aux_id": "LightricksResearch/ComfyUI-LTXVideo-Internal", - "ver": "65bfc50105d620a6a21675e022d229f947c6eb57", - "Node name for S&R": "LTXVTiledFusionSampler" + "ver": "65bfc50105d620a6a21675e022d229f947c6eb57" }, "widgets_values": [ 42, @@ -5518,7 +5533,7 @@ "localized_name": "samples", "name": "samples", "type": "LATENT", - "link": 10 + "link": 13940 } ], "outputs": [ @@ -5527,15 +5542,15 @@ "name": "LATENT", "type": "LATENT", "links": [ - 17 + 13941 ] } ], "title": "Pass audio latent", "properties": { + "Node name for S&R": "RepeatLatentBatch", "cnr_id": "comfy-core", - "ver": "0.34.0", - "Node name for S&R": "RepeatLatentBatch" + "ver": "0.34.0" }, "widgets_values": [ 1 @@ -5561,43 +5576,43 @@ ], "links": [ { - "id": 1, + "id": 13925, "origin_id": -10, "origin_slot": 0, "target_id": 9100, "target_slot": 0, "type": "MODEL", - "parentId": 9001 + "parentId": 9047 }, { - "id": 2, + "id": 13926, "origin_id": -10, "origin_slot": 1, "target_id": 9100, "target_slot": 1, "type": "CONDITIONING", - "parentId": 9003 + "parentId": 9049 }, { - "id": 3, + "id": 13927, "origin_id": -10, "origin_slot": 2, "target_id": 9100, "target_slot": 2, "type": "CONDITIONING", - "parentId": 9005 + "parentId": 9051 }, { - "id": 4, + "id": 13928, "origin_id": -10, "origin_slot": 3, "target_id": 9100, "target_slot": 3, "type": "LATENT", - "parentId": 9007 + "parentId": 9053 }, { - "id": 11, + "id": 13929, "origin_id": 4984, "origin_slot": 0, "target_id": 9100, @@ -5605,7 +5620,7 @@ "type": "SIGMAS" }, { - "id": 12, + "id": 13930, "origin_id": 4831, "origin_slot": 0, "target_id": 9100, @@ -5613,70 +5628,61 @@ "type": "SAMPLER" }, { - "id": 5, + "id": 13931, "origin_id": -10, "origin_slot": 4, "target_id": 9100, "target_slot": 7, "type": "INT", - "parentId": 9009 + "parentId": 9055 }, { - "id": 13, + "id": 13932, "origin_id": -10, "origin_slot": 5, "target_id": 9100, "target_slot": 8, "type": "FLOAT", - "parentId": 9011 + "parentId": 9057 }, { - "id": 14, + "id": 13933, "origin_id": -10, "origin_slot": 7, "target_id": 9100, "target_slot": 9, "type": "INT", - "parentId": 9013 + "parentId": 9059 }, { - "id": 6, + "id": 13934, "origin_id": -10, "origin_slot": 8, "target_id": 9100, "target_slot": 10, "type": "INT", - "parentId": 9015 + "parentId": 9061 }, { - "id": 15, + "id": 13935, "origin_id": -10, "origin_slot": 9, "target_id": 9100, "target_slot": 11, "type": "FLOAT", - "parentId": 9017 + "parentId": 9063 }, { - "id": 16, - "origin_id": -10, - "origin_slot": 10, - "target_id": 9100, - "target_slot": 12, - "type": "INT", - "parentId": 9019 - }, - { - "id": 7, + "id": 13937, "origin_id": -10, "origin_slot": 11, "target_id": 9100, "target_slot": 6, "type": "VAE", - "parentId": 9021 + "parentId": 9067 }, { - "id": 8, + "id": 13938, "origin_id": -10, "origin_slot": 6, "target_id": 4831, @@ -5684,304 +5690,313 @@ "type": "COMBO" }, { - "id": 9, + "id": 13939, "origin_id": 9100, "origin_slot": 0, "target_id": -20, "target_slot": 0, "type": "LATENT", - "parentId": 9023 + "parentId": 9069 }, { - "id": 10, + "id": 13940, "origin_id": -10, "origin_slot": 12, "target_id": 9104, "target_slot": 0, "type": "LATENT", - "parentId": 9025 + "parentId": 9071 }, { - "id": 17, + "id": 13941, "origin_id": 9104, "origin_slot": 0, "target_id": -20, "target_slot": 1, "type": "LATENT" + }, + { + "id": 13936, + "origin_id": -10, + "origin_slot": 10, + "target_id": 9100, + "target_slot": 12, + "type": "INT", + "parentId": 9065 } ], "reroutes": [ { - "id": 9000, + "id": 9046, "pos": [ 268, 654 ], "linkIds": [ - 1 + 13925 ] }, { - "id": 9001, - "parentId": 9000, + "id": 9047, + "parentId": 9046, "pos": [ 891.9463328320699, 654 ], "linkIds": [ - 1 + 13925 ] }, { - "id": 9002, + "id": 9048, "pos": [ 268, 672 ], "linkIds": [ - 2 + 13926 ] }, { - "id": 9003, - "parentId": 9002, + "id": 9049, + "parentId": 9048, "pos": [ 891.9463328320699, 672 ], "linkIds": [ - 2 + 13926 ] }, { - "id": 9004, + "id": 9050, "pos": [ 268, 690 ], "linkIds": [ - 3 + 13927 ] }, { - "id": 9005, - "parentId": 9004, + "id": 9051, + "parentId": 9050, "pos": [ 891.9463328320699, 690 ], "linkIds": [ - 3 + 13927 ] }, { - "id": 9006, + "id": 9052, "pos": [ 268, 708 ], "linkIds": [ - 4 + 13928 ] }, { - "id": 9007, - "parentId": 9006, + "id": 9053, + "parentId": 9052, "pos": [ 891.9463328320699, 708 ], "linkIds": [ - 4 + 13928 ] }, { - "id": 9008, + "id": 9054, "pos": [ 268, 726 ], "linkIds": [ - 5 + 13931 ] }, { - "id": 9009, - "parentId": 9008, + "id": 9055, + "parentId": 9054, "pos": [ 891.9463328320699, 726 ], "linkIds": [ - 5 + 13931 ] }, { - "id": 9010, + "id": 9056, "pos": [ 268, 744 ], "linkIds": [ - 13 + 13932 ] }, { - "id": 9011, - "parentId": 9010, + "id": 9057, + "parentId": 9056, "pos": [ 891.9463328320699, 744 ], "linkIds": [ - 13 + 13932 ] }, { - "id": 9012, + "id": 9058, "pos": [ 268, 762 ], "linkIds": [ - 14 + 13933 ] }, { - "id": 9013, - "parentId": 9012, + "id": 9059, + "parentId": 9058, "pos": [ 891.9463328320699, 762 ], "linkIds": [ - 14 + 13933 ] }, { - "id": 9014, + "id": 9060, "pos": [ 268, 780 ], "linkIds": [ - 6 + 13934 ] }, { - "id": 9015, - "parentId": 9014, + "id": 9061, + "parentId": 9060, "pos": [ 891.9463328320699, 780 ], "linkIds": [ - 6 + 13934 ] }, { - "id": 9016, + "id": 9062, "pos": [ 268, 798 ], "linkIds": [ - 15 + 13935 ] }, { - "id": 9017, - "parentId": 9016, + "id": 9063, + "parentId": 9062, "pos": [ 891.9463328320699, 798 ], "linkIds": [ - 15 + 13935 ] }, { - "id": 9018, + "id": 9064, "pos": [ 268, 816 ], "linkIds": [ - 16 + 13936 ] }, { - "id": 9019, - "parentId": 9018, + "id": 9065, + "parentId": 9064, "pos": [ 891.9463328320699, 816 ], "linkIds": [ - 16 + 13936 ] }, { - "id": 9020, + "id": 9066, "pos": [ 268, 834 ], "linkIds": [ - 7 + 13937 ] }, { - "id": 9021, - "parentId": 9020, + "id": 9067, + "parentId": 9066, "pos": [ 891.9463328320699, 834 ], "linkIds": [ - 7 + 13937 ] }, { - "id": 9022, + "id": 9068, "pos": [ 1267.9463328320699, 852 ], "linkIds": [ - 9 + 13939 ] }, { - "id": 9023, - "parentId": 9022, + "id": 9069, + "parentId": 9068, "pos": [ 1601.9463328320699, 852 ], "linkIds": [ - 9 + 13939 ] }, { - "id": 9024, + "id": 9070, "pos": [ 268, 870 ], "linkIds": [ - 10 + 13940 ] }, { - "id": 9025, - "parentId": 9024, + "id": 9071, + "parentId": 9070, "pos": [ 1311.9463328320699, 870 ], "linkIds": [ - 10 + 13940 ] } ], @@ -5991,10 +6006,10 @@ "id": "bee43e38-9234-4e41-86ff-63874164f482", "version": 1, "state": { - "lastGroupId": 158, - "lastNodeId": 9313, - "lastLinkId": 13808, - "lastRerouteId": 9038 + "lastGroupId": 163, + "lastNodeId": 9316, + "lastLinkId": 14005, + "lastRerouteId": 9179 }, "revision": 0, "config": {}, @@ -6202,9 +6217,9 @@ } ], "properties": { + "Node name for S&R": "LTXVAudioVAEDecode", "cnr_id": "comfy-core", - "ver": "0.3.64", - "Node name for S&R": "LTXVAudioVAEDecode" + "ver": "0.3.64" } }, { @@ -6216,7 +6231,7 @@ ], "size": [ 270, - 126 + 150 ], "flags": {}, "order": 1, @@ -6266,19 +6281,21 @@ } ], "properties": { + "Node name for S&R": "CreateVideo", "cnr_id": "comfy-core", - "ver": "0.14.1", - "Node name for S&R": "CreateVideo" + "ver": "0.14.1" }, "widgets_values": [ 30, 8, - "sRGB" + "sRGB", + "none" ], "widgets_values_named": { "fps": 30, "bit_depth": 8, - "color_space": "sRGB" + "color_space": "sRGB", + "codec": "none" } }, { @@ -6356,9 +6373,9 @@ } ], "properties": { + "Node name for S&R": "VAEDecodeTiled", "cnr_id": "comfy-core", - "ver": "0.34.0", - "Node name for S&R": "VAEDecodeTiled" + "ver": "0.34.0" }, "widgets_values": [ 512, @@ -6420,7 +6437,7 @@ "target_id": 4849, "target_slot": 2, "type": "FLOAT", - "parentId": 9001 + "parentId": 9073 }, { "id": 13112, @@ -6437,7 +6454,7 @@ "target_id": 4849, "target_slot": 3, "type": "INT", - "parentId": 9003 + "parentId": 9075 }, { "id": 13710, @@ -6498,7 +6515,7 @@ ], "reroutes": [ { - "id": 9000, + "id": 9072, "pos": [ 268, 390 @@ -6508,8 +6525,8 @@ ] }, { - "id": 9001, - "parentId": 9000, + "id": 9073, + "parentId": 9072, "pos": [ 662, 390 @@ -6519,7 +6536,7 @@ ] }, { - "id": 9002, + "id": 9074, "pos": [ 268, 408 @@ -6529,8 +6546,8 @@ ] }, { - "id": 9003, - "parentId": 9002, + "id": 9075, + "parentId": 9074, "pos": [ 662, 408 @@ -6546,10 +6563,10 @@ "id": "c4a8f261-5b93-4e17-8d2a-6f01b3e97c45", "version": 1, "state": { - "lastGroupId": 158, - "lastNodeId": 9313, - "lastLinkId": 13808, - "lastRerouteId": 9038 + "lastGroupId": 163, + "lastNodeId": 9316, + "lastLinkId": 14005, + "lastRerouteId": 9179 }, "revision": 0, "config": {}, @@ -6557,19 +6574,19 @@ "inputNode": { "id": -10, "bounding": [ - 40, - 206, - 210, - 72 + -94.64116003230372, + 380.5815157341756, + 128, + 68 ] }, "outputNode": { "id": -20, "bounding": [ - 1096, - 206, - 190, - 182 + 1328.0145074362194, + 310.65612991137976, + 128, + 168 ] }, "inputs": [ @@ -6578,11 +6595,11 @@ "name": "video", "type": "VIDEO", "linkIds": [ - 10 + 13942 ], "pos": [ - 250, - 234 + 9.358839967696284, + 404.5815157341756 ] } ], @@ -6592,11 +6609,11 @@ "name": "image", "type": "IMAGE", "linkIds": [ - 2 + 13949 ], "pos": [ - 1096, - 234 + 1352.0145074362194, + 334.65612991137976 ] }, { @@ -6604,11 +6621,11 @@ "name": "width", "type": "INT", "linkIds": [ - 13 + 13943 ], "pos": [ - 1096, - 256 + 1352.0145074362194, + 354.65612991137976 ] }, { @@ -6616,11 +6633,11 @@ "name": "height", "type": "INT", "linkIds": [ - 14 + 13944 ], "pos": [ - 1096, - 278 + 1352.0145074362194, + 374.65612991137976 ] }, { @@ -6628,11 +6645,11 @@ "name": "length", "type": "INT", "linkIds": [ - 15 + 13945 ], "pos": [ - 1096, - 300 + 1352.0145074362194, + 394.65612991137976 ] }, { @@ -6640,11 +6657,11 @@ "name": "fps", "type": "FLOAT", "linkIds": [ - 16 + 13946 ], "pos": [ - 1096, - 322 + 1352.0145074362194, + 414.65612991137976 ] }, { @@ -6652,12 +6669,12 @@ "name": "audio", "type": "AUDIO", "linkIds": [ - 18 + 14001 ], "label": "audio", "pos": [ - 1096, - 344 + 1352.0145074362194, + 434.65612991137976 ] } ], @@ -6667,22 +6684,22 @@ "id": 5029, "type": "GetImageSize", "pos": [ - 806, - 206 + 773.5688732626718, + 207.6570279003995 ], "size": [ 210, 136 ], "flags": {}, - "order": 1, + "order": 4, "mode": 0, "inputs": [ { "localized_name": "image", "name": "image", "type": "IMAGE", - "link": 1 + "link": 13948 } ], "outputs": [ @@ -6691,7 +6708,7 @@ "name": "width", "type": "INT", "links": [ - 13 + 13943 ] }, { @@ -6699,7 +6716,7 @@ "name": "height", "type": "INT", "links": [ - 14 + 13944 ] }, { @@ -6707,36 +6724,37 @@ "name": "batch_size", "type": "INT", "links": [ - 15 + 13945, + 14005 ] } ], "properties": { + "Node name for S&R": "GetImageSize", "cnr_id": "comfy-core", - "ver": "0.16.0", - "Node name for S&R": "GetImageSize" + "ver": "0.16.0" } }, { "id": 9006, "type": "GetVideoComponents", "pos": [ - 330, - 206 + 307.074323278948, + 204.10159703885432 ], "size": [ 374.163671875, 106 ], "flags": {}, - "order": 2, + "order": 5, "mode": 0, "inputs": [ { "localized_name": "video", "name": "video", "type": "VIDEO", - "link": 10 + "link": 13942 } ], "outputs": [ @@ -6745,8 +6763,8 @@ "name": "images", "type": "IMAGE", "links": [ - 1, - 2 + 13948, + 13949 ] }, { @@ -6754,7 +6772,7 @@ "name": "audio", "type": "AUDIO", "links": [ - 18 + 14003 ] }, { @@ -6762,7 +6780,8 @@ "name": "fps", "type": "FLOAT", "links": [ - 16 + 13946, + 14004 ] }, { @@ -6779,17 +6798,17 @@ } ], "properties": { + "Node name for S&R": "GetVideoComponents", "cnr_id": "comfy-core", - "ver": "0.3.75", - "Node name for S&R": "GetVideoComponents" + "ver": "0.3.75" } }, { "id": 9001, "type": "MarkdownNote", "pos": [ - 330, - 80 + 317.3569102880857, + -98.27345326985683 ], "size": [ 396, @@ -6810,17 +6829,201 @@ }, "color": "#432", "bgcolor": "#653" + }, + { + "id": 9314, + "type": "ComfyMathExpression", + "pos": [ + 228.87755743638812, + 640.0497870082171 + ], + "size": [ + 270, + 148 + ], + "flags": {}, + "order": 1, + "mode": 0, + "inputs": [ + { + "label": "a", + "localized_name": "a", + "name": "values.a", + "type": "FLOAT,INT,BOOLEAN", + "link": 14005 + }, + { + "localized_name": "b", + "name": "values.b", + "shape": 7, + "type": "FLOAT,INT,BOOLEAN", + "link": 14004 + }, + { + "localized_name": "c", + "name": "values.c", + "shape": 7, + "type": "FLOAT,INT,BOOLEAN", + "link": null + } + ], + "outputs": [ + { + "localized_name": "FLOAT", + "name": "FLOAT", + "type": "FLOAT", + "links": [ + 13999 + ] + }, + { + "localized_name": "INT", + "name": "INT", + "type": "INT", + "links": [] + }, + { + "localized_name": "BOOL", + "name": "BOOL", + "type": "BOOLEAN", + "links": [] + } + ], + "title": "audio duration = frames / fps", + "properties": { + "Node name for S&R": "ComfyMathExpression", + "cnr_id": "comfy-core" + }, + "widgets_values": [ + "a / b" + ], + "widgets_values_named": { + "expression": "a / b" + } + }, + { + "id": 9315, + "type": "EmptyAudio", + "pos": [ + 537.5704397584304, + 647.4774884636826 + ], + "size": [ + 270, + 110 + ], + "flags": {}, + "order": 2, + "mode": 0, + "inputs": [ + { + "localized_name": "duration", + "name": "duration", + "type": "FLOAT", + "widget": { + "name": "duration" + }, + "link": 13999 + } + ], + "outputs": [ + { + "localized_name": "AUDIO", + "name": "AUDIO", + "type": "AUDIO", + "links": [ + 14000 + ] + } + ], + "title": "silence fallback", + "properties": { + "Node name for S&R": "EmptyAudio", + "cnr_id": "comfy-core" + }, + "widgets_values": [ + 60, + 44100, + 2 + ], + "widgets_values_named": { + "duration": 60, + "sample_rate": 44100, + "channels": 2 + } + }, + { + "id": 9316, + "type": "AudioMerge", + "pos": [ + 842.9736729046585, + 641.2142460425019 + ], + "size": [ + 270, + 110 + ], + "flags": {}, + "order": 6, + "mode": 0, + "inputs": [ + { + "localized_name": "audio1", + "name": "audio1", + "type": "AUDIO", + "link": 14003 + }, + { + "localized_name": "audio2", + "name": "audio2", + "type": "AUDIO", + "link": 14000 + } + ], + "outputs": [ + { + "localized_name": "AUDIO", + "name": "AUDIO", + "type": "AUDIO", + "links": [ + 14001 + ] + } + ], + "title": "use source audio, else silence", + "properties": { + "Node name for S&R": "AudioMerge", + "cnr_id": "comfy-core" + }, + "widgets_values": [ + "add" + ], + "widgets_values_named": { + "merge_method": "add" + } } ], "groups": [ { - "id": 1, + "id": 159, "title": "Source Video", "bounding": [ - 306, - 36, - 734, - 330 + 281.36390306952944, + 123.03223205838545, + 729.5416915852866, + 245.41271072536887 + ], + "color": "#3f789e", + "flags": {} + }, + { + "id": 163, + "title": "Add silent sound for input video without sound", + "bounding": [ + 193.72637842930936, + 536.17868663662, + 941.5866593575402, + 274.3619503493783 ], "color": "#3f789e", "flags": {} @@ -6828,7 +7031,7 @@ ], "links": [ { - "id": 10, + "id": 13942, "origin_id": -10, "origin_slot": 0, "target_id": 9006, @@ -6836,7 +7039,7 @@ "type": "VIDEO" }, { - "id": 13, + "id": 13943, "origin_id": 5029, "origin_slot": 0, "target_id": -20, @@ -6844,7 +7047,7 @@ "type": "INT" }, { - "id": 14, + "id": 13944, "origin_id": 5029, "origin_slot": 1, "target_id": -20, @@ -6852,7 +7055,7 @@ "type": "INT" }, { - "id": 15, + "id": 13945, "origin_id": 5029, "origin_slot": 2, "target_id": -20, @@ -6860,125 +7063,152 @@ "type": "INT" }, { - "id": 16, + "id": 13946, "origin_id": 9006, "origin_slot": 2, "target_id": -20, "target_slot": 4, "type": "FLOAT", - "parentId": 9001 + "parentId": 9077 }, { - "id": 18, - "origin_id": 9006, - "origin_slot": 1, - "target_id": -20, - "target_slot": 5, - "type": "AUDIO", - "parentId": 9003 - }, - { - "id": 1, + "id": 13948, "origin_id": 9006, "origin_slot": 0, "target_id": 5029, "target_slot": 0, - "type": "IMAGE", - "parentId": 9005 + "type": "IMAGE" }, { - "id": 2, + "id": 13949, "origin_id": 9006, "origin_slot": 0, "target_id": -20, "target_slot": 0, "type": "IMAGE", - "parentId": 9007 + "parentId": 9083 + }, + { + "id": 13999, + "origin_id": 9314, + "origin_slot": 0, + "target_id": 9315, + "target_slot": 0, + "type": "FLOAT" + }, + { + "id": 14000, + "origin_id": 9315, + "origin_slot": 0, + "target_id": 9316, + "target_slot": 1, + "type": "AUDIO" + }, + { + "id": 14001, + "origin_id": 9316, + "origin_slot": 0, + "target_id": -20, + "target_slot": 5, + "type": "AUDIO" + }, + { + "id": 14003, + "origin_id": 9006, + "origin_slot": 1, + "target_id": 9316, + "target_slot": 0, + "type": "AUDIO" + }, + { + "id": 14004, + "origin_id": 9006, + "origin_slot": 2, + "target_id": 9314, + "target_slot": 1, + "type": "FLOAT" + }, + { + "id": 14005, + "origin_id": 5029, + "origin_slot": 2, + "target_id": 9314, + "target_slot": 0, + "type": "INT" + } + ], + "floatingLinks": [ + { + "id": 14002, + "origin_id": -1, + "origin_slot": -1, + "target_id": -20, + "target_slot": 5, + "type": "AUDIO", + "parentId": 9079 } ], "reroutes": [ { - "id": 9000, + "id": 9076, "pos": [ 722.163671875, 428 ], "linkIds": [ - 16 + 13946 ] }, { - "id": 9001, - "parentId": 9000, + "id": 9077, + "parentId": 9076, "pos": [ 1078, 428 ], "linkIds": [ - 16 + 13946 ] }, { - "id": 9002, + "id": 9078, "pos": [ 722.163671875, 446 ], - "linkIds": [ - 18 - ] + "linkIds": [] }, { - "id": 9003, - "parentId": 9002, + "id": 9079, + "parentId": 9078, "pos": [ 1078, 446 ], - "linkIds": [ - 18 - ] + "linkIds": [], + "floating": { + "slotType": "input" + } }, { - "id": 9004, - "pos": [ - 722.163671875, - 464 - ], - "linkIds": [ - 1 - ] - }, - { - "id": 9005, - "parentId": 9004, - "pos": [ - 788, - 464 - ], - "linkIds": [ - 1 - ] - }, - { - "id": 9006, + "id": 9082, "pos": [ 722.163671875, 482 ], "linkIds": [ - 2 + 13949 ] }, { - "id": 9007, - "parentId": 9006, + "id": 9083, + "parentId": 9082, "pos": [ 1078, 482 ], "linkIds": [ - 2 + 13949 ] } ], @@ -6988,10 +7218,10 @@ "id": "d92e6f38-7a14-4c85-b3e0-9f52a1d68b74", "version": 1, "state": { - "lastGroupId": 158, - "lastNodeId": 9313, - "lastLinkId": 13808, - "lastRerouteId": 9038 + "lastGroupId": 163, + "lastNodeId": 9316, + "lastLinkId": 14005, + "lastRerouteId": 9179 }, "revision": 0, "config": {}, @@ -7020,7 +7250,7 @@ "name": "latent_downscale_factor", "type": "FLOAT", "linkIds": [ - 15 + 13955 ], "label": "latent_downscale_factor", "pos": [ @@ -7034,7 +7264,7 @@ "type": "INT", "linkIds": [ 61, - 19 + 13961 ], "label": "length", "pos": [ @@ -7047,7 +7277,7 @@ "name": "fps", "type": "FLOAT", "linkIds": [ - 21 + 13956 ], "label": "fps", "pos": [ @@ -7099,7 +7329,7 @@ "name": "positive", "type": "CONDITIONING", "linkIds": [ - 8 + 13952 ], "label": "positive", "pos": [ @@ -7112,7 +7342,7 @@ "name": "negative", "type": "CONDITIONING", "linkIds": [ - 9 + 13953 ], "label": "negative", "pos": [ @@ -7125,7 +7355,7 @@ "name": "vae", "type": "VAE", "linkIds": [ - 11 + 13954 ], "label": "vae", "pos": [ @@ -7219,7 +7449,7 @@ "name": "frozen_audio", "type": "LATENT", "linkIds": [ - 2 + 13957 ], "label": "frozen_audio", "pos": [ @@ -7457,8 +7687,8 @@ "name": "tile_frames", "type": "INT", "links": [ - 7, - 75 + 75, + 13960 ] }, { @@ -7480,9 +7710,9 @@ ], "title": "Get Tiling Sizes", "properties": { + "Node name for S&R": "LTXVGetTilingSizes", "aux_id": "LightricksResearch/ComfyUI-LTXVideo-Internal", - "ver": "65bfc50105d620a6a21675e022d229f947c6eb57", - "Node name for S&R": "LTXVGetTilingSizes" + "ver": "65bfc50105d620a6a21675e022d229f947c6eb57" }, "widgets_values": [ 1920, @@ -7524,13 +7754,13 @@ "localized_name": "positive", "name": "positive", "type": "CONDITIONING", - "link": 8 + "link": 13952 }, { "localized_name": "negative", "name": "negative", "type": "CONDITIONING", - "link": 9 + "link": 13953 }, { "localized_name": "frame_rate", @@ -7539,7 +7769,7 @@ "widget": { "name": "frame_rate" }, - "link": 21 + "link": 13956 } ], "outputs": [ @@ -7549,8 +7779,8 @@ "type": "CONDITIONING", "slot_index": 0, "links": [ - 4, - 29 + 29, + 13950 ] }, { @@ -7559,15 +7789,15 @@ "type": "CONDITIONING", "slot_index": 1, "links": [ - 5, - 30 + 30, + 13951 ] } ], "properties": { + "Node name for S&R": "LTXVConditioning", "cnr_id": "comfy-core", - "ver": "0.3.28", - "Node name for S&R": "LTXVConditioning" + "ver": "0.3.28" }, "widgets_values": [ 24 @@ -7616,7 +7846,7 @@ "widget": { "name": "length" }, - "link": 19 + "link": 13961 } ], "outputs": [ @@ -7625,14 +7855,14 @@ "name": "LATENT", "type": "LATENT", "links": [ - 1 + 13958 ] } ], "properties": { + "Node name for S&R": "EmptyLTXVLatentVideo", "cnr_id": "comfy-core", - "ver": "0.3.43", - "Node name for S&R": "EmptyLTXVLatentVideo" + "ver": "0.3.43" }, "widgets_values": [ 960, @@ -7693,15 +7923,15 @@ "name": "IMAGE", "type": "IMAGE", "links": [ - 16 + 13959 ] } ], "title": "Resize guide to canvas", "properties": { + "Node name for S&R": "ImageScale", "cnr_id": "comfy-core", - "ver": "0.34.0", - "Node name for S&R": "ImageScale" + "ver": "0.34.0" }, "widgets_values": [ "lanczos", @@ -7735,31 +7965,31 @@ "localized_name": "positive", "name": "positive", "type": "CONDITIONING", - "link": 4 + "link": 13950 }, { "localized_name": "negative", "name": "negative", "type": "CONDITIONING", - "link": 5 + "link": 13951 }, { "localized_name": "vae", "name": "vae", "type": "VAE", - "link": 11 + "link": 13954 }, { "localized_name": "latent", "name": "latent", "type": "LATENT", - "link": 1 + "link": 13958 }, { "localized_name": "image", "name": "image", "type": "IMAGE", - "link": 16 + "link": 13959 }, { "localized_name": "latent_downscale_factor", @@ -7768,7 +7998,7 @@ "widget": { "name": "latent_downscale_factor" }, - "link": 15 + "link": 13955 }, { "localized_name": "tile_frames", @@ -7778,7 +8008,7 @@ "widget": { "name": "tile_frames" }, - "link": 7 + "link": 13960 } ], "outputs": [ @@ -7808,9 +8038,9 @@ } ], "properties": { + "Node name for S&R": "LTXAddVideoICLoRAGuide", "aux_id": "LightricksResearch/ComfyUI-LTXVideo-Internal", - "ver": "65bfc50105d620a6a21675e022d229f947c6eb57", - "Node name for S&R": "LTXAddVideoICLoRAGuide" + "ver": "65bfc50105d620a6a21675e022d229f947c6eb57" }, "widgets_values": [ 0, @@ -7874,9 +8104,9 @@ } ], "properties": { + "Node name for S&R": "VAEEncodeAudio", "cnr_id": "comfy-core", - "ver": "0.34.0", - "Node name for S&R": "VAEEncodeAudio" + "ver": "0.34.0" } }, { @@ -7931,21 +8161,21 @@ "name": "frozen_audio", "type": "LATENT", "links": [ - 2 + 13957 ] } ], "title": "freeze the source audio", "properties": { + "Node name for S&R": "LTXVSetAudioRefTokens", "aux_id": "LightricksResearch/ComfyUI-LTXVideo-Internal", - "ver": "65bfc50105d620a6a21675e022d229f947c6eb57", - "Node name for S&R": "LTXVSetAudioRefTokens" + "ver": "65bfc50105d620a6a21675e022d229f947c6eb57" } } ], "groups": [ { - "id": 1, + "id": 160, "title": "Preprocess", "bounding": [ 306, @@ -7959,25 +8189,25 @@ ], "links": [ { - "id": 4, + "id": 13950, "origin_id": 9005, "origin_slot": 0, "target_id": 5012, "target_slot": 0, "type": "CONDITIONING", - "parentId": 9001 + "parentId": 9085 }, { - "id": 5, + "id": 13951, "origin_id": 9005, "origin_slot": 1, "target_id": 5012, "target_slot": 1, "type": "CONDITIONING", - "parentId": 9003 + "parentId": 9087 }, { - "id": 8, + "id": 13952, "origin_id": -10, "origin_slot": 6, "target_id": 9005, @@ -7985,7 +8215,7 @@ "type": "CONDITIONING" }, { - "id": 9, + "id": 13953, "origin_id": -10, "origin_slot": 7, "target_id": 9005, @@ -7993,25 +8223,16 @@ "type": "CONDITIONING" }, { - "id": 11, + "id": 13954, "origin_id": -10, "origin_slot": 8, "target_id": 5012, "target_slot": 2, "type": "VAE", - "parentId": 9005 + "parentId": 9089 }, { - "id": 15, - "origin_id": -10, - "origin_slot": 0, - "target_id": 5012, - "target_slot": 5, - "type": "FLOAT", - "parentId": 9007 - }, - { - "id": 21, + "id": 13956, "origin_id": -10, "origin_slot": 2, "target_id": 9005, @@ -8083,22 +8304,151 @@ "type": "CONDITIONING" }, { - "id": 2, + "id": 13957, "origin_id": 9008, "origin_slot": 2, "target_id": -20, "target_slot": 3, "type": "LATENT", - "parentId": 9009 + "parentId": 9093 }, { - "id": 1, + "id": 13958, "origin_id": 3059, "origin_slot": 0, "target_id": 5012, "target_slot": 3, "type": "LATENT", - "parentId": 9011 + "parentId": 9095 + }, + { + "id": 53, + "origin_id": -10, + "origin_slot": 10, + "target_id": 9200, + "target_slot": 0, + "type": "IMAGE" + }, + { + "id": 54, + "origin_id": 9200, + "origin_slot": 0, + "target_id": 3059, + "target_slot": 0, + "type": "INT" + }, + { + "id": 55, + "origin_id": 9200, + "origin_slot": 1, + "target_id": 3059, + "target_slot": 1, + "type": "INT" + }, + { + "id": 58, + "origin_id": -10, + "origin_slot": 10, + "target_id": 9201, + "target_slot": 0, + "type": "IMAGE", + "parentId": 9097 + }, + { + "id": 13959, + "origin_id": 9201, + "origin_slot": 0, + "target_id": 5012, + "target_slot": 4, + "type": "IMAGE" + }, + { + "id": 13961, + "origin_id": -10, + "origin_slot": 1, + "target_id": 3059, + "target_slot": 2, + "type": "INT" + }, + { + "id": 70, + "origin_id": 9200, + "origin_slot": 2, + "target_id": -20, + "target_slot": 4, + "type": "INT", + "parentId": 9101 + }, + { + "id": 71, + "origin_id": 9200, + "origin_slot": 3, + "target_id": -20, + "target_slot": 5, + "type": "INT", + "parentId": 9103 + }, + { + "id": 74, + "origin_id": 9200, + "origin_slot": 6, + "target_id": -20, + "target_slot": 6, + "type": "FLOAT", + "parentId": 9105 + }, + { + "id": 75, + "origin_id": 9200, + "origin_slot": 7, + "target_id": -20, + "target_slot": 7, + "type": "INT", + "parentId": 9107 + }, + { + "id": 72, + "origin_id": 9200, + "origin_slot": 4, + "target_id": -20, + "target_slot": 8, + "type": "INT", + "parentId": 9109 + }, + { + "id": 73, + "origin_id": 9200, + "origin_slot": 5, + "target_id": -20, + "target_slot": 9, + "type": "INT", + "parentId": 9111 + }, + { + "id": 76, + "origin_id": 9200, + "origin_slot": 8, + "target_id": -20, + "target_slot": 10, + "type": "BOOLEAN", + "parentId": 9113 + }, + { + "id": 77, + "origin_id": 9200, + "origin_slot": 9, + "target_id": -20, + "target_slot": 11, + "type": "STRING", + "parentId": 9115 + }, + { + "id": 61, + "origin_id": -10, + "origin_slot": 1, + "target_id": 9200, + "target_slot": 1, + "type": "INT" }, { "id": 50, @@ -8124,38 +8474,6 @@ "target_slot": 4, "type": "COMBO" }, - { - "id": 53, - "origin_id": -10, - "origin_slot": 10, - "target_id": 9200, - "target_slot": 0, - "type": "IMAGE" - }, - { - "id": 61, - "origin_id": -10, - "origin_slot": 1, - "target_id": 9200, - "target_slot": 1, - "type": "INT" - }, - { - "id": 54, - "origin_id": 9200, - "origin_slot": 0, - "target_id": 3059, - "target_slot": 0, - "type": "INT" - }, - { - "id": 55, - "origin_id": 9200, - "origin_slot": 1, - "target_id": 3059, - "target_slot": 1, - "type": "INT" - }, { "id": 56, "origin_id": 9200, @@ -8173,241 +8491,153 @@ "type": "INT" }, { - "id": 58, + "id": 13955, "origin_id": -10, - "origin_slot": 10, - "target_id": 9201, - "target_slot": 0, - "type": "IMAGE", - "parentId": 9013 - }, - { - "id": 16, - "origin_id": 9201, "origin_slot": 0, "target_id": 5012, - "target_slot": 4, - "type": "IMAGE" + "target_slot": 5, + "type": "FLOAT", + "parentId": 9091 }, { - "id": 7, + "id": 13960, "origin_id": 9200, "origin_slot": 7, "target_id": 5012, "target_slot": 6, "type": "INT", - "parentId": 9015 - }, - { - "id": 19, - "origin_id": -10, - "origin_slot": 1, - "target_id": 3059, - "target_slot": 2, - "type": "INT" - }, - { - "id": 70, - "origin_id": 9200, - "origin_slot": 2, - "target_id": -20, - "target_slot": 4, - "type": "INT", - "parentId": 9017 - }, - { - "id": 71, - "origin_id": 9200, - "origin_slot": 3, - "target_id": -20, - "target_slot": 5, - "type": "INT", - "parentId": 9019 - }, - { - "id": 74, - "origin_id": 9200, - "origin_slot": 6, - "target_id": -20, - "target_slot": 6, - "type": "FLOAT", - "parentId": 9021 - }, - { - "id": 75, - "origin_id": 9200, - "origin_slot": 7, - "target_id": -20, - "target_slot": 7, - "type": "INT", - "parentId": 9023 - }, - { - "id": 72, - "origin_id": 9200, - "origin_slot": 4, - "target_id": -20, - "target_slot": 8, - "type": "INT", - "parentId": 9025 - }, - { - "id": 73, - "origin_id": 9200, - "origin_slot": 5, - "target_id": -20, - "target_slot": 9, - "type": "INT", - "parentId": 9027 - }, - { - "id": 76, - "origin_id": 9200, - "origin_slot": 8, - "target_id": -20, - "target_slot": 10, - "type": "BOOLEAN", - "parentId": 9029 - }, - { - "id": 77, - "origin_id": 9200, - "origin_slot": 9, - "target_id": -20, - "target_slot": 11, - "type": "STRING", - "parentId": 9031 + "parentId": 9099 } ], "reroutes": [ { - "id": 9000, + "id": 9084, "pos": [ 618.1809911778764, 958 ], "linkIds": [ - 4 + 13950 ] }, { - "id": 9001, - "parentId": 9000, + "id": 9085, + "parentId": 9084, "pos": [ 1055.4432958653765, 958 ], "linkIds": [ - 4 + 13950 ] }, { - "id": 9002, + "id": 9086, "pos": [ 618.1809911778764, 976 ], "linkIds": [ - 5 + 13951 ] }, { - "id": 9003, - "parentId": 9002, + "id": 9087, + "parentId": 9086, "pos": [ 1055.4432958653765, 976 ], "linkIds": [ - 5 + 13951 ] }, { - "id": 9004, + "id": 9088, "pos": [ 268, 994 ], "linkIds": [ - 11 + 13954 ] }, { - "id": 9005, - "parentId": 9004, + "id": 9089, + "parentId": 9088, "pos": [ 1055.4432958653765, 994 ], "linkIds": [ - 11 + 13954 ] }, { - "id": 9006, + "id": 9090, "pos": [ 268, 1012 ], "linkIds": [ - 15 + 13955 ] }, { - "id": 9007, - "parentId": 9006, + "id": 9091, + "parentId": 9090, "pos": [ 1055.4432958653765, 1012 ], "linkIds": [ - 15 + 13955 ] }, { - "id": 9008, + "id": 9092, "pos": [ 1011.4432958653764, 1030 ], "linkIds": [ - 2 + 13957 ] }, { - "id": 9009, - "parentId": 9008, + "id": 9093, + "parentId": 9092, "pos": [ 1452.3296239903766, 1030 ], "linkIds": [ - 2 + 13957 ] }, { - "id": 9010, + "id": 9094, "pos": [ 618.1809911778764, 1048 ], "linkIds": [ - 1 + 13958 ] }, { - "id": 9011, - "parentId": 9010, + "id": 9095, + "parentId": 9094, "pos": [ 1055.4432958653765, 1048 ], "linkIds": [ - 1 + 13958 ] }, { - "id": 9012, + "id": 9096, "pos": [ 268, 1066 @@ -8417,8 +8647,8 @@ ] }, { - "id": 9013, - "parentId": 9012, + "id": 9097, + "parentId": 9096, "pos": [ 662.1809911778764, 1066 @@ -8428,28 +8658,28 @@ ] }, { - "id": 9014, + "id": 9098, "pos": [ 618, 1084 ], "linkIds": [ - 7 + 13960 ] }, { - "id": 9015, - "parentId": 9014, + "id": 9099, + "parentId": 9098, "pos": [ 1055.4432958653765, 1084 ], "linkIds": [ - 7 + 13960 ] }, { - "id": 9016, + "id": 9100, "pos": [ 618, 1102 @@ -8459,8 +8689,8 @@ ] }, { - "id": 9017, - "parentId": 9016, + "id": 9101, + "parentId": 9100, "pos": [ 1452.3296239903766, 1102 @@ -8470,7 +8700,7 @@ ] }, { - "id": 9018, + "id": 9102, "pos": [ 618, 1120 @@ -8480,8 +8710,8 @@ ] }, { - "id": 9019, - "parentId": 9018, + "id": 9103, + "parentId": 9102, "pos": [ 1452.3296239903766, 1120 @@ -8491,7 +8721,7 @@ ] }, { - "id": 9020, + "id": 9104, "pos": [ 618, 1138 @@ -8501,8 +8731,8 @@ ] }, { - "id": 9021, - "parentId": 9020, + "id": 9105, + "parentId": 9104, "pos": [ 1452.3296239903766, 1138 @@ -8512,7 +8742,7 @@ ] }, { - "id": 9022, + "id": 9106, "pos": [ 618, 1156 @@ -8522,8 +8752,8 @@ ] }, { - "id": 9023, - "parentId": 9022, + "id": 9107, + "parentId": 9106, "pos": [ 1452.3296239903766, 1156 @@ -8533,7 +8763,7 @@ ] }, { - "id": 9024, + "id": 9108, "pos": [ 618, 1174 @@ -8543,8 +8773,8 @@ ] }, { - "id": 9025, - "parentId": 9024, + "id": 9109, + "parentId": 9108, "pos": [ 1452.3296239903766, 1174 @@ -8554,7 +8784,7 @@ ] }, { - "id": 9026, + "id": 9110, "pos": [ 618, 1192 @@ -8564,8 +8794,8 @@ ] }, { - "id": 9027, - "parentId": 9026, + "id": 9111, + "parentId": 9110, "pos": [ 1452.3296239903766, 1192 @@ -8575,7 +8805,7 @@ ] }, { - "id": 9028, + "id": 9112, "pos": [ 618, 1210 @@ -8585,8 +8815,8 @@ ] }, { - "id": 9029, - "parentId": 9028, + "id": 9113, + "parentId": 9112, "pos": [ 1452.3296239903766, 1210 @@ -8596,7 +8826,7 @@ ] }, { - "id": 9030, + "id": 9114, "pos": [ 618, 1228 @@ -8606,8 +8836,8 @@ ] }, { - "id": 9031, - "parentId": 9030, + "id": 9115, + "parentId": 9114, "pos": [ 1452.3296239903766, 1228 @@ -8623,10 +8853,10 @@ "id": "2449b2d3-ef34-45f8-833d-a4ebca19b39e", "version": 1, "state": { - "lastGroupId": 158, - "lastNodeId": 9313, - "lastLinkId": 13808, - "lastRerouteId": 9038 + "lastGroupId": 163, + "lastNodeId": 9316, + "lastLinkId": 14005, + "lastRerouteId": 9179 }, "revision": 0, "config": {}, @@ -8681,7 +8911,7 @@ "name": "negative", "type": "CONDITIONING", "linkIds": [ - 9 + 13964 ], "label": "negative", "pos": [ @@ -8694,7 +8924,7 @@ "name": "vae", "type": "VAE", "linkIds": [ - 11, + 13965, 85, 88 ], @@ -8709,7 +8939,7 @@ "name": "audio_vae", "type": "VAE", "linkIds": [ - 27 + 13972 ], "label": "audio_vae", "pos": [ @@ -8722,7 +8952,7 @@ "name": "latent_downscale_factor", "type": "FLOAT", "linkIds": [ - 15 + 13966 ], "label": "latent_downscale_factor", "pos": [ @@ -8735,7 +8965,7 @@ "name": "source_image", "type": "IMAGE", "linkIds": [ - 58 + 13978 ], "label": "source_image", "pos": [ @@ -8748,7 +8978,7 @@ "name": "fps", "type": "FLOAT", "linkIds": [ - 21 + 13967 ], "label": "fps", "pos": [ @@ -8761,7 +8991,7 @@ "name": "audio", "type": "AUDIO", "linkIds": [ - 26 + 13971 ], "label": "audio", "pos": [ @@ -8774,7 +9004,7 @@ "name": "tile_frames", "type": "INT", "linkIds": [ - 2 + 13977 ], "label": "tile_frames", "pos": [ @@ -8800,7 +9030,7 @@ "name": "output_width", "type": "INT", "linkIds": [ - 56 + 13979 ], "label": "output_width", "pos": [ @@ -8813,7 +9043,7 @@ "name": "output_height", "type": "INT", "linkIds": [ - 57 + 13980 ], "label": "output_height", "pos": [ @@ -8855,7 +9085,7 @@ "name": "positive", "type": "CONDITIONING", "linkIds": [ - 23 + 13968 ], "label": "positive", "pos": [ @@ -8868,7 +9098,7 @@ "name": "negative", "type": "CONDITIONING", "linkIds": [ - 24 + 13969 ], "label": "negative", "pos": [ @@ -8881,7 +9111,7 @@ "name": "latent", "type": "LATENT", "linkIds": [ - 25 + 13970 ], "label": "latent", "pos": [ @@ -8894,7 +9124,7 @@ "name": "frozen_audio", "type": "LATENT", "linkIds": [ - 1 + 13976 ], "label": "frozen_audio", "pos": [ @@ -8948,9 +9178,9 @@ ], "title": "Stage 2 prompt encode", "properties": { + "Node name for S&R": "CLIPTextEncode", "cnr_id": "comfy-core", - "ver": "0.34.0", - "Node name for S&R": "CLIPTextEncode" + "ver": "0.34.0" }, "widgets_values": [ "" @@ -8984,7 +9214,7 @@ "localized_name": "negative", "name": "negative", "type": "CONDITIONING", - "link": 9 + "link": 13964 }, { "localized_name": "frame_rate", @@ -8993,7 +9223,7 @@ "widget": { "name": "frame_rate" }, - "link": 21 + "link": 13967 } ], "outputs": [ @@ -9003,8 +9233,8 @@ "type": "CONDITIONING", "slot_index": 0, "links": [ - 4, - 29 + 13962, + 13974 ] }, { @@ -9013,15 +9243,15 @@ "type": "CONDITIONING", "slot_index": 1, "links": [ - 5, - 30 + 13963, + 13975 ] } ], "properties": { + "Node name for S&R": "LTXVConditioning", "cnr_id": "comfy-core", - "ver": "0.3.28", - "Node name for S&R": "LTXVConditioning" + "ver": "0.3.28" }, "widgets_values": [ 24 @@ -9077,9 +9307,9 @@ ], "title": "Latent upscale Ɨ2", "properties": { + "Node name for S&R": "LTXVLatentUpsampler", "cnr_id": "comfy-core", - "ver": "0.34.0", - "Node name for S&R": "LTXVLatentUpsampler" + "ver": "0.34.0" } }, { @@ -9128,9 +9358,9 @@ ], "title": "Latent upscale Ɨ2 (8K)", "properties": { + "Node name for S&R": "LTXVLatentUpsampler", "cnr_id": "comfy-core", - "ver": "0.34.0", - "Node name for S&R": "LTXVLatentUpsampler" + "ver": "0.34.0" } }, { @@ -9184,9 +9414,9 @@ ], "title": "4K or 8K latent", "properties": { + "Node name for S&R": "ComfySwitchNode", "cnr_id": "comfy-core", - "ver": "0.34.0", - "Node name for S&R": "ComfySwitchNode" + "ver": "0.34.0" }, "widgets_values": [ false @@ -9214,7 +9444,7 @@ "localized_name": "image", "name": "image", "type": "IMAGE", - "link": 58 + "link": 13978 }, { "localized_name": "width", @@ -9223,7 +9453,7 @@ "widget": { "name": "width" }, - "link": 56 + "link": 13979 }, { "localized_name": "height", @@ -9232,7 +9462,7 @@ "widget": { "name": "height" }, - "link": 57 + "link": 13980 } ], "outputs": [ @@ -9241,15 +9471,15 @@ "name": "IMAGE", "type": "IMAGE", "links": [ - 16 + 13981 ] } ], "title": "Resize original to stage 2", "properties": { + "Node name for S&R": "ImageScale", "cnr_id": "comfy-core", - "ver": "0.34.0", - "Node name for S&R": "ImageScale" + "ver": "0.34.0" }, "widgets_values": [ "lanczos", @@ -9283,19 +9513,19 @@ "localized_name": "positive", "name": "positive", "type": "CONDITIONING", - "link": 4 + "link": 13962 }, { "localized_name": "negative", "name": "negative", "type": "CONDITIONING", - "link": 5 + "link": 13963 }, { "localized_name": "vae", "name": "vae", "type": "VAE", - "link": 11 + "link": 13965 }, { "localized_name": "latent", @@ -9307,7 +9537,7 @@ "localized_name": "image", "name": "image", "type": "IMAGE", - "link": 16 + "link": 13981 }, { "localized_name": "latent_downscale_factor", @@ -9316,7 +9546,7 @@ "widget": { "name": "latent_downscale_factor" }, - "link": 15 + "link": 13966 }, { "localized_name": "tile_frames", @@ -9326,7 +9556,7 @@ "widget": { "name": "tile_frames" }, - "link": 2 + "link": 13977 } ], "outputs": [ @@ -9335,7 +9565,7 @@ "name": "positive", "type": "CONDITIONING", "links": [ - 23 + 13968 ] }, { @@ -9343,7 +9573,7 @@ "name": "negative", "type": "CONDITIONING", "links": [ - 24 + 13969 ] }, { @@ -9351,14 +9581,14 @@ "name": "latent", "type": "LATENT", "links": [ - 25 + 13970 ] } ], "properties": { + "Node name for S&R": "LTXAddVideoICLoRAGuide", "aux_id": "LightricksResearch/ComfyUI-LTXVideo-Internal", - "ver": "65bfc50105d620a6a21675e022d229f947c6eb57", - "Node name for S&R": "LTXAddVideoICLoRAGuide" + "ver": "65bfc50105d620a6a21675e022d229f947c6eb57" }, "widgets_values": [ 0, @@ -9402,13 +9632,13 @@ "localized_name": "audio", "name": "audio", "type": "AUDIO", - "link": 26 + "link": 13971 }, { "localized_name": "vae", "name": "vae", "type": "VAE", - "link": 27 + "link": 13972 } ], "outputs": [ @@ -9417,14 +9647,14 @@ "name": "LATENT", "type": "LATENT", "links": [ - 28 + 13973 ] } ], "properties": { + "Node name for S&R": "VAEEncodeAudio", "cnr_id": "comfy-core", - "ver": "0.34.0", - "Node name for S&R": "VAEEncodeAudio" + "ver": "0.34.0" } }, { @@ -9446,19 +9676,19 @@ "localized_name": "positive", "name": "positive", "type": "CONDITIONING", - "link": 29 + "link": 13974 }, { "localized_name": "negative", "name": "negative", "type": "CONDITIONING", - "link": 30 + "link": 13975 }, { "localized_name": "audio_latent", "name": "audio_latent", "type": "LATENT", - "link": 28 + "link": 13973 } ], "outputs": [ @@ -9479,21 +9709,21 @@ "name": "frozen_audio", "type": "LATENT", "links": [ - 1 + 13976 ] } ], "title": "freeze the source audio", "properties": { + "Node name for S&R": "LTXVSetAudioRefTokens", "aux_id": "LightricksResearch/ComfyUI-LTXVideo-Internal", - "ver": "65bfc50105d620a6a21675e022d229f947c6eb57", - "Node name for S&R": "LTXVSetAudioRefTokens" + "ver": "65bfc50105d620a6a21675e022d229f947c6eb57" } } ], "groups": [ { - "id": 1, + "id": 161, "title": "Preprocess - stage 2", "bounding": [ 306, @@ -9507,25 +9737,25 @@ ], "links": [ { - "id": 4, + "id": 13962, "origin_id": 9304, "origin_slot": 0, "target_id": 9306, "target_slot": 0, "type": "CONDITIONING", - "parentId": 9001 + "parentId": 9117 }, { - "id": 5, + "id": 13963, "origin_id": 9304, "origin_slot": 1, "target_id": 9306, "target_slot": 1, "type": "CONDITIONING", - "parentId": 9003 + "parentId": 9119 }, { - "id": 9, + "id": 13964, "origin_id": -10, "origin_slot": 2, "target_id": 9304, @@ -9533,25 +9763,16 @@ "type": "CONDITIONING" }, { - "id": 11, + "id": 13965, "origin_id": -10, "origin_slot": 3, "target_id": 9306, "target_slot": 2, "type": "VAE", - "parentId": 9005 + "parentId": 9121 }, { - "id": 15, - "origin_id": -10, - "origin_slot": 5, - "target_id": 9306, - "target_slot": 5, - "type": "FLOAT", - "parentId": 9007 - }, - { - "id": 21, + "id": 13967, "origin_id": -10, "origin_slot": 7, "target_id": 9304, @@ -9559,7 +9780,7 @@ "type": "FLOAT" }, { - "id": 23, + "id": 13968, "origin_id": 9306, "origin_slot": 0, "target_id": -20, @@ -9567,7 +9788,7 @@ "type": "CONDITIONING" }, { - "id": 24, + "id": 13969, "origin_id": 9306, "origin_slot": 1, "target_id": -20, @@ -9575,7 +9796,7 @@ "type": "CONDITIONING" }, { - "id": 25, + "id": 13970, "origin_id": 9306, "origin_slot": 2, "target_id": -20, @@ -9583,7 +9804,7 @@ "type": "LATENT" }, { - "id": 26, + "id": 13971, "origin_id": -10, "origin_slot": 8, "target_id": 9307, @@ -9591,7 +9812,7 @@ "type": "AUDIO" }, { - "id": 27, + "id": 13972, "origin_id": -10, "origin_slot": 4, "target_id": 9307, @@ -9599,79 +9820,52 @@ "type": "VAE" }, { - "id": 28, + "id": 13973, "origin_id": 9307, "origin_slot": 0, "target_id": 9308, "target_slot": 2, "type": "LATENT", - "parentId": 9009 + "parentId": 9125 }, { - "id": 29, + "id": 13974, "origin_id": 9304, "origin_slot": 0, "target_id": 9308, "target_slot": 0, "type": "CONDITIONING", - "parentId": 9011 + "parentId": 9127 }, { - "id": 30, + "id": 13975, "origin_id": 9304, "origin_slot": 1, "target_id": 9308, "target_slot": 1, "type": "CONDITIONING", - "parentId": 9013 + "parentId": 9129 }, { - "id": 1, + "id": 13976, "origin_id": 9308, "origin_slot": 2, "target_id": -20, "target_slot": 3, "type": "LATENT", - "parentId": 9015 + "parentId": 9131 }, { - "id": 2, - "origin_id": -10, - "origin_slot": 9, - "target_id": 9306, - "target_slot": 6, - "type": "INT", - "parentId": 9017 - }, - { - "id": 58, + "id": 13978, "origin_id": -10, "origin_slot": 6, "target_id": 9305, "target_slot": 0, "type": "IMAGE", - "parentId": 9019 + "parentId": 9135 }, { - "id": 56, - "origin_id": -10, - "origin_slot": 11, - "target_id": 9305, - "target_slot": 1, - "type": "INT", - "parentId": 9021 - }, - { - "id": 57, - "origin_id": -10, - "origin_slot": 12, - "target_id": 9305, - "target_slot": 2, - "type": "INT", - "parentId": 9023 - }, - { - "id": 16, + "id": 13981, "origin_id": 9305, "origin_slot": 0, "target_id": 9306, @@ -9709,7 +9903,7 @@ "target_id": 9300, "target_slot": 0, "type": "LATENT", - "parentId": 9025 + "parentId": 9141 }, { "id": 84, @@ -9718,7 +9912,7 @@ "target_id": 9300, "target_slot": 1, "type": "LATENT_UPSCALE_MODEL", - "parentId": 9027 + "parentId": 9143 }, { "id": 85, @@ -9727,7 +9921,7 @@ "target_id": 9300, "target_slot": 2, "type": "VAE", - "parentId": 9029 + "parentId": 9145 }, { "id": 86, @@ -9744,7 +9938,7 @@ "target_id": 9301, "target_slot": 1, "type": "LATENT_UPSCALE_MODEL", - "parentId": 9031 + "parentId": 9147 }, { "id": 88, @@ -9753,7 +9947,7 @@ "target_id": 9301, "target_slot": 2, "type": "VAE", - "parentId": 9033 + "parentId": 9149 }, { "id": 89, @@ -9778,7 +9972,7 @@ "target_id": 9302, "target_slot": 2, "type": "BOOLEAN", - "parentId": 9035 + "parentId": 9151 }, { "id": 92, @@ -9787,264 +9981,300 @@ "target_id": 9306, "target_slot": 3, "type": "LATENT", - "parentId": 9037 + "parentId": 9153 + }, + { + "id": 13979, + "origin_id": -10, + "origin_slot": 11, + "target_id": 9305, + "target_slot": 1, + "type": "INT", + "parentId": 9137 + }, + { + "id": 13980, + "origin_id": -10, + "origin_slot": 12, + "target_id": 9305, + "target_slot": 2, + "type": "INT", + "parentId": 9139 + }, + { + "id": 13966, + "origin_id": -10, + "origin_slot": 5, + "target_id": 9306, + "target_slot": 5, + "type": "FLOAT", + "parentId": 9123 + }, + { + "id": 13977, + "origin_id": -10, + "origin_slot": 9, + "target_id": 9306, + "target_slot": 6, + "type": "INT", + "parentId": 9133 } ], "reroutes": [ { - "id": 9000, + "id": 9116, "pos": [ 618.1809911778764, 580 ], "linkIds": [ - 4 + 13962 ] }, { - "id": 9001, - "parentId": 9000, + "id": 9117, + "parentId": 9116, "pos": [ 1405.4432958653765, 580 ], "linkIds": [ - 4 + 13962 ] }, { - "id": 9002, + "id": 9118, "pos": [ 618.1809911778764, 598 ], "linkIds": [ - 5 + 13963 ] }, { - "id": 9003, - "parentId": 9002, + "id": 9119, + "parentId": 9118, "pos": [ 1405.4432958653765, 598 ], "linkIds": [ - 5 + 13963 ] }, { - "id": 9004, + "id": 9120, "pos": [ 268, 616 ], "linkIds": [ - 11 + 13965 ] }, { - "id": 9005, - "parentId": 9004, + "id": 9121, + "parentId": 9120, "pos": [ 1405.4432958653765, 616 ], "linkIds": [ - 11 + 13965 ] }, { - "id": 9006, + "id": 9122, "pos": [ 268, 634 ], "linkIds": [ - 15 + 13966 ] }, { - "id": 9007, - "parentId": 9006, + "id": 9123, + "parentId": 9122, "pos": [ 1405.4432958653765, 634 ], "linkIds": [ - 15 + 13966 ] }, { - "id": 9008, + "id": 9124, "pos": [ 618.1809911778764, 652 ], "linkIds": [ - 28 + 13973 ] }, { - "id": 9009, - "parentId": 9008, + "id": 9125, + "parentId": 9124, "pos": [ 1012.1809911778764, 652 ], "linkIds": [ - 28 + 13973 ] }, { - "id": 9010, + "id": 9126, "pos": [ 618.1809911778764, 670 ], "linkIds": [ - 29 + 13974 ] }, { - "id": 9011, - "parentId": 9010, + "id": 9127, + "parentId": 9126, "pos": [ 1012.1809911778764, 670 ], "linkIds": [ - 29 + 13974 ] }, { - "id": 9012, + "id": 9128, "pos": [ 618.1809911778764, 688 ], "linkIds": [ - 30 + 13975 ] }, { - "id": 9013, - "parentId": 9012, + "id": 9129, + "parentId": 9128, "pos": [ 1012.1809911778764, 688 ], "linkIds": [ - 30 + 13975 ] }, { - "id": 9014, + "id": 9130, "pos": [ 1361.4432958653765, 706 ], "linkIds": [ - 1 + 13976 ] }, { - "id": 9015, - "parentId": 9014, + "id": 9131, + "parentId": 9130, "pos": [ 1802.3296239903766, 706 ], "linkIds": [ - 1 + 13976 ] }, { - "id": 9016, + "id": 9132, "pos": [ 268, 724 ], "linkIds": [ - 2 + 13977 ] }, { - "id": 9017, - "parentId": 9016, + "id": 9133, + "parentId": 9132, "pos": [ 1405.4432958653765, 724 ], "linkIds": [ - 2 + 13977 ] }, { - "id": 9018, + "id": 9134, "pos": [ 268, 742 ], "linkIds": [ - 58 + 13978 ] }, { - "id": 9019, - "parentId": 9018, + "id": 9135, + "parentId": 9134, "pos": [ 1012.1809911778764, 742 ], "linkIds": [ - 58 + 13978 ] }, { - "id": 9020, + "id": 9136, "pos": [ 268, 760 ], "linkIds": [ - 56 + 13979 ] }, { - "id": 9021, - "parentId": 9020, + "id": 9137, + "parentId": 9136, "pos": [ 1012.1809911778764, 760 ], "linkIds": [ - 56 + 13979 ] }, { - "id": 9022, + "id": 9138, "pos": [ 268, 778 ], "linkIds": [ - 57 + 13980 ] }, { - "id": 9023, - "parentId": 9022, + "id": 9139, + "parentId": 9138, "pos": [ 1012.1809911778764, 778 ], "linkIds": [ - 57 + 13980 ] }, { - "id": 9024, + "id": 9140, "pos": [ 268, 796 @@ -10054,8 +10284,8 @@ ] }, { - "id": 9025, - "parentId": 9024, + "id": 9141, + "parentId": 9140, "pos": [ 662.1809911778764, 796 @@ -10065,7 +10295,7 @@ ] }, { - "id": 9026, + "id": 9142, "pos": [ 268, 814 @@ -10075,8 +10305,8 @@ ] }, { - "id": 9027, - "parentId": 9026, + "id": 9143, + "parentId": 9142, "pos": [ 662.1809911778764, 814 @@ -10086,7 +10316,7 @@ ] }, { - "id": 9028, + "id": 9144, "pos": [ 268, 832 @@ -10096,8 +10326,8 @@ ] }, { - "id": 9029, - "parentId": 9028, + "id": 9145, + "parentId": 9144, "pos": [ 662.1809911778764, 832 @@ -10107,7 +10337,7 @@ ] }, { - "id": 9030, + "id": 9146, "pos": [ 268, 850 @@ -10117,8 +10347,8 @@ ] }, { - "id": 9031, - "parentId": 9030, + "id": 9147, + "parentId": 9146, "pos": [ 662.1809911778764, 850 @@ -10128,7 +10358,7 @@ ] }, { - "id": 9032, + "id": 9148, "pos": [ 268, 868 @@ -10138,8 +10368,8 @@ ] }, { - "id": 9033, - "parentId": 9032, + "id": 9149, + "parentId": 9148, "pos": [ 662.1809911778764, 868 @@ -10149,7 +10379,7 @@ ] }, { - "id": 9034, + "id": 9150, "pos": [ 268, 886 @@ -10159,8 +10389,8 @@ ] }, { - "id": 9035, - "parentId": 9034, + "id": 9151, + "parentId": 9150, "pos": [ 662.1809911778764, 886 @@ -10170,7 +10400,7 @@ ] }, { - "id": 9036, + "id": 9152, "pos": [ 968.1809911778764, 904 @@ -10180,8 +10410,8 @@ ] }, { - "id": 9037, - "parentId": 9036, + "id": 9153, + "parentId": 9152, "pos": [ 1405.4432958653765, 904 @@ -10197,10 +10427,10 @@ "id": "8deebd57-c969-4460-8f46-12a98501e2c3", "version": 1, "state": { - "lastGroupId": 158, - "lastNodeId": 9313, - "lastLinkId": 13808, - "lastRerouteId": 9038 + "lastGroupId": 163, + "lastNodeId": 9316, + "lastLinkId": 14005, + "lastRerouteId": 9179 }, "revision": 0, "config": {}, @@ -10229,7 +10459,7 @@ "name": "model", "type": "MODEL", "linkIds": [ - 1 + 13982 ], "localized_name": "model", "pos": [ @@ -10242,7 +10472,7 @@ "name": "positive", "type": "CONDITIONING", "linkIds": [ - 2 + 13983 ], "localized_name": "positive", "pos": [ @@ -10255,7 +10485,7 @@ "name": "negative", "type": "CONDITIONING", "linkIds": [ - 3 + 13984 ], "localized_name": "negative", "pos": [ @@ -10268,7 +10498,7 @@ "name": "latent_image", "type": "LATENT", "linkIds": [ - 4 + 13985 ], "localized_name": "latent_image", "pos": [ @@ -10281,7 +10511,7 @@ "name": "noise_seed", "type": "INT", "linkIds": [ - 5 + 13988 ], "label": "noise seed", "pos": [ @@ -10294,7 +10524,7 @@ "name": "cfg", "type": "FLOAT", "linkIds": [ - 13 + 13989 ], "label": "guider cfg", "pos": [ @@ -10307,7 +10537,7 @@ "name": "sampler_name", "type": "COMBO", "linkIds": [ - 8 + 13995 ], "pos": [ 250, @@ -10319,7 +10549,7 @@ "name": "tile_width", "type": "INT", "linkIds": [ - 14 + 13990 ], "label": "tile_width", "pos": [ @@ -10332,7 +10562,7 @@ "name": "tile_height", "type": "INT", "linkIds": [ - 6 + 13991 ], "label": "tile_height", "pos": [ @@ -10345,7 +10575,7 @@ "name": "overlap_frac", "type": "FLOAT", "linkIds": [ - 15 + 13992 ], "label": "overlap_frac", "pos": [ @@ -10358,7 +10588,7 @@ "name": "tile_frames", "type": "INT", "linkIds": [ - 16 + 13993 ], "label": "tile_frames", "pos": [ @@ -10371,7 +10601,7 @@ "name": "vae", "type": "VAE", "linkIds": [ - 7 + 13994 ], "label": "vae", "pos": [ @@ -10384,7 +10614,7 @@ "name": "audio_latent", "type": "LATENT", "linkIds": [ - 10 + 13997 ], "label": "audio_latent", "pos": [ @@ -10399,7 +10629,7 @@ "name": "video_latent", "type": "LATENT", "linkIds": [ - 9 + 13996 ], "pos": [ 1619.9463328320699, @@ -10411,7 +10641,7 @@ "name": "audio_latent", "type": "LATENT", "linkIds": [ - 17 + 13998 ], "pos": [ 1619.9463328320699, @@ -10443,7 +10673,7 @@ "widget": { "name": "sampler_name" }, - "link": 8 + "link": 13995 } ], "outputs": [ @@ -10452,14 +10682,14 @@ "name": "SAMPLER", "type": "SAMPLER", "links": [ - 12 + 13987 ] } ], "properties": { + "Node name for S&R": "KSamplerSelect", "cnr_id": "comfy-core", - "ver": "0.14.1", - "Node name for S&R": "KSamplerSelect" + "ver": "0.14.1" }, "widgets_values": [ "euler" @@ -10489,14 +10719,14 @@ "name": "SIGMAS", "type": "SIGMAS", "links": [ - 11 + 13986 ] } ], "properties": { + "Node name for S&R": "ManualSigmas", "cnr_id": "comfy-core", - "ver": "0.14.1", - "Node name for S&R": "ManualSigmas" + "ver": "0.14.1" }, "widgets_values": [ "0.909375, 0.725, 0.421875, 0.0" @@ -10550,44 +10780,44 @@ "localized_name": "model", "name": "model", "type": "MODEL", - "link": 1 + "link": 13982 }, { "localized_name": "positive", "name": "positive", "type": "CONDITIONING", - "link": 2 + "link": 13983 }, { "localized_name": "negative", "name": "negative", "type": "CONDITIONING", - "link": 3 + "link": 13984 }, { "localized_name": "latents", "name": "latents", "type": "LATENT", - "link": 4 + "link": 13985 }, { "localized_name": "sigmas", "name": "sigmas", "type": "SIGMAS", - "link": 11 + "link": 13986 }, { "localized_name": "sampler", "name": "sampler", "type": "SAMPLER", - "link": 12 + "link": 13987 }, { "localized_name": "vae", "name": "vae", "shape": 7, "type": "VAE", - "link": 7 + "link": 13994 }, { "localized_name": "seed", @@ -10596,7 +10826,7 @@ "widget": { "name": "seed" }, - "link": 5 + "link": 13988 }, { "localized_name": "cfg", @@ -10605,7 +10835,7 @@ "widget": { "name": "cfg" }, - "link": 13 + "link": 13989 }, { "localized_name": "tile_width", @@ -10614,7 +10844,7 @@ "widget": { "name": "tile_width" }, - "link": 14 + "link": 13990 }, { "localized_name": "tile_height", @@ -10623,7 +10853,7 @@ "widget": { "name": "tile_height" }, - "link": 6 + "link": 13991 }, { "localized_name": "overlap_frac", @@ -10632,7 +10862,7 @@ "widget": { "name": "overlap_frac" }, - "link": 15 + "link": 13992 }, { "localized_name": "tile_frames", @@ -10641,7 +10871,7 @@ "widget": { "name": "tile_frames" }, - "link": 16 + "link": 13993 } ], "outputs": [ @@ -10650,14 +10880,14 @@ "name": "output", "type": "LATENT", "links": [ - 9 + 13996 ] } ], "properties": { + "Node name for S&R": "LTXVTiledFusionSampler", "aux_id": "LightricksResearch/ComfyUI-LTXVideo-Internal", - "ver": "65bfc50105d620a6a21675e022d229f947c6eb57", - "Node name for S&R": "LTXVTiledFusionSampler" + "ver": "65bfc50105d620a6a21675e022d229f947c6eb57" }, "widgets_values": [ 42, @@ -10703,7 +10933,7 @@ "localized_name": "samples", "name": "samples", "type": "LATENT", - "link": 10 + "link": 13997 } ], "outputs": [ @@ -10712,15 +10942,15 @@ "name": "LATENT", "type": "LATENT", "links": [ - 17 + 13998 ] } ], "title": "Pass audio latent", "properties": { + "Node name for S&R": "RepeatLatentBatch", "cnr_id": "comfy-core", - "ver": "0.34.0", - "Node name for S&R": "RepeatLatentBatch" + "ver": "0.34.0" }, "widgets_values": [ 1 @@ -10732,7 +10962,7 @@ ], "groups": [ { - "id": 147, + "id": 162, "title": "Generate", "bounding": [ 306, @@ -10746,43 +10976,43 @@ ], "links": [ { - "id": 1, + "id": 13982, "origin_id": -10, "origin_slot": 0, "target_id": 9312, "target_slot": 0, "type": "MODEL", - "parentId": 9001 + "parentId": 9155 }, { - "id": 2, + "id": 13983, "origin_id": -10, "origin_slot": 1, "target_id": 9312, "target_slot": 1, "type": "CONDITIONING", - "parentId": 9003 + "parentId": 9157 }, { - "id": 3, + "id": 13984, "origin_id": -10, "origin_slot": 2, "target_id": 9312, "target_slot": 2, "type": "CONDITIONING", - "parentId": 9005 + "parentId": 9159 }, { - "id": 4, + "id": 13985, "origin_id": -10, "origin_slot": 3, "target_id": 9312, "target_slot": 3, "type": "LATENT", - "parentId": 9007 + "parentId": 9161 }, { - "id": 11, + "id": 13986, "origin_id": 9310, "origin_slot": 0, "target_id": 9312, @@ -10790,7 +11020,7 @@ "type": "SIGMAS" }, { - "id": 12, + "id": 13987, "origin_id": 9309, "origin_slot": 0, "target_id": 9312, @@ -10798,70 +11028,61 @@ "type": "SAMPLER" }, { - "id": 5, + "id": 13988, "origin_id": -10, "origin_slot": 4, "target_id": 9312, "target_slot": 7, "type": "INT", - "parentId": 9009 + "parentId": 9163 }, { - "id": 13, + "id": 13989, "origin_id": -10, "origin_slot": 5, "target_id": 9312, "target_slot": 8, "type": "FLOAT", - "parentId": 9011 + "parentId": 9165 }, { - "id": 14, + "id": 13990, "origin_id": -10, "origin_slot": 7, "target_id": 9312, "target_slot": 9, "type": "INT", - "parentId": 9013 + "parentId": 9167 }, { - "id": 6, + "id": 13991, "origin_id": -10, "origin_slot": 8, "target_id": 9312, "target_slot": 10, "type": "INT", - "parentId": 9015 + "parentId": 9169 }, { - "id": 15, + "id": 13992, "origin_id": -10, "origin_slot": 9, "target_id": 9312, "target_slot": 11, "type": "FLOAT", - "parentId": 9017 + "parentId": 9171 }, { - "id": 16, - "origin_id": -10, - "origin_slot": 10, - "target_id": 9312, - "target_slot": 12, - "type": "INT", - "parentId": 9019 - }, - { - "id": 7, + "id": 13994, "origin_id": -10, "origin_slot": 11, "target_id": 9312, "target_slot": 6, "type": "VAE", - "parentId": 9021 + "parentId": 9175 }, { - "id": 8, + "id": 13995, "origin_id": -10, "origin_slot": 6, "target_id": 9309, @@ -10869,304 +11090,313 @@ "type": "COMBO" }, { - "id": 9, + "id": 13996, "origin_id": 9312, "origin_slot": 0, "target_id": -20, "target_slot": 0, "type": "LATENT", - "parentId": 9023 + "parentId": 9177 }, { - "id": 10, + "id": 13997, "origin_id": -10, "origin_slot": 12, "target_id": 9313, "target_slot": 0, "type": "LATENT", - "parentId": 9025 + "parentId": 9179 }, { - "id": 17, + "id": 13998, "origin_id": 9313, "origin_slot": 0, "target_id": -20, "target_slot": 1, "type": "LATENT" + }, + { + "id": 13993, + "origin_id": -10, + "origin_slot": 10, + "target_id": 9312, + "target_slot": 12, + "type": "INT", + "parentId": 9173 } ], "reroutes": [ { - "id": 9000, + "id": 9154, "pos": [ 268, 654 ], "linkIds": [ - 1 + 13982 ] }, { - "id": 9001, - "parentId": 9000, + "id": 9155, + "parentId": 9154, "pos": [ 891.9463328320699, 654 ], "linkIds": [ - 1 + 13982 ] }, { - "id": 9002, + "id": 9156, "pos": [ 268, 672 ], "linkIds": [ - 2 + 13983 ] }, { - "id": 9003, - "parentId": 9002, + "id": 9157, + "parentId": 9156, "pos": [ 891.9463328320699, 672 ], "linkIds": [ - 2 + 13983 ] }, { - "id": 9004, + "id": 9158, "pos": [ 268, 690 ], "linkIds": [ - 3 + 13984 ] }, { - "id": 9005, - "parentId": 9004, + "id": 9159, + "parentId": 9158, "pos": [ 891.9463328320699, 690 ], "linkIds": [ - 3 + 13984 ] }, { - "id": 9006, + "id": 9160, "pos": [ 268, 708 ], "linkIds": [ - 4 + 13985 ] }, { - "id": 9007, - "parentId": 9006, + "id": 9161, + "parentId": 9160, "pos": [ 891.9463328320699, 708 ], "linkIds": [ - 4 + 13985 ] }, { - "id": 9008, + "id": 9162, "pos": [ 268, 726 ], "linkIds": [ - 5 + 13988 ] }, { - "id": 9009, - "parentId": 9008, + "id": 9163, + "parentId": 9162, "pos": [ 891.9463328320699, 726 ], "linkIds": [ - 5 + 13988 ] }, { - "id": 9010, + "id": 9164, "pos": [ 268, 744 ], "linkIds": [ - 13 + 13989 ] }, { - "id": 9011, - "parentId": 9010, + "id": 9165, + "parentId": 9164, "pos": [ 891.9463328320699, 744 ], "linkIds": [ - 13 + 13989 ] }, { - "id": 9012, + "id": 9166, "pos": [ 268, 762 ], "linkIds": [ - 14 + 13990 ] }, { - "id": 9013, - "parentId": 9012, + "id": 9167, + "parentId": 9166, "pos": [ 891.9463328320699, 762 ], "linkIds": [ - 14 + 13990 ] }, { - "id": 9014, + "id": 9168, "pos": [ 268, 780 ], "linkIds": [ - 6 + 13991 ] }, { - "id": 9015, - "parentId": 9014, + "id": 9169, + "parentId": 9168, "pos": [ 891.9463328320699, 780 ], "linkIds": [ - 6 + 13991 ] }, { - "id": 9016, + "id": 9170, "pos": [ 268, 798 ], "linkIds": [ - 15 + 13992 ] }, { - "id": 9017, - "parentId": 9016, + "id": 9171, + "parentId": 9170, "pos": [ 891.9463328320699, 798 ], "linkIds": [ - 15 + 13992 ] }, { - "id": 9018, + "id": 9172, "pos": [ 268, 816 ], "linkIds": [ - 16 + 13993 ] }, { - "id": 9019, - "parentId": 9018, + "id": 9173, + "parentId": 9172, "pos": [ 891.9463328320699, 816 ], "linkIds": [ - 16 + 13993 ] }, { - "id": 9020, + "id": 9174, "pos": [ 268, 834 ], "linkIds": [ - 7 + 13994 ] }, { - "id": 9021, - "parentId": 9020, + "id": 9175, + "parentId": 9174, "pos": [ 891.9463328320699, 834 ], "linkIds": [ - 7 + 13994 ] }, { - "id": 9022, + "id": 9176, "pos": [ 1267.9463328320699, 852 ], "linkIds": [ - 9 + 13996 ] }, { - "id": 9023, - "parentId": 9022, + "id": 9177, + "parentId": 9176, "pos": [ 1601.9463328320699, 852 ], "linkIds": [ - 9 + 13996 ] }, { - "id": 9024, + "id": 9178, "pos": [ 268, 870 ], "linkIds": [ - 10 + 13997 ] }, { - "id": 9025, - "parentId": 9024, + "id": 9179, + "parentId": 9178, "pos": [ 1311.9463328320699, 870 ], "linkIds": [ - 10 + 13997 ] } ], @@ -11176,7 +11406,7 @@ }, "config": {}, "extra": { - "frontendVersion": "1.51.9", + "frontendVersion": "1.53.6", "VHS_latentpreview": false, "VHS_latentpreviewrate": 0, "VHS_MetadataImage": true, @@ -11843,10 +12073,10 @@ } ], "ds": { - "scale": 0.5796528423694802, + "scale": 0.4790519358425457, "offset": [ - 3860.8989830994806, - -2276.6690926380115 + 4514.6191862080605, + -2301.3589794683057 ] }, "linkExtensions": [ diff --git a/example_workflows/2.5/LTX-2.5_V2V_TiledFusion_Upscale.json b/example_workflows/2.5/LTX-2.5_V2V_TiledFusion_Upscale.json index 76aeeed..b4231f8 100644 --- a/example_workflows/2.5/LTX-2.5_V2V_TiledFusion_Upscale.json +++ b/example_workflows/2.5/LTX-2.5_V2V_TiledFusion_Upscale.json @@ -1,8 +1,8 @@ { "id": "ltx-2.5-v2v-tiledfusion-upscale", "revision": 0, - "last_node_id": 9201, - "last_link_id": 77, + "last_node_id": 9204, + "last_link_id": 13883, "nodes": [ { "id": 5509, @@ -30,9 +30,9 @@ ], "title": "Prompt (negative)", "properties": { + "Node name for S&R": "PrimitiveStringMultiline", "cnr_id": "comfy-core", - "ver": "0.25.0", - "Node name for S&R": "PrimitiveStringMultiline" + "ver": "0.25.0" }, "widgets_values": [ "" @@ -160,9 +160,9 @@ ], "title": "Effective positive prompt (enhanced if enabled)", "properties": { + "Node name for S&R": "PreviewAny", "cnr_id": "comfy-core", - "ver": "0.34.0", - "Node name for S&R": "PreviewAny" + "ver": "0.34.0" }, "widgets_values": [], "widgets_values_named": {}, @@ -395,7 +395,7 @@ ], "size": [ 523.046875, - 126 + 394.3932291666667 ], "flags": {}, "order": 17, @@ -456,9 +456,9 @@ } ], "properties": { + "Node name for S&R": "LoadVideo", "cnr_id": "comfy-core", - "ver": "0.10.0", - "Node name for S&R": "LoadVideo" + "ver": "0.10.0" }, "widgets_values": [ "", @@ -497,9 +497,9 @@ ], "title": "Prompt (positive)", "properties": { + "Node name for S&R": "PrimitiveStringMultiline", "cnr_id": "comfy-core", - "ver": "0.25.0", - "Node name for S&R": "PrimitiveStringMultiline" + "ver": "0.25.0" }, "widgets_values": [ "" @@ -1257,9 +1257,9 @@ ], "title": "Tiling sizes", "properties": { + "Node name for S&R": "PreviewAny", "cnr_id": "comfy-core", - "ver": "0.34.0", - "Node name for S&R": "PreviewAny" + "ver": "0.34.0" }, "widgets_values": [], "widgets_values_named": {}, @@ -1292,14 +1292,6 @@ 3, "VAE" ], - [ - 13675, - 5518, - 0, - 4852, - 0, - "VIDEO" - ], [ 13758, 5001, @@ -1539,6 +1531,14 @@ 9101, 0, "*" + ], + [ + 13675, + 5518, + 0, + 4852, + 0, + "VIDEO" ] ], "groups": [ @@ -1573,10 +1573,10 @@ "id": "b7c1e94a-3f52-4d08-9a61-2e7c5d4f8a13", "version": 1, "state": { - "lastGroupId": 158, - "lastNodeId": 9201, - "lastLinkId": 77, - "lastRerouteId": 9032 + "lastGroupId": 161, + "lastNodeId": 9204, + "lastLinkId": 13883, + "lastRerouteId": 9101 }, "revision": 0, "config": {}, @@ -1826,9 +1826,9 @@ ], "title": "Load VAE - Audio", "properties": { + "Node name for S&R": "VAELoader", "cnr_id": "comfy-core", "ver": "0.34.0", - "Node name for S&R": "VAELoader", "models": [ { "name": "ltx-2.5-audio-vae-bf16.safetensors", @@ -1881,9 +1881,9 @@ ], "title": "Load VAE - Video", "properties": { + "Node name for S&R": "VAELoader", "cnr_id": "comfy-core", "ver": "0.34.0", - "Node name for S&R": "VAELoader", "models": [ { "name": "ltx-2.5-video-vae-bf16.safetensors", @@ -1935,9 +1935,9 @@ } ], "properties": { + "Node name for S&R": "UNETLoader", "cnr_id": "comfy-core", "ver": "0.34.0", - "Node name for S&R": "UNETLoader", "models": [ { "name": "ltx-2.5-22b-distilled-transformer-bf16.safetensors", @@ -2027,9 +2027,9 @@ ], "title": "Load CLIP - Text Enhancer", "properties": { + "Node name for S&R": "CLIPLoader", "cnr_id": "comfy-core", "ver": "0.34.0", - "Node name for S&R": "CLIPLoader", "models": [ { "name": "gemma4_e2b_it_bf16.safetensors", @@ -2086,9 +2086,9 @@ ], "title": "Load CLIP - Text Encoder", "properties": { + "Node name for S&R": "CLIPLoader", "cnr_id": "comfy-core", "ver": "0.34.0", - "Node name for S&R": "CLIPLoader", "models": [ { "name": "gemma4-12b-with-proj-ltx-2.5-bf16.safetensors", @@ -2167,9 +2167,9 @@ } ], "properties": { + "Node name for S&R": "LTXICLoRALoaderModelOnly", "aux_id": "LightricksResearch/ComfyUI-LTXVideo-Internal", "ver": "65bfc50105d620a6a21675e022d229f947c6eb57", - "Node name for S&R": "LTXICLoRALoaderModelOnly", "models": [ { "name": "ltx-2.5-22b-ic-lora-refine-details-1.0.safetensors", @@ -2190,7 +2190,7 @@ ], "groups": [ { - "id": 1, + "id": 3, "title": "Load Models - one file per output", "bounding": [ 306, @@ -2516,10 +2516,10 @@ "id": "c28230e9-b195-4ec2-9679-39e1e920f733", "version": 1, "state": { - "lastGroupId": 158, - "lastNodeId": 9201, - "lastLinkId": 77, - "lastRerouteId": 9032 + "lastGroupId": 161, + "lastNodeId": 9204, + "lastLinkId": 13883, + "lastRerouteId": 9101 }, "revision": 0, "config": {}, @@ -2579,7 +2579,7 @@ "linkIds": [ 13619, 13755, - 2 + 13838 ], "label": "Positive prompt", "pos": [ @@ -2593,7 +2593,7 @@ "type": "BOOLEAN", "linkIds": [ 13621, - 3 + 13839 ], "label": "Enhance positive prompt", "pos": [ @@ -2635,7 +2635,7 @@ "linkIds": [ 13617, 13618, - 5 + 13840 ], "label": "LTX API key", "pos": [ @@ -2760,9 +2760,9 @@ ], "title": "CLIP Text Encode (Negative Prompt)", "properties": { + "Node name for S&R": "CLIPTextEncode", "cnr_id": "comfy-core", - "ver": "0.3.28", - "Node name for S&R": "CLIPTextEncode" + "ver": "0.3.28" }, "widgets_values": [ "" @@ -2782,7 +2782,7 @@ ], "size": [ 429.2408203125, - 412 + 456 ], "flags": { "collapsed": false @@ -2817,6 +2817,13 @@ "type": "AUDIO", "link": null }, + { + "localized_name": "system_prompt", + "name": "system_prompt", + "shape": 7, + "type": "STRING", + "link": null + }, { "localized_name": "prompt", "name": "prompt", @@ -2842,15 +2849,21 @@ "name": "generated_text", "type": "STRING", "links": [ - 4 + 13843 ] + }, + { + "localized_name": "thinking", + "name": "thinking", + "type": "STRING", + "links": null } ], "title": "Positive prompt (t2v) enhancer - TextGenerateLTX2Prompt", "properties": { + "Node name for S&R": "TextGenerateLTX2Prompt", "cnr_id": "comfy-core", - "ver": "0.34.0", - "Node name for S&R": "TextGenerateLTX2Prompt" + "ver": "0.34.0" }, "widgets_values": [ "", @@ -2864,7 +2877,8 @@ 0, 0, false, - true + true, + "auto" ], "widgets_values_named": { "prompt": "", @@ -2878,7 +2892,8 @@ "sampling_mode.seed": 0, "sampling_mode.presence_penalty": 0, "thinking": false, - "use_default_template": true + "use_default_template": true, + "mtp": "auto" }, "color": "#232", "bgcolor": "#353" @@ -2927,9 +2942,9 @@ ], "title": "CLIP Text Encode (Positive Prompt)", "properties": { + "Node name for S&R": "CLIPTextEncode", "cnr_id": "comfy-core", - "ver": "0.3.28", - "Node name for S&R": "CLIPTextEncode" + "ver": "0.3.28" }, "widgets_values": [ "" @@ -2962,7 +2977,7 @@ "widget": { "name": "string" }, - "link": 5 + "link": 13840 } ], "outputs": [ @@ -2971,16 +2986,16 @@ "name": "contains", "type": "BOOLEAN", "links": [ - 6, - 13787 + 13787, + 13841 ] } ], "title": "has ltxv api key?", "properties": { + "Node name for S&R": "StringContains", "cnr_id": "comfy-core", - "ver": "0.34.0", - "Node name for S&R": "StringContains" + "ver": "0.34.0" }, "widgets_values": [ "", @@ -3051,9 +3066,9 @@ } ], "properties": { + "Node name for S&R": "LTXVConditioning", "cnr_id": "comfy-core", - "ver": "0.3.28", - "Node name for S&R": "LTXVConditioning" + "ver": "0.3.28" }, "widgets_values": [ 24 @@ -3113,9 +3128,9 @@ ], "title": "negative conditioning source - If/Else Switch", "properties": { + "Node name for S&R": "ComfySwitchNode", "cnr_id": "comfy-core", - "ver": "0.34.0", - "Node name for S&R": "ComfySwitchNode" + "ver": "0.34.0" }, "widgets_values": [ false @@ -3151,7 +3166,7 @@ "name": "on_true", "shape": 7, "type": "CONDITIONING", - "link": 7 + "link": 13842 }, { "localized_name": "switch", @@ -3160,7 +3175,7 @@ "widget": { "name": "switch" }, - "link": 6 + "link": 13841 } ], "outputs": [ @@ -3175,9 +3190,9 @@ ], "title": "positive conditioning source - If/Else Switch", "properties": { + "Node name for S&R": "ComfySwitchNode", "cnr_id": "comfy-core", - "ver": "0.34.0", - "Node name for S&R": "ComfySwitchNode" + "ver": "0.34.0" }, "widgets_values": [ false @@ -3206,14 +3221,14 @@ "name": "on_false", "shape": 7, "type": "STRING", - "link": 2 + "link": 13838 }, { "localized_name": "on_true", "name": "on_true", "shape": 7, "type": "STRING", - "link": 4 + "link": 13843 }, { "localized_name": "switch", @@ -3222,7 +3237,7 @@ "widget": { "name": "switch" }, - "link": 3 + "link": 13839 } ], "outputs": [ @@ -3237,9 +3252,9 @@ } ], "properties": { + "Node name for S&R": "ComfySwitchNode", "cnr_id": "comfy-core", - "ver": "0.34.0", - "Node name for S&R": "ComfySwitchNode" + "ver": "0.34.0" }, "widgets_values": [ false @@ -3306,15 +3321,15 @@ "name": "conditioning", "type": "CONDITIONING", "links": [ - 7 + 13842 ] } ], "title": "šŸ…›šŸ…£šŸ…§ Gemma API Text Encode - POSITIVE", "properties": { + "Node name for S&R": "GemmaAPITextEncode", "aux_id": "LightricksResearch/ComfyUI-LTXVideo-Internal", - "ver": "65bfc50105d620a6a21675e022d229f947c6eb57", - "Node name for S&R": "GemmaAPITextEncode" + "ver": "65bfc50105d620a6a21675e022d229f947c6eb57" }, "widgets_values": [ "", @@ -3384,9 +3399,9 @@ ], "title": "šŸ…›šŸ…£šŸ…§ Gemma API Text Encode - NEGATIVE", "properties": { + "Node name for S&R": "GemmaAPITextEncode", "aux_id": "LightricksResearch/ComfyUI-LTXVideo-Internal", - "ver": "65bfc50105d620a6a21675e022d229f947c6eb57", - "Node name for S&R": "GemmaAPITextEncode" + "ver": "65bfc50105d620a6a21675e022d229f947c6eb57" }, "widgets_values": [ "", @@ -3464,7 +3479,7 @@ "target_id": 2612, "target_slot": 0, "type": "CLIP", - "parentId": 9001 + "parentId": 9017 }, { "id": 13438, @@ -3473,7 +3488,7 @@ "target_id": 2483, "target_slot": 0, "type": "CLIP", - "parentId": 9003 + "parentId": 9019 }, { "id": 13487, @@ -3482,7 +3497,7 @@ "target_id": 2612, "target_slot": 1, "type": "STRING", - "parentId": 9005 + "parentId": 9021 }, { "id": 13615, @@ -3492,14 +3507,6 @@ "target_slot": 3, "type": "COMBO" }, - { - "id": 13616, - "origin_id": -10, - "origin_slot": 7, - "target_id": 5505, - "target_slot": 2, - "type": "COMBO" - }, { "id": 13617, "origin_id": -10, @@ -3541,46 +3548,22 @@ "type": "BOOLEAN" }, { - "id": 13746, - "origin_id": -10, - "origin_slot": 5, - "target_id": 9004, - "target_slot": 5, - "type": "INT" - }, - { - "id": 13754, - "origin_id": -10, - "origin_slot": 1, - "target_id": 9004, - "target_slot": 0, - "type": "CLIP" - }, - { - "id": 13755, - "origin_id": -10, - "origin_slot": 2, - "target_id": 9004, - "target_slot": 4, - "type": "STRING" - }, - { - "id": 2, + "id": 13838, "origin_id": -10, "origin_slot": 2, "target_id": 5556, "target_slot": 0, "type": "STRING", - "parentId": 9007 + "parentId": 9023 }, { - "id": 3, + "id": 13839, "origin_id": -10, "origin_slot": 3, "target_id": 5556, "target_slot": 2, "type": "BOOLEAN", - "parentId": 9009 + "parentId": 9025 }, { "id": 13782, @@ -3591,16 +3574,16 @@ "type": "STRING" }, { - "id": 5, + "id": 13840, "origin_id": -10, "origin_slot": 6, "target_id": 5557, "target_slot": 0, "type": "STRING", - "parentId": 9011 + "parentId": 9027 }, { - "id": 6, + "id": 13841, "origin_id": 5557, "origin_slot": 0, "target_id": 5558, @@ -3608,13 +3591,13 @@ "type": "BOOLEAN" }, { - "id": 7, + "id": 13842, "origin_id": 5504, "origin_slot": 0, "target_id": 5558, "target_slot": 1, "type": "CONDITIONING", - "parentId": 9013 + "parentId": 9029 }, { "id": 13786, @@ -3639,7 +3622,7 @@ "target_id": 5560, "target_slot": 1, "type": "CONDITIONING", - "parentId": 9015 + "parentId": 9031 }, { "id": 13789, @@ -3656,7 +3639,7 @@ "target_id": -20, "target_slot": 1, "type": "CONDITIONING", - "parentId": 9017 + "parentId": 9033 }, { "id": 13791, @@ -3673,7 +3656,7 @@ "target_id": -20, "target_slot": 0, "type": "STRING", - "parentId": 9019 + "parentId": 9035 }, { "id": 13793, @@ -3682,20 +3665,52 @@ "target_id": 1241, "target_slot": 2, "type": "FLOAT", - "parentId": 9021 + "parentId": 9037 }, { - "id": 4, + "id": 13843, "origin_id": 9004, "origin_slot": 0, "target_id": 5556, "target_slot": 1, "type": "STRING" + }, + { + "id": 13616, + "origin_id": -10, + "origin_slot": 7, + "target_id": 5505, + "target_slot": 2, + "type": "COMBO" + }, + { + "id": 13754, + "origin_id": -10, + "origin_slot": 1, + "target_id": 9004, + "target_slot": 0, + "type": "CLIP" + }, + { + "id": 13755, + "origin_id": -10, + "origin_slot": 2, + "target_id": 9004, + "target_slot": 5, + "type": "STRING" + }, + { + "id": 13746, + "origin_id": -10, + "origin_slot": 5, + "target_id": 9004, + "target_slot": 6, + "type": "INT" } ], "reroutes": [ { - "id": 9000, + "id": 9016, "pos": [ 268, 934.1857542723956 @@ -3705,8 +3720,8 @@ ] }, { - "id": 9001, - "parentId": 9000, + "id": 9017, + "parentId": 9016, "pos": [ 1171.2408203125, 934.1857542723956 @@ -3716,7 +3731,7 @@ ] }, { - "id": 9002, + "id": 9018, "pos": [ 268, 952.1857542723956 @@ -3726,8 +3741,8 @@ ] }, { - "id": 9003, - "parentId": 9002, + "id": 9019, + "parentId": 9018, "pos": [ 1171.2408203125, 952.1857542723956 @@ -3737,7 +3752,7 @@ ] }, { - "id": 9004, + "id": 9020, "pos": [ 268, 970.1857542723956 @@ -3747,8 +3762,8 @@ ] }, { - "id": 9005, - "parentId": 9004, + "id": 9021, + "parentId": 9020, "pos": [ 1171.2408203125, 970.1857542723956 @@ -3758,91 +3773,91 @@ ] }, { - "id": 9006, + "id": 9022, "pos": [ 268, 988.1857542723956 ], "linkIds": [ - 2 + 13838 ] }, { - "id": 9007, - "parentId": 9006, + "id": 9023, + "parentId": 9022, "pos": [ 821.2408203125, 988.1857542723956 ], "linkIds": [ - 2 + 13838 ] }, { - "id": 9008, + "id": 9024, "pos": [ 268, 1006.1857542723956 ], "linkIds": [ - 3 + 13839 ] }, { - "id": 9009, - "parentId": 9008, + "id": 9025, + "parentId": 9024, "pos": [ 821.2408203125, 1006.1857542723956 ], "linkIds": [ - 3 + 13839 ] }, { - "id": 9010, + "id": 9026, "pos": [ 268, 1024.1857542723956 ], "linkIds": [ - 5 + 13840 ] }, { - "id": 9011, - "parentId": 9010, + "id": 9027, + "parentId": 9026, "pos": [ 1532.7228515625002, 1024.1857542723956 ], "linkIds": [ - 5 + 13840 ] }, { - "id": 9012, + "id": 9028, "pos": [ 721.6919921875, 1042.1857542723956 ], "linkIds": [ - 7 + 13842 ] }, { - "id": 9013, - "parentId": 9012, + "id": 9029, + "parentId": 9028, "pos": [ 1822.7228515625002, 1042.1857542723956 ], "linkIds": [ - 7 + 13842 ] }, { - "id": 9014, + "id": 9030, "pos": [ 721.6919921875, 1060.1857542723956 @@ -3852,8 +3867,8 @@ ] }, { - "id": 9015, - "parentId": 9014, + "id": 9031, + "parentId": 9030, "pos": [ 1822.7228515625002, 1060.1857542723956 @@ -3863,7 +3878,7 @@ ] }, { - "id": 9016, + "id": 9032, "pos": [ 2188.4939453125003, 1078.1857542723956 @@ -3873,8 +3888,8 @@ ] }, { - "id": 9017, - "parentId": 9016, + "id": 9033, + "parentId": 9032, "pos": [ 2237.6277343750003, 1078.1857542723956 @@ -3884,7 +3899,7 @@ ] }, { - "id": 9018, + "id": 9034, "pos": [ 1127.2408203125, 1096.1857542723956 @@ -3894,8 +3909,8 @@ ] }, { - "id": 9019, - "parentId": 9018, + "id": 9035, + "parentId": 9034, "pos": [ 2237.6277343750003, 1096.1857542723956 @@ -3905,7 +3920,7 @@ ] }, { - "id": 9020, + "id": 9036, "pos": [ 268, 1114.1857542723956 @@ -3915,8 +3930,8 @@ ] }, { - "id": 9021, - "parentId": 9020, + "id": 9037, + "parentId": 9036, "pos": [ 1532.7228515625002, 1114.1857542723956 @@ -3932,10 +3947,10 @@ "id": "f9337bd7-ca7a-4a59-99f1-65b664bed7e7", "version": 1, "state": { - "lastGroupId": 158, - "lastNodeId": 9201, - "lastLinkId": 77, - "lastRerouteId": 9032 + "lastGroupId": 161, + "lastNodeId": 9204, + "lastLinkId": 13883, + "lastRerouteId": 9101 }, "revision": 0, "config": {}, @@ -3964,7 +3979,7 @@ "name": "model", "type": "MODEL", "linkIds": [ - 1 + 13844 ], "localized_name": "model", "pos": [ @@ -3977,7 +3992,7 @@ "name": "positive", "type": "CONDITIONING", "linkIds": [ - 2 + 13845 ], "localized_name": "positive", "pos": [ @@ -3990,7 +4005,7 @@ "name": "negative", "type": "CONDITIONING", "linkIds": [ - 3 + 13846 ], "localized_name": "negative", "pos": [ @@ -4003,7 +4018,7 @@ "name": "latent_image", "type": "LATENT", "linkIds": [ - 4 + 13847 ], "localized_name": "latent_image", "pos": [ @@ -4016,7 +4031,7 @@ "name": "noise_seed", "type": "INT", "linkIds": [ - 7 + 13850 ], "label": "noise seed", "pos": [ @@ -4029,7 +4044,7 @@ "name": "cfg", "type": "FLOAT", "linkIds": [ - 8 + 13851 ], "label": "guider cfg", "pos": [ @@ -4042,7 +4057,7 @@ "name": "sampler_name", "type": "COMBO", "linkIds": [ - 14 + 13857 ], "pos": [ 250, @@ -4054,7 +4069,7 @@ "name": "tile_width", "type": "INT", "linkIds": [ - 9 + 13852 ], "label": "tile_width", "pos": [ @@ -4067,7 +4082,7 @@ "name": "tile_height", "type": "INT", "linkIds": [ - 10 + 13853 ], "label": "tile_height", "pos": [ @@ -4080,7 +4095,7 @@ "name": "overlap_frac", "type": "FLOAT", "linkIds": [ - 11 + 13854 ], "label": "overlap_frac", "pos": [ @@ -4093,7 +4108,7 @@ "name": "tile_frames", "type": "INT", "linkIds": [ - 12 + 13855 ], "label": "tile_frames", "pos": [ @@ -4106,7 +4121,7 @@ "name": "vae", "type": "VAE", "linkIds": [ - 13 + 13856 ], "label": "vae", "pos": [ @@ -4119,7 +4134,7 @@ "name": "audio_latent", "type": "LATENT", "linkIds": [ - 16 + 13859 ], "label": "audio_latent", "pos": [ @@ -4134,7 +4149,7 @@ "name": "video_latent", "type": "LATENT", "linkIds": [ - 15 + 13858 ], "pos": [ 1619.9463328320699, @@ -4178,7 +4193,7 @@ "widget": { "name": "sampler_name" }, - "link": 14 + "link": 13857 } ], "outputs": [ @@ -4187,14 +4202,14 @@ "name": "SAMPLER", "type": "SAMPLER", "links": [ - 6 + 13849 ] } ], "properties": { + "Node name for S&R": "KSamplerSelect", "cnr_id": "comfy-core", - "ver": "0.14.1", - "Node name for S&R": "KSamplerSelect" + "ver": "0.14.1" }, "widgets_values": [ "euler" @@ -4224,14 +4239,14 @@ "name": "SIGMAS", "type": "SIGMAS", "links": [ - 5 + 13848 ] } ], "properties": { + "Node name for S&R": "ManualSigmas", "cnr_id": "comfy-core", - "ver": "0.14.1", - "Node name for S&R": "ManualSigmas" + "ver": "0.14.1" }, "widgets_values": [ "1.0, 0.99375, 0.9875, 0.98125, 0.975, 0.909375, 0.725, 0.421875, 0.0" @@ -4285,44 +4300,44 @@ "localized_name": "model", "name": "model", "type": "MODEL", - "link": 1 + "link": 13844 }, { "localized_name": "positive", "name": "positive", "type": "CONDITIONING", - "link": 2 + "link": 13845 }, { "localized_name": "negative", "name": "negative", "type": "CONDITIONING", - "link": 3 + "link": 13846 }, { "localized_name": "latents", "name": "latents", "type": "LATENT", - "link": 4 + "link": 13847 }, { "localized_name": "sigmas", "name": "sigmas", "type": "SIGMAS", - "link": 5 + "link": 13848 }, { "localized_name": "sampler", "name": "sampler", "type": "SAMPLER", - "link": 6 + "link": 13849 }, { "localized_name": "vae", "name": "vae", "shape": 7, "type": "VAE", - "link": 13 + "link": 13856 }, { "localized_name": "seed", @@ -4331,7 +4346,7 @@ "widget": { "name": "seed" }, - "link": 7 + "link": 13850 }, { "localized_name": "cfg", @@ -4340,7 +4355,7 @@ "widget": { "name": "cfg" }, - "link": 8 + "link": 13851 }, { "localized_name": "tile_width", @@ -4349,7 +4364,7 @@ "widget": { "name": "tile_width" }, - "link": 9 + "link": 13852 }, { "localized_name": "tile_height", @@ -4358,7 +4373,7 @@ "widget": { "name": "tile_height" }, - "link": 10 + "link": 13853 }, { "localized_name": "overlap_frac", @@ -4367,7 +4382,7 @@ "widget": { "name": "overlap_frac" }, - "link": 11 + "link": 13854 }, { "localized_name": "tile_frames", @@ -4376,7 +4391,7 @@ "widget": { "name": "tile_frames" }, - "link": 12 + "link": 13855 } ], "outputs": [ @@ -4385,14 +4400,14 @@ "name": "output", "type": "LATENT", "links": [ - 15 + 13858 ] } ], "properties": { + "Node name for S&R": "LTXVTiledFusionSampler", "aux_id": "LightricksResearch/ComfyUI-LTXVideo-Internal", - "ver": "65bfc50105d620a6a21675e022d229f947c6eb57", - "Node name for S&R": "LTXVTiledFusionSampler" + "ver": "65bfc50105d620a6a21675e022d229f947c6eb57" }, "widgets_values": [ 42, @@ -4438,7 +4453,7 @@ "localized_name": "samples", "name": "samples", "type": "LATENT", - "link": 16 + "link": 13859 } ], "outputs": [ @@ -4453,9 +4468,9 @@ ], "title": "Pass audio latent", "properties": { + "Node name for S&R": "RepeatLatentBatch", "cnr_id": "comfy-core", - "ver": "0.34.0", - "Node name for S&R": "RepeatLatentBatch" + "ver": "0.34.0" }, "widgets_values": [ 1 @@ -4481,43 +4496,43 @@ ], "links": [ { - "id": 1, + "id": 13844, "origin_id": -10, "origin_slot": 0, "target_id": 9100, "target_slot": 0, "type": "MODEL", - "parentId": 9001 + "parentId": 9039 }, { - "id": 2, + "id": 13845, "origin_id": -10, "origin_slot": 1, "target_id": 9100, "target_slot": 1, "type": "CONDITIONING", - "parentId": 9003 + "parentId": 9041 }, { - "id": 3, + "id": 13846, "origin_id": -10, "origin_slot": 2, "target_id": 9100, "target_slot": 2, "type": "CONDITIONING", - "parentId": 9005 + "parentId": 9043 }, { - "id": 4, + "id": 13847, "origin_id": -10, "origin_slot": 3, "target_id": 9100, "target_slot": 3, "type": "LATENT", - "parentId": 9007 + "parentId": 9045 }, { - "id": 5, + "id": 13848, "origin_id": 4984, "origin_slot": 0, "target_id": 9100, @@ -4525,7 +4540,7 @@ "type": "SIGMAS" }, { - "id": 6, + "id": 13849, "origin_id": 4831, "origin_slot": 0, "target_id": 9100, @@ -4533,70 +4548,61 @@ "type": "SAMPLER" }, { - "id": 7, + "id": 13850, "origin_id": -10, "origin_slot": 4, "target_id": 9100, "target_slot": 7, "type": "INT", - "parentId": 9009 + "parentId": 9047 }, { - "id": 8, + "id": 13851, "origin_id": -10, "origin_slot": 5, "target_id": 9100, "target_slot": 8, "type": "FLOAT", - "parentId": 9011 + "parentId": 9049 }, { - "id": 9, + "id": 13852, "origin_id": -10, "origin_slot": 7, "target_id": 9100, "target_slot": 9, "type": "INT", - "parentId": 9013 + "parentId": 9051 }, { - "id": 10, + "id": 13853, "origin_id": -10, "origin_slot": 8, "target_id": 9100, "target_slot": 10, "type": "INT", - "parentId": 9015 + "parentId": 9053 }, { - "id": 11, + "id": 13854, "origin_id": -10, "origin_slot": 9, "target_id": 9100, "target_slot": 11, "type": "FLOAT", - "parentId": 9017 + "parentId": 9055 }, { - "id": 12, - "origin_id": -10, - "origin_slot": 10, - "target_id": 9100, - "target_slot": 12, - "type": "INT", - "parentId": 9019 - }, - { - "id": 13, + "id": 13856, "origin_id": -10, "origin_slot": 11, "target_id": 9100, "target_slot": 6, "type": "VAE", - "parentId": 9021 + "parentId": 9059 }, { - "id": 14, + "id": 13857, "origin_id": -10, "origin_slot": 6, "target_id": 4831, @@ -4604,22 +4610,22 @@ "type": "COMBO" }, { - "id": 15, + "id": 13858, "origin_id": 9100, "origin_slot": 0, "target_id": -20, "target_slot": 0, "type": "LATENT", - "parentId": 9023 + "parentId": 9061 }, { - "id": 16, + "id": 13859, "origin_id": -10, "origin_slot": 12, "target_id": 9102, "target_slot": 0, "type": "LATENT", - "parentId": 9025 + "parentId": 9063 }, { "id": 17, @@ -4628,280 +4634,289 @@ "target_id": -20, "target_slot": 1, "type": "LATENT" + }, + { + "id": 13855, + "origin_id": -10, + "origin_slot": 10, + "target_id": 9100, + "target_slot": 12, + "type": "INT", + "parentId": 9057 } ], "reroutes": [ { - "id": 9000, + "id": 9038, "pos": [ 268, 654 ], "linkIds": [ - 1 + 13844 ] }, { - "id": 9001, - "parentId": 9000, + "id": 9039, + "parentId": 9038, "pos": [ 891.9463328320699, 654 ], "linkIds": [ - 1 + 13844 ] }, { - "id": 9002, + "id": 9040, "pos": [ 268, 672 ], "linkIds": [ - 2 + 13845 ] }, { - "id": 9003, - "parentId": 9002, + "id": 9041, + "parentId": 9040, "pos": [ 891.9463328320699, 672 ], "linkIds": [ - 2 + 13845 ] }, { - "id": 9004, + "id": 9042, "pos": [ 268, 690 ], "linkIds": [ - 3 + 13846 ] }, { - "id": 9005, - "parentId": 9004, + "id": 9043, + "parentId": 9042, "pos": [ 891.9463328320699, 690 ], "linkIds": [ - 3 + 13846 ] }, { - "id": 9006, + "id": 9044, "pos": [ 268, 708 ], "linkIds": [ - 4 + 13847 ] }, { - "id": 9007, - "parentId": 9006, + "id": 9045, + "parentId": 9044, "pos": [ 891.9463328320699, 708 ], "linkIds": [ - 4 + 13847 ] }, { - "id": 9008, + "id": 9046, "pos": [ 268, 726 ], "linkIds": [ - 7 + 13850 ] }, { - "id": 9009, - "parentId": 9008, + "id": 9047, + "parentId": 9046, "pos": [ 891.9463328320699, 726 ], "linkIds": [ - 7 + 13850 ] }, { - "id": 9010, + "id": 9048, "pos": [ 268, 744 ], "linkIds": [ - 8 + 13851 ] }, { - "id": 9011, - "parentId": 9010, + "id": 9049, + "parentId": 9048, "pos": [ 891.9463328320699, 744 ], "linkIds": [ - 8 + 13851 ] }, { - "id": 9012, + "id": 9050, "pos": [ 268, 762 ], "linkIds": [ - 9 + 13852 ] }, { - "id": 9013, - "parentId": 9012, + "id": 9051, + "parentId": 9050, "pos": [ 891.9463328320699, 762 ], "linkIds": [ - 9 + 13852 ] }, { - "id": 9014, + "id": 9052, "pos": [ 268, 780 ], "linkIds": [ - 10 + 13853 ] }, { - "id": 9015, - "parentId": 9014, + "id": 9053, + "parentId": 9052, "pos": [ 891.9463328320699, 780 ], "linkIds": [ - 10 + 13853 ] }, { - "id": 9016, + "id": 9054, "pos": [ 268, 798 ], "linkIds": [ - 11 + 13854 ] }, { - "id": 9017, - "parentId": 9016, + "id": 9055, + "parentId": 9054, "pos": [ 891.9463328320699, 798 ], "linkIds": [ - 11 + 13854 ] }, { - "id": 9018, + "id": 9056, "pos": [ 268, 816 ], "linkIds": [ - 12 + 13855 ] }, { - "id": 9019, - "parentId": 9018, + "id": 9057, + "parentId": 9056, "pos": [ 891.9463328320699, 816 ], "linkIds": [ - 12 + 13855 ] }, { - "id": 9020, + "id": 9058, "pos": [ 268, 834 ], "linkIds": [ - 13 + 13856 ] }, { - "id": 9021, - "parentId": 9020, + "id": 9059, + "parentId": 9058, "pos": [ 891.9463328320699, 834 ], "linkIds": [ - 13 + 13856 ] }, { - "id": 9022, + "id": 9060, "pos": [ 1267.9463328320699, 852 ], "linkIds": [ - 15 + 13858 ] }, { - "id": 9023, - "parentId": 9022, + "id": 9061, + "parentId": 9060, "pos": [ 1601.9463328320699, 852 ], "linkIds": [ - 15 + 13858 ] }, { - "id": 9024, + "id": 9062, "pos": [ 268, 870 ], "linkIds": [ - 16 + 13859 ] }, { - "id": 9025, - "parentId": 9024, + "id": 9063, + "parentId": 9062, "pos": [ 1311.9463328320699, 870 ], "linkIds": [ - 16 + 13859 ] } ], @@ -4911,10 +4926,10 @@ "id": "bee43e38-9234-4e41-86ff-63874164f482", "version": 1, "state": { - "lastGroupId": 158, - "lastNodeId": 9201, - "lastLinkId": 77, - "lastRerouteId": 9032 + "lastGroupId": 161, + "lastNodeId": 9204, + "lastLinkId": 13883, + "lastRerouteId": 9101 }, "revision": 0, "config": {}, @@ -5122,9 +5137,9 @@ } ], "properties": { + "Node name for S&R": "LTXVAudioVAEDecode", "cnr_id": "comfy-core", - "ver": "0.3.64", - "Node name for S&R": "LTXVAudioVAEDecode" + "ver": "0.3.64" } }, { @@ -5136,7 +5151,7 @@ ], "size": [ 270, - 126 + 150 ], "flags": {}, "order": 1, @@ -5186,19 +5201,21 @@ } ], "properties": { + "Node name for S&R": "CreateVideo", "cnr_id": "comfy-core", - "ver": "0.14.1", - "Node name for S&R": "CreateVideo" + "ver": "0.14.1" }, "widgets_values": [ 30, 8, - "sRGB" + "sRGB", + "none" ], "widgets_values_named": { "fps": 30, "bit_depth": 8, - "color_space": "sRGB" + "color_space": "sRGB", + "codec": "none" } }, { @@ -5276,9 +5293,9 @@ } ], "properties": { + "Node name for S&R": "VAEDecodeTiled", "cnr_id": "comfy-core", - "ver": "0.34.0", - "Node name for S&R": "VAEDecodeTiled" + "ver": "0.34.0" }, "widgets_values": [ 512, @@ -5340,7 +5357,7 @@ "target_id": 4849, "target_slot": 2, "type": "FLOAT", - "parentId": 9001 + "parentId": 9065 }, { "id": 13112, @@ -5357,7 +5374,7 @@ "target_id": 4849, "target_slot": 3, "type": "INT", - "parentId": 9003 + "parentId": 9067 }, { "id": 13710, @@ -5418,7 +5435,7 @@ ], "reroutes": [ { - "id": 9000, + "id": 9064, "pos": [ 268, 390 @@ -5428,8 +5445,8 @@ ] }, { - "id": 9001, - "parentId": 9000, + "id": 9065, + "parentId": 9064, "pos": [ 662, 390 @@ -5439,7 +5456,7 @@ ] }, { - "id": 9002, + "id": 9066, "pos": [ 268, 408 @@ -5449,8 +5466,8 @@ ] }, { - "id": 9003, - "parentId": 9002, + "id": 9067, + "parentId": 9066, "pos": [ 662, 408 @@ -5466,10 +5483,10 @@ "id": "c4a8f261-5b93-4e17-8d2a-6f01b3e97c45", "version": 1, "state": { - "lastGroupId": 158, - "lastNodeId": 9201, - "lastLinkId": 77, - "lastRerouteId": 9032 + "lastGroupId": 161, + "lastNodeId": 9204, + "lastLinkId": 13883, + "lastRerouteId": 9101 }, "revision": 0, "config": {}, @@ -5477,17 +5494,17 @@ "inputNode": { "id": -10, "bounding": [ - 40, - 206, + -128.2439920536591, + 242.55084029918126, 128, - 68 + 67.99999999999997 ] }, "outputNode": { "id": -20, "bounding": [ - 1096, - 206, + 1464.5705364391124, + 316.04153318863433, 128, 168 ] @@ -5498,11 +5515,11 @@ "name": "video", "type": "VIDEO", "linkIds": [ - 10 + 13860 ], "pos": [ - 144, - 230 + -24.2439920536591, + 266.55084029918123 ] } ], @@ -5512,11 +5529,11 @@ "name": "image", "type": "IMAGE", "linkIds": [ - 2 + 13866 ], "pos": [ - 1120, - 230 + 1488.5705364391124, + 340.04153318863433 ] }, { @@ -5524,11 +5541,11 @@ "name": "width", "type": "INT", "linkIds": [ - 13 + 13861 ], "pos": [ - 1120, - 250 + 1488.5705364391124, + 360.04153318863433 ] }, { @@ -5536,11 +5553,11 @@ "name": "height", "type": "INT", "linkIds": [ - 14 + 13862 ], "pos": [ - 1120, - 270 + 1488.5705364391124, + 380.04153318863433 ] }, { @@ -5548,11 +5565,11 @@ "name": "length", "type": "INT", "linkIds": [ - 15 + 13863 ], "pos": [ - 1120, - 290 + 1488.5705364391124, + 400.04153318863433 ] }, { @@ -5560,11 +5577,11 @@ "name": "fps", "type": "FLOAT", "linkIds": [ - 16 + 13864 ], "pos": [ - 1120, - 310 + 1488.5705364391124, + 420.04153318863433 ] }, { @@ -5572,12 +5589,12 @@ "name": "audio", "type": "AUDIO", "linkIds": [ - 18 + 13881 ], "label": "audio", "pos": [ - 1120, - 330 + 1488.5705364391124, + 440.04153318863433 ] } ], @@ -5587,8 +5604,8 @@ "id": 5029, "type": "GetImageSize", "pos": [ - 806, - 206 + 749.001276849494, + 213.80886912091802 ], "size": [ 225, @@ -5602,7 +5619,7 @@ "localized_name": "image", "name": "image", "type": "IMAGE", - "link": 1 + "link": 13865 } ], "outputs": [ @@ -5611,7 +5628,7 @@ "name": "width", "type": "INT", "links": [ - 13 + 13861 ] }, { @@ -5619,7 +5636,7 @@ "name": "height", "type": "INT", "links": [ - 14 + 13862 ] }, { @@ -5627,22 +5644,23 @@ "name": "batch_size", "type": "INT", "links": [ - 15 + 13863, + 13880 ] } ], "properties": { + "Node name for S&R": "GetImageSize", "cnr_id": "comfy-core", - "ver": "0.16.0", - "Node name for S&R": "GetImageSize" + "ver": "0.16.0" } }, { "id": 9006, "type": "GetVideoComponents", "pos": [ - 330, - 206 + 314.65827805196136, + 203.45275452474948 ], "size": [ 374.15625, @@ -5656,7 +5674,7 @@ "localized_name": "video", "name": "video", "type": "VIDEO", - "link": 10 + "link": 13860 } ], "outputs": [ @@ -5665,8 +5683,8 @@ "name": "images", "type": "IMAGE", "links": [ - 1, - 2 + 13865, + 13866 ] }, { @@ -5674,7 +5692,7 @@ "name": "audio", "type": "AUDIO", "links": [ - 18 + 13883 ] }, { @@ -5682,7 +5700,8 @@ "name": "fps", "type": "FLOAT", "links": [ - 16 + 13864, + 13879 ] }, { @@ -5699,17 +5718,17 @@ } ], "properties": { + "Node name for S&R": "GetVideoComponents", "cnr_id": "comfy-core", - "ver": "0.3.75", - "Node name for S&R": "GetVideoComponents" + "ver": "0.3.75" } }, { "id": 9001, "type": "MarkdownNote", "pos": [ - 330, - 80 + 300.8383538486223, + -17.700207476791817 ], "size": [ 396, @@ -5730,17 +5749,201 @@ }, "color": "#432", "bgcolor": "#653" + }, + { + "id": 9202, + "type": "ComfyMathExpression", + "pos": [ + 254.71787442310642, + 673.2088515978514 + ], + "size": [ + 270, + 148 + ], + "flags": {}, + "order": 3, + "mode": 0, + "inputs": [ + { + "label": "a", + "localized_name": "a", + "name": "values.a", + "type": "FLOAT,INT,BOOLEAN", + "link": 13880 + }, + { + "localized_name": "b", + "name": "values.b", + "shape": 7, + "type": "FLOAT,INT,BOOLEAN", + "link": 13879 + }, + { + "localized_name": "c", + "name": "values.c", + "shape": 7, + "type": "FLOAT,INT,BOOLEAN", + "link": null + } + ], + "outputs": [ + { + "localized_name": "FLOAT", + "name": "FLOAT", + "type": "FLOAT", + "links": [ + 13877 + ] + }, + { + "localized_name": "INT", + "name": "INT", + "type": "INT", + "links": [] + }, + { + "localized_name": "BOOL", + "name": "BOOL", + "type": "BOOLEAN", + "links": [] + } + ], + "title": "audio duration = frames / fps", + "properties": { + "Node name for S&R": "ComfyMathExpression", + "cnr_id": "comfy-core" + }, + "widgets_values": [ + "a / b" + ], + "widgets_values_named": { + "expression": "a / b" + } + }, + { + "id": 9203, + "type": "EmptyAudio", + "pos": [ + 563.410756745149, + 680.6365530533169 + ], + "size": [ + 270, + 110 + ], + "flags": {}, + "order": 4, + "mode": 0, + "inputs": [ + { + "localized_name": "duration", + "name": "duration", + "type": "FLOAT", + "widget": { + "name": "duration" + }, + "link": 13877 + } + ], + "outputs": [ + { + "localized_name": "AUDIO", + "name": "AUDIO", + "type": "AUDIO", + "links": [ + 13878 + ] + } + ], + "title": "silence fallback", + "properties": { + "Node name for S&R": "EmptyAudio", + "cnr_id": "comfy-core" + }, + "widgets_values": [ + 60, + 44100, + 2 + ], + "widgets_values_named": { + "duration": 60, + "sample_rate": 44100, + "channels": 2 + } + }, + { + "id": 9204, + "type": "AudioMerge", + "pos": [ + 868.8139898913777, + 674.3733106321363 + ], + "size": [ + 270, + 110 + ], + "flags": {}, + "order": 5, + "mode": 0, + "inputs": [ + { + "localized_name": "audio1", + "name": "audio1", + "type": "AUDIO", + "link": 13883 + }, + { + "localized_name": "audio2", + "name": "audio2", + "type": "AUDIO", + "link": 13878 + } + ], + "outputs": [ + { + "localized_name": "AUDIO", + "name": "AUDIO", + "type": "AUDIO", + "links": [ + 13881 + ] + } + ], + "title": "use source audio, else silence", + "properties": { + "Node name for S&R": "AudioMerge", + "cnr_id": "comfy-core" + }, + "widgets_values": [ + "add" + ], + "widgets_values_named": { + "merge_method": "add" + } } ], "groups": [ { - "id": 1, + "id": 159, "title": "Source Video", "bounding": [ - 306, - 36, - 734, - 330 + 291.1430954621541, + 117.95464183361133, + 709.2470723332865, + 254.37678269568445 + ], + "color": "#3f789e", + "flags": {} + }, + { + "id": 161, + "title": "Add silent sound for input video without sound", + "bounding": [ + 219.56669541602736, + 569.3377512262543, + 941.5866593575402, + 274.3619503493783 ], "color": "#3f789e", "flags": {} @@ -5748,7 +5951,7 @@ ], "links": [ { - "id": 10, + "id": 13860, "origin_id": -10, "origin_slot": 0, "target_id": 9006, @@ -5756,7 +5959,7 @@ "type": "VIDEO" }, { - "id": 13, + "id": 13861, "origin_id": 5029, "origin_slot": 0, "target_id": -20, @@ -5764,7 +5967,7 @@ "type": "INT" }, { - "id": 14, + "id": 13862, "origin_id": 5029, "origin_slot": 1, "target_id": -20, @@ -5772,7 +5975,7 @@ "type": "INT" }, { - "id": 15, + "id": 13863, "origin_id": 5029, "origin_slot": 2, "target_id": -20, @@ -5780,125 +5983,152 @@ "type": "INT" }, { - "id": 16, + "id": 13864, "origin_id": 9006, "origin_slot": 2, "target_id": -20, "target_slot": 4, "type": "FLOAT", - "parentId": 9001 + "parentId": 9069 }, { - "id": 18, - "origin_id": 9006, - "origin_slot": 1, - "target_id": -20, - "target_slot": 5, - "type": "AUDIO", - "parentId": 9003 - }, - { - "id": 1, + "id": 13865, "origin_id": 9006, "origin_slot": 0, "target_id": 5029, "target_slot": 0, - "type": "IMAGE", - "parentId": 9005 + "type": "IMAGE" }, { - "id": 2, + "id": 13866, "origin_id": 9006, "origin_slot": 0, "target_id": -20, "target_slot": 0, "type": "IMAGE", - "parentId": 9007 + "parentId": 9075 + }, + { + "id": 13877, + "origin_id": 9202, + "origin_slot": 0, + "target_id": 9203, + "target_slot": 0, + "type": "FLOAT" + }, + { + "id": 13878, + "origin_id": 9203, + "origin_slot": 0, + "target_id": 9204, + "target_slot": 1, + "type": "AUDIO" + }, + { + "id": 13879, + "origin_id": 9006, + "origin_slot": 2, + "target_id": 9202, + "target_slot": 1, + "type": "FLOAT" + }, + { + "id": 13880, + "origin_id": 5029, + "origin_slot": 2, + "target_id": 9202, + "target_slot": 0, + "type": "INT" + }, + { + "id": 13881, + "origin_id": 9204, + "origin_slot": 0, + "target_id": -20, + "target_slot": 5, + "type": "AUDIO" + }, + { + "id": 13883, + "origin_id": 9006, + "origin_slot": 1, + "target_id": 9204, + "target_slot": 0, + "type": "AUDIO" + } + ], + "floatingLinks": [ + { + "id": 13882, + "origin_id": -1, + "origin_slot": -1, + "target_id": -20, + "target_slot": 5, + "type": "AUDIO", + "parentId": 9071 } ], "reroutes": [ { - "id": 9000, + "id": 9068, "pos": [ 722.163671875, 428 ], "linkIds": [ - 16 + 13864 ] }, { - "id": 9001, - "parentId": 9000, + "id": 9069, + "parentId": 9068, "pos": [ 1078, 428 ], "linkIds": [ - 16 + 13864 ] }, { - "id": 9002, + "id": 9070, "pos": [ 722.163671875, 446 ], - "linkIds": [ - 18 - ] + "linkIds": [] }, { - "id": 9003, - "parentId": 9002, + "id": 9071, + "parentId": 9070, "pos": [ 1078, 446 ], - "linkIds": [ - 18 - ] + "linkIds": [], + "floating": { + "slotType": "input" + } }, { - "id": 9004, - "pos": [ - 722.163671875, - 464 - ], - "linkIds": [ - 1 - ] - }, - { - "id": 9005, - "parentId": 9004, - "pos": [ - 788, - 464 - ], - "linkIds": [ - 1 - ] - }, - { - "id": 9006, + "id": 9074, "pos": [ 722.163671875, 482 ], "linkIds": [ - 2 + 13866 ] }, { - "id": 9007, - "parentId": 9006, + "id": 9075, + "parentId": 9074, "pos": [ 1078, 482 ], "linkIds": [ - 2 + 13866 ] } ], @@ -5908,10 +6138,10 @@ "id": "d92e6f38-7a14-4c85-b3e0-9f52a1d68b74", "version": 1, "state": { - "lastGroupId": 158, - "lastNodeId": 9201, - "lastLinkId": 77, - "lastRerouteId": 9032 + "lastGroupId": 161, + "lastNodeId": 9204, + "lastLinkId": 13883, + "lastRerouteId": 9101 }, "revision": 0, "config": {}, @@ -5940,7 +6170,7 @@ "name": "positive", "type": "CONDITIONING", "linkIds": [ - 8 + 13869 ], "label": "positive", "pos": [ @@ -5953,7 +6183,7 @@ "name": "negative", "type": "CONDITIONING", "linkIds": [ - 9 + 13870 ], "label": "negative", "pos": [ @@ -5966,7 +6196,7 @@ "name": "vae", "type": "VAE", "linkIds": [ - 11 + 13871 ], "label": "vae", "pos": [ @@ -5992,7 +6222,7 @@ "name": "latent_downscale_factor", "type": "FLOAT", "linkIds": [ - 15 + 13872 ], "label": "latent_downscale_factor", "pos": [ @@ -6126,7 +6356,7 @@ "name": "frozen_audio", "type": "LATENT", "linkIds": [ - 2 + 13873 ], "label": "frozen_audio", "pos": [ @@ -6312,8 +6542,8 @@ "name": "tile_frames", "type": "INT", "links": [ - 7, - 75 + 75, + 13876 ] }, { @@ -6333,9 +6563,9 @@ ], "title": "Get Tiling Sizes", "properties": { + "Node name for S&R": "LTXVGetTilingSizes", "aux_id": "LightricksResearch/ComfyUI-LTXVideo-Internal", - "ver": "65bfc50105d620a6a21675e022d229f947c6eb57", - "Node name for S&R": "LTXVGetTilingSizes" + "ver": "65bfc50105d620a6a21675e022d229f947c6eb57" }, "widgets_values": [ 1920, @@ -6377,13 +6607,13 @@ "localized_name": "positive", "name": "positive", "type": "CONDITIONING", - "link": 8 + "link": 13869 }, { "localized_name": "negative", "name": "negative", "type": "CONDITIONING", - "link": 9 + "link": 13870 }, { "localized_name": "frame_rate", @@ -6402,8 +6632,8 @@ "type": "CONDITIONING", "slot_index": 0, "links": [ - 4, - 29 + 29, + 13867 ] }, { @@ -6412,15 +6642,15 @@ "type": "CONDITIONING", "slot_index": 1, "links": [ - 5, - 30 + 30, + 13868 ] } ], "properties": { + "Node name for S&R": "LTXVConditioning", "cnr_id": "comfy-core", - "ver": "0.3.28", - "Node name for S&R": "LTXVConditioning" + "ver": "0.3.28" }, "widgets_values": [ 24 @@ -6478,14 +6708,14 @@ "name": "LATENT", "type": "LATENT", "links": [ - 1 + 13874 ] } ], "properties": { + "Node name for S&R": "EmptyLTXVLatentVideo", "cnr_id": "comfy-core", - "ver": "0.3.43", - "Node name for S&R": "EmptyLTXVLatentVideo" + "ver": "0.3.43" }, "widgets_values": [ 960, @@ -6546,15 +6776,15 @@ "name": "IMAGE", "type": "IMAGE", "links": [ - 16 + 13875 ] } ], "title": "Resize guide to canvas", "properties": { + "Node name for S&R": "ImageScale", "cnr_id": "comfy-core", - "ver": "0.34.0", - "Node name for S&R": "ImageScale" + "ver": "0.34.0" }, "widgets_values": [ "lanczos", @@ -6588,31 +6818,31 @@ "localized_name": "positive", "name": "positive", "type": "CONDITIONING", - "link": 4 + "link": 13867 }, { "localized_name": "negative", "name": "negative", "type": "CONDITIONING", - "link": 5 + "link": 13868 }, { "localized_name": "vae", "name": "vae", "type": "VAE", - "link": 11 + "link": 13871 }, { "localized_name": "latent", "name": "latent", "type": "LATENT", - "link": 1 + "link": 13874 }, { "localized_name": "image", "name": "image", "type": "IMAGE", - "link": 16 + "link": 13875 }, { "localized_name": "latent_downscale_factor", @@ -6621,7 +6851,7 @@ "widget": { "name": "latent_downscale_factor" }, - "link": 15 + "link": 13872 }, { "localized_name": "tile_frames", @@ -6631,7 +6861,7 @@ "widget": { "name": "tile_frames" }, - "link": 7 + "link": 13876 } ], "outputs": [ @@ -6661,9 +6891,9 @@ } ], "properties": { + "Node name for S&R": "LTXAddVideoICLoRAGuide", "aux_id": "LightricksResearch/ComfyUI-LTXVideo-Internal", - "ver": "65bfc50105d620a6a21675e022d229f947c6eb57", - "Node name for S&R": "LTXAddVideoICLoRAGuide" + "ver": "65bfc50105d620a6a21675e022d229f947c6eb57" }, "widgets_values": [ 0, @@ -6727,9 +6957,9 @@ } ], "properties": { + "Node name for S&R": "VAEEncodeAudio", "cnr_id": "comfy-core", - "ver": "0.34.0", - "Node name for S&R": "VAEEncodeAudio" + "ver": "0.34.0" } }, { @@ -6784,21 +7014,21 @@ "name": "frozen_audio", "type": "LATENT", "links": [ - 2 + 13873 ] } ], "title": "freeze the source audio", "properties": { + "Node name for S&R": "LTXVSetAudioRefTokens", "aux_id": "LightricksResearch/ComfyUI-LTXVideo-Internal", - "ver": "65bfc50105d620a6a21675e022d229f947c6eb57", - "Node name for S&R": "LTXVSetAudioRefTokens" + "ver": "65bfc50105d620a6a21675e022d229f947c6eb57" } } ], "groups": [ { - "id": 1, + "id": 160, "title": "Preprocess", "bounding": [ 302.10676799354144, @@ -6812,25 +7042,25 @@ ], "links": [ { - "id": 4, + "id": 13867, "origin_id": 9005, "origin_slot": 0, "target_id": 5012, "target_slot": 0, "type": "CONDITIONING", - "parentId": 9001 + "parentId": 9077 }, { - "id": 5, + "id": 13868, "origin_id": 9005, "origin_slot": 1, "target_id": 5012, "target_slot": 1, "type": "CONDITIONING", - "parentId": 9003 + "parentId": 9079 }, { - "id": 8, + "id": 13869, "origin_id": -10, "origin_slot": 0, "target_id": 9005, @@ -6838,7 +7068,7 @@ "type": "CONDITIONING" }, { - "id": 9, + "id": 13870, "origin_id": -10, "origin_slot": 1, "target_id": 9005, @@ -6846,22 +7076,13 @@ "type": "CONDITIONING" }, { - "id": 11, + "id": 13871, "origin_id": -10, "origin_slot": 2, "target_id": 5012, "target_slot": 2, "type": "VAE", - "parentId": 9005 - }, - { - "id": 15, - "origin_id": -10, - "origin_slot": 4, - "target_id": 5012, - "target_slot": 5, - "type": "FLOAT", - "parentId": 9007 + "parentId": 9081 }, { "id": 21, @@ -6936,38 +7157,22 @@ "type": "CONDITIONING" }, { - "id": 2, + "id": 13873, "origin_id": 9008, "origin_slot": 2, "target_id": -20, "target_slot": 3, "type": "LATENT", - "parentId": 9009 + "parentId": 9085 }, { - "id": 1, + "id": 13874, "origin_id": 3059, "origin_slot": 0, "target_id": 5012, "target_slot": 3, "type": "LATENT", - "parentId": 9011 - }, - { - "id": 50, - "origin_id": -10, - "origin_slot": 9, - "target_id": 9200, - "target_slot": 2, - "type": "COMBO" - }, - { - "id": 52, - "origin_id": -10, - "origin_slot": 10, - "target_id": 9200, - "target_slot": 3, - "type": "COMBO" + "parentId": 9087 }, { "id": 53, @@ -6977,14 +7182,6 @@ "target_slot": 0, "type": "IMAGE" }, - { - "id": 61, - "origin_id": -10, - "origin_slot": 6, - "target_id": 9200, - "target_slot": 1, - "type": "INT" - }, { "id": 54, "origin_id": 9200, @@ -7001,22 +7198,6 @@ "target_slot": 1, "type": "INT" }, - { - "id": 56, - "origin_id": 9200, - "origin_slot": 4, - "target_id": 9201, - "target_slot": 1, - "type": "INT" - }, - { - "id": 57, - "origin_id": 9200, - "origin_slot": 5, - "target_id": 9201, - "target_slot": 2, - "type": "INT" - }, { "id": 58, "origin_id": -10, @@ -7024,25 +7205,16 @@ "target_id": 9201, "target_slot": 0, "type": "IMAGE", - "parentId": 9013 + "parentId": 9089 }, { - "id": 16, + "id": 13875, "origin_id": 9201, "origin_slot": 0, "target_id": 5012, "target_slot": 4, "type": "IMAGE" }, - { - "id": 7, - "origin_id": 9200, - "origin_slot": 7, - "target_id": 5012, - "target_slot": 6, - "type": "INT", - "parentId": 9015 - }, { "id": 19, "origin_id": -10, @@ -7058,7 +7230,7 @@ "target_id": -20, "target_slot": 4, "type": "INT", - "parentId": 9017 + "parentId": 9093 }, { "id": 71, @@ -7067,7 +7239,7 @@ "target_id": -20, "target_slot": 5, "type": "INT", - "parentId": 9019 + "parentId": 9095 }, { "id": 74, @@ -7076,7 +7248,7 @@ "target_id": -20, "target_slot": 6, "type": "FLOAT", - "parentId": 9021 + "parentId": 9097 }, { "id": 75, @@ -7085,7 +7257,7 @@ "target_id": -20, "target_slot": 7, "type": "INT", - "parentId": 9023 + "parentId": 9099 }, { "id": 77, @@ -7094,138 +7266,196 @@ "target_id": -20, "target_slot": 8, "type": "STRING", - "parentId": 9031 + "parentId": 9101 + }, + { + "id": 61, + "origin_id": -10, + "origin_slot": 6, + "target_id": 9200, + "target_slot": 1, + "type": "INT" + }, + { + "id": 50, + "origin_id": -10, + "origin_slot": 9, + "target_id": 9200, + "target_slot": 2, + "type": "COMBO" + }, + { + "id": 52, + "origin_id": -10, + "origin_slot": 10, + "target_id": 9200, + "target_slot": 3, + "type": "COMBO" + }, + { + "id": 56, + "origin_id": 9200, + "origin_slot": 4, + "target_id": 9201, + "target_slot": 1, + "type": "INT" + }, + { + "id": 57, + "origin_id": 9200, + "origin_slot": 5, + "target_id": 9201, + "target_slot": 2, + "type": "INT" + }, + { + "id": 13872, + "origin_id": -10, + "origin_slot": 4, + "target_id": 5012, + "target_slot": 5, + "type": "FLOAT", + "parentId": 9083 + }, + { + "id": 13876, + "origin_id": 9200, + "origin_slot": 7, + "target_id": 5012, + "target_slot": 6, + "type": "INT", + "parentId": 9091 } ], "reroutes": [ { - "id": 9000, + "id": 9076, "pos": [ 618.1809911778764, 958 ], "linkIds": [ - 4 + 13867 ] }, { - "id": 9001, - "parentId": 9000, + "id": 9077, + "parentId": 9076, "pos": [ 1055.4432958653765, 958 ], "linkIds": [ - 4 + 13867 ] }, { - "id": 9002, + "id": 9078, "pos": [ 618.1809911778764, 976 ], "linkIds": [ - 5 + 13868 ] }, { - "id": 9003, - "parentId": 9002, + "id": 9079, + "parentId": 9078, "pos": [ 1055.4432958653765, 976 ], "linkIds": [ - 5 + 13868 ] }, { - "id": 9004, + "id": 9080, "pos": [ 268, 994 ], "linkIds": [ - 11 + 13871 ] }, { - "id": 9005, - "parentId": 9004, + "id": 9081, + "parentId": 9080, "pos": [ 1055.4432958653765, 994 ], "linkIds": [ - 11 + 13871 ] }, { - "id": 9006, + "id": 9082, "pos": [ 268, 1012 ], "linkIds": [ - 15 + 13872 ] }, { - "id": 9007, - "parentId": 9006, + "id": 9083, + "parentId": 9082, "pos": [ 1055.4432958653765, 1012 ], "linkIds": [ - 15 + 13872 ] }, { - "id": 9008, + "id": 9084, "pos": [ 1011.4432958653764, 1030 ], "linkIds": [ - 2 + 13873 ] }, { - "id": 9009, - "parentId": 9008, + "id": 9085, + "parentId": 9084, "pos": [ 1452.3296239903766, 1030 ], "linkIds": [ - 2 + 13873 ] }, { - "id": 9010, + "id": 9086, "pos": [ 618.1809911778764, 1048 ], "linkIds": [ - 1 + 13874 ] }, { - "id": 9011, - "parentId": 9010, + "id": 9087, + "parentId": 9086, "pos": [ 1055.4432958653765, 1048 ], "linkIds": [ - 1 + 13874 ] }, { - "id": 9012, + "id": 9088, "pos": [ 268, 1066 @@ -7235,8 +7465,8 @@ ] }, { - "id": 9013, - "parentId": 9012, + "id": 9089, + "parentId": 9088, "pos": [ 662.1809911778764, 1066 @@ -7246,28 +7476,28 @@ ] }, { - "id": 9014, + "id": 9090, "pos": [ 618, 1084 ], "linkIds": [ - 7 + 13876 ] }, { - "id": 9015, - "parentId": 9014, + "id": 9091, + "parentId": 9090, "pos": [ 1055.4432958653765, 1084 ], "linkIds": [ - 7 + 13876 ] }, { - "id": 9016, + "id": 9092, "pos": [ 618, 1102 @@ -7277,8 +7507,8 @@ ] }, { - "id": 9017, - "parentId": 9016, + "id": 9093, + "parentId": 9092, "pos": [ 1452.3296239903766, 1102 @@ -7288,7 +7518,7 @@ ] }, { - "id": 9018, + "id": 9094, "pos": [ 618, 1120 @@ -7298,8 +7528,8 @@ ] }, { - "id": 9019, - "parentId": 9018, + "id": 9095, + "parentId": 9094, "pos": [ 1452.3296239903766, 1120 @@ -7309,7 +7539,7 @@ ] }, { - "id": 9020, + "id": 9096, "pos": [ 618, 1138 @@ -7319,8 +7549,8 @@ ] }, { - "id": 9021, - "parentId": 9020, + "id": 9097, + "parentId": 9096, "pos": [ 1452.3296239903766, 1138 @@ -7330,7 +7560,7 @@ ] }, { - "id": 9022, + "id": 9098, "pos": [ 618, 1156 @@ -7340,8 +7570,8 @@ ] }, { - "id": 9023, - "parentId": 9022, + "id": 9099, + "parentId": 9098, "pos": [ 1452.3296239903766, 1156 @@ -7351,7 +7581,7 @@ ] }, { - "id": 9030, + "id": 9100, "pos": [ 618, 1228 @@ -7361,8 +7591,8 @@ ] }, { - "id": 9031, - "parentId": 9030, + "id": 9101, + "parentId": 9100, "pos": [ 1452.3296239903766, 1228 @@ -7378,7 +7608,7 @@ }, "config": {}, "extra": { - "frontendVersion": "1.51.9", + "frontendVersion": "1.53.6", "VHS_latentpreview": false, "VHS_latentpreviewrate": 0, "VHS_MetadataImage": true, @@ -7625,10 +7855,10 @@ } ], "ds": { - "scale": 0.4769386359770556, + "scale": 0.5006187070797503, "offset": [ - 5791.701667053944, - -1977.4508378277299 + 4337.053320205585, + -2485.8406647100023 ] }, "linkExtensions": [ diff --git a/guide.py b/guide.py index b3b5ad9..7a2e951 100644 --- a/guide.py +++ b/guide.py @@ -17,126 +17,6 @@ def blur_internal(image, blur_radius): return image -@comfy_node(name="LTXVAddGuideAdvanced") -class LTXVAddGuideAdvanced: - @classmethod - def INPUT_TYPES(s): - return { - "required": { - "positive": ("CONDITIONING",), - "negative": ("CONDITIONING",), - "vae": ("VAE",), - "latent": ("LATENT",), - "image": ("IMAGE",), - "frame_idx": ( - "INT", - { - "default": 0, - "min": -9999, - "max": 9999, - "tooltip": "Frame index to start the conditioning at. For single-frame images or " - "videos with 1-8 frames, any frame_idx value is acceptable. For videos with 9+ " - "frames, frame_idx must be divisible by 8, otherwise it will be rounded down to " - "the nearest multiple of 8. Negative values are counted from the end of the video.", - }, - ), - "strength": ( - "FLOAT", - { - "default": 1.0, - "min": 0.0, - "max": 1.0, - "tooltip": "Strength of the conditioning. Higher values will make the conditioning more exact.", - }, - ), - "crf": ( - "INT", - { - "default": 29, - "min": 0, - "max": 51, - "step": 1, - "tooltip": "CRF value for the video. Higher values mean more motion, lower values mean higher quality.", - }, - ), - "blur_radius": ( - "INT", - { - "default": 0, - "min": 0, - "max": 7, - "step": 1, - "tooltip": "Blur kernel radius size. Higher values mean more motion, lower values mean higher quality.", - }, - ), - "interpolation": ( - [ - "lanczos", - "bislerp", - "nearest", - "bilinear", - "bicubic", - "area", - "nearest-exact", - ], - {"default": "lanczos"}, - ), - "crop": (["center", "disabled"], {"default": "disabled"}), - } - } - - RETURN_TYPES = ("CONDITIONING", "CONDITIONING", "LATENT") - RETURN_NAMES = ("positive", "negative", "latent") - - CATEGORY = "conditioning/video_models" - FUNCTION = "generate" - - DESCRIPTION = ( - "Adds a conditioning frame or a video at a specific frame index. " - "This node is used to add a keyframe or a video segment which should appear in the " - "generated video at a specified index. It resizes the image to the correct size and " - "applies preprocessing to it." - ) - - def generate( - self, - positive, - negative, - vae, - latent, - image, - frame_idx, - strength, - crf, - blur_radius, - interpolation, - crop, - ): - _, width_scale_factor, height_scale_factor = vae.downscale_index_formula - width, height = ( - latent["samples"].shape[4] * width_scale_factor, - latent["samples"].shape[3] * height_scale_factor, - ) - image = ( - comfy.utils.common_upscale( - image.movedim(-1, 1), width, height, interpolation, crop=crop - ) - .movedim(1, -1) - .clamp(0, 1) - ) - image = nodes_lt.LTXVPreprocess().execute(image, crf)[0] - image = blur_internal(image, blur_radius) - return nodes_lt.LTXVAddGuide().execute( - positive=positive, - negative=negative, - vae=vae, - latent=latent, - image=image, - frame_idx=frame_idx, - strength=strength, - ) - - @comfy_node(name="LTXVImgToVideoAdvanced") class LTXVImgToVideoAdvanced: @classmethod @@ -252,205 +132,3 @@ class LTXVImgToVideoAdvanced: batch_size=batch_size, strength=strength, ) - - -@comfy_node(name="LTXVAddGuideAdvancedAttention") -class LTXVAddGuideAdvancedAttention: - """Extended keyframe guide node with per-guide attention strength control. - - Same preprocessing as LTXVAddGuideAdvanced (CRF, blur, interpolation, crop), - plus attention_strength and attention_mask inputs to control how strongly - this guide's conditioning influences generation via self-attention. - """ - - @classmethod - def INPUT_TYPES(s): - return { - "required": { - "positive": ("CONDITIONING",), - "negative": ("CONDITIONING",), - "vae": ("VAE",), - "latent": ("LATENT",), - "image": ("IMAGE",), - "frame_idx": ( - "INT", - { - "default": 0, - "min": -9999, - "max": 9999, - "tooltip": ( - "Frame index to start the conditioning at. " - "Negative values are counted from the end of the video." - ), - }, - ), - "strength": ( - "FLOAT", - { - "default": 1.0, - "min": 0.0, - "max": 1.0, - "tooltip": "Strength of the conditioning. Higher values make it more exact.", - }, - ), - "crf": ( - "INT", - { - "default": 29, - "min": 0, - "max": 51, - "step": 1, - "tooltip": "CRF value. Higher = more motion, lower = higher quality.", - }, - ), - "blur_radius": ( - "INT", - { - "default": 0, - "min": 0, - "max": 7, - "step": 1, - "tooltip": "Blur kernel radius. Higher = more motion.", - }, - ), - "interpolation": ( - [ - "lanczos", - "bislerp", - "nearest", - "bilinear", - "bicubic", - "area", - "nearest-exact", - ], - {"default": "lanczos"}, - ), - "crop": (["center", "disabled"], {"default": "disabled"}), - "attention_strength": ( - "FLOAT", - { - "default": 1.0, - "min": 0.0, - "max": 1.0, - "step": 0.01, - "tooltip": ( - "Controls how strongly this guide influences generation via " - "self-attention. 1.0 = full conditioning, 0.0 = ignore." - ), - }, - ), - }, - "optional": { - "attention_mask": ( - "MASK", - { - "tooltip": ( - "Optional pixel-space spatial mask. Shape (F, H, W) or (H, W). " - "Values in [0, 1]. Controls per-region conditioning influence. " - "Multiplied by attention_strength." - ), - }, - ), - }, - } - - RETURN_TYPES = ("CONDITIONING", "CONDITIONING", "LATENT") - RETURN_NAMES = ("positive", "negative", "latent") - - CATEGORY = "conditioning/video_models" - FUNCTION = "generate" - - DESCRIPTION = ( - "Adds a conditioning frame/video at a specific frame index with per-guide " - "attention strength control. Same preprocessing as LTXVAddGuideAdvanced, " - "plus attention_strength and optional spatial attention_mask." - ) - - def generate( - self, - positive, - negative, - vae, - latent, - image, - frame_idx, - strength, - crf, - blur_radius, - interpolation, - crop, - attention_strength=1.0, - attention_mask=None, - ): - from .iclora_attention import append_guide_attention_entry, normalize_mask - - # Preprocessing: resize, CRF, blur (same as LTXVAddGuideAdvanced) - scale_factors = vae.downscale_index_formula - _, width_scale_factor, height_scale_factor = scale_factors - latent_image = latent["samples"] - noise_mask = nodes_lt.get_noise_mask(latent) - _, _, latent_length, latent_height, latent_width = latent_image.shape - - width = latent_width * width_scale_factor - height = latent_height * height_scale_factor - image = ( - comfy.utils.common_upscale( - image.movedim(-1, 1), width, height, interpolation, crop=crop - ) - .movedim(1, -1) - .clamp(0, 1) - ) - image = nodes_lt.LTXVPreprocess().execute(image, crf)[0] - image = blur_internal(image, blur_radius) - - # Encode - _, t = nodes_lt.LTXVAddGuide.encode( - vae, latent_width, latent_height, image, scale_factors - ) - - # Compute latent index - frame_idx, latent_idx = nodes_lt.LTXVAddGuide.get_latent_index( - positive, latent_length, len(image), frame_idx, scale_factors - ) - assert ( - latent_idx + t.shape[2] <= latent_length - ), "Conditioning frames exceed the length of the latent sequence." - - # Append keyframe - positive, negative, latent_image, noise_mask = ( - nodes_lt.LTXVAddGuide.append_keyframe( - positive, - negative, - frame_idx, - latent_image, - noise_mask, - t, - strength, - scale_factors, - ) - ) - - # Track with custom attention strength/mask - pre_filter_count = t.shape[2] * t.shape[3] * t.shape[4] - guide_latent_shape = list(t.shape[2:]) - norm_mask = normalize_mask(attention_mask) - positive = append_guide_attention_entry( - positive, - pre_filter_count, - guide_latent_shape, - attention_strength=attention_strength, - attention_mask=norm_mask, - ) - negative = append_guide_attention_entry( - negative, - pre_filter_count, - guide_latent_shape, - attention_strength=attention_strength, - attention_mask=norm_mask, - ) - - return ( - positive, - negative, - {"samples": latent_image, "noise_mask": noise_mask}, - ) diff --git a/latent_norm.py b/latent_norm.py index f41a408..5140823 100644 --- a/latent_norm.py +++ b/latent_norm.py @@ -1,8 +1,6 @@ import copy -from typing import Callable import torch -from comfy.model_patcher import ModelPatcher from .nodes_registry import comfy_node @@ -72,260 +70,3 @@ class LTXVAdainLatent: latents_copy["samples"] = torch.lerp(latents["samples"], t, factor) return (latents_copy,) - - -@comfy_node(name="LTXVStatNormLatent") -class LTXVStatNormLatent: - @classmethod - def INPUT_TYPES(s): - return { - "required": { - "latents": ("LATENT",), - "target_mean": ( - "FLOAT", - { - "default": 0.0, - "min": -10.0, - "max": 10.0, - "step": 0.01, - "round": 0.01, - }, - ), - "target_std": ( - "FLOAT", - { - "default": 1.0, - "min": 0.01, - "max": 10.0, - "step": 0.01, - "round": 0.01, - }, - ), - "percentile": ( - "FLOAT", - { - "default": 95.0, - "min": 50.0, - "max": 100.0, - "step": 0.1, - "round": 0.1, - "tooltip": "Percentile of distribution to use for statistics calculation", - }, - ), - "factor": ( - "FLOAT", - { - "default": 1.0, - "min": -10.0, - "max": 10.0, - "step": 0.01, - "round": 0.01, - }, - ), - "clip_outliers": ("BOOLEAN", {"default": False}), - }, - } - - RETURN_TYPES = ("LATENT",) - FUNCTION = "statistical_normalize" - - CATEGORY = "Lightricks/latents" - - def statistical_normalize( - self, latents, target_mean, target_std, percentile, factor, clip_outliers - ): - latents_copy = copy.deepcopy(latents) - t = latents_copy["samples"] # B x C x F x H x W - - # For 95% of distribution, we want to exclude 2.5% from each tail - lower_percentile = (100 - percentile) / 2 - upper_percentile = 100 - lower_percentile - - for i in range(t.size(0)): # batch - for c in range(t.size(1)): # channel - channel_data = t[i, c] - original_shape = channel_data.shape - channel_flat = channel_data.flatten() - - # Calculate percentiles - lower_bound = torch.quantile(channel_flat, lower_percentile / 100) - upper_bound = torch.quantile(channel_flat, upper_percentile / 100) - - # Create mask for values within the percentile range - mask = (channel_flat >= lower_bound) & (channel_flat <= upper_bound) - - # Calculate mean and std only on the masked values - if mask.sum() > 0: - filtered_data = channel_flat[mask] - current_mean = filtered_data.mean() - current_std = filtered_data.std() - - # Avoid division by zero - if current_std > 1e-8: - # Normalize all values - normalized_flat = ( - (channel_flat - current_mean) / current_std - ) * target_std + target_mean - - if clip_outliers: - # Calculate the normalized bounds - normalized_lower = ( - (lower_bound - current_mean) / current_std - ) * target_std + target_mean - normalized_upper = ( - (upper_bound - current_mean) / current_std - ) * target_std + target_mean - - # Clip outliers to the normalized bounds - normalized_flat = torch.where( - channel_flat < lower_bound, - normalized_lower, - normalized_flat, - ) - normalized_flat = torch.where( - channel_flat > upper_bound, - normalized_upper, - normalized_flat, - ) - - # Reshape back to original shape - t[i, c] = normalized_flat.reshape(original_shape) - else: - # If std is too small, just shift by mean - t[i, c] = channel_data - current_mean + target_mean - - latents_copy["samples"] = torch.lerp(latents["samples"], t, factor) - return (latents_copy,) - - -class PerStepNormPatcher: - """ - Base class for per-step normalization nodes. - """ - - @classmethod - def required(s): - return { - "model": ("MODEL",), - "factors": ( - "STRING", - { - "default": "0.9, 0.75, 0.0", - "tooltip": "Comma-separated list of factors, each factor will be used for one step.", - }, - ), - } - - @classmethod - def optional(s): - return {} - - @staticmethod - def patch_smooth_norm( - model: ModelPatcher, factors: str, normalize_fn: Callable - ) -> ModelPatcher: - model = model.clone() - factors = [float(x) for x in factors.split(",")] - step = 0 - - def norm_fn(args): - nonlocal step - latent = args["denoised"] - factor = factors[min(step, len(factors) - 1)] - step += 1 - out_latent = normalize_fn(latent={"samples": latent}, factor=factor) - return out_latent[0]["samples"] - - model.set_model_sampler_post_cfg_function(norm_fn) - return (model,) - - @classmethod - def IS_CHANGED(s, *args, **kwargs): - return float("NaN") - - -@comfy_node(name="LTXVPerStepAdainPatcher") -class LTXVPerStepAdainPatcher(PerStepNormPatcher): - @classmethod - def INPUT_TYPES(s): - return { - "required": super().required() - | { - "reference": ("LATENT",), - }, - "optional": super().optional() - | { - "per_frame": ("BOOLEAN", {"default": False}), - }, - } - - RETURN_TYPES = ("MODEL",) - FUNCTION = "patch_model" - - CATEGORY = "Lightricks/latents" - - def patch_model(self, model, factors, reference, per_frame=False): - def cfg_adain(latent, factor): - return LTXVAdainLatent().batch_normalize( - latent, reference, factor, per_frame - ) - - return self.patch_smooth_norm(model, factors, cfg_adain) - - -@comfy_node(name="LTXVPerStepStatNormPatcher") -class LTXVPerStepStatNormPatcher(PerStepNormPatcher): - @classmethod - def INPUT_TYPES(s): - return { - "required": super().required() - | { - "target_mean": ( - "FLOAT", - { - "default": 0.0, - "min": -10.0, - "max": 10.0, - "step": 0.01, - "round": 0.01, - }, - ), - "target_std": ( - "FLOAT", - { - "default": 1.0, - "min": 0.01, - "max": 10.0, - "step": 0.01, - "round": 0.01, - }, - ), - "percentile": ( - "FLOAT", - { - "default": 95.0, - "min": 50.0, - "max": 100.0, - "step": 0.1, - "round": 0.1, - "tooltip": "Percentile of distribution to use for statistics calculation", - }, - ), - "clip_outliers": ("BOOLEAN", {"default": False}), - }, - } - - RETURN_TYPES = ("MODEL",) - FUNCTION = "patch_model" - - CATEGORY = "Lightricks/latents" - - def patch_model( - self, model, factors, target_mean, target_std, percentile, clip_outliers - ): - def cfg_stat_norm(latent, factor): - return LTXVStatNormLatent().statistical_normalize( - latent, target_mean, target_std, percentile, factor, clip_outliers - ) - - return self.patch_smooth_norm(model, factors, cfg_stat_norm) diff --git a/latents.py b/latents.py index 5c92c42..bd135ab 100644 --- a/latents.py +++ b/latents.py @@ -1,5 +1,3 @@ -from typing import Optional - import comfy.utils import comfy_extras.nodes_lt as nodes_lt import numpy as np @@ -91,121 +89,6 @@ class LTXVSelectLatents: raise -@comfy_node(name="LTXVAddLatents") -class LTXVAddLatents: - """ - Concatenates two video latents along the frames dimension. - - Features: - - Validates dimension compatibility - - Handles device placement - - Preserves noise masks with proper handling - - Supports batch processing - """ - - @classmethod - def INPUT_TYPES(s): - return { - "required": { - "latents1": ("LATENT",), - "latents2": ("LATENT",), - } - } - - RETURN_TYPES = ("LATENT",) - FUNCTION = "add_latents" - CATEGORY = "latent/video" - DESCRIPTION = ( - "Concatenates two video latents along the frames dimension. " - "latents1 and latents2 must have the same dimensions except for the frames dimension." - ) - - def add_latents( - self, latents1: torch.Tensor, latents2: torch.Tensor - ) -> torch.Tensor: - """ - Concatenates two video latents along the frames dimension. - - Args: - latents1 (dict): First video latent dictionary - latents2 (dict): Second video latent dictionary - - Returns: - tuple: Contains concatenated latent dictionary - - Raises: - ValueError: If latent dimensions don't match - RuntimeError: If tensor operations fail - """ - try: - s = latents1.copy() - video_latent1 = latents1["samples"] - video_latent2 = latents2["samples"] - - # Ensure tensors are on the same device - target_device = video_latent1.device - video_latent2 = video_latent2.to(target_device) - - # Validate dimensions - self._validate_dimensions(video_latent1, video_latent2) - - # Concatenate along frames dimension - s["samples"] = torch.cat([video_latent1, video_latent2], dim=2) - - # Handle noise masks - s["noise_mask"] = self._merge_noise_masks( - latents1, latents2, video_latent1.shape[2], video_latent2.shape[2] - ) - - return (s,) - - except Exception as e: - print(f"[LTXVAddLatents] Error: {str(e)}") - raise - - def _validate_dimensions(self, latent1: torch.Tensor, latent2: torch.Tensor): - """Validates that latent dimensions match except for frames.""" - # video latents - if latent1.ndim == 5 and latent2.ndim == 5: - b1, c1, f1, h1, w1 = latent1.shape - b2, c2, f2, h2, w2 = latent2.shape - - if not (b1 == b2 and c1 == c2 and h1 == h2 and w1 == w2): - raise ValueError( - f"Latent dimensions must match (except frames dimension).\n" - f"Got shapes {latent1.shape} and {latent2.shape}" - ) - # audio latents - elif latent1.ndim == 4 and latent2.ndim == 4: - b1, c1, f1, s1 = latent1.shape - b2, c2, f2, s2 = latent2.shape - - if not (b1 == b2 and c1 == c2 and s1 == s2): - raise ValueError( - f"Latent dimensions must match (except frames dimension).\n" - f"Got shapes {latent1.shape} and {latent2.shape}" - ) - else: - raise ValueError( - f"Latent dimensions must be 4 (audio) or 5 (video) for both inputs.\n" - f"Got shapes {latent1.shape} and {latent2.shape}" - ) - - def _merge_noise_masks( - self, latents1: torch.Tensor, latents2: torch.Tensor, frames1: int, frames2: int - ) -> Optional[torch.Tensor]: - """Merges noise masks from both latents with proper handling.""" - if "noise_mask" in latents1 and "noise_mask" in latents2: - return torch.cat([latents1["noise_mask"], latents2["noise_mask"]], dim=2) - elif "noise_mask" in latents1 and latents1["noise_mask"] is not None: - zeros = torch.zeros_like(latents1["noise_mask"][:, :, :frames2, :, :]) - return torch.cat([latents1["noise_mask"], zeros], dim=2) - elif "noise_mask" in latents2 and latents2["noise_mask"] is not None: - zeros = torch.zeros_like(latents2["noise_mask"][:, :, :frames1, :, :]) - return torch.cat([zeros, latents2["noise_mask"]], dim=2) - return None - - @comfy_node(name="LTXVSetVideoLatentNoiseMasks") class LTXVSetVideoLatentNoiseMasks: """ diff --git a/masks.py b/masks.py deleted file mode 100644 index 7660695..0000000 --- a/masks.py +++ /dev/null @@ -1,212 +0,0 @@ -from typing import Any - -import torch -from comfy.model_management import is_device_cpu -from comfy_extras.nodes_mask import GrowMask - -from .nodes_registry import comfy_node - - -@comfy_node(name="LTXVPreprocessMasks") -class LTXVPreprocessMasks: - """ - Preprocesses masks for use with the LTXVideo model's latent masking. - - This node handles temporal mask processing by: - 1. Validating mask dimensions against VAE downscaling factors - 2. Optionally inverting masks - 3. Handling the first frame mask separately (can be ignored) - 4. Combining temporal masks using max pooling - 5. Growing/shrinking masks with morphological operations - 6. Clamping mask values to ensure proper opacity - - The output is a set of masks ready for latent-space masking operations. - """ - - @classmethod - def INPUT_TYPES(cls: "LTXVPreprocessMasks") -> dict[str, Any]: # noqa: N802 - return { - "required": { - "masks": ("MASK",), - "vae": ("VAE",), - "invert_input_masks": ( - "BOOLEAN", - { - "default": False, - "tooltip": "Invert the input masks before processing." - "Useful for masking vs unmasking operations.", - }, - ), - "ignore_first_mask": ( - "BOOLEAN", - { - "default": True, - "tooltip": "Zero out the first mask, typically used when" - "it corresponds to the conditioning frame.", - }, - ), - "pooling_method": ( - ["max", "mean", "min"], - { - "default": "max", - "tooltip": "Method to combine temporal masks. Max preserves strongest values, " - "mean averages them, min takes weakest values.", - }, - ), - "grow_mask": ( - "INT", - { - "default": 0, - "min": -16384, - "max": 16384, - "step": 1, - "tooltip": "Pixels to grow (positive) or shrink (negative) the mask." - "Uses morphological operations.", - }, - ), - "tapered_corners": ( - "BOOLEAN", - { - "default": True, - "tooltip": "Use tapered corners in morphological operations for smoother mask edges.", - }, - ), - "clamp_min": ( - "FLOAT", - { - "default": 0.5, - "min": 0.0, - "max": 1.0, - "step": 0.01, - "tooltip": "Minimum value to clamp masks to, ensuring minimum opacity.", - }, - ), - "clamp_max": ( - "FLOAT", - { - "default": 1.0, - "min": 0.0, - "max": 1.0, - "step": 0.01, - "tooltip": "Maximum value to clamp masks to.", - }, - ), - }, - } - - RETURN_TYPES = ("MASK",) - FUNCTION = "preprocess_masks" - CATEGORY = "Lightricks/mask_operations" - DESCRIPTION = ( - "Preprocess masks to be used for masking latents in the LTXVideo model." - ) - - def preprocess_masks( - self, - masks: torch.Tensor, - vae, # noqa: ANN001 - pooling_method: str, - grow_mask: int, - tapered_corners: bool, - clamp_min: float, - clamp_max: float, - ignore_first_mask: bool, - invert_input_masks: bool, - ) -> tuple[torch.Tensor]: - """ - Preprocess masks for temporal latent masking. - - Args: - masks: Input masks tensor of shape (batch_size, H, W) where batch_size = 1 + (num_frames - 1) - The first mask is for the conditioning frame, remaining masks are for generated frames - vae: VAE model object containing downscale_index_formula attribute - pooling_method: Method to combine temporal masks ('max', 'mean', 'min') - grow_mask: Pixels to grow (positive) or shrink (negative) the mask - tapered_corners: Whether to use tapered corners in morphological operations - clamp_min: Minimum value to clamp masks to (ensures minimum opacity) - clamp_max: Maximum value to clamp masks to - ignore_first_mask: Whether to zero out the first mask (often used for conditioning) - invert_input_masks: Whether to invert all input masks (1 - mask) - - Returns: - Tuple containing the processed masks tensor - - Raises: - ValueError: If mask dimensions are not compatible with VAE downscaling factors - """ - - if masks.ndim != 3: - raise ValueError("Masks must be of shape (batch_size, H, W).") - - batch_size, H, W = masks.shape - - # Get VAE downscaling factors for temporal and spatial dimensions - time_scale_factor, width_scale_factor, height_scale_factor = ( - vae.downscale_index_formula - ) - - # Validate that mask dimensions are compatible with VAE downscaling - # The batch size minus 1 (for the first frame) must be divisible by time_scale_factor - if (batch_size - 1) % time_scale_factor != 0: - raise ValueError( - f"Masks batch size must have a multiple of {time_scale_factor} masks + 1." - ) - - if H % height_scale_factor != 0: - raise ValueError( - f"Masks height must have a multiple of {height_scale_factor}." - ) - - if W % width_scale_factor != 0: - raise ValueError( - f"Masks width must have a multiple of {width_scale_factor}." - ) - - # Optionally invert all masks (useful for masking vs unmasking operations) - if invert_input_masks: - masks = 1.0 - masks - - # Handle first mask separately - often used as conditioning frame - if ignore_first_mask: - first_mask = masks[0:1, :, :] * 0 # Zero out the first mask - else: - first_mask = masks[0:1, :, :] - - # Process remaining masks by grouping them according to time_scale_factor - # and taking the maximum value across each temporal group - remaining = masks[1:].view(-1, time_scale_factor, H, W) - - # Apply selected pooling method - pooling_methods = { - "max": lambda x: x.max(dim=1)[0], - "mean": lambda x: x.mean(dim=1), - "min": lambda x: x.min(dim=1)[0], - } - - combined = pooling_methods[pooling_method](remaining) - - # Apply morphological operations to grow or shrink masks - if grow_mask != 0: - grow_mask_node = GrowMask() - - # GrowMask node is not supported on GPU, so we need to move the combined tensor to CPU - # if it is not already on CPU - input_device = combined.device - if not is_device_cpu(input_device): - combined = combined.cpu() - - (combined,) = grow_mask_node.expand_mask( - mask=combined, expand=grow_mask, tapered_corners=tapered_corners - ) - - # Move the combined tensor back to the original device - if not is_device_cpu(input_device): - combined = combined.to(input_device) - - # Combine first mask with processed remaining masks and clamp values - # Clamping ensures masks have proper opacity values - processed_masks = torch.cat( - [first_mask, torch.clamp(combined, clamp_min, clamp_max)], dim=0 - ) - - return (processed_masks,) diff --git a/prompt_enhancer_nodes.py b/prompt_enhancer_nodes.py deleted file mode 100644 index 6dd1e4c..0000000 --- a/prompt_enhancer_nodes.py +++ /dev/null @@ -1,208 +0,0 @@ -import os -import shutil - -import comfy.model_management -import comfy.model_patcher -import folder_paths -import torch -from transformers import AutoModelForCausalLM, AutoProcessor, AutoTokenizer - -from .nodes_registry import comfy_node -from .prompt_enhancer_utils import generate_cinematic_prompt - -LLM_NAME = ["unsloth/Llama-3.2-3B-Instruct"] - -IMAGE_CAPTIONER = ["MiaoshouAI/Florence-2-large-PromptGen-v2.0"] - -MODELS_PATH_KEY = "LLM" - - -class PromptEnhancer(torch.nn.Module): - def __init__( - self, - image_caption_processor: AutoProcessor, - image_caption_model: AutoModelForCausalLM, - llm_model: AutoModelForCausalLM, - llm_tokenizer: AutoTokenizer, - ): - super().__init__() - self.image_caption_processor = image_caption_processor - self.image_caption_model = image_caption_model - self.llm_model = llm_model - self.llm_tokenizer = llm_tokenizer - self.device = image_caption_model.device - # model parameters and buffer sizes plus some extra 1GB. - self.model_size = ( - self.get_model_size(self.image_caption_model) - + self.get_model_size(self.llm_model) - + 1073741824 - ) - - def forward(self, prompt, image_conditioning, max_resulting_tokens): - enhanced_prompt = generate_cinematic_prompt( - self.image_caption_model, - self.image_caption_processor, - self.llm_model, - self.llm_tokenizer, - prompt, - image_conditioning, - max_new_tokens=max_resulting_tokens, - ) - - return enhanced_prompt - - @staticmethod - def get_model_size(model): - total_size = sum(p.numel() * p.element_size() for p in model.parameters()) - total_size += sum(b.numel() * b.element_size() for b in model.buffers()) - return total_size - - def memory_required(self, input_shape): - return self.model_size - - -@comfy_node(name="LTXVPromptEnhancerLoader") -class LTXVPromptEnhancerLoader: - @classmethod - def INPUT_TYPES(s): - return { - "required": { - "llm_name": ( - "STRING", - { - "default": LLM_NAME, - "tooltip": "The hugging face name of the llm model to load.", - }, - ), - "image_captioner_name": ( - "STRING", - { - "default": IMAGE_CAPTIONER, - "tooltip": "The hugging face name of the image captioning model to load.", - }, - ), - } - } - - RETURN_TYPES = ("LTXV_PROMPT_ENHANCER",) - RETURN_NAMES = ("prompt_enhancer",) - FUNCTION = "load" - CATEGORY = "lightricks/LTXV" - TITLE = "LTXV Prompt Enhancer (Down)Loader" - OUTPUT_NODE = False - DESCRIPTION = "Downloads and initializes LLM and image captioning models from Hugging Face to enhance text prompts for image generation." - - def model_path_download_if_needed(self, model_name): - model_directory = os.path.join(folder_paths.models_dir, MODELS_PATH_KEY) - os.makedirs(model_directory, exist_ok=True) - - model_name_ = model_name.rsplit("/", 1)[-1] - model_path = os.path.join(model_directory, model_name_) - - if not os.path.exists(model_path): - from huggingface_hub import snapshot_download - - try: - snapshot_download( - repo_id=model_name, - local_dir=model_path, - local_dir_use_symlinks=False, - ) - except Exception: - shutil.rmtree(model_path, ignore_errors=True) - raise - return model_path - - def down_load_llm_model(self, llm_name, load_device): - model_path = self.model_path_download_if_needed(llm_name) - llm_model = AutoModelForCausalLM.from_pretrained( - model_path, - torch_dtype=torch.bfloat16, - ) - - llm_tokenizer = AutoTokenizer.from_pretrained( - model_path, - ) - - return llm_model, llm_tokenizer - - def down_load_image_captioner(self, image_captioner, load_device): - model_path = self.model_path_download_if_needed(image_captioner) - image_caption_model = AutoModelForCausalLM.from_pretrained( - model_path, trust_remote_code=True - ) - - image_caption_processor = AutoProcessor.from_pretrained( - model_path, trust_remote_code=True - ) - - return image_caption_model, image_caption_processor - - def load(self, llm_name, image_captioner_name): - load_device = comfy.model_management.get_torch_device() - offload_device = comfy.model_management.vae_offload_device() - llm_model, llm_tokenizer = self.down_load_llm_model(llm_name, load_device) - image_caption_model, image_caption_processor = self.down_load_image_captioner( - image_captioner_name, load_device - ) - - enhancer = PromptEnhancer( - image_caption_processor, image_caption_model, llm_model, llm_tokenizer - ) - patcher = comfy.model_patcher.ModelPatcher( - enhancer, - load_device, - offload_device, - ) - return (patcher,) - - -@comfy_node(name="LTXVPromptEnhancer") -class LTXVPromptEnhancer: - @classmethod - def INPUT_TYPES(s): - return { - "required": { - "prompt": ("STRING",), - "prompt_enhancer": ("LTXV_PROMPT_ENHANCER",), - "max_resulting_tokens": ( - "INT", - {"default": 256, "min": 32, "max": 512}, - ), - }, - "optional": { - "image_prompt": ("IMAGE",), - }, - } - - RETURN_TYPES = ("STRING",) - RETURN_NAMES = ("str",) - FUNCTION = "enhance" - CATEGORY = "lightricks/LTXV" - TITLE = "LTXV Prompt Enhancer" - OUTPUT_NODE = False - DESCRIPTION = ( - "Enhances text prompts for image generation using LLMs. " - "Optionally incorporates reference images to create more contextually relevant descriptions." - ) - - def enhance( - self, - prompt, - prompt_enhancer: comfy.model_patcher.ModelPatcher, - image_prompt: torch.Tensor = None, - max_resulting_tokens=256, - ): - comfy.model_management.free_memory( - prompt_enhancer.memory_required([]), - comfy.model_management.get_torch_device(), - ) - comfy.model_management.load_model_gpu(prompt_enhancer) - model = prompt_enhancer.model - image_conditioning = None - if image_prompt is not None: - permuted_image = image_prompt.permute(3, 0, 1, 2)[None, :] - image_conditioning = [(permuted_image, 0, 1.0)] - - enhanced_prompt = model(prompt, image_conditioning, max_resulting_tokens) - return (enhanced_prompt[0],) diff --git a/prompt_enhancer_utils.py b/prompt_enhancer_utils.py deleted file mode 100644 index e05ecfa..0000000 --- a/prompt_enhancer_utils.py +++ /dev/null @@ -1,258 +0,0 @@ -import logging -import random -from typing import List, Optional, Tuple, Union - -import torch -from PIL import Image - -logger = logging.getLogger(__name__) # pylint: disable=invalid-name - -T2V_CINEMATIC_PROMPT = """You are an expert cinematic director with many award winning movies, When writing prompts based on the user input, focus on detailed, chronological descriptions of actions and scenes. -Include specific movements, appearances, camera angles, and environmental details - all in a single flowing paragraph. -Start directly with the action, and keep descriptions literal and precise. -Think like a cinematographer describing a shot list. -Do not change the user input intent, just enhance it. -Keep within 150 words. -For best results, build your prompts using this structure: -Start with main action in a single sentence -Add specific details about movements and gestures -Describe character/object appearances precisely -Include background and environment details -Specify camera angles and movements -Describe lighting and colors -Note any changes or sudden events -Do not exceed the 150 word limit! -Output the enhanced prompt only. - -Examples: -user prompt: A man drives a toyota car. -enhanced prompt: A person is driving a car on a two-lane road, holding the steering wheel with both hands. The person's hands are light-skinned and they are wearing a black long-sleeved shirt. The steering wheel has a Toyota logo in the center and black leather around it. The car's dashboard is visible, showing a speedometer, tachometer, and navigation screen. The road ahead is straight and there are trees and fields visible on either side. The camera is positioned inside the car, providing a view from the driver's perspective. The lighting is natural and overcast, with a slightly cool tone. - -user prompt: A young woman is sitting on a chair. -enhanced prompt: A young woman with dark, curly hair and pale skin sits on a chair; she wears a dark, intricately patterned dress with a high collar and long, dark gloves that extend past her elbows; the scene is dimly lit, with light streaming in from a large window behind the characters. - -user prompt: Aerial view of a city skyline. -enhanced prompt: The camera pans across a cityscape of tall buildings with a circular building in the center. The camera moves from left to right, showing the tops of the buildings and the circular building in the center. The buildings are various shades of gray and white, and the circular building has a green roof. The camera angle is high, looking down at the city. The lighting is bright, with the sun shining from the upper left, casting shadows from the buildings. -""" - -I2V_CINEMATIC_PROMPT = """You are an expert cinematic director with many award winning movies, When writing prompts based on the user input, focus on detailed, chronological descriptions of actions and scenes. -Include specific movements, appearances, camera angles, and environmental details - all in a single flowing paragraph. -Start directly with the action, and keep descriptions literal and precise. -Think like a cinematographer describing a shot list. -Keep within 150 words. -For best results, build your prompts using this structure: -Describe the image first and then add the user input. Image description should be in first priority! Align to the image caption if it contradicts the user text input. -Start with main action in a single sentence -Add specific details about movements and gestures -Describe character/object appearances precisely -Include background and environment details -Specify camera angles and movements -Describe lighting and colors -Note any changes or sudden events -Align to the image caption if it contradicts the user text input. -Do not exceed the 150 word limit! -Output the enhanced prompt only. -""" - - -def tensor_to_pil(tensor): - # Ensure tensor is in range [-1, 1] - assert tensor.min() >= -1 and tensor.max() <= 1 - - # Convert from [-1, 1] to [0, 1] - tensor = (tensor + 1) / 2 - - # Rearrange from [C, H, W] to [H, W, C] - tensor = tensor.permute(1, 2, 0) - - # Convert to numpy array and then to uint8 range [0, 255] - numpy_image = (tensor.cpu().numpy() * 255).astype("uint8") - - # Convert to PIL Image - return Image.fromarray(numpy_image) - - -def generate_cinematic_prompt( - image_caption_model, - image_caption_processor, - prompt_enhancer_model, - prompt_enhancer_tokenizer, - prompt: Union[str, List[str]], - conditioning_items: Optional[List[Tuple[torch.Tensor, int, float]]] = None, - max_new_tokens: int = 256, -) -> List[str]: - prompts = [prompt] if isinstance(prompt, str) else prompt - - if conditioning_items is None: - prompts = _generate_t2v_prompt( - prompt_enhancer_model, - prompt_enhancer_tokenizer, - prompts, - max_new_tokens, - T2V_CINEMATIC_PROMPT, - ) - else: - # if len(conditioning_items) > 1 or conditioning_items[0][1] != 0: - # logger.warning( - # "prompt enhancement does only support first frame of conditioning items, returning original prompts" - # ) - # return prompts - - first_frame_conditioning_item = conditioning_items[0] - first_frames = _get_first_frames_from_conditioning_item( - first_frame_conditioning_item - ) - - assert len(first_frames) == len( - prompts - ), "Number of conditioning frames must match number of prompts" - - prompts = _generate_i2v_prompt( - image_caption_model, - image_caption_processor, - prompt_enhancer_model, - prompt_enhancer_tokenizer, - prompts, - first_frames, - max_new_tokens, - I2V_CINEMATIC_PROMPT, - ) - - return prompts - - -def _get_first_frames_from_conditioning_item( - conditioning_item: Tuple[torch.Tensor, int, float] -) -> List[Image.Image]: - frames_tensor = conditioning_item[0] - # tensor shape: [batch_size, 3, num_frames, height, width], take first frame from each sample - return [ - tensor_to_pil(frames_tensor[i, :, 0, :, :]) - for i in range(frames_tensor.shape[0]) - ] - - -def _generate_t2v_prompt( - prompt_enhancer_model, - prompt_enhancer_tokenizer, - prompts: List[str], - max_new_tokens: int, - system_prompt: str, -) -> List[str]: - messages = [ - [ - {"role": "system", "content": system_prompt}, - {"role": "user", "content": f"user_prompt: {p}"}, - ] - for p in prompts - ] - - texts = [ - prompt_enhancer_tokenizer.apply_chat_template( - m, tokenize=False, add_generation_prompt=True - ) - for m in messages - ] - model_inputs = prompt_enhancer_tokenizer(texts, return_tensors="pt").to( - prompt_enhancer_model.device - ) - - return _generate_and_decode_prompts( - prompt_enhancer_model, prompt_enhancer_tokenizer, model_inputs, max_new_tokens - ) - - -def _generate_i2v_prompt( - image_caption_model, - image_caption_processor, - prompt_enhancer_model, - prompt_enhancer_tokenizer, - prompts: List[str], - first_frames: List[Image.Image], - max_new_tokens: int, - system_prompt: str, -) -> List[str]: - image_captions = _generate_image_captions( - image_caption_model, image_caption_processor, first_frames - ) - - messages = [ - [ - {"role": "system", "content": system_prompt}, - {"role": "user", "content": f"user_prompt: {p}\nimage_caption: {c}"}, - ] - for p, c in zip(prompts, image_captions) - ] - - texts = [ - prompt_enhancer_tokenizer.apply_chat_template( - m, tokenize=False, add_generation_prompt=True - ) - for m in messages - ] - model_inputs = prompt_enhancer_tokenizer(texts, return_tensors="pt").to( - prompt_enhancer_model.device - ) - - return _generate_and_decode_prompts( - prompt_enhancer_model, prompt_enhancer_tokenizer, model_inputs, max_new_tokens - ) - - -def _generate_image_captions( - image_caption_model, - image_caption_processor, - images: List[Image.Image], - system_prompt: str = "", -) -> List[str]: - image_caption_prompts = [system_prompt] * len(images) - inputs = image_caption_processor( - image_caption_prompts, images, return_tensors="pt" - ).to(image_caption_model.device) - - with torch.inference_mode(): - generated_ids = image_caption_model.generate( - input_ids=inputs["input_ids"], - pixel_values=inputs["pixel_values"], - max_new_tokens=1024, - do_sample=False, - num_beams=3, - ) - - return image_caption_processor.batch_decode(generated_ids, skip_special_tokens=True) - - -def _get_random_scene_type(): - """ - Randomly select a scene type to add to the prompt. - """ - types = [ - "The scene is captured in real-life footage.", - "The scene is computer-generated imagery.", - "The scene appears to be from a movie.", - "The scene appears to be from a TV show.", - "The scene is captured in a studio.", - ] - return random.choice(types) - - -def _generate_and_decode_prompts( - prompt_enhancer_model, prompt_enhancer_tokenizer, model_inputs, max_new_tokens: int -) -> List[str]: - with torch.inference_mode(): - outputs = prompt_enhancer_model.generate( - **model_inputs, max_new_tokens=max_new_tokens - ) - generated_ids = [ - output_ids[len(input_ids) :] - for input_ids, output_ids in zip(model_inputs.input_ids, outputs) - ] - decoded_prompts = prompt_enhancer_tokenizer.batch_decode( - generated_ids, skip_special_tokens=True - ) - - decoded_prompts = [p + f" {_get_random_scene_type()}." for p in decoded_prompts] - - print(decoded_prompts) - - return decoded_prompts diff --git a/requirements.txt b/requirements.txt index 7607a86..e69fe3b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -7,4 +7,4 @@ kornia ninja~=1.11.1.4 # Required for HDR EXR read/write (same as ltx-pipelines); no OpenCV EXR fallback. openimageio -transformers[timm]>=4.50.0 +transformers>=4.50.0 diff --git a/stg.py b/stg.py index 9e54821..da51b0d 100644 --- a/stg.py +++ b/stg.py @@ -33,16 +33,6 @@ def stg( return noise_pred -class MomentumBuffer: - def __init__(self, momentum: float): - self.momentum = momentum - self.running_average = 0 - - def update(self, update_value: torch.Tensor): - new_average = self.momentum * self.running_average - self.running_average = update_value + new_average - - def project(v0: torch.Tensor, v1: torch.Tensor): dtype = v0.dtype v0, v1 = v0.double(), v1.double() @@ -792,153 +782,3 @@ class STGAdvancedPresetsNode: def get_preset(self, preset=None): return (preset,) - - -class APGGuider(comfy.samplers.CFGGuider): - def __init__( - self, - model: ModelPatcher, - cfg_scale, - eta, - norm_threshold, - momentum_coefficient: float = -0.9, - ): - self.model = model.clone() - super().__init__(self.model) - self.momentum_coefficient = momentum_coefficient - self.momentum_buffer = MomentumBuffer(self.momentum_coefficient) - self.eta = eta - self.norm_threshold = norm_threshold - self.cfg_scale = cfg_scale - self.previous_timestep = None - - def set_conds(self, positive, negative): - self.inner_set_conds({"positive": positive, "negative": negative}) - - def predict_noise( - self, - x: torch.Tensor, - timestep: torch.Tensor, - model_options: dict = {}, - seed=None, - ): - # CFG zero init - skipping steps with timestep bigger than given threshold. - - # in CFGGuider.predict_noise, we call sampling_function(), which uses cfg_function() to compute pos & neg - # but we'd rather do a single batch of sampling pos, neg, and perturbed, so we call calc_cond_batch([perturbed,pos,neg]) directly - positive_cond = self.conds.get("positive", None) - negative_cond = self.conds.get("negative", None) - - noise_pred_pos = comfy.samplers.calc_cond_batch( - self.inner_model, - [positive_cond], - x, - timestep, - model_options, - )[0] - - if ( - self.previous_timestep is not None - and timestep.item() > self.previous_timestep - ): - print("Resetting momentum buffer") - self.momentum_buffer = MomentumBuffer(self.momentum_coefficient) - - noise_pred_neg = 0 - if not math.isclose(self.cfg_scale, 1.0): - noise_pred_neg = comfy.samplers.calc_cond_batch( - self.inner_model, - [negative_cond], - x, - timestep, - model_options, - )[0] - - apg_result = apg( - noise_pred_pos, - noise_pred_neg, - self.cfg_scale, - self.eta, - self.norm_threshold, - ) - - # normally this would be done in cfg_function, but we skipped - # that for efficiency: we can compute the noise predictions in - # a single call to calc_cond_batch() (rather than two) - # so we replicate the hook here - for fn in model_options.get("sampler_post_cfg_function", []): - args = { - "denoised": apg_result, - "cond": positive_cond, - "uncond": negative_cond, - "model": self.inner_model, - "uncond_denoised": noise_pred_neg, - "cond_denoised": noise_pred_pos, - "sigma": timestep, - "model_options": model_options, - "input": x, - } - apg_result = fn(args) - - self.previous_timestep = timestep.item() - return apg_result - - -@comfy_node(name="APGGuider") -class APGGuiderNode: - @classmethod - def INPUT_TYPES(s): - return { - "required": { - "model": ("MODEL",), - "positive": ("CONDITIONING",), - "negative": ("CONDITIONING",), - "cfg_scale": ( - "FLOAT", - {"default": 1.0, "min": 0.0, "max": 100.0, "step": 0.01}, - ), - "eta": ( - "FLOAT", - {"default": 1.0, "min": 0.0, "max": 100.0, "step": 0.01}, - ), - "norm_threshold": ( - "FLOAT", - {"default": 0.0, "min": 0.0, "max": 100.0, "step": 0.01}, - ), - "momentum_coefficient": ( - "FLOAT", - {"default": -0.9, "min": -3.0, "max": 3.0, "step": 0.01}, - ), - }, - } - - RETURN_TYPES = ("GUIDER",) - - FUNCTION = "get_guider" - CATEGORY = "lightricks/LTXV" - - DESCRIPTION = """ - The APG Guider implements Adaptive Projected Guidance (APG). - Reference: https://arxiv.org/abs/2410.02416. - """ - - def get_guider( - self, - model, - positive, - negative, - cfg_scale, - eta, - norm_threshold, - momentum_coefficient, - ): - guider = APGGuider( - model, - cfg_scale, - eta, - norm_threshold, - momentum_coefficient, - ) - guider.set_conds(positive, negative) - guider.raw_conds = (positive, negative) - return (guider,) diff --git a/tricks/__init__.py b/tricks/__init__.py deleted file mode 100644 index 75ebaa4..0000000 --- a/tricks/__init__.py +++ /dev/null @@ -1,54 +0,0 @@ -from .nodes.attn_bank_nodes import ( - LTXAttentionBankNode, - LTXAttentioOverrideNode, - LTXPrepareAttnInjectionsNode, -) -from .nodes.attn_override_node import LTXAttnOverrideNode -from .nodes.latent_guide_node import AddLatentGuideNode -from .nodes.ltx_feta_enhance_node import LTXFetaEnhanceNode -from .nodes.ltx_flowedit_nodes import LTXFlowEditCFGGuiderNode, LTXFlowEditSamplerNode -from .nodes.ltx_inverse_model_pred_nodes import ( - LTXForwardModelSamplingPredNode, - LTXReverseModelSamplingPredNode, -) -from .nodes.ltx_pag_node import LTXPerturbedAttentionNode -from .nodes.modify_ltx_model_node import ModifyLTXModelNode -from .nodes.rectified_sampler_nodes import ( - LTXRFForwardODESamplerNode, - LTXRFReverseODESamplerNode, -) - -NODE_CLASS_MAPPINGS = { - "ModifyLTXModel": ModifyLTXModelNode, - "AddLatentGuide": AddLatentGuideNode, - "LTXForwardModelSamplingPred": LTXForwardModelSamplingPredNode, - "LTXReverseModelSamplingPred": LTXReverseModelSamplingPredNode, - "LTXRFForwardODESampler": LTXRFForwardODESamplerNode, - "LTXRFReverseODESampler": LTXRFReverseODESamplerNode, - "LTXAttentionBank": LTXAttentionBankNode, - "LTXPrepareAttnInjections": LTXPrepareAttnInjectionsNode, - "LTXAttentioOverride": LTXAttentioOverrideNode, - "LTXPerturbedAttention": LTXPerturbedAttentionNode, - "LTXAttnOverride": LTXAttnOverrideNode, - "LTXFlowEditCFGGuider": LTXFlowEditCFGGuiderNode, - "LTXFlowEditSampler": LTXFlowEditSamplerNode, - "LTXFetaEnhance": LTXFetaEnhanceNode, -} - -NODE_DISPLAY_NAME_MAPPINGS = { - "ModifyLTXModel": "Modify LTX Model", - "AddLatentGuide": "Add LTX Latent Guide", - "LTXAddImageGuide": "Add LTX Image Guide", - "LTXForwardModelSamplingPred": "LTX Forward Model Pred", - "LTXReverseModelSamplingPred": "LTX Reverse Model Pred", - "LTXRFForwardODESampler": "LTX Rf-Inv Forward Sampler", - "LTXRFReverseODESampler": "LTX Rf-Inv Reverse Sampler", - "LTXAttentionBank": "LTX Attention Bank", - "LTXPrepareAttnInjections": "LTX Prepare Attn Injection", - "LTXAttentioOverride": "LTX Attn Block Override", - "LTXPerturbedAttention": "LTX Apply Perturbed Attention", - "LTXAttnOverride": "LTX Attention Override", - "LTXFlowEditCFGGuider": "LTX Flow Edit CFG Guider", - "LTXFlowEditSampler": "LTX Flow Edit Sampler", - "LTXFetaEnhance": "LTX Feta Enhance", -} diff --git a/tricks/modules/ltx_model.py b/tricks/modules/ltx_model.py deleted file mode 100644 index 05d337f..0000000 --- a/tricks/modules/ltx_model.py +++ /dev/null @@ -1,257 +0,0 @@ -import math - -import comfy.ldm.common_dit -import comfy.ldm.modules.attention -import torch -from comfy.ldm.lightricks.model import ( - BasicTransformerBlock, - LTXVModel, - apply_rotary_emb, -) -from comfy.ldm.lightricks.symmetric_patchifier import latent_to_pixel_coords -from torch import nn - -from ..utils.feta_enhance_utils import get_feta_scores - - -class LTXModifiedCrossAttention(nn.Module): - def forward(self, x, context=None, mask=None, pe=None, transformer_options={}): - context = x if context is None else context - context_v = x if context is None else context - - step = transformer_options.get("step", -1) - total_steps = transformer_options.get("total_steps", 0) - attn_bank = transformer_options.get("attn_bank", None) - sample_mode = transformer_options.get("sample_mode", None) - if attn_bank is not None and self.idx in attn_bank["block_map"]: - len_conds = len(transformer_options["cond_or_uncond"]) - pred_order = transformer_options["pred_order"] - if ( - sample_mode == "forward" - and total_steps - step - 1 < attn_bank["save_steps"] - ): - step_idx = f"{pred_order}_{total_steps-step-1}" - attn_bank["block_map"][self.idx][step_idx] = x.cpu() - elif sample_mode == "reverse" and step < attn_bank["inject_steps"]: - step_idx = f"{pred_order}_{step}" - inject_settings = attn_bank.get("inject_settings", {}) - if len(inject_settings) > 0: - inj = ( - attn_bank["block_map"][self.idx][step_idx] - .to(x.device) - .repeat(len_conds, 1, 1) - ) - if "q" in inject_settings: - x = inj - if "k" in inject_settings: - context = inj - if "v" in inject_settings: - context_v = inj - - q = self.to_q(x) - k = self.to_k(context) - v = self.to_v(context_v) - - q = self.q_norm(q) - k = self.k_norm(k) - - if pe is not None: - q = apply_rotary_emb(q, pe) - k = apply_rotary_emb(k, pe) - - feta_score = None - if ( - transformer_options.get("feta_weight", 0) > 0 - and self.idx in transformer_options["feta_layers"]["layers"] - ): - feta_score = get_feta_scores(q, k, self.heads, transformer_options) - - alt_attn_fn = ( - transformer_options.get("patches_replace", {}) - .get("layer", {}) - .get(("self_attn", self.idx), None) - ) - if alt_attn_fn is not None: - out = alt_attn_fn( - q, - k, - v, - self.heads, - attn_precision=self.attn_precision, - transformer_options=transformer_options, - ) - elif mask is None: - out = comfy.ldm.modules.attention.optimized_attention( - q, k, v, self.heads, attn_precision=self.attn_precision - ) - else: - out = comfy.ldm.modules.attention.optimized_attention_masked( - q, k, v, self.heads, mask, attn_precision=self.attn_precision - ) - - if feta_score is not None: - out *= feta_score - - return self.to_out(out) - - -class LTXModifiedBasicTransformerBlock(BasicTransformerBlock): - def forward( - self, - x, - context=None, - attention_mask=None, - timestep=None, - pe=None, - transformer_options={}, - ): - shift_msa, scale_msa, gate_msa, shift_mlp, scale_mlp, gate_mlp = ( - self.scale_shift_table[None, None].to(device=x.device, dtype=x.dtype) - + timestep.reshape( - x.shape[0], timestep.shape[1], self.scale_shift_table.shape[0], -1 - ) - ).unbind(dim=2) - x += ( - self.attn1( - comfy.ldm.common_dit.rms_norm(x) * (1 + scale_msa) + shift_msa, - pe=pe, - transformer_options=transformer_options, - ) - * gate_msa - ) - - x += self.attn2(x, context=context, mask=attention_mask) - - y = comfy.ldm.common_dit.rms_norm(x) * (1 + scale_mlp) + shift_mlp - x += self.ff(y) * gate_mlp - - return x - - -class LTXVModelModified(LTXVModel): - - def forward( - self, - x, - timestep, - context, - attention_mask, - frame_rate=25, - transformer_options={}, - keyframe_idxs=None, - **kwargs, - ): - patches_replace = transformer_options.get("patches_replace", {}) - - orig_shape = list(x.shape) - - x, latent_coords = self.patchifier.patchify(x) - pixel_coords = latent_to_pixel_coords( - latent_coords=latent_coords, - scale_factors=self.vae_scale_factors, - causal_fix=self.causal_temporal_positioning, - ) - - if keyframe_idxs is not None: - pixel_coords[:, :, -keyframe_idxs.shape[2] :] = keyframe_idxs - - fractional_coords = pixel_coords.to(torch.float32) - fractional_coords[:, 0] = fractional_coords[:, 0] * (1.0 / frame_rate) - - x = self.patchify_proj(x) - timestep = timestep * 1000.0 - - if attention_mask is not None and not torch.is_floating_point(attention_mask): - attention_mask = (attention_mask - 1).to(x.dtype).reshape( - (attention_mask.shape[0], 1, -1, attention_mask.shape[-1]) - ) * torch.finfo(x.dtype).max - - pe = self._precompute_freqs_cis( - fractional_coords, dim=self.inner_dim, out_dtype=x.dtype - ) - - batch_size = x.shape[0] - timestep, embedded_timestep = self.adaln_single( - timestep.flatten(), - {"resolution": None, "aspect_ratio": None}, - batch_size=batch_size, - hidden_dtype=x.dtype, - ) - # Second dimension is 1 or number of tokens (if timestep_per_token) - timestep = timestep.view(batch_size, -1, timestep.shape[-1]) - embedded_timestep = embedded_timestep.view( - batch_size, -1, embedded_timestep.shape[-1] - ) - - # 2. Blocks - if self.caption_projection is not None: - batch_size = x.shape[0] - context = self.caption_projection(context) - context = context.view(batch_size, -1, x.shape[-1]) - - blocks_replace = patches_replace.get("dit", {}) - for i, block in enumerate(self.transformer_blocks): - if ("double_block", i) in blocks_replace: - - def block_wrap(args): - out = {} - out["img"] = block( - args["img"], - context=args["txt"], - attention_mask=args["attention_mask"], - timestep=args["vec"], - pe=args["pe"], - ) - return out - - out = blocks_replace[("double_block", i)]( - { - "img": x, - "txt": context, - "attention_mask": attention_mask, - "vec": timestep, - "pe": pe, - }, - {"original_block": block_wrap}, - ) - x = out["img"] - else: - x = block( - x, - context=context, - attention_mask=attention_mask, - timestep=timestep, - pe=pe, - transformer_options=transformer_options, - ) - - # 3. Output - scale_shift_values = ( - self.scale_shift_table[None, None].to(device=x.device, dtype=x.dtype) - + embedded_timestep[:, :, None] - ) - shift, scale = scale_shift_values[:, :, 0], scale_shift_values[:, :, 1] - x = self.norm_out(x) - # Modulation - x = x * (1 + scale) + shift - x = self.proj_out(x) - - x = self.patchifier.unpatchify( - latents=x, - output_height=orig_shape[3], - output_width=orig_shape[4], - output_num_frames=orig_shape[2], - out_channels=orig_shape[1] // math.prod(self.patchifier.patch_size), - ) - - return x - - -def inject_model(diffusion_model): - diffusion_model.__class__ = LTXVModelModified - for idx, transformer_block in enumerate(diffusion_model.transformer_blocks): - transformer_block.__class__ = LTXModifiedBasicTransformerBlock - transformer_block.idx = idx - transformer_block.attn1.__class__ = LTXModifiedCrossAttention - transformer_block.attn1.idx = idx - return diffusion_model diff --git a/tricks/nodes/attn_bank_nodes.py b/tricks/nodes/attn_bank_nodes.py deleted file mode 100644 index 6a482df..0000000 --- a/tricks/nodes/attn_bank_nodes.py +++ /dev/null @@ -1,90 +0,0 @@ -from ..utils.attn_bank import AttentionBank - - -class LTXAttentionBankNode: - @classmethod - def INPUT_TYPES(s): - return { - "required": { - "save_steps": ("INT", {"default": 0, "min": 0, "max": 1000, "step": 1}), - "blocks": ("STRING", {"multiline": True}), - } - } - - RETURN_TYPES = ("ATTN_BANK",) - FUNCTION = "build" - - CATEGORY = "ltxtricks" - - def build(self, save_steps, blocks=""): - block_map = {} - block_list = blocks.split(",") - for block in block_list: - block_idx = int(block) - block_map[block_idx] = {} - - bank = AttentionBank(save_steps, block_map) - return (bank,) - - -class LTXPrepareAttnInjectionsNode: - @classmethod - def INPUT_TYPES(s): - return { - "required": { - "latent": ("LATENT",), - "attn_bank": ("ATTN_BANK",), - "query": ("BOOLEAN", {"default": False}), - "key": ("BOOLEAN", {"default": False}), - "value": ("BOOLEAN", {"default": False}), - "inject_steps": ( - "INT", - {"default": 0, "min": 0, "max": 1000, "step": 1}, - ), - }, - "optional": {"blocks": ("LTX_BLOCKS",)}, - } - - RETURN_TYPES = ("LATENT", "ATTN_INJ") - FUNCTION = "prepare" - - CATEGORY = "fluxtapoz" - - def prepare(self, latent, attn_bank, query, key, value, inject_steps, blocks=None): - if inject_steps > attn_bank["save_steps"]: - raise ValueError("Can not inject more steps than were saved.") - attn_bank = AttentionBank( - attn_bank["save_steps"], attn_bank["block_map"], inject_steps - ) - attn_bank["inject_settings"] = set([]) - if query: - attn_bank["inject_settings"].add("q") - if key: - attn_bank["inject_settings"].add("k") - if value: - attn_bank["inject_settings"].add("v") - - if blocks is not None: - attn_bank["block_map"] = {**attn_bank["block_map"]} - for key in list(attn_bank["block_map"].keys()): - if key not in blocks: - del attn_bank["block_map"][key] - - # Hack to force order of operations in ComfyUI graph - return (latent, attn_bank) - - -class LTXAttentioOverrideNode: - @classmethod - def INPUT_TYPES(s): - return {"required": {"blocks": ("STRING", {"multiline": True})}} - - RETURN_TYPES = ("LTX_BLOCKS",) - FUNCTION = "build" - - CATEGORY = "ltxtricks" - - def build(self, blocks=""): - block_set = set(list(int(block) for block in blocks.split(","))) - - return (block_set,) diff --git a/tricks/nodes/attn_override_node.py b/tricks/nodes/attn_override_node.py deleted file mode 100644 index 421484c..0000000 --- a/tricks/nodes/attn_override_node.py +++ /dev/null @@ -1,30 +0,0 @@ -def is_integer(string): - try: - int(string) - return True - except ValueError: - return False - - -class LTXAttnOverrideNode: - @classmethod - def INPUT_TYPES(s): - return { - "required": { - "layers": ("STRING", {"multiline": True}), - } - } - - RETURN_TYPES = ("ATTN_OVERRIDE",) - FUNCTION = "build" - - CATEGORY = "ltxtricks/attn" - - def build(self, layers): - layers_map = set([]) - for block in layers.split(","): - block = block.strip() - if is_integer(block): - layers_map.add(int(block)) - - return ({"layers": layers_map},) diff --git a/tricks/nodes/latent_guide_node.py b/tricks/nodes/latent_guide_node.py deleted file mode 100644 index 652a689..0000000 --- a/tricks/nodes/latent_guide_node.py +++ /dev/null @@ -1,40 +0,0 @@ -import comfy_extras.nodes_lt as nodes_lt - - -class AddLatentGuideNode(nodes_lt.LTXVAddGuide): - @classmethod - def INPUT_TYPES(s): - return { - "required": { - "model": ("MODEL",), - "latent": ("LATENT",), - "image_latent": ("LATENT",), - "index": ("INT", {"default": 0, "min": -1, "max": 9999, "step": 1}), - "strength": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 1.0}), - } - } - - RETURN_TYPES = ("MODEL", "LATENT") - RETURN_NAMES = ("model", "latent") - - CATEGORY = "ltxtricks" - FUNCTION = "generate" - - def generate(self, model, latent, image_latent, index, strength): - noise_mask = nodes_lt.get_noise_mask(latent) - latent = latent["samples"] - - image_latent = image_latent["samples"] - - latent, noise_mask = self.replace_latent_frames( - latent, - noise_mask, - image_latent, - index, - strength, - ) - - return ( - model, - {"samples": latent, "noise_mask": noise_mask}, - ) diff --git a/tricks/nodes/ltx_feta_enhance_node.py b/tricks/nodes/ltx_feta_enhance_node.py deleted file mode 100644 index 1f6a0c9..0000000 --- a/tricks/nodes/ltx_feta_enhance_node.py +++ /dev/null @@ -1,36 +0,0 @@ -DEFAULT_ATTN = { - "layers": [i for i in range(0, 100, 1)], -} - - -class LTXFetaEnhanceNode: - @classmethod - def INPUT_TYPES(s): - return { - "required": { - "model": ("MODEL",), - "feta_weight": ( - "FLOAT", - {"default": 4, "min": -100.0, "max": 100.0, "step": 0.01}, - ), - }, - "optional": {"attn_override": ("ATTN_OVERRIDE",)}, - } - - RETURN_TYPES = ("MODEL",) - - CATEGORY = "ltxtricks" - FUNCTION = "apply" - - def apply(self, model, feta_weight, attn_override=DEFAULT_ATTN): - model = model.clone() - - model_options = model.model_options.copy() - transformer_options = model_options["transformer_options"].copy() - - transformer_options["feta_weight"] = feta_weight - transformer_options["feta_layers"] = attn_override - model_options["transformer_options"] = transformer_options - - model.model_options = model_options - return (model,) diff --git a/tricks/nodes/ltx_flowedit_nodes.py b/tricks/nodes/ltx_flowedit_nodes.py deleted file mode 100644 index de902c3..0000000 --- a/tricks/nodes/ltx_flowedit_nodes.py +++ /dev/null @@ -1,180 +0,0 @@ -import torch -from comfy.samplers import KSAMPLER, CFGGuider, sampling_function -from tqdm import trange - - -class FlowEditGuider(CFGGuider): - def __init__(self, model_patcher): - super().__init__(model_patcher) - self.cfgs = {} - - def set_conds(self, **kwargs): - self.inner_set_conds(kwargs) - - def set_cfgs(self, **kwargs): - self.cfgs = {**kwargs} - - def predict_noise(self, x, timestep, model_options={}, seed=None): - latent_type = model_options["transformer_options"]["latent_type"] - positive = self.conds.get(f"{latent_type}_positive", None) - negative = self.conds.get(f"{latent_type}_negative", None) - cfg = self.cfgs.get(latent_type, self.cfg) - return sampling_function( - self.inner_model, - x, - timestep, - negative, - positive, - cfg, - model_options=model_options, - seed=seed, - ) - - -class LTXFlowEditCFGGuiderNode: - @classmethod - def INPUT_TYPES(s): - return { - "required": { - "model": ("MODEL",), - "source_pos": ("CONDITIONING",), - "source_neg": ("CONDITIONING",), - "target_pos": ("CONDITIONING",), - "target_neg": ("CONDITIONING",), - "source_cfg": ( - "FLOAT", - {"default": 2, "min": 0, "max": 0xFFFFFFFFFFFFFFFF, "step": 0.01}, - ), - "target_cfg": ( - "FLOAT", - {"default": 4.5, "min": 0, "max": 0xFFFFFFFFFFFFFFFF, "step": 0.01}, - ), - } - } - - RETURN_TYPES = ("GUIDER",) - - FUNCTION = "get_guider" - CATEGORY = "ltxtricks" - - def get_guider( - self, - model, - source_pos, - source_neg, - target_pos, - target_neg, - source_cfg, - target_cfg, - ): - guider = FlowEditGuider(model) - guider.set_conds( - source_positive=source_pos, - source_negative=source_neg, - target_positive=target_pos, - target_negative=target_neg, - ) - guider.set_cfgs(source=source_cfg, target=target_cfg) - return (guider,) - - -def get_flowedit_sample(skip_steps, refine_steps, seed): - generator = torch.manual_seed(seed) - - @torch.no_grad() - def flowedit_sample( - model, x_init, sigmas, extra_args=None, callback=None, disable=None - ): - extra_args = {} if extra_args is None else extra_args - - model_options = extra_args.get("model_options", {}) - transformer_options = model_options.get("transformer_options", {}) - transformer_options = {**transformer_options} - model_options["transformer_options"] = transformer_options - extra_args["model_options"] = model_options - denoise_mask = extra_args.get("denoise_mask", 1) - if denoise_mask is None: - denoise_mask = 1 - else: - extra_args["denoise_mask"] = torch.ones_like(denoise_mask) - - source_extra_args = { - **extra_args, - "model_options": { - "transformer_options": {**transformer_options, "latent_type": "source"} - }, - } - - sigmas = sigmas[skip_steps:] - - x_tgt = x_init.clone() - N = len(sigmas) - 1 - s_in = x_init.new_ones([x_init.shape[0]]) - - for i in trange(N, disable=disable): - sigma = sigmas[i] - noise = torch.randn(x_init.shape, generator=generator).to(x_init.device) - - zt_src = (1 - sigma) * x_init + sigma * noise - - if i < N - refine_steps: - zt_tgt = x_tgt + (zt_src - x_init) * denoise_mask - transformer_options["latent_type"] = "source" - source_extra_args["model_options"]["transformer_options"][ - "latent_type" - ] = "source" - vt_src = model(zt_src, sigma * s_in, **source_extra_args) - else: - if i == N - refine_steps: - x_tgt = x_tgt + (zt_src - x_init) * denoise_mask - zt_tgt = x_tgt - vt_src = 0 - - transformer_options["latent_type"] = "target" - vt_tgt = model(zt_tgt, sigma * s_in, **extra_args) - - v_delta = (vt_tgt - vt_src) * denoise_mask - x_tgt += (sigmas[i + 1] - sigmas[i]) * v_delta - - if callback is not None: - callback( - { - "x": x_tgt, - "denoised": x_tgt, - "i": i + skip_steps, - "sigma": sigmas[i], - "sigma_hat": sigmas[i], - } - ) - - return x_tgt - - return flowedit_sample - - -class LTXFlowEditSamplerNode: - @classmethod - def INPUT_TYPES(s): - return { - "required": { - "skip_steps": ( - "INT", - {"default": 4, "min": 0, "max": 0xFFFFFFFFFFFFFFFF}, - ), - "refine_steps": ( - "INT", - {"default": 0, "min": 0, "max": 0xFFFFFFFFFFFFFFFF}, - ), - "seed": ("INT", {"default": 0, "min": 0, "max": 0xFFFFFFFFFFFFFFFF}), - }, - "optional": {}, - } - - RETURN_TYPES = ("SAMPLER",) - FUNCTION = "build" - - CATEGORY = "ltxtricks" - - def build(self, skip_steps, refine_steps, seed): - sampler = KSAMPLER(get_flowedit_sample(skip_steps, refine_steps, seed)) - return (sampler,) diff --git a/tricks/nodes/ltx_inverse_model_pred_nodes.py b/tricks/nodes/ltx_inverse_model_pred_nodes.py deleted file mode 100644 index db081ff..0000000 --- a/tricks/nodes/ltx_inverse_model_pred_nodes.py +++ /dev/null @@ -1,91 +0,0 @@ -import comfy.latent_formats -import comfy.model_sampling -import comfy.sd - - -class InverseCONST: - def calculate_input(self, sigma, noise): - return noise - - def calculate_denoised(self, sigma, model_output, model_input): - sigma = sigma.view(sigma.shape[:1] + (1,) * (model_output.ndim - 1)) - return model_output - - def noise_scaling(self, sigma, noise, latent_image, max_denoise=False): - return latent_image - - def inverse_noise_scaling(self, sigma, latent): - return latent - - -class LTXForwardModelSamplingPredNode: - @classmethod - def INPUT_TYPES(s): - return { - "required": { - "model": ("MODEL",), - } - } - - RETURN_TYPES = ("MODEL",) - FUNCTION = "patch" - - CATEGORY = "ltxtricks" - - def patch(self, model): - m = model.clone() - - sampling_base = comfy.model_sampling.ModelSamplingFlux - sampling_type = InverseCONST - - class ModelSamplingAdvanced(sampling_base, sampling_type): - pass - - model_sampling = ModelSamplingAdvanced(model.model.model_config) - model_sampling.set_parameters(shift=1.15) - m.add_object_patch("model_sampling", model_sampling) - return (m,) - - -class ReverseCONST: - def calculate_input(self, sigma, noise): - return noise - - def calculate_denoised(self, sigma, model_output, model_input): - sigma = sigma.view(sigma.shape[:1] + (1,) * (model_output.ndim - 1)) - return model_output # model_input - model_output * sigma - - def noise_scaling(self, sigma, noise, latent_image, max_denoise=False): - return latent_image - - def inverse_noise_scaling(self, sigma, latent): - return latent / (1.0 - sigma) - - -class LTXReverseModelSamplingPredNode: - @classmethod - def INPUT_TYPES(s): - return { - "required": { - "model": ("MODEL",), - } - } - - RETURN_TYPES = ("MODEL",) - FUNCTION = "patch" - - CATEGORY = "ltxtricks" - - def patch(self, model): - m = model.clone() - - sampling_base = comfy.model_sampling.ModelSamplingFlux - sampling_type = ReverseCONST - - class ModelSamplingAdvanced(sampling_base, sampling_type): - pass - - model_sampling = ModelSamplingAdvanced(model.model.model_config) - model_sampling.set_parameters(shift=1.15) - m.add_object_patch("model_sampling", model_sampling) - return (m,) diff --git a/tricks/nodes/ltx_pag_node.py b/tricks/nodes/ltx_pag_node.py deleted file mode 100644 index 9b1bee3..0000000 --- a/tricks/nodes/ltx_pag_node.py +++ /dev/null @@ -1,149 +0,0 @@ -import math - -import comfy.model_patcher -import comfy.samplers -import torch -import torch.nn.functional as F -from comfy.ldm.modules.attention import optimized_attention -from einops import rearrange - -DEFAULT_PAG_LTX = {"layers": set([14])} - - -def gaussian_blur_2d(img, kernel_size, sigma): - height = img.shape[-1] - kernel_size = min(kernel_size, height - (height % 2 - 1)) - ksize_half = (kernel_size - 1) * 0.5 - - x = torch.linspace(-ksize_half, ksize_half, steps=kernel_size) - - pdf = torch.exp(-0.5 * (x / sigma).pow(2)) - - x_kernel = pdf / pdf.sum() - x_kernel = x_kernel.to(device=img.device, dtype=img.dtype) - - kernel2d = torch.mm(x_kernel[:, None], x_kernel[None, :]) - kernel2d = kernel2d.expand(img.shape[-3], 1, kernel2d.shape[0], kernel2d.shape[1]) - - padding = [kernel_size // 2, kernel_size // 2, kernel_size // 2, kernel_size // 2] - - img = F.pad(img, padding, mode="reflect") - img = F.conv2d(img, kernel2d, groups=img.shape[-3]) - - return img - - -class LTXPerturbedAttentionNode: - @classmethod - def INPUT_TYPES(s): - return { - "required": { - "model": ("MODEL",), - "scale": ( - "FLOAT", - { - "default": 2.0, - "min": 0.0, - "max": 100.0, - "step": 0.01, - "round": 0.01, - }, - ), - "rescale": ( - "FLOAT", - { - "default": 0.5, - "min": 0.0, - "max": 100.0, - "step": 0.01, - "round": 0.01, - }, - ), - "cfg": ( - "FLOAT", - { - "default": 3.0, - "min": 0.0, - "max": 100.0, - "step": 0.01, - "round": 0.01, - }, - ), - }, - "optional": { - "attn_override": ("ATTN_OVERRIDE",), - # "attn_type": (["PAG", "SEG"],), - }, - } - - RETURN_TYPES = ("MODEL",) - FUNCTION = "patch" - - CATEGORY = "ltxtricks/attn" - - def patch( - self, model, scale, rescale, cfg, attn_override=DEFAULT_PAG_LTX, attn_type="PAG" - ): - m = model.clone() - - def pag_fn(q, k, v, heads, attn_precision=None, transformer_options=None): - return v - - def seg_fn(q, k, v, heads, attn_precision=None, transformer_options=None): - _, sequence_length, _ = q.shape - b, c, f, h, w = transformer_options["original_shape"] - - q = rearrange(q, "b (f h w) d -> b (f d) w h", h=h, w=w) - kernel_size = math.ceil(6 * scale) + 1 - math.ceil(6 * scale) % 2 - q = gaussian_blur_2d(q, kernel_size, scale) - q = rearrange(q, "b (f d) w h -> b (f h w) d", f=f) - return optimized_attention(q, k, v, heads, attn_precision=attn_precision) - - def post_cfg_function(args): - model = args["model"] - - cond_pred = args["cond_denoised"] - uncond_pred = args["uncond_denoised"] - - len_conds = 1 if args.get("uncond", None) is None else 2 - - cond = args["cond"] - sigma = args["sigma"] - model_options = args["model_options"].copy() - x = args["input"] - - if scale == 0: - if len_conds == 1: - return cond_pred - return uncond_pred + (cond_pred - uncond_pred) - - attn_fn = pag_fn if attn_type == "PAG" else seg_fn - for block_idx in attn_override["layers"]: - model_options = comfy.model_patcher.set_model_options_patch_replace( - model_options, attn_fn, "layer", "self_attn", int(block_idx) - ) - - (perturbed,) = comfy.samplers.calc_cond_batch( - model, [cond], x, sigma, model_options - ) - - # if len_conds == 1: - # output = cond_pred + scale * (cond_pred - pag) - # else: - # output = cond_pred + (scale-1.0) * (cond_pred - uncond_pred) + scale * (cond_pred - pag) - - output = ( - uncond_pred - + cfg * (cond_pred - uncond_pred) - + scale * (cond_pred - perturbed) - ) - if rescale > 0: - factor = cond_pred.std() / output.std() - factor = rescale * factor + (1 - rescale) - output = output * factor - - return output - - m.set_model_sampler_post_cfg_function(post_cfg_function) - - return (m,) diff --git a/tricks/nodes/modify_ltx_model_node.py b/tricks/nodes/modify_ltx_model_node.py deleted file mode 100644 index 40b7fbb..0000000 --- a/tricks/nodes/modify_ltx_model_node.py +++ /dev/null @@ -1,20 +0,0 @@ -from ..modules.ltx_model import inject_model - - -class ModifyLTXModelNode: - @classmethod - def INPUT_TYPES(s): - return { - "required": { - "model": ("MODEL",), - } - } - - RETURN_TYPES = ("MODEL",) - - CATEGORY = "ltxtricks" - FUNCTION = "modify" - - def modify(self, model): - model.model.diffusion_model = inject_model(model.model.diffusion_model) - return (model,) diff --git a/tricks/nodes/rectified_sampler_nodes.py b/tricks/nodes/rectified_sampler_nodes.py deleted file mode 100644 index 7d44801..0000000 --- a/tricks/nodes/rectified_sampler_nodes.py +++ /dev/null @@ -1,275 +0,0 @@ -import torch -from comfy.samplers import KSAMPLER -from tqdm import trange - - -def generate_trend_values(steps, start_time, end_time, eta, eta_trend): - eta_values = [0] * steps - - if eta_trend == "constant": - for i in range(start_time, end_time): - eta_values[i] = eta - elif eta_trend == "linear_increase": - for i in range(start_time, end_time): - progress = (i - start_time) / (end_time - start_time - 1) - eta_values[i] = eta * progress - elif eta_trend == "linear_decrease": - for i in range(start_time, end_time): - progress = 1 - (i - start_time) / (end_time - start_time - 1) - eta_values[i] = eta * progress - - return eta_values - - -def get_sample_forward( - gamma, start_step, end_step, gamma_trend, seed, attn_bank=None, order="first" -): - # Controlled Forward ODE (Algorithm 1) - generator = torch.Generator() - generator.manual_seed(seed) - - @torch.no_grad() - def sample_forward(model, y0, sigmas, extra_args=None, callback=None, disable=None): - if attn_bank is not None: - for block_idx in attn_bank["block_map"]: - attn_bank["block_map"][block_idx].clear() - - extra_args = {} if extra_args is None else extra_args - model_options = extra_args.get("model_options", {}) - model_options = {**model_options} - transformer_options = model_options.get("transformer_options", {}) - transformer_options = { - **transformer_options, - "total_steps": len(sigmas) - 1, - "sample_mode": "forward", - "attn_bank": attn_bank, - } - model_options["transformer_options"] = transformer_options - extra_args["model_options"] = model_options - - Y = y0.clone() - y1 = torch.randn(Y.shape, generator=generator).to(y0.device) - N = len(sigmas) - 1 - s_in = y0.new_ones([y0.shape[0]]) - gamma_values = generate_trend_values( - N, start_step, end_step, gamma, gamma_trend - ) - for i in trange(N, disable=disable): - transformer_options["step"] = i - sigma = sigmas[i] - sigma_next = sigmas[i + 1] - t_i = model.inner_model.inner_model.model_sampling.timestep(sigmas[i]) - - conditional_vector_field = (y1 - Y) / (1 - t_i) - - transformer_options["pred_order"] = "first" - pred = model( - Y, s_in * sigmas[i], **extra_args - ) # this implementation takes sigma instead of timestep - - if order == "second": - transformer_options["pred_order"] = "second" - img_mid = Y + (sigma_next - sigma) / 2 * pred - sigma_mid = sigma + (sigma_next - sigma) / 2 - pred_mid = model(img_mid, s_in * sigma_mid, **extra_args) - - first_order = (pred_mid - pred) / ((sigma_next - sigma) / 2) - pred = pred + gamma_values[i] * (conditional_vector_field - pred) - # first_order = first_order + gamma_values[i] * (conditional_vector_field - first_order) - Y = ( - Y - + (sigma_next - sigma) * pred - + 0.5 * (sigma_next - sigma) ** 2 * first_order - ) - else: - pred = pred + gamma_values[i] * (conditional_vector_field - pred) - Y = Y + pred * (sigma_next - sigma) - - if callback is not None: - callback( - {"x": Y, "denoised": Y, "i": i, "sigma": sigma, "sigma_hat": sigma} - ) - - return Y - - return sample_forward - - -def get_sample_reverse( - latent_image, eta, start_time, end_time, eta_trend, attn_bank=None, order="first" -): - # Controlled Reverse ODE (Algorithm 2) - @torch.no_grad() - def sample_reverse(model, y1, sigmas, extra_args=None, callback=None, disable=None): - extra_args = {} if extra_args is None else extra_args - model_options = extra_args.get("model_options", {}) - model_options = {**model_options} - transformer_options = model_options.get("transformer_options", {}) - transformer_options = { - **transformer_options, - "total_steps": len(sigmas) - 1, - "sample_mode": "reverse", - "attn_bank": attn_bank, - } - model_options["transformer_options"] = transformer_options - extra_args["model_options"] = model_options - - X = y1.clone() - N = len(sigmas) - 1 - y0 = latent_image.clone().to(y1.device) - s_in = y0.new_ones([y0.shape[0]]) - eta_values = generate_trend_values(N, start_time, end_time, eta, eta_trend) - for i in trange(N, disable=disable): - transformer_options["step"] = i - t_i = 1 - model.inner_model.inner_model.model_sampling.timestep(sigmas[i]) - sigma = sigmas[i] - sigma_prev = sigmas[i + 1] - - conditional_vector_field = (y0 - X) / (1 - t_i) - - transformer_options["pred_order"] = "first" - pred = model( - X, sigma * s_in, **extra_args - ) # this implementation takes sigma instead of timestep - - if order == "second": - transformer_options["pred_order"] = "second" - img_mid = X + (sigma_prev - sigma) / 2 * pred - sigma_mid = sigma + (sigma_prev - sigma) / 2 - pred_mid = model(img_mid, s_in * sigma_mid, **extra_args) - - first_order = (pred_mid - pred) / ((sigma_prev - sigma) / 2) - pred = -pred + eta_values[i] * (conditional_vector_field + pred) - - first_order = -first_order + eta_values[i] * ( - conditional_vector_field + first_order - ) - X = ( - X - + (sigma - sigma_prev) * pred - + 0.5 * (sigma - sigma_prev) ** 2 * first_order - ) - else: - controlled_vector_field = -pred + eta_values[i] * ( - conditional_vector_field + pred - ) - X = X + controlled_vector_field * (sigma - sigma_prev) - - if callback is not None: - callback( - { - "x": X, - "denoised": X, - "i": i, - "sigma": sigmas[i], - "sigma_hat": sigmas[i], - } - ) - - return X - - return sample_reverse - - -class LTXRFForwardODESamplerNode: - @classmethod - def INPUT_TYPES(s): - return { - "required": { - "gamma": ( - "FLOAT", - {"default": 0.5, "min": 0.0, "max": 100.0, "step": 0.01}, - ), - "start_step": ("INT", {"default": 0, "min": 0, "max": 1000, "step": 1}), - "end_step": ("INT", {"default": 5, "min": 0, "max": 1000, "step": 1}), - "gamma_trend": (["linear_decrease", "linear_increase", "constant"],), - }, - "optional": { - "seed": ("INT", {"default": 0, "min": 0, "max": 0xFFFFFFFFFFFFFFFF}), - "attn_bank": ("ATTN_BANK",), - "order": (["first", "second"],), - }, - } - - RETURN_TYPES = ("SAMPLER",) - FUNCTION = "build" - - CATEGORY = "ltxtricks" - - def build( - self, - gamma, - start_step, - end_step, - gamma_trend, - seed=0, - attn_bank=None, - order="first", - ): - sampler = KSAMPLER( - get_sample_forward( - gamma, - start_step, - end_step, - gamma_trend, - seed, - attn_bank=attn_bank, - order=order, - ) - ) - - return (sampler,) - - -class LTXRFReverseODESamplerNode: - @classmethod - def INPUT_TYPES(s): - return { - "required": { - "model": ("MODEL",), - "latent_image": ("LATENT",), - "eta": ( - "FLOAT", - {"default": 0.8, "min": 0.0, "max": 100.0, "step": 0.01}, - ), - "start_step": ("INT", {"default": 0, "min": 0, "max": 1000, "step": 1}), - "end_step": ("INT", {"default": 15, "min": 0, "max": 1000, "step": 1}), - }, - "optional": { - "eta_trend": (["linear_decrease", "linear_increase", "constant"],), - "attn_inj": ("ATTN_INJ",), - "order": (["first", "second"],), - }, - } - - RETURN_TYPES = ("SAMPLER",) - FUNCTION = "build" - - CATEGORY = "ltxtricks" - - def build( - self, - model, - latent_image, - eta, - start_step, - end_step, - eta_trend="constant", - attn_inj=None, - order="first", - ): - process_latent_in = model.get_model_object("process_latent_in") - latent_image = process_latent_in(latent_image["samples"]) - sampler = KSAMPLER( - get_sample_reverse( - latent_image, - eta, - start_step, - end_step, - eta_trend, - attn_bank=attn_inj, - order=order, - ) - ) - - return (sampler,) diff --git a/tricks/nodes/rf_edit_sampler_nodes.py b/tricks/nodes/rf_edit_sampler_nodes.py deleted file mode 100644 index d843bbf..0000000 --- a/tricks/nodes/rf_edit_sampler_nodes.py +++ /dev/null @@ -1,376 +0,0 @@ -import torch -from comfy.samplers import KSAMPLER -from tqdm import trange - - -def get_sample_forward(attn_bank, save_steps, single_layers, double_layers): - @torch.no_grad() - def sample_forward(model, x, sigmas, extra_args=None, callback=None, disable=None): - attn_bank.clear() - attn_bank["save_steps"] = save_steps - - extra_args = {} if extra_args is None else extra_args - - model_options = extra_args.get("model_options", {}) - model_options = {**model_options} - transformer_options = model_options.get("transformer_options", {}) - transformer_options = {**transformer_options} - model_options["transformer_options"] = transformer_options - extra_args["model_options"] = model_options - - N = len(sigmas) - 1 - s_in = x.new_ones([x.shape[0]]) - for i in trange(N, disable=disable): - sigma = sigmas[i] - sigma_next = sigmas[i + 1] - - if N - i - 1 < save_steps: - attn_bank[N - i - 1] = {"first": {}, "mid": {}} - - transformer_options["rfedit"] = { - "step": N - i - 1, - "process": "forward" if N - i - 1 < save_steps else None, - "pred": "first", - "bank": attn_bank, - "single_layers": single_layers, - "double_layers": double_layers, - } - - pred = model(x, s_in * sigma, **extra_args) - - transformer_options["rfedit"] = { - "step": N - i - 1, - "process": "forward" if N - i - 1 < save_steps else None, - "pred": "mid", - "bank": attn_bank, - "single_layers": single_layers, - "double_layers": double_layers, - } - - img_mid = x + (sigma_next - sigma) / 2 * pred - sigma_mid = sigma + (sigma_next - sigma) / 2 - pred_mid = model(img_mid, s_in * sigma_mid, **extra_args) - - first_order = (pred_mid - pred) / ((sigma_next - sigma) / 2) - x = ( - x - + (sigma_next - sigma) * pred - + 0.5 * (sigma_next - sigma) ** 2 * first_order - ) - - if callback is not None: - callback( - { - "x": x, - "denoised": x, - "i": i, - "sigma": sigmas[i], - "sigma_hat": sigmas[i], - } - ) - - return x - - return sample_forward - - -def get_sample_reverse(attn_bank, inject_steps, single_layers, double_layers): - @torch.no_grad() - def sample_reverse(model, x, sigmas, extra_args=None, callback=None, disable=None): - if inject_steps > attn_bank["save_steps"]: - raise ValueError( - f'You must save at least as many steps as you want to inject. save_steps: {attn_bank["save_steps"]}, inject_steps: {inject_steps}' - ) - - extra_args = {} if extra_args is None else extra_args - - model_options = extra_args.get("model_options", {}) - model_options = {**model_options} - transformer_options = model_options.get("transformer_options", {}) - transformer_options = {**transformer_options} - model_options["transformer_options"] = transformer_options - extra_args["model_options"] = model_options - - N = len(sigmas) - 1 - s_in = x.new_ones([x.shape[0]]) - for i in trange(N, disable=disable): - sigma = sigmas[i] - sigma_prev = sigmas[i + 1] - - transformer_options["rfedit"] = { - "step": i, - "process": "reverse" if i < inject_steps else None, - "pred": "first", - "bank": attn_bank, - "single_layers": single_layers, - "double_layers": double_layers, - } - - pred = model(x, s_in * sigma, **extra_args) - - transformer_options["rfedit"] = { - "step": i, - "process": "reverse" if i < inject_steps else None, - "pred": "mid", - "bank": attn_bank, - "single_layers": single_layers, - "double_layers": double_layers, - } - - img_mid = x + (sigma_prev - sigma) / 2 * pred - sigma_mid = sigma + (sigma_prev - sigma) / 2 - pred_mid = model(img_mid, s_in * sigma_mid, **extra_args) - - first_order = (pred_mid - pred) / ((sigma_prev - sigma) / 2) - x = ( - x - + (sigma_prev - sigma) * pred - + 0.5 * (sigma_prev - sigma) ** 2 * first_order - ) - - if callback is not None: - callback( - { - "x": x, - "denoised": x, - "i": i, - "sigma": sigmas[i], - "sigma_hat": sigmas[i], - } - ) - - return x - - return sample_reverse - - -DEFAULT_SINGLE_LAYERS = {} -for i in range(38): - DEFAULT_SINGLE_LAYERS[f"{i}"] = i > 19 - -DEFAULT_DOUBLE_LAYERS = {} -for i in range(19): - DEFAULT_DOUBLE_LAYERS[f"{i}"] = False - - -class FlowEditForwardSamplerNode: - @classmethod - def INPUT_TYPES(s): - return { - "required": { - "save_steps": ( - "INT", - {"default": 0, "min": 0, "max": 0xFFFFFFFFFFFFFFFF}, - ), - }, - "optional": { - "single_layers": ("SINGLE_LAYERS",), - "double_layers": ("DOUBLE_LAYERS",), - }, - } - - RETURN_TYPES = ("SAMPLER", "ATTN_INJ") - FUNCTION = "build" - - CATEGORY = "fluxtapoz" - - def build( - self, - save_steps, - single_layers=DEFAULT_SINGLE_LAYERS, - double_layers=DEFAULT_DOUBLE_LAYERS, - ): - attn_bank = {} - sampler = KSAMPLER( - get_sample_forward(attn_bank, save_steps, single_layers, double_layers) - ) - - return (sampler, attn_bank) - - -# class FlowEditReverseSamplerNode: -# @classmethod -# def INPUT_TYPES(s): -# return { -# "required": { -# "attn_inj": ("ATTN_INJ",), -# "latent_image": ("LATENT",), -# "eta": ( -# "FLOAT", -# {"default": 0.8, "min": 0.0, "max": 100.0, "step": 0.01}, -# ), -# "start_step": ("INT", {"default": 0, "min": 0, "max": 1000, "step": 1}), -# "end_step": ("INT", {"default": 5, "min": 0, "max": 1000, "step": 1}), -# }, -# "optional": {}, -# } -# -# RETURN_TYPES = ("SAMPLER",) -# FUNCTION = "build" -# -# CATEGORY = "fluxtapoz" -# -# def build(self, latent_image, eta, start_step, end_step): -# sampler = KSAMPLER( -# get_sample_reverse(attn_inj, inject_steps, single_layers, double_layers) -# ) -# return (sampler,) - - -def get_sample_reverse2(attn_bank, inject_steps, single_layers, double_layers): - @torch.no_grad() - def sample_reverse(model, x, sigmas, extra_args=None, callback=None, disable=None): - if inject_steps > attn_bank["save_steps"]: - raise ValueError( - f'You must save at least as many steps as you want to inject. save_steps: {attn_bank["save_steps"]}, inject_steps: {inject_steps}' - ) - - extra_args = {} if extra_args is None else extra_args - - model_options = extra_args.get("model_options", {}) - model_options = {**model_options} - transformer_options = model_options.get("transformer_options", {}) - transformer_options = {**transformer_options} - model_options["transformer_options"] = transformer_options - extra_args["model_options"] = model_options - - N = len(sigmas) - 1 - s_in = x.new_ones([x.shape[0]]) - for i in trange(N, disable=disable): - sigma = sigmas[i] - sigma_prev = sigmas[i + 1] - - transformer_options["rfedit"] = { - "step": i, - "process": "reverse" if i < inject_steps else None, - "pred": "first", - "bank": attn_bank, - "single_layers": single_layers, - "double_layers": double_layers, - } - - pred = model(x, s_in * sigma, **extra_args) - - transformer_options["rfedit"] = { - "step": i, - "process": "reverse" if i < inject_steps else None, - "pred": "mid", - "bank": attn_bank, - "single_layers": single_layers, - "double_layers": double_layers, - } - - img_mid = x + (sigma_prev - sigma) / 2 * pred - sigma_mid = sigma + (sigma_prev - sigma) / 2 - pred_mid = model(img_mid, s_in * sigma_mid, **extra_args) - - first_order = (pred_mid - pred) / ((sigma_prev - sigma) / 2) - x = ( - x - + (sigma_prev - sigma) * pred - + 0.5 * (sigma_prev - sigma) ** 2 * first_order - ) - - if callback is not None: - callback( - { - "x": x, - "denoised": x, - "i": i, - "sigma": sigmas[i], - "sigma_hat": sigmas[i], - } - ) - - return x - - return sample_reverse - - -class FlowEdit2ReverseSamplerNode: - @classmethod - def INPUT_TYPES(s): - return { - "required": { - "attn_inj": ("ATTN_INJ",), - "inject_steps": ( - "INT", - {"default": 0, "min": 0, "max": 1000, "step": 1}, - ), - }, - "optional": { - "single_layers": ("SINGLE_LAYERS",), - "double_layers": ("DOUBLE_LAYERS",), - }, - } - - RETURN_TYPES = ("SAMPLER",) - FUNCTION = "build" - - CATEGORY = "ltxtricks" - - def build( - self, - attn_inj, - inject_steps, - single_layers=DEFAULT_SINGLE_LAYERS, - double_layers=DEFAULT_DOUBLE_LAYERS, - ): - sampler = KSAMPLER( - get_sample_reverse(attn_inj, inject_steps, single_layers, double_layers) - ) - return (sampler,) - - -class PrepareAttnBankNode: - @classmethod - def INPUT_TYPES(s): - return { - "required": { - "latent": ("LATENT",), - "attn_inj": ("ATTN_INJ",), - } - } - - RETURN_TYPES = ("LATENT", "ATTN_INJ") - FUNCTION = "prepare" - - CATEGORY = "ltxtricks" - - def prepare(self, latent, attn_inj): - # Hack to force order of operations in ComfyUI graph - return (latent, attn_inj) - - -class RFSingleBlocksOverrideNode: - @classmethod - def INPUT_TYPES(s): - layers = {} - for i in range(38): - layers[f"{i}"] = ("BOOLEAN", {"default": i > 19}) - return {"required": layers} - - RETURN_TYPES = ("SINGLE_LAYERS",) - FUNCTION = "build" - - CATEGORY = "ltxtricks" - - def build(self, *args, **kwargs): - return (kwargs,) - - -class RFDoubleBlocksOverrideNode: - @classmethod - def INPUT_TYPES(s): - layers = {} - for i in range(19): - layers[f"{i}"] = ("BOOLEAN", {"default": False}) - return {"required": layers} - - RETURN_TYPES = ("DOUBLE_LAYERS",) - FUNCTION = "build" - - CATEGORY = "ltxtricks" - - def build(self, *args, **kwargs): - return (kwargs,) diff --git a/tricks/utils/attn_bank.py b/tricks/utils/attn_bank.py deleted file mode 100644 index 47efe98..0000000 --- a/tricks/utils/attn_bank.py +++ /dev/null @@ -1,16 +0,0 @@ -class AttentionBank: - def __init__(self, save_steps, block_map, inject_steps=None): - self._data = { - "save_steps": save_steps, - "block_map": block_map, - "inject_steps": inject_steps, - } - - def __getitem__(self, key): - return self._data[key] - - def __setitem__(self, key, value): - self._data[key] = value - - def get(self, key, default=None): - return self._data.get(key, default) diff --git a/tricks/utils/feta_enhance_utils.py b/tricks/utils/feta_enhance_utils.py deleted file mode 100644 index 3af9e8b..0000000 --- a/tricks/utils/feta_enhance_utils.py +++ /dev/null @@ -1,55 +0,0 @@ -import torch -from einops import rearrange - - -def _feta_score(query_image, key_image, head_dim, num_frames, enhance_weight): - scale = head_dim**-0.5 - query_image = query_image * scale - attn_temp = query_image @ key_image.transpose(-2, -1) # translate attn to float32 - attn_temp = attn_temp.to(torch.float32) - attn_temp = attn_temp.softmax(dim=-1) - - # Reshape to [batch_size * num_tokens, num_frames, num_frames] - attn_temp = attn_temp.reshape(-1, num_frames, num_frames) - - # Create a mask for diagonal elements - diag_mask = torch.eye(num_frames, device=attn_temp.device).bool() - diag_mask = diag_mask.unsqueeze(0).expand(attn_temp.shape[0], -1, -1) - - # Zero out diagonal elements - attn_wo_diag = attn_temp.masked_fill(diag_mask, 0) - - # Calculate mean for each token's attention matrix - # Number of off-diagonal elements per matrix is n*n - n - num_off_diag = num_frames * num_frames - num_frames - mean_scores = attn_wo_diag.sum(dim=(1, 2)) / num_off_diag - - enhance_scores = mean_scores.mean() * (num_frames + enhance_weight) - enhance_scores = enhance_scores.clamp(min=1) - return enhance_scores - - -def get_feta_scores(img_q, img_k, num_heads, transformer_options): - num_frames = transformer_options["original_shape"][2] - _, ST, dim = img_q.shape - head_dim = dim // num_heads - spatial_dim = ST // num_frames - - query_image = rearrange( - img_q, - "B (T S) (N C) -> (B S) N T C", - T=num_frames, - S=spatial_dim, - N=num_heads, - C=head_dim, - ) - key_image = rearrange( - img_k, - "B (T S) (N C) -> (B S) N T C", - T=num_frames, - S=spatial_dim, - N=num_heads, - C=head_dim, - ) - weight = transformer_options.get("feta_weight", 0) - return _feta_score(query_image, key_image, head_dim, num_frames, weight) diff --git a/tricks/utils/latent_guide.py b/tricks/utils/latent_guide.py deleted file mode 100644 index a1968b4..0000000 --- a/tricks/utils/latent_guide.py +++ /dev/null @@ -1,8 +0,0 @@ -import torch - - -class LatentGuide(torch.nn.Module): - def __init__(self, latent: torch.Tensor, index) -> None: - super().__init__() - self.index = index - self.register_buffer("latent", latent) diff --git a/tricks/utils/module_utils.py b/tricks/utils/module_utils.py deleted file mode 100644 index 528f7ee..0000000 --- a/tricks/utils/module_utils.py +++ /dev/null @@ -1,6 +0,0 @@ -def isinstance_str(x: object, cls_name: str): - for _cls in x.__class__.__mro__: - if _cls.__name__ == cls_name: - return True - - return False diff --git a/tricks/utils/noise_utils.py b/tricks/utils/noise_utils.py deleted file mode 100644 index db92cf9..0000000 --- a/tricks/utils/noise_utils.py +++ /dev/null @@ -1,23 +0,0 @@ -def get_alphacumprod(sigma): - return 1 / ((sigma * sigma) + 1) - - -def add_noise(src_latent, noise, sigma): - alphas_cumprod = get_alphacumprod(sigma) - - sqrt_alpha_prod = alphas_cumprod**0.5 - sqrt_alpha_prod = sqrt_alpha_prod.flatten() - while len(sqrt_alpha_prod.shape) < len(src_latent.shape): - sqrt_alpha_prod = sqrt_alpha_prod.unsqueeze(-1) - - sqrt_one_minus_alpha_prod = (1 - alphas_cumprod) ** 0.5 - sqrt_one_minus_alpha_prod = sqrt_one_minus_alpha_prod.flatten() - while len(sqrt_one_minus_alpha_prod.shape) < len(src_latent.shape): - sqrt_one_minus_alpha_prod = sqrt_one_minus_alpha_prod.unsqueeze(-1) - - noisy_samples = sqrt_alpha_prod * src_latent + sqrt_one_minus_alpha_prod * noise - return noisy_samples - - -def add_noise_flux(src_latent, noise, sigma): - return sigma * noise + (1.0 - sigma) * src_latent diff --git a/vae_patcher.py b/vae_patcher.py deleted file mode 100644 index fc6c48d..0000000 --- a/vae_patcher.py +++ /dev/null @@ -1,38 +0,0 @@ -from comfy.model_management import dtype_size - -from .nodes_registry import comfy_node - - -@comfy_node(name="LTXVPatcherVAE") -class LTXVPatcherVAE: - @classmethod - def INPUT_TYPES(s): - return { - "required": { - "vae": ("VAE",), - } - } - - RETURN_TYPES = ("VAE",) - FUNCTION = "patch" - CATEGORY = "lightricks/LTXV" - TITLE = "LTXV VAE Patcher" - - def patch(self, vae): - from q8_kernels.integration.patch_vae import patch_vae - - vae_model = vae.first_stage_model - vae.memory_used_decode = ( - lambda shape, dtype: shape[1] - * shape[2] - * shape[3] - * shape[4] - * 8 - * 8 - * 8 - * 3 - * dtype_size(dtype) - ) - - patch_vae(vae_model, patch_block=4) - return (vae,)