H3 Repair Window
Redraw one bad stretch of a finished clip
- latent
- positive
- prompts
- window
- positive
- model
- report
You generated a two-minute H3 video, you're happy with 95% of it, and there's a hand-shaped disaster around the four-second mark. Regenerating the whole clip costs an hour and risks losing what you liked. This node lets you cut that stretch out, redraw it, and put it back - with the frames either side held as they are, so the seam has context to match.
How it works
Give it a start and end in seconds and it opens a window over that part of the clip. Two pieces of housekeeping happen automatically. First, your span widens outward to whole 17-frame blocks - that's H3's clip grid, so a request for 3.0 s to 4.9 s opens on frame 68 (2.83 s) and closes after frame 118 (4.96 s). Second, it surrounds the span with context_frames of the clip either side, kept as they are, which is what stops the redrawn section from arriving with a different colour grade and a different idea about the lighting.
Three things come out for the sampler: the window latent to sample, a positive conditioning, and a model. Two more for you to read: a report naming the frames and seconds being redrawn, and - importantly - the report refuses nothing quietly. A stretch that crosses a scene cut is refused outright, because redrawing across a cut means regenerating across two different prompts and the result is mud.
The inputs that matter
start_seconds/end_seconds- the span. They'll snap outward to the block grid; the report tells you where it actually landed.picture_strength- how much of the picture is genuinely redrawn.1.0starts from fresh noise,0.6renews from what's already there,0.0keeps the picture entirely. Use0.0when the picture is fine and only the sound is wrong.sound_strength- the same idea for the audio half, and it defaults to0.0, which is deliberate: redraw the picture in sync under the sound you already have.context_frames- how many frames either side the sampler sees and preserves, in steps of 17.34(two blocks) is the default;0gives you none, and you'll see the seam.audio_release- audio steps the redrawn sound fades in and out over beyond the span, at 40 steps a second.8= 0.2 seconds. Read only whensound_strengthis above zero.feather- the strength the one block either side of the span is redrawn at.0.0gives hard edges;0.35softens the join. Never abovepicture_strength, and it needscontext_framesof at least 17.- Optional
promptsandsegment- wire the segment prompts in from MiniMax H3 Conditioning and the repair reuses that segment's prompt, references, keyframes and model, which is how you get the repair to look like the scene it's inside rather than a generic render.segmentpicks which one, or0for the segment holding most of the span. There's also an optionalpositiveyou can wire to write the repair prompt yourself; wired, it replaces the segment's prompt entirely.
Then: sample the window at denoise 1.0, and hand both the result and the original clip to H3 Repair Splice. This node only opens the window; the other one closes it.
Installing it
Part of WAS Node Suite v3 - ComfyUI Manager, search WAS Node Suite v3, or clone it:
cd ComfyUI/custom_nodes
git clone https://github.com/WASasquatch/was-node-suite-comfyui.git
ComfyUI 0.14.0+ and Python 3.10+, and there's no pip step at all; the pack's older reputation for install friction came from v2, which installed twenty packages and downgraded your OpenCV behind your back.
Where it goes wrong
"A stretch crossing a scene cut is refused." Split it in two repairs, one per side of the cut. You'll get a cleaner result anyway, since each side samples under its own segment prompt.
The repair looks pasted in. That's feather and context_frames doing too little. Give it 34 or 51 frames of context and a small feather before you blame the prompt.
Denoise isn't 1.0 so nothing happens. The window is built to be sampled from scratch; the strength dials are how you ask for a partial redraw, not the sampler's denoise.
You repaired it, and the clip still looks the same. You're looking at the original latent. The repaired clip is what H3 Repair Splice returns - decode that one.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| latent | LATENT | The finished H3 clip to repair, from H3 Extend Append or a sampler. | |
| start_seconds | FLOAT | 0.000–3600 | Where the repair starts, as `3.0` seconds. Widened back to the start of its 17 frame block, so `3.0` opens on frame 68 (2.83 s). |
| end_seconds | FLOAT | 1.000–3600 | Where the repair ends, as `4.9` seconds. Widened on to the end of its 17 frame block, so `4.9` closes after frame 118 (4.96 s). |
| picture_strength | FLOAT | 1.000–1 | How much of the picture in the span is drawn again: `1.0` = from fresh noise, `0.6` = renewed from what is there, `0.0` = kept, for a sound-only repair. |
| sound_strength | FLOAT | 0.000–1 | How much of the sound in the span is drawn again: `0.0` = kept, so the picture is redrawn in sync under it; `0.5` = renewed from what is there; `1.0` = from fresh noise. |
| context_frames | INT | 340–340 | Frames of the clip either side of the span the sampler sees and keeps, as `34`, in steps of 17, or `0` for none. Widened by up to `34` so the window's sound starts on a whole audio step. Never reaches past a scene cut. |
| audio_release | INT | 80–64 | Audio latent steps the redrawn sound fades in and out over beyond the span, as `8` for 0.2 seconds at 40 steps a second, or `0` for a hard edge. Read where sound_strength is above `0`. |
| feather | FLOAT | 0.000–1 | Strength the 17 frame block either side of the span is redrawn at, as `0.0` for hard edges or `0.35` to soften the seam. Never above picture_strength; needs context_frames of at least `17`. |
| positiveopt | CONDITIONING | Prompt for the repair. Wired, it replaces the segment's prompt from prompts and is used as written. | |
| promptsopt | WAS_H3_PROMPTS | Every segment's prompt from MiniMax H3 Conditioning. Wired, the repair reuses its segment's prompt, references, keyframes and model. | |
| segmentopt | INT | 00–24 | Which segment's prompt the repair reuses, from `1`, or `0` for the segment holding most of the span. Read where prompts is wired. |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| window | LATENT | The window to sample at denoise `1.0`, for the sampler's latent input. Its result goes to H3 Repair Splice. |
| positive | CONDITIONING | The repair's prompt, its keyframes moved into the window, for the guider. |
| model | MODEL | The model the segment's row chose on MiniMax H3 Conditioning, for the guider. Blocked with a message where prompts is not wired. |
| report | STRING | Which frames and seconds the window redraws, at what strength, and its context. |