{
  "config": {},
  "definitions": {
    "subgraphs": [
      {
        "config": {},
        "extra": {},
        "groups": [],
        "id": "8d69124f-cc0e-4891-b9ca-9c1b04432c40",
        "inputNode": {
          "bounding": [
            -1360.2699693627085,
            2039.1932817190036,
            149.65234375,
            120
          ],
          "id": -10
        },
        "inputs": [
          {
            "id": "24e9d9f4-e336-4ce8-af40-9056b5823c6b",
            "label": "input_video",
            "linkIds": [
              5
            ],
            "localized_name": "images",
            "name": "images",
            "pos": [
              -1230.6176256127085,
              2059.1932817190036
            ],
            "type": "IMAGE"
          },
          {
            "id": "954f9003-3a40-4089-b963-62b5e5be63c2",
            "linkIds": [
              9
            ],
            "localized_name": "video_info",
            "name": "video_info",
            "pos": [
              -1230.6176256127085,
              2079.1932817190036
            ],
            "type": "VHS_VIDEOINFO"
          },
          {
            "id": "c323dbb0-1d85-49d3-95d4-bb17fe03421f",
            "label": "interpolation_factor",
            "linkIds": [
              22
            ],
            "name": "value",
            "pos": [
              -1230.6176256127085,
              2099.1932817190036
            ],
            "type": "INT"
          },
          {
            "id": "55bb8928-582a-4956-b5d7-6affdd9ec59c",
            "linkIds": [
              23
            ],
            "name": "model",
            "pos": [
              -1230.6176256127085,
              2119.1932817190036
            ],
            "type": "COMBO"
          }
        ],
        "links": [
          {
            "id": 2,
            "origin_id": 5,
            "origin_slot": 0,
            "target_id": 4,
            "target_slot": 0,
            "type": "GIMMVIF_MODEL"
          },
          {
            "id": 13,
            "origin_id": 11,
            "origin_slot": 0,
            "target_id": 4,
            "target_slot": 2,
            "type": "INT"
          },
          {
            "id": 5,
            "origin_id": -10,
            "origin_slot": 0,
            "target_id": 4,
            "target_slot": 1,
            "type": "IMAGE"
          },
          {
            "id": 9,
            "origin_id": -10,
            "origin_slot": 1,
            "target_id": 10,
            "target_slot": 0,
            "type": "VHS_VIDEOINFO"
          },
          {
            "id": 4,
            "origin_id": 4,
            "origin_slot": 0,
            "target_id": -20,
            "target_slot": 0,
            "type": "IMAGE"
          },
          {
            "id": 22,
            "origin_id": -10,
            "origin_slot": 2,
            "target_id": 11,
            "target_slot": 0,
            "type": "INT"
          },
          {
            "id": 23,
            "origin_id": -10,
            "origin_slot": 3,
            "target_id": 5,
            "target_slot": 0,
            "type": "COMBO"
          },
          {
            "id": 24,
            "origin_id": 10,
            "origin_slot": 0,
            "target_id": 14,
            "target_slot": 0,
            "type": "FLOAT"
          },
          {
            "id": 25,
            "origin_id": 11,
            "origin_slot": 0,
            "target_id": 14,
            "target_slot": 1,
            "type": "INT"
          },
          {
            "id": 26,
            "origin_id": 14,
            "origin_slot": 0,
            "target_id": -20,
            "target_slot": 1,
            "type": "FLOAT"
          }
        ],
        "name": "GIMM Frame Interpolation",
        "nodes": [
          {
            "flags": {},
            "id": 4,
            "inputs": [
              {
                "link": 2,
                "localized_name": "gimmvfi_model",
                "name": "gimmvfi_model",
                "type": "GIMMVIF_MODEL"
              },
              {
                "link": 5,
                "localized_name": "images",
                "name": "images",
                "type": "IMAGE"
              },
              {
                "link": 13,
                "localized_name": "interpolation_factor",
                "name": "interpolation_factor",
                "type": "INT",
                "widget": {
                  "name": "interpolation_factor"
                }
              }
            ],
            "mode": 0,
            "order": 0,
            "outputs": [
              {
                "links": [
                  4
                ],
                "localized_name": "images",
                "name": "images",
                "type": "IMAGE"
              },
              {
                "links": null,
                "localized_name": "flow_tensors",
                "name": "flow_tensors",
                "type": "IMAGE"
              }
            ],
            "pos": [
              -680,
              1680
            ],
            "properties": {
              "Node name for S&R": "GIMMVFI_interpolate"
            },
            "size": [
              280,
              220
            ],
            "type": "GIMMVFI_interpolate",
            "widgets_values": [
              1,
              2,
              53516250445155,
              "randomize",
              false
            ]
          },
          {
            "flags": {},
            "id": 5,
            "inputs": [
              {
                "link": 23,
                "localized_name": "model",
                "name": "model",
                "type": "COMBO",
                "widget": {
                  "name": "model"
                }
              }
            ],
            "mode": 0,
            "order": 1,
            "outputs": [
              {
                "links": [
                  2
                ],
                "localized_name": "gimmvfi_model",
                "name": "gimmvfi_model",
                "type": "GIMMVIF_MODEL"
              }
            ],
            "pos": [
              -1180,
              1680
            ],
            "properties": {
              "Node name for S&R": "DownloadAndLoadGIMMVFIModel"
            },
            "size": [
              440,
              170
            ],
            "type": "DownloadAndLoadGIMMVFIModel",
            "widgets_values": [
              "gimmvfi_r_arb_lpips_fp32.safetensors",
              "fp32",
              false
            ]
          },
          {
            "flags": {},
            "id": 10,
            "inputs": [
              {
                "link": 9,
                "localized_name": "video_info",
                "name": "video_info",
                "type": "VHS_VIDEOINFO"
              }
            ],
            "mode": 0,
            "order": 2,
            "outputs": [
              {
                "links": [
                  24
                ],
                "localized_name": "source_fps🟨",
                "name": "source_fps🟨",
                "type": "FLOAT"
              },
              {
                "links": null,
                "localized_name": "source_frame_count🟨",
                "name": "source_frame_count🟨",
                "type": "INT"
              },
              {
                "links": null,
                "localized_name": "source_duration🟨",
                "name": "source_duration🟨",
                "type": "FLOAT"
              },
              {
                "links": null,
                "localized_name": "source_width🟨",
                "name": "source_width🟨",
                "type": "INT"
              },
              {
                "links": null,
                "localized_name": "source_height🟨",
                "name": "source_height🟨",
                "type": "INT"
              },
              {
                "links": null,
                "localized_name": "loaded_fps🟦",
                "name": "loaded_fps🟦",
                "type": "FLOAT"
              },
              {
                "links": null,
                "localized_name": "loaded_frame_count🟦",
                "name": "loaded_frame_count🟦",
                "type": "INT"
              },
              {
                "links": null,
                "localized_name": "loaded_duration🟦",
                "name": "loaded_duration🟦",
                "type": "FLOAT"
              },
              {
                "links": null,
                "localized_name": "loaded_width🟦",
                "name": "loaded_width🟦",
                "type": "INT"
              },
              {
                "links": null,
                "localized_name": "loaded_height🟦",
                "name": "loaded_height🟦",
                "type": "INT"
              }
            ],
            "pos": [
              -1120,
              2070
            ],
            "properties": {
              "Node name for S&R": "VHS_VideoInfo"
            },
            "size": [
              310,
              290
            ],
            "type": "VHS_VideoInfo",
            "widgets_values": {}
          },
          {
            "flags": {},
            "id": 11,
            "inputs": [
              {
                "link": 22,
                "localized_name": "value",
                "name": "value",
                "type": "INT",
                "widget": {
                  "name": "value"
                }
              }
            ],
            "mode": 0,
            "order": 3,
            "outputs": [
              {
                "links": [
                  13,
                  25
                ],
                "localized_name": "INT",
                "name": "INT",
                "type": "INT"
              }
            ],
            "pos": [
              -1110.0000820077362,
              2419.999997445337
            ],
            "properties": {
              "Node name for S&R": "PrimitiveInt"
            },
            "size": [
              300,
              104
            ],
            "title": "Interpolation Factor",
            "type": "PrimitiveInt",
            "widgets_values": [
              3,
              "fixed"
            ]
          },
          {
            "flags": {},
            "id": 14,
            "inputs": [
              {
                "label": "a",
                "link": 24,
                "localized_name": "values.a",
                "name": "values.a",
                "type": "FLOAT,INT"
              },
              {
                "label": "b",
                "link": 25,
                "localized_name": "values.b",
                "name": "values.b",
                "shape": 7,
                "type": "FLOAT,INT"
              },
              {
                "label": "c",
                "link": null,
                "localized_name": "values.c",
                "name": "values.c",
                "shape": 7,
                "type": "FLOAT,INT"
              }
            ],
            "mode": 0,
            "order": 4,
            "outputs": [
              {
                "links": [
                  26
                ],
                "localized_name": "FLOAT",
                "name": "FLOAT",
                "type": "FLOAT"
              },
              {
                "links": null,
                "localized_name": "INT",
                "name": "INT",
                "type": "INT"
              }
            ],
            "pos": [
              -680,
              2080
            ],
            "properties": {
              "Node name for S&R": "ComfyMathExpression"
            },
            "size": [
              270,
              188
            ],
            "type": "ComfyMathExpression",
            "widgets_values": [
              "a * b"
            ]
          }
        ],
        "outputNode": {
          "bounding": [
            -358.0327342585682,
            2039.1932817190036,
            143.201171875,
            80
          ],
          "id": -20
        },
        "outputs": [
          {
            "id": "112b3487-5d3f-4cfd-b1f1-1a3c9689f221",
            "label": "output_video",
            "linkIds": [
              4
            ],
            "localized_name": "images",
            "name": "images",
            "pos": [
              -338.0327342585682,
              2059.1932817190036
            ],
            "type": "IMAGE"
          },
          {
            "id": "384105bf-ba25-41e2-a759-367a6ff3c5df",
            "label": "output_frame_rate",
            "linkIds": [
              26
            ],
            "localized_name": "FLOAT",
            "name": "FLOAT",
            "pos": [
              -338.0327342585682,
              2079.1932817190036
            ],
            "type": "FLOAT"
          }
        ],
        "revision": 0,
        "state": {
          "lastGroupId": 0,
          "lastLinkId": 26,
          "lastNodeId": 14,
          "lastRerouteId": 0
        },
        "version": 1,
        "widgets": []
      }
    ]
  },
  "extra": {
    "VHS_KeepIntermediate": true,
    "VHS_MetadataImage": true,
    "VHS_latentpreview": false,
    "VHS_latentpreviewrate": 0,
    "ds": {
      "offset": [
        1213.0453311810168,
        -1888.3508610649712
      ],
      "scale": 1.3475701531707815
    },
    "frontendVersion": "1.41.13",
    "linearData": {
      "inputs": [
        [
          "8",
          "choose video to upload"
        ],
        [
          "8",
          "videopreview"
        ],
        [
          "11",
          "value"
        ],
        [
          "8",
          "frame_load_cap"
        ],
        [
          "8",
          "skip_first_frames"
        ]
      ],
      "outputs": [
        "7"
      ]
    },
    "linearMode": false
  },
  "groups": [],
  "id": "da7fbefc-14d4-41ff-aaa7-441bb53d76fc",
  "last_link_id": 26,
  "last_node_id": 14,
  "links": [
    [
      8,
      8,
      2,
      7,
      1,
      "AUDIO"
    ],
    [
      18,
      8,
      0,
      12,
      0,
      "IMAGE"
    ],
    [
      19,
      8,
      3,
      12,
      1,
      "VHS_VIDEOINFO"
    ],
    [
      20,
      12,
      0,
      7,
      0,
      "IMAGE"
    ],
    [
      21,
      12,
      1,
      7,
      4,
      "FLOAT"
    ]
  ],
  "nodes": [
    {
      "flags": {},
      "id": 7,
      "inputs": [
        {
          "link": 20,
          "name": "images",
          "type": "IMAGE"
        },
        {
          "link": 8,
          "name": "audio",
          "shape": 7,
          "type": "AUDIO"
        },
        {
          "link": null,
          "name": "meta_batch",
          "shape": 7,
          "type": "VHS_BatchManager"
        },
        {
          "link": null,
          "name": "vae",
          "shape": 7,
          "type": "VAE"
        },
        {
          "link": 21,
          "name": "frame_rate",
          "type": "FLOAT",
          "widget": {
            "name": "frame_rate"
          }
        }
      ],
      "mode": 0,
      "order": 3,
      "outputs": [
        {
          "links": null,
          "name": "Filenames",
          "type": "VHS_FILENAMES"
        }
      ],
      "pos": [
        -600,
        2060
      ],
      "properties": {
        "Node name for S&R": "VHS_VideoCombine"
      },
      "size": [
        260,
        460
      ],
      "type": "VHS_VideoCombine",
      "widgets_values": {
        "crf": 13,
        "filename_prefix": "GIMM",
        "format": "video/h264-mp4",
        "frame_rate": 8,
        "loop_count": 0,
        "pingpong": false,
        "pix_fmt": "yuv420p",
        "save_metadata": true,
        "save_output": true,
        "trim_to_audio": false,
        "videopreview": {
          "hidden": false,
          "params": {
            "filename": "02405ebbb1ebc2c23fa39b0a6e86930ff657950a4b94ca296811f99013f6d475.mp4",
            "format": "video/h264-mp4",
            "frame_rate": 72,
            "fullpath": "",
            "subfolder": "",
            "type": "output",
            "workflow": "GIMM_00001.png"
          },
          "paused": false
        }
      }
    },
    {
      "flags": {},
      "id": 8,
      "inputs": [
        {
          "link": null,
          "name": "meta_batch",
          "shape": 7,
          "type": "VHS_BatchManager"
        },
        {
          "link": null,
          "name": "vae",
          "shape": 7,
          "type": "VAE"
        },
        {
          "label": "frames_to_load (0 for all)",
          "link": null,
          "name": "frame_load_cap",
          "type": "INT",
          "widget": {
            "name": "frame_load_cap"
          }
        },
        {
          "label": "skip_first_frames (0 for none)",
          "link": null,
          "name": "skip_first_frames",
          "type": "INT",
          "widget": {
            "name": "skip_first_frames"
          }
        }
      ],
      "mode": 0,
      "order": 0,
      "outputs": [
        {
          "links": [
            18
          ],
          "name": "IMAGE",
          "type": "IMAGE"
        },
        {
          "links": [],
          "name": "frame_count",
          "type": "INT"
        },
        {
          "links": [
            8
          ],
          "name": "audio",
          "type": "AUDIO"
        },
        {
          "links": [
            19
          ],
          "name": "video_info",
          "type": "VHS_VIDEOINFO"
        }
      ],
      "pos": [
        -1380,
        2060
      ],
      "properties": {
        "Node name for S&R": "VHS_LoadVideo"
      },
      "size": [
        280,
        413.328125
      ],
      "type": "VHS_LoadVideo",
      "widgets_values": {
        "custom_height": 0,
        "custom_width": 0,
        "force_rate": 0,
        "format": "AnimateDiff",
        "frame_load_cap": 0,
        "select_every_nth": 1,
        "skip_first_frames": 0,
        "video": "gimm-input.mp4",
        "videopreview": {
          "hidden": false,
          "params": {
            "custom_height": 0,
            "custom_width": 0,
            "filename": "gimm-input.mp4",
            "force_rate": 0,
            "format": "video/mp4",
            "frame_load_cap": 0,
            "select_every_nth": 1,
            "skip_first_frames": 0,
            "type": "input"
          },
          "paused": false
        }
      }
    },
    {
      "flags": {},
      "id": 12,
      "inputs": [
        {
          "label": "input_video",
          "link": 18,
          "name": "images",
          "type": "IMAGE"
        },
        {
          "link": 19,
          "name": "video_info",
          "type": "VHS_VIDEOINFO"
        },
        {
          "label": "interpolation_factor",
          "link": null,
          "name": "value",
          "type": "INT",
          "widget": {
            "name": "value"
          }
        }
      ],
      "mode": 0,
      "order": 2,
      "outputs": [
        {
          "label": "output_video",
          "links": [
            20
          ],
          "name": "images",
          "type": "IMAGE"
        },
        {
          "label": "output_frame_rate",
          "links": [
            21
          ],
          "name": "FLOAT",
          "type": "FLOAT"
        }
      ],
      "pos": [
        -1000.0000362444753,
        2059.9998935173735
      ],
      "properties": {
        "proxyWidgets": [
          [
            "11",
            "value"
          ],
          [
            "5",
            "model"
          ]
        ]
      },
      "size": [
        330,
        170
      ],
      "type": "8d69124f-cc0e-4891-b9ca-9c1b04432c40",
      "widgets_values": []
    },
    {
      "bgcolor": "#000",
      "color": "#222",
      "flags": {},
      "id": 13,
      "inputs": [],
      "mode": 0,
      "order": 1,
      "outputs": [],
      "pos": [
        -1890,
        2060
      ],
      "properties": {},
      "size": [
        450,
        900
      ],
      "type": "MarkdownNote",
      "widgets_values": [
        "# GIMM Frame Interpolation\n\nInserts synthetic frames between existing frames to increase frame density without changing video duration. Output FPS is multiplied so playback time stays identical.\n\n```\noutput_fps = input_fps × interpolation_factor\n// e.g. 30 fps × 3 = 90 fps, same length\n```\n\n---\n\n## GIMM Interpolation Node\n\n| Setting | Notes |\n|---|---|\n| `interpolation_factor` | Multiplier — `3` inserts 2 new frames per gap |\n| `output_frame_rate` | feeds directly into Video Combine's | \n| `frame_rate`  | **don't hardcode it** or duration breaks.  |\n---\n## Tips\n\n- Higher factors = smoother but slower and more prone to artifacts on fast motion\n- Test on a short clip before running a full video\n\n\n---\n \n> **In plain English:** Videos are made of still images played rapidly one after another. This workflow uses AI to generate *extra* images and slip them in between the originals — making motion look silkier and more fluid. Your video stays the exact same length, it just has more \"steps\" between each moment."
      ]
    }
  ],
  "revision": 0,
  "version": 0.4
}