{
  "id": "e3f2b845-8f2c-4b5a-9caf-eac1029d3e7e",
  "revision": 0,
  "last_node_id": 148,
  "last_link_id": 291,
  "nodes": [
    {
      "id": 92,
      "type": "SaveVideo",
      "pos": [
        1880,
        4310
      ],
      "size": [
        900,
        850
      ],
      "flags": {},
      "order": 24,
      "mode": 0,
      "inputs": [
        {
          "name": "video",
          "type": "VIDEO",
          "link": 260
        }
      ],
      "outputs": [
        {
          "name": "video",
          "type": "VIDEO",
          "links": null
        }
      ],
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.33.0"
      },
      "widgets_values": [
        "video/FastH3_OmniRef",
        "auto",
        "auto",
        "auto"
      ],
      "widgets_values_named": {
        "filename_prefix": "video/FastH3_OmniRef",
        "format": "auto",
        "format.codec": "auto",
        "codec": "auto"
      }
    },
    {
      "id": 115,
      "type": "ResolutionSelector",
      "pos": [
        -1310,
        5310
      ],
      "size": [
        270,
        200
      ],
      "flags": {},
      "order": 0,
      "mode": 0,
      "showAdvanced": false,
      "inputs": [],
      "outputs": [
        {
          "name": "width",
          "type": "INT",
          "links": [
            276
          ]
        },
        {
          "name": "height",
          "type": "INT",
          "links": [
            277
          ]
        }
      ],
      "title": "Resolution Selector (Size)",
      "properties": {
        "Node name for S&R": "ResolutionSelector",
        "cnr_id": "comfy-core",
        "ver": "0.33.0"
      },
      "widgets_values": [
        "16:9 (Widescreen)",
        1,
        32
      ],
      "widgets_values_named": {
        "aspect_ratio": "16:9 (Widescreen)",
        "megapixels": 1,
        "multiple": 32
      },
      "color": "#322",
      "bgcolor": "#533"
    },
    {
      "id": 116,
      "type": "MarkdownNote",
      "pos": [
        -1980,
        4270
      ],
      "size": [
        570,
        880
      ],
      "flags": {},
      "order": 1,
      "mode": 0,
      "inputs": [],
      "outputs": [],
      "title": "Note: Fast Video FastH3",
      "properties": {},
      "widgets_values": [
        "## FastVideo FastH3 OmniRef\n\n[FastH3 OmniRef](https://huggingface.co/FastVideo/FastH3-OmniRef-Comfy) is FastVideo's reference-to-video checkpoint on top of MiniMax H3: the distilled student (step 3500) trained with trajectory-based PDD and a joint DMD loss, so it renders synchronized video and audio in **8 sampling steps**. VSA is trained on 128-token tiles; ComfyUI runs 64-token tiles and the difference is not visible, since the larger tile only speeds up the native kernel on datacenter GPUs.\n\n## About this workflow\n\nThis template runs the **reference-to-video (ref2va)** task with the `MiniMaxH3ReferenceToVideo` node. Reference images are woven into the packed sequence, so a character, a product or a location can be reused across shots while the model still generates the performance and the audio.\n\n**Key inputs**\n\n- **ref_images**: up to 9 reference images; two are wired here (`<Picture 1>` identity, `<Picture 2>` location). Add more slots on the node if you need them.\n- **ref_videos / ref_audios**: optional, up to 3 each. A reference video can carry its own soundtrack.\n- **prompt**: address the inputs by tag in connection order (`<Picture 1>`, `<Picture 2>`, …), then describe the shot, the motion and one line of dialogue; the audio follows the description.\n- **ref_image_size**: `match` downscales references to the output resolution (faster), `max` keeps up to a 2048px short edge for stronger identity fidelity at the cost of speed.\n- **Duration → length**: the `Float (Duration)` value is converted to the 17k+5 frame grid the model expects (5 s = 124 frames at 24fps).\n\n## Required settings\n\n- **Model Sparse Attention** must stay on method `vsa` with `keep_percent` 10: FastH3 checkpoints are trained with VSA and must never run plain block-sparse attention. `sol-attn` and `sla` are not compatible.\n- **Model Attention Backend** only picks the dense fallback used before `start_percent` and under `min_tokens`; `comfy kitchen attention` is the int8 kernel.\n- **MiniMaxH3SigmaShift** 12 / 3 is this checkpoint's video / audio shift. The FastH3 V2 text-to-video recipe (video shift 10) is not an OmniRef recipe, so do not copy it here.\n\n## Checkpoints\n\nTwo diffusion files are published for this model: the int8 convrot export used here (22.2 GB) and a bf16 export (44.2 GB). Load exactly one of them; the text encoders and VAEs are shared with the FastH3 V2 packaging. The NVFP4 AWQ option in the text encoder folder is a text encoder, not an NVFP4 export of this diffusion model.\n\n## Scope\n\nThis checkpoint is distilled for reference-to-video. Plain text-to-video works but is not its strength; use **FastVideo FastH3: Text to Video** or **Image to Video** for those tasks."
      ],
      "widgets_values_named": {
        "text": "## FastVideo FastH3 OmniRef\n\n[FastH3 OmniRef](https://huggingface.co/FastVideo/FastH3-OmniRef-Comfy) is FastVideo's reference-to-video checkpoint on top of MiniMax H3: the distilled student (step 3500) trained with trajectory-based PDD and a joint DMD loss, so it renders synchronized video and audio in **8 sampling steps**. VSA is trained on 128-token tiles; ComfyUI runs 64-token tiles and the difference is not visible, since the larger tile only speeds up the native kernel on datacenter GPUs.\n\n## About this workflow\n\nThis template runs the **reference-to-video (ref2va)** task with the `MiniMaxH3ReferenceToVideo` node. Reference images are woven into the packed sequence, so a character, a product or a location can be reused across shots while the model still generates the performance and the audio.\n\n**Key inputs**\n\n- **ref_images**: up to 9 reference images; two are wired here (`<Picture 1>` identity, `<Picture 2>` location). Add more slots on the node if you need them.\n- **ref_videos / ref_audios**: optional, up to 3 each. A reference video can carry its own soundtrack.\n- **prompt**: address the inputs by tag in connection order (`<Picture 1>`, `<Picture 2>`, …), then describe the shot, the motion and one line of dialogue; the audio follows the description.\n- **ref_image_size**: `match` downscales references to the output resolution (faster), `max` keeps up to a 2048px short edge for stronger identity fidelity at the cost of speed.\n- **Duration → length**: the `Float (Duration)` value is converted to the 17k+5 frame grid the model expects (5 s = 124 frames at 24fps).\n\n## Required settings\n\n- **Model Sparse Attention** must stay on method `vsa` with `keep_percent` 10: FastH3 checkpoints are trained with VSA and must never run plain block-sparse attention. `sol-attn` and `sla` are not compatible.\n- **Model Attention Backend** only picks the dense fallback used before `start_percent` and under `min_tokens`; `comfy kitchen attention` is the int8 kernel.\n- **MiniMaxH3SigmaShift** 12 / 3 is this checkpoint's video / audio shift. The FastH3 V2 text-to-video recipe (video shift 10) is not an OmniRef recipe, so do not copy it here.\n\n## Checkpoints\n\nTwo diffusion files are published for this model: the int8 convrot export used here (22.2 GB) and a bf16 export (44.2 GB). Load exactly one of them; the text encoders and VAEs are shared with the FastH3 V2 packaging. The NVFP4 AWQ option in the text encoder folder is a text encoder, not an NVFP4 export of this diffusion model.\n\n## Scope\n\nThis checkpoint is distilled for reference-to-video. Plain text-to-video works but is not its strength; use **FastVideo FastH3: Text to Video** or **Image to Video** for those tasks."
      },
      "color": "#222",
      "bgcolor": "#000"
    },
    {
      "id": 117,
      "type": "MarkdownNote",
      "pos": [
        -2510,
        4270
      ],
      "size": [
        470,
        900
      ],
      "flags": {},
      "order": 2,
      "mode": 0,
      "inputs": [],
      "outputs": [],
      "title": "Note: Model Links",
      "properties": {},
      "widgets_values": [
        "## Input Asset\n\n- [yellow_plane_ref.png](https://raw.githubusercontent.com/Comfy-Org/workflow_templates/refs/heads/main/input/yellow_plane_ref.png)\n\n## Model Links\n\n- [Hugging Face:Comfy-Org/MiniMax-H3](https://huggingface.co/Comfy-Org/MiniMax-H3)\n- [Hugging Face:FastVideo/FastH3-OmniRef-Comfy](https://huggingface.co/FastVideo/FastH3-OmniRef-Comfy)\n\n**ModelScope mirrors** (alternative repo location)\n\n- [ModelScope:Comfy-Org/MiniMax-H3](https://modelscope.cn/models/Comfy-Org/MiniMax-H3)\n\n**vae**\n\n- [minimax_h3_video_vae_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/MiniMax-H3/resolve/main/vae/minimax_h3_video_vae_int8_convrot.safetensors) (2.62 GB)\n- [minimax_h3_audio_vae_fp32.safetensors](https://huggingface.co/Comfy-Org/MiniMax-H3/resolve/main/vae/minimax_h3_audio_vae_fp32.safetensors) (577.2 MB)\n\n**diffusion_models**\n\n- [fasth3_omniref_8step_pruned_int8_convrot.safetensors](https://huggingface.co/FastVideo/FastH3-OmniRef-Comfy/resolve/main/diffusion_models/fasth3_omniref_8step_pruned_int8_convrot.safetensors)\n\n**text_encoders**\n\n- [qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors](https://huggingface.co/Comfy-Org/MiniMax-H3/resolve/main/text_encoders/qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors) (14.61 GB)\n\n## Model Storage Location\n\n```\n📂 ComfyUI/\n├── 📂 models/\n│   ├── 📂 vae/\n│   │   ├── minimax_h3_video_vae_int8_convrot.safetensors\n│   │   └── minimax_h3_audio_vae_fp32.safetensors\n│   ├── 📂 diffusion_models/\n│   │   └── fasth3_omniref_8step_pruned_int8_convrot.safetensors\n│   └── 📂 text_encoders/\n│       └── qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors\n```\n\n## Report Issue\n\nNote: Please update ComfyUI first ([guide](https://docs.comfy.org/installation/update_comfyui)) and prepare required models. Desktop/Cloud updates follow stable releases, so some nightly-supported models may not be available yet.\n\n- Cannot run / runtime errors: [ComfyUI/issues](https://github.com/comfyanonymous/ComfyUI/issues)\n- UI / frontend issues: [ComfyUI_frontend/issues](https://github.com/Comfy-Org/ComfyUI_frontend/issues)\n- Workflow issues: [workflow_templates/issues](https://github.com/Comfy-Org/workflow_templates/issues)\n"
      ],
      "widgets_values_named": {
        "text": "## Input Asset\n\n- [yellow_plane_ref.png](https://raw.githubusercontent.com/Comfy-Org/workflow_templates/refs/heads/main/input/yellow_plane_ref.png)\n\n## Model Links\n\n- [Hugging Face:Comfy-Org/MiniMax-H3](https://huggingface.co/Comfy-Org/MiniMax-H3)\n- [Hugging Face:FastVideo/FastH3-OmniRef-Comfy](https://huggingface.co/FastVideo/FastH3-OmniRef-Comfy)\n\n**ModelScope mirrors** (alternative repo location)\n\n- [ModelScope:Comfy-Org/MiniMax-H3](https://modelscope.cn/models/Comfy-Org/MiniMax-H3)\n\n**vae**\n\n- [minimax_h3_video_vae_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/MiniMax-H3/resolve/main/vae/minimax_h3_video_vae_int8_convrot.safetensors) (2.62 GB)\n- [minimax_h3_audio_vae_fp32.safetensors](https://huggingface.co/Comfy-Org/MiniMax-H3/resolve/main/vae/minimax_h3_audio_vae_fp32.safetensors) (577.2 MB)\n\n**diffusion_models**\n\n- [fasth3_omniref_8step_pruned_int8_convrot.safetensors](https://huggingface.co/FastVideo/FastH3-OmniRef-Comfy/resolve/main/diffusion_models/fasth3_omniref_8step_pruned_int8_convrot.safetensors)\n\n**text_encoders**\n\n- [qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors](https://huggingface.co/Comfy-Org/MiniMax-H3/resolve/main/text_encoders/qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors) (14.61 GB)\n\n## Model Storage Location\n\n```\n📂 ComfyUI/\n├── 📂 models/\n│   ├── 📂 vae/\n│   │   ├── minimax_h3_video_vae_int8_convrot.safetensors\n│   │   └── minimax_h3_audio_vae_fp32.safetensors\n│   ├── 📂 diffusion_models/\n│   │   └── fasth3_omniref_8step_pruned_int8_convrot.safetensors\n│   └── 📂 text_encoders/\n│       └── qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors\n```\n\n## Report Issue\n\nNote: Please update ComfyUI first ([guide](https://docs.comfy.org/installation/update_comfyui)) and prepare required models. Desktop/Cloud updates follow stable releases, so some nightly-supported models may not be available yet.\n\n- Cannot run / runtime errors: [ComfyUI/issues](https://github.com/comfyanonymous/ComfyUI/issues)\n- UI / frontend issues: [ComfyUI_frontend/issues](https://github.com/Comfy-Org/ComfyUI_frontend/issues)\n- Workflow issues: [workflow_templates/issues](https://github.com/Comfy-Org/workflow_templates/issues)\n"
      },
      "color": "#222",
      "bgcolor": "#000"
    },
    {
      "id": 119,
      "type": "VAELoader",
      "pos": [
        -1310,
        4790
      ],
      "size": [
        640,
        100
      ],
      "flags": {},
      "order": 3,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "VAE",
          "type": "VAE",
          "links": [
            251,
            273
          ]
        }
      ],
      "properties": {
        "Node name for S&R": "VAELoader",
        "cnr_id": "comfy-core",
        "ver": "0.33.0",
        "models": [
          {
            "name": "minimax_h3_video_vae_int8_convrot.safetensors",
            "url": "https://huggingface.co/Comfy-Org/MiniMax-H3/resolve/main/vae/minimax_h3_video_vae_int8_convrot.safetensors",
            "directory": "vae"
          }
        ]
      },
      "widgets_values": [
        "minimax_h3_video_vae_int8_convrot.safetensors"
      ],
      "widgets_values_named": {
        "vae_name": "minimax_h3_video_vae_int8_convrot.safetensors"
      }
    },
    {
      "id": 120,
      "type": "VAELoader",
      "pos": [
        -1310,
        4950
      ],
      "size": [
        640,
        100
      ],
      "flags": {},
      "order": 4,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "VAE",
          "type": "VAE",
          "links": [
            250,
            274
          ]
        }
      ],
      "properties": {
        "Node name for S&R": "VAELoader",
        "cnr_id": "comfy-core",
        "ver": "0.33.0",
        "models": [
          {
            "name": "minimax_h3_audio_vae_fp32.safetensors",
            "url": "https://huggingface.co/Comfy-Org/MiniMax-H3/resolve/main/vae/minimax_h3_audio_vae_fp32.safetensors",
            "directory": "vae"
          }
        ]
      },
      "widgets_values": [
        "minimax_h3_audio_vae_fp32.safetensors"
      ],
      "widgets_values_named": {
        "vae_name": "minimax_h3_audio_vae_fp32.safetensors"
      }
    },
    {
      "id": 121,
      "type": "VAEDecodeAudio",
      "pos": [
        1400,
        4640
      ],
      "size": [
        230,
        90
      ],
      "flags": {
        "collapsed": false
      },
      "order": 22,
      "mode": 0,
      "inputs": [
        {
          "name": "samples",
          "type": "LATENT",
          "link": 281
        },
        {
          "name": "vae",
          "type": "VAE",
          "link": 250
        }
      ],
      "outputs": [
        {
          "name": "AUDIO",
          "type": "AUDIO",
          "links": [
            259
          ]
        }
      ],
      "properties": {
        "Node name for S&R": "VAEDecodeAudio",
        "cnr_id": "comfy-core",
        "ver": "0.33.0"
      }
    },
    {
      "id": 122,
      "type": "VAEDecode",
      "pos": [
        1400,
        4490
      ],
      "size": [
        230,
        90
      ],
      "flags": {
        "collapsed": false
      },
      "order": 21,
      "mode": 0,
      "inputs": [
        {
          "name": "samples",
          "type": "LATENT",
          "link": 280
        },
        {
          "name": "vae",
          "type": "VAE",
          "link": 251
        }
      ],
      "outputs": [
        {
          "name": "IMAGE",
          "type": "IMAGE",
          "links": [
            258
          ]
        }
      ],
      "properties": {
        "Node name for S&R": "VAEDecode",
        "cnr_id": "comfy-core",
        "ver": "0.33.0"
      }
    },
    {
      "id": 123,
      "type": "KSamplerSelect",
      "pos": [
        570,
        4720
      ],
      "size": [
        370,
        100
      ],
      "flags": {},
      "order": 5,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "SAMPLER",
          "type": "SAMPLER",
          "links": [
            255
          ]
        }
      ],
      "properties": {
        "Node name for S&R": "KSamplerSelect",
        "cnr_id": "comfy-core",
        "ver": "0.33.0"
      },
      "widgets_values": [
        "euler"
      ],
      "widgets_values_named": {
        "sampler_name": "euler"
      }
    },
    {
      "id": 124,
      "type": "BasicScheduler",
      "pos": [
        570,
        4880
      ],
      "size": [
        370,
        160
      ],
      "flags": {},
      "order": 18,
      "mode": 0,
      "inputs": [
        {
          "name": "model",
          "type": "MODEL",
          "link": 286
        }
      ],
      "outputs": [
        {
          "name": "SIGMAS",
          "type": "SIGMAS",
          "links": [
            256
          ]
        }
      ],
      "properties": {
        "Node name for S&R": "BasicScheduler",
        "cnr_id": "comfy-core",
        "ver": "0.33.0"
      },
      "widgets_values": [
        "simple",
        8,
        1
      ],
      "widgets_values_named": {
        "scheduler": "simple",
        "steps": 8,
        "denoise": 1
      }
    },
    {
      "id": 125,
      "type": "SamplerCustomAdvanced",
      "pos": [
        1030,
        4590
      ],
      "size": [
        230,
        170
      ],
      "flags": {},
      "order": 20,
      "mode": 0,
      "inputs": [
        {
          "name": "noise",
          "type": "NOISE",
          "link": 253
        },
        {
          "name": "guider",
          "type": "GUIDER",
          "link": 254
        },
        {
          "name": "sampler",
          "type": "SAMPLER",
          "link": 255
        },
        {
          "name": "sigmas",
          "type": "SIGMAS",
          "link": 256
        },
        {
          "name": "latent_image",
          "type": "LATENT",
          "link": 271
        }
      ],
      "outputs": [
        {
          "name": "output",
          "type": "LATENT",
          "links": [
            280,
            281
          ]
        },
        {
          "name": "denoised_output",
          "type": "LATENT",
          "links": []
        }
      ],
      "properties": {
        "Node name for S&R": "SamplerCustomAdvanced",
        "cnr_id": "comfy-core",
        "ver": "0.33.0"
      }
    },
    {
      "id": 126,
      "type": "BasicGuider",
      "pos": [
        570,
        4570
      ],
      "size": [
        360,
        90
      ],
      "flags": {},
      "order": 19,
      "mode": 0,
      "inputs": [
        {
          "name": "model",
          "type": "MODEL",
          "link": 287
        },
        {
          "name": "conditioning",
          "type": "CONDITIONING",
          "link": 270
        }
      ],
      "outputs": [
        {
          "name": "GUIDER",
          "type": "GUIDER",
          "links": [
            254
          ]
        }
      ],
      "properties": {
        "Node name for S&R": "BasicGuider",
        "cnr_id": "comfy-core",
        "ver": "0.33.0"
      }
    },
    {
      "id": 127,
      "type": "UNETLoader",
      "pos": [
        -1310,
        4400
      ],
      "size": [
        640,
        120
      ],
      "flags": {},
      "order": 6,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "MODEL",
          "type": "MODEL",
          "links": [
            283
          ]
        }
      ],
      "properties": {
        "Node name for S&R": "UNETLoader",
        "cnr_id": "comfy-core",
        "ver": "0.33.0",
        "models": [
          {
            "name": "fasth3_omniref_8step_pruned_int8_convrot.safetensors",
            "url": "https://huggingface.co/FastVideo/FastH3-OmniRef-Comfy/resolve/main/diffusion_models/fasth3_omniref_8step_pruned_int8_convrot.safetensors",
            "directory": "diffusion_models"
          }
        ]
      },
      "widgets_values": [
        "fasth3_omniref_8step_pruned_int8_convrot.safetensors",
        "default"
      ],
      "widgets_values_named": {
        "unet_name": "fasth3_omniref_8step_pruned_int8_convrot.safetensors",
        "weight_dtype": "default"
      }
    },
    {
      "id": 128,
      "type": "CLIPLoader",
      "pos": [
        -1310,
        4580
      ],
      "size": [
        640,
        150
      ],
      "flags": {},
      "order": 7,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "CLIP",
          "type": "CLIP",
          "links": [
            272
          ]
        }
      ],
      "properties": {
        "Node name for S&R": "CLIPLoader",
        "cnr_id": "comfy-core",
        "ver": "0.33.0",
        "models": [
          {
            "name": "qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors",
            "url": "https://huggingface.co/Comfy-Org/MiniMax-H3/resolve/main/text_encoders/qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors",
            "directory": "text_encoders"
          }
        ]
      },
      "widgets_values": [
        "qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors",
        "minimax",
        "default"
      ],
      "widgets_values_named": {
        "clip_name": "qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors",
        "type": "minimax",
        "device": "default"
      }
    },
    {
      "id": 129,
      "type": "RandomNoise",
      "pos": [
        570,
        4390
      ],
      "size": [
        360,
        120
      ],
      "flags": {},
      "order": 8,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "NOISE",
          "type": "NOISE",
          "links": [
            253
          ]
        }
      ],
      "properties": {
        "Node name for S&R": "RandomNoise",
        "cnr_id": "comfy-core",
        "ver": "0.33.0"
      },
      "widgets_values": [
        771204598,
        "fixed"
      ],
      "widgets_values_named": {
        "noise_seed": 771204598,
        "control_after_generate": "fixed"
      }
    },
    {
      "id": 130,
      "type": "CreateVideo",
      "pos": [
        1400,
        4790
      ],
      "size": [
        270,
        200
      ],
      "flags": {},
      "order": 23,
      "mode": 0,
      "inputs": [
        {
          "name": "images",
          "type": "IMAGE",
          "link": 258
        },
        {
          "name": "audio",
          "shape": 7,
          "type": "AUDIO",
          "link": 259
        }
      ],
      "outputs": [
        {
          "name": "VIDEO",
          "type": "VIDEO",
          "links": [
            260
          ]
        }
      ],
      "properties": {
        "Node name for S&R": "CreateVideo",
        "cnr_id": "comfy-core",
        "ver": "0.33.0"
      },
      "widgets_values": [
        24,
        8,
        "sRGB",
        "none"
      ],
      "widgets_values_named": {
        "fps": 24,
        "bit_depth": 8,
        "color_space": "sRGB",
        "codec": "none"
      }
    },
    {
      "id": 131,
      "type": "ComfyMathExpression",
      "pos": [
        -1310,
        5730
      ],
      "size": [
        230,
        80
      ],
      "flags": {
        "collapsed": true
      },
      "order": 14,
      "mode": 0,
      "inputs": [
        {
          "label": "a",
          "name": "values.a",
          "type": "FLOAT,INT,BOOLEAN",
          "link": 261
        },
        {
          "name": "values.b",
          "shape": 7,
          "type": "FLOAT,INT,BOOLEAN",
          "link": null
        }
      ],
      "outputs": [
        {
          "name": "FLOAT",
          "type": "FLOAT",
          "links": []
        },
        {
          "name": "INT",
          "type": "INT",
          "links": [
            275
          ]
        },
        {
          "name": "BOOL",
          "type": "BOOLEAN",
          "links": []
        }
      ],
      "properties": {
        "Node name for S&R": "ComfyMathExpression",
        "cnr_id": "comfy-core",
        "ver": "0.33.0"
      },
      "widgets_values": [
        "max(5, round(a * 24)) + (5 - (max(5, round(a * 24)) % 17)) % 17"
      ],
      "widgets_values_named": {
        "expression": "max(5, round(a * 24)) + (5 - (max(5, round(a * 24)) % 17)) % 17"
      }
    },
    {
      "id": 132,
      "type": "PrimitiveFloat",
      "pos": [
        -1310,
        5570
      ],
      "size": [
        270,
        100
      ],
      "flags": {},
      "order": 9,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "FLOAT",
          "type": "FLOAT",
          "links": [
            261
          ]
        }
      ],
      "title": "Float (Duration)",
      "properties": {
        "Node name for S&R": "PrimitiveFloat",
        "cnr_id": "comfy-core",
        "ver": "0.33.0"
      },
      "widgets_values": [
        5
      ],
      "widgets_values_named": {
        "value": 5
      },
      "color": "#322",
      "bgcolor": "#533"
    },
    {
      "id": 136,
      "type": "MiniMaxH3ReferenceToVideo",
      "pos": [
        10,
        4400
      ],
      "size": [
        400,
        390
      ],
      "flags": {},
      "order": 16,
      "mode": 0,
      "inputs": [
        {
          "name": "clip",
          "type": "CLIP",
          "link": 272
        },
        {
          "name": "vae",
          "shape": 7,
          "type": "VAE",
          "link": 273
        },
        {
          "name": "audio_vae",
          "shape": 7,
          "type": "VAE",
          "link": 274
        },
        {
          "label": "ref_image_0",
          "name": "ref_images.ref_image_0",
          "shape": 7,
          "type": "IMAGE",
          "link": 278
        },
        {
          "name": "ref_images.ref_image_1",
          "shape": 7,
          "type": "IMAGE",
          "link": null
        },
        {
          "label": "ref_video_0",
          "name": "ref_videos.ref_video_0",
          "shape": 7,
          "type": "IMAGE",
          "link": null
        },
        {
          "label": "ref_video_audio_0",
          "name": "ref_video_audios.ref_video_audio_0",
          "shape": 7,
          "type": "AUDIO",
          "link": null
        },
        {
          "label": "ref_audio_0",
          "name": "ref_audios.ref_audio_0",
          "shape": 7,
          "type": "AUDIO",
          "link": null
        },
        {
          "name": "ref_audios.ref_audio_1",
          "shape": 7,
          "type": "AUDIO",
          "link": null
        },
        {
          "name": "ref_audios.ref_audio_2",
          "shape": 7,
          "type": "AUDIO",
          "link": null
        },
        {
          "name": "prompt",
          "type": "STRING",
          "widget": {
            "name": "prompt"
          },
          "link": 279
        },
        {
          "name": "width",
          "type": "INT",
          "widget": {
            "name": "width"
          },
          "link": 276
        },
        {
          "name": "height",
          "type": "INT",
          "widget": {
            "name": "height"
          },
          "link": 277
        },
        {
          "name": "length",
          "type": "INT",
          "widget": {
            "name": "length"
          },
          "link": 275
        }
      ],
      "outputs": [
        {
          "name": "positive",
          "type": "CONDITIONING",
          "links": [
            270
          ]
        },
        {
          "name": "LATENT",
          "type": "LATENT",
          "links": [
            271
          ]
        }
      ],
      "properties": {
        "Node name for S&R": "MiniMaxH3ReferenceToVideo",
        "cnr_id": "comfy-core",
        "ver": "0.33.0"
      },
      "widgets_values": [
        "",
        1344,
        768,
        124,
        "match"
      ],
      "widgets_values_named": {
        "prompt": "",
        "width": 1344,
        "height": 768,
        "length": 124,
        "ref_image_size": "match"
      },
      "color": "#322",
      "bgcolor": "#533"
    },
    {
      "id": 137,
      "type": "LoadImage",
      "pos": [
        -380,
        5350
      ],
      "size": [
        390,
        490
      ],
      "flags": {},
      "order": 10,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "IMAGE",
          "type": "IMAGE",
          "links": [
            278
          ]
        },
        {
          "name": "MASK",
          "type": "MASK",
          "links": null
        }
      ],
      "properties": {
        "Node name for S&R": "LoadImage",
        "cnr_id": "comfy-core",
        "ver": "0.33.0"
      },
      "widgets_values": [
        "yellow_plane_ref.png",
        "image"
      ],
      "widgets_values_named": {
        "image": "yellow_plane_ref.png",
        "upload": "image"
      }
    },
    {
      "id": 138,
      "type": "PrimitiveStringMultiline",
      "pos": [
        -930,
        5330
      ],
      "size": [
        470,
        520
      ],
      "flags": {},
      "order": 11,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "STRING",
          "type": "STRING",
          "links": [
            279
          ]
        }
      ],
      "title": "Input Text (Prompt)",
      "properties": {
        "Node name for S&R": "PrimitiveStringMultiline",
        "cnr_id": "comfy-core",
        "ver": "0.33.0"
      },
      "widgets_values": [
        "subject_definitions:\n<Subject 1> is the plane in <Picture 1>: a yellow propeller plane climbing vertically with a smoke trail.\n<Subject 2> is the setting in <Picture 1>: a towering cumulus cloud against a near-black sky.\n\nsummary:\n[reference generation] The target video is a 5-second, multi-cut cinematic aviation film. The plane climbs vertically, stalls at the top and tumbles into a dramatic dive.\n\nretention_analysis:\n<Subject 1> (appears in [Shot 1], [Shot 2]): fully_preserved - the yellow plane and white smoke trail are retained.\n<Subject 2> (appears in [Shot 1], [Shot 2]): fully_preserved - the towering cumulus and dark sky are retained.\n\ndetailed_description:\nThe target video is a striking, high-contrast aerial film with bright sunlit clouds, deep dark sky and dynamic camera moves.\n[Shot 1] A wide shot matches <Picture 1>: <Subject 1> climbs straight up above <Subject 2>, smoke trail curling, and the camera tilts up with it.\n[Shot 2] At 00:02.000, the shot cuts to a beautiful close-up of the propeller and yellow nose as it slows at the top; the plane stalls, flips over and the camera follows it diving toward the bright cloud.\n\noverall_soundscape:\nStraining engine, wind, a sudden silence at the stall and a roaring dive.\n\nnon_diegetic_music:\nTense rising strings that break into a thrilling crescendo."
      ],
      "widgets_values_named": {
        "value": "subject_definitions:\n<Subject 1> is the plane in <Picture 1>: a yellow propeller plane climbing vertically with a smoke trail.\n<Subject 2> is the setting in <Picture 1>: a towering cumulus cloud against a near-black sky.\n\nsummary:\n[reference generation] The target video is a 5-second, multi-cut cinematic aviation film. The plane climbs vertically, stalls at the top and tumbles into a dramatic dive.\n\nretention_analysis:\n<Subject 1> (appears in [Shot 1], [Shot 2]): fully_preserved - the yellow plane and white smoke trail are retained.\n<Subject 2> (appears in [Shot 1], [Shot 2]): fully_preserved - the towering cumulus and dark sky are retained.\n\ndetailed_description:\nThe target video is a striking, high-contrast aerial film with bright sunlit clouds, deep dark sky and dynamic camera moves.\n[Shot 1] A wide shot matches <Picture 1>: <Subject 1> climbs straight up above <Subject 2>, smoke trail curling, and the camera tilts up with it.\n[Shot 2] At 00:02.000, the shot cuts to a beautiful close-up of the propeller and yellow nose as it slows at the top; the plane stalls, flips over and the camera follows it diving toward the bright cloud.\n\noverall_soundscape:\nStraining engine, wind, a sudden silence at the stall and a roaring dive.\n\nnon_diegetic_music:\nTense rising strings that break into a thrilling crescendo."
      },
      "color": "#322",
      "bgcolor": "#533"
    },
    {
      "id": 141,
      "type": "MiniMaxH3SigmaShift",
      "pos": [
        -500,
        4330
      ],
      "size": [
        300,
        140
      ],
      "flags": {},
      "order": 13,
      "mode": 0,
      "inputs": [
        {
          "name": "model",
          "type": "MODEL",
          "link": 283
        }
      ],
      "outputs": [
        {
          "name": "MODEL",
          "type": "MODEL",
          "links": [
            284
          ]
        }
      ],
      "properties": {
        "Node name for S&R": "MiniMaxH3SigmaShift"
      },
      "widgets_values": [
        12,
        3
      ],
      "widgets_values_named": {
        "shift_video": 12,
        "shift_audio": 3
      }
    },
    {
      "id": 142,
      "type": "ModelAttentionBackend",
      "pos": [
        -500,
        4540
      ],
      "size": [
        320,
        140
      ],
      "flags": {},
      "order": 15,
      "mode": 0,
      "inputs": [
        {
          "name": "model",
          "type": "MODEL",
          "link": 284
        }
      ],
      "outputs": [
        {
          "name": "model",
          "type": "MODEL",
          "links": [
            285
          ]
        }
      ],
      "properties": {
        "Node name for S&R": "ModelAttentionBackend"
      },
      "widgets_values": [
        "comfy kitchen attention"
      ],
      "widgets_values_named": {
        "attention": "comfy kitchen attention"
      }
    },
    {
      "id": 143,
      "type": "BlockSparseAttention",
      "pos": [
        -500,
        4740
      ],
      "size": [
        340,
        340
      ],
      "flags": {},
      "order": 17,
      "mode": 0,
      "inputs": [
        {
          "name": "model",
          "type": "MODEL",
          "link": 285
        }
      ],
      "outputs": [
        {
          "name": "model",
          "type": "MODEL",
          "links": [
            286,
            287
          ]
        }
      ],
      "properties": {
        "Node name for S&R": "BlockSparseAttention"
      },
      "widgets_values": [
        "vsa",
        10,
        0,
        1,
        "",
        12288,
        256,
        "exact_kv_and_rows",
        false
      ],
      "widgets_values_named": {
        "selection": "vsa",
        "selection.keep_percent": 10,
        "start_percent": 0,
        "end_percent": 1,
        "dense_blocks": "",
        "min_tokens": 12288,
        "extra_tokens": 256,
        "sink_conditioning": "exact_kv_and_rows",
        "verbose": false
      }
    },
    {
      "id": 148,
      "type": "MarkdownNote",
      "pos": [
        -1730,
        5490
      ],
      "size": [
        310,
        100
      ],
      "flags": {},
      "order": 12,
      "mode": 0,
      "inputs": [],
      "outputs": [],
      "title": "Note",
      "properties": {},
      "widgets_values": [
        "At full `1344x768` (around 1MP) and `362` frames (15s), VSA sparse attention is about 2x faster than the int8 attention backend; at shorter, smaller clips it offers little speedup. This template uses `120 frames` (about `5s`) just to avoid OOM on some low-VRAM GPUs."
      ],
      "widgets_values_named": {
        "text": "At full `1344x768` (around 1MP) and `362` frames (15s), VSA sparse attention is about 2x faster than the int8 attention backend; at shorter, smaller clips it offers little speedup. This template uses `120 frames` (about `5s`) just to avoid OOM on some low-VRAM GPUs."
      },
      "color": "#322",
      "bgcolor": "#533"
    }
  ],
  "links": [
    [
      250,
      120,
      0,
      121,
      1,
      "VAE"
    ],
    [
      251,
      119,
      0,
      122,
      1,
      "VAE"
    ],
    [
      253,
      129,
      0,
      125,
      0,
      "NOISE"
    ],
    [
      254,
      126,
      0,
      125,
      1,
      "GUIDER"
    ],
    [
      255,
      123,
      0,
      125,
      2,
      "SAMPLER"
    ],
    [
      256,
      124,
      0,
      125,
      3,
      "SIGMAS"
    ],
    [
      258,
      122,
      0,
      130,
      0,
      "IMAGE"
    ],
    [
      259,
      121,
      0,
      130,
      1,
      "AUDIO"
    ],
    [
      270,
      136,
      0,
      126,
      1,
      "CONDITIONING"
    ],
    [
      271,
      136,
      1,
      125,
      4,
      "LATENT"
    ],
    [
      280,
      125,
      0,
      122,
      0,
      "LATENT"
    ],
    [
      281,
      125,
      0,
      121,
      0,
      "LATENT"
    ],
    [
      283,
      127,
      0,
      141,
      0,
      "MODEL"
    ],
    [
      284,
      141,
      0,
      142,
      0,
      "MODEL"
    ],
    [
      286,
      143,
      0,
      124,
      0,
      "MODEL"
    ],
    [
      287,
      143,
      0,
      126,
      0,
      "MODEL"
    ],
    [
      260,
      130,
      0,
      92,
      0,
      "VIDEO"
    ],
    [
      261,
      132,
      0,
      131,
      0,
      "FLOAT"
    ],
    [
      272,
      128,
      0,
      136,
      0,
      "CLIP"
    ],
    [
      273,
      119,
      0,
      136,
      1,
      "VAE"
    ],
    [
      274,
      120,
      0,
      136,
      2,
      "VAE"
    ],
    [
      278,
      137,
      0,
      136,
      3,
      "IMAGE"
    ],
    [
      285,
      142,
      0,
      143,
      0,
      "MODEL"
    ],
    [
      279,
      138,
      0,
      136,
      10,
      "STRING"
    ],
    [
      276,
      115,
      0,
      136,
      11,
      "INT"
    ],
    [
      277,
      115,
      1,
      136,
      12,
      "INT"
    ],
    [
      275,
      131,
      1,
      136,
      13,
      "INT"
    ]
  ],
  "groups": [
    {
      "id": 1,
      "title": "Models",
      "bounding": [
        -1380,
        4240,
        778.0522044066522,
        916.8025809573492
      ],
      "color": "#3f789e",
      "flags": {}
    },
    {
      "id": 2,
      "title": "Model Patches",
      "bounding": [
        -560,
        4240,
        460,
        920
      ],
      "color": "#3f789e",
      "flags": {}
    },
    {
      "id": 3,
      "title": "Conditioning",
      "bounding": [
        -70,
        4240,
        551.5619079772382,
        921.6712723524925
      ],
      "color": "#A88",
      "flags": {}
    },
    {
      "id": 4,
      "title": "Sampling",
      "bounding": [
        510,
        4240,
        790,
        920
      ],
      "color": "#3f789e",
      "flags": {}
    },
    {
      "id": 5,
      "title": "Decoding and create video",
      "bounding": [
        1330,
        4240,
        490,
        920
      ],
      "color": "#3f789e",
      "flags": {}
    },
    {
      "id": 6,
      "title": "User Inputs",
      "bounding": [
        -1380,
        5200,
        1870,
        710
      ],
      "color": "#A88",
      "flags": {}
    }
  ],
  "config": {},
  "extra": {
    "ds": {
      "scale": 0.37091081850843705,
      "offset": [
        2684.4916520437455,
        -3573.687744684449
      ]
    },
    "frontendVersion": "1.55.18",
    "VHS_latentpreview": false,
    "VHS_latentpreviewrate": 0,
    "VHS_MetadataImage": true,
    "VHS_KeepIntermediate": true
  },
  "version": 0.4
}