Holocine Frames (QQ)
Plan multi-shot video cuts with a mathematically clean frame schedule
- shot_list
- video_length
- shots_string
Multi-shot video generation is the current obsession: instead of one continuous clip, you generate several shots and cut between them - but the cuts have to land on frames that make sense for the model's VAE, and they need to be spread across the timeline so your "story" beats actually have room. HolocineFrames is the planner for that. You tell it how long the video is and how many shots you want, and it hands back the exact frame numbers where the cuts should live, spaced sensibly.
It ships in siraxe/ComfyUI-WanVideoWrapper_QQ, the "(QQ)" Wan pack. It's a math helper more than a generation node - think of it as the scheduler that keeps your multi-shot workflow from producing a cut every three frames.
How it works
The node computes cut positions using exponent-based easing. The distribution slider (0.01–1.0, default 0.5) is the creative control:
- < 0.5 - front-loaded: cuts cluster toward the start of the video.
- = 0.5 - linear: evenly spaced.
- > 0.5 - back-loaded: cuts cluster toward the end.
Under the hood it maps distribution to an exponent gamma (roughly 0.35 to 4.0) and places each shot boundary at t^gamma along the timeline, then enforces hard rules so the output is always usable: cuts are strictly increasing, the first cut lands at frame 9 or later, consecutive cuts are at least 8 frames apart, and the last cut is always the final frame. Those constraints exist because a cut at frame 3, or two cuts 2 frames apart, is useless to a diffusion model that needs time to establish each shot.
If you wire in a shot_list (the pack's WANVID_HOLOCINE_SHOT_LIST type), the node uses that list's length instead of the shots integer - so your workflow can carry shot definitions from another node and this one just does the arithmetic.
Inputs and outputs that matter
video_length- total target frames (default 161, in the 41–541 range, stepped by 4 to stay VAE-friendly).shots- how many segments (2–10, default 2).distribution- the front/back-loading dial above.shot_list(optional) - overridesshotswith an actual list of shot definitions.
Outputs: video_length (INT, echoed back) and shots_string (STRING) - the comma/structured list of cut frame numbers that downstream Holocine-style nodes consume.
Installation
cd ComfyUI/custom_nodes
git clone https://github.com/siraxe/ComfyUI-WanVideoWrapper_QQ.git
Restart ComfyUI (or ComfyUI Manager → search "WanVideoWrapper_QQ"). No extra Python dependencies - it's pure arithmetic and JSON; the pack's requirements.txt is empty. If upgrading from before the v1.3.4 rename to ComfyUI-SA-Nodes-QQ, delete any old wanwrapper_qq folder.
Common issues
The realistic trap is treating video_length as a free number. The node's step is 4 and the range is capped at 541, and that's deliberate - Wan's 3D causal VAE compresses time by 4, so arbitrary lengths like 157 produce awkward latent shapes downstream. Let this node (or the related WanFrames helper) pick your frame counts. Also, shots above 10 is rejected at the widget level, but remember the first-cut ≥ 9 and min-gap ≥ 8 constraints: with a short video and many shots, the node will clamp and compress your schedule - the output is valid, just denser than you might have pictured.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| video_length | INT | 16141–541 | — |
| shots | INT | 22–10 | — |
| distribution | FLOAT | 0.500.01–1 | — |
| shot_listopt | WANVID_HOLOCINE_SHOT_LIST | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| video_length | INT | — |
| shots_string | STRING | — |