Ideogram 4 Quad Keyframe Release
Free a quad panel partway through sampling — locked at first, loose by the end
- model
- model
Here's the trick this node pulls off, because it's not obvious: in the quad workflow, "locked to a reference" isn't an all-or-nothing state. You can tell Ideogram 4 to honor a panel's reference image for the first N sampling steps and then let go, so the panel starts from your artwork and drifts into something new by the end. Ideogram4QuadKeyframeRelease is the knob that does that, per panel, and it's one of the cleverer pieces of this pack.
What it is
It's a model patch, not a canvas builder. You drop it in the MODEL chain - in the example workflow it sits after CFGOverride and before the guider - and it overrides the denoise mask every step. Remember the mask from Ideogram4QuadKeyframe (SetLatentNoiseMask)? That mask is what keeps a panel frozen. This node rewrites it on the fly so a panel's lock only lasts a while.
Each panel gets a <panel>_lock_steps value:
-1- locked the whole run. This is the default, and it makes the node a no-op. Dropping it into a workflow changes nothing until you set something.0- never injected. The panel is free from step zero.N- the reference is injected for the first N steps, then the panel generates freely.
release_mode controls how the handoff feels. hard holds the lock through step N and then cuts instantly. gradual fades the lock to free over fade_steps steps, which is the one you want when an instant switch would leave a visible seam or a jarring style jump.
There's also <panel>_respect_mask, which matters if the panel uses an inpaint mask. With it on, only the editable part of the panel releases; the mask-protected pixels stay locked to the reference for the entire run. Off (the default) means the whole panel rectangle frees after its lock_steps, mask or not.
How the mechanism works
Under the hood it's a set_model_denoise_mask_function patch. The node builds a per-pixel map of lock step counts, and at each sampling step it works out the current step index from the sigma schedule, computes a blend factor t between 0 (keep the lock) and 1 (fully free), and lerps the base mask toward the free target. For hard mode, t snaps past 1 the moment the step index passes lock_steps; for gradual it ramps over the fade window. It's per-pixel, so panels release independently.
What you set
The geometry inputs (width, height, frame_width, frame_height, gutter, margin) must match the keyframe node exactly - this is where the pack's Ideogram4QuadLayout earns its keep, because wiring the same ints everywhere is what guarantees the release rectangles line up with the actual panels. The output is a single model, which continues down the MODEL chain to your guider.
Installing
Same as the rest of the pack:
cd ComfyUI/custom_nodes
git clone https://github.com/reality-comes/comfyui-ideogram4-quad-storyboard
Restart, and it shows up under image/ideogram4 (ComfyUI Manager: search "Ideogram 4 Quad Storyboard"). No extra dependencies beyond ComfyUI's bundled torch and comfy - the only real requirement is that you're running an Ideogram 4 checkpoint, since the whole pack is built for its JSON-prompting, reference-hungry workflow.
Where people get burned
The default is -1 everywhere, so the first time you add the node it does nothing - that's the feature, not a bug; it's the safe way to drop it into an existing workflow. The failure mode to watch is geometry drift: if the release node's numbers disagree with the keyframe's, you'll "release" a rectangle that doesn't match any panel, and nothing will free up, or the wrong strip will. And respect_mask only does anything if the keyframe node actually fed a mask through SetLatentNoiseMask - wire the mask path or that setting is silently inert.
Inputs (17)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| width | INT | 265616–16384 | — |
| height | INT | 150416–16384 | — |
| frame_width | INT | 128016–16384 | — |
| frame_height | INT | 70416–16384 | — |
| gutter | INT | 320–1024 | — |
| margin | INT | 320–1024 | — |
| release_mode | COMBO | 2 options: hard, gradual | |
| fade_steps | INT | 21–1000 | — |
| top_left_lock_steps | INT | -1-1–10000 | — |
| top_left_respect_mask | BOOLEAN | false | — |
| top_right_lock_steps | INT | -1-1–10000 | — |
| top_right_respect_mask | BOOLEAN | false | — |
| bottom_left_lock_steps | INT | -1-1–10000 | — |
| bottom_left_respect_mask | BOOLEAN | false | — |
| bottom_right_lock_steps | INT | -1-1–10000 | — |
| bottom_right_respect_mask | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |