Nodes/Pulse Studio/Pulse Retake · MiniMax H3
ComfyUI Node

Pulse Retake · MiniMax H3

Re-render the three bad seconds, not the whole MiniMax H3 film

By Addis-Pulse-Studio·Created about a month ago·Updated 15 days ago· 2
Pulse Retake · MiniMax H3
  • model_fl2va
  • clip
  • vae
  • audio_vae
  • images
  • base_audio
  • images
  • audio
  • plan
schema_version3.0.0
prompt
cut_start_seconds0.00
cut_end_seconds1.00
keep_base_audiotrue
fps24
seed0
steps20
sampler_nameres_multistep
schedulersimple
cfg1.0
shift_video12.00
shift_audio3.00

The whole film is good except the three seconds at 0:12

That's the moment this node exists for. With most video models, "fixing" a bad span means re-rendering the whole clip and hoping the rest doesn't drift. Pulse Retake is the scissor: you mark the bad span, it pins the exact frame before the cut and the exact frame after it as anchors, renders only the gap, and stitches the patch back into the untouched head and tail.

The elegant bit is that this is the one job where H3's two-anchor limit - keyframes only at frame 0 and the final frame - is an advantage rather than a compromise. A patch needs exactly two anchors. That's what the fl2va (First/Last-Frame) checkpoint is for, which is why model_fl2va is a required input here and why the reference branch isn't involved at all: patching pins both surrounding frames, no references, no <Subject N> bookkeeping.

How it works

  • images - the rendered clip to patch (an IMAGE batch).
  • cut_start_seconds / cut_end_seconds - the bad span. Patch length must sit on H3's 17k+5 frame grid, so the cut snaps to fit rather than being rejected after you've made it.
  • prompt - what should happen in the patched span. Defaults to describing the shots that overlapped the cut.
  • keep_base_audio (default on) - keeps the original clip's audio, because a re-rendered patch invents its own score and won't match the surrounding track. This is the setting that stops the seam sounding like a cut. Pass the clip's audio in via base_audio so it can be returned as-is.

It also carries its own sampler controls - seed, steps (default 20), sampler_name (default res_multistep, the flow-model standard), scheduler (simple), cfg (default 1.0 - leave it; H3's pipeline has no negative conditioning), and shift_video / shift_audio. The stitch is length-preserving by construction and asserted at runtime: a mismatch would shift every frame after the patch and desync the audio. Outputs are images (the patched clip), audio, and plan - a text readout of the cut geometry.

The one job where the geometry can't line up is refused up front with a message, not silently patched.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/Addis-Pulse-Studio/comfyui-pulse-studio

Restart ComfyUI. No pip install, no dependencies beyond what a working ComfyUI already has (torch, numpy, Pillow, av), but the host must be ComfyUI 0.30.0+ with H3 support (comfy_extras/nodes_minimax_h3.py and comfy/ldm/minimax/). You need the fl2va DiT (~20 GB) from Comfy-Org/MiniMax-H3 into models/diffusion_models/minimax/, plus the text encoder and both VAEs. Remember the weights are under the geofenced MiniMax H3 Community License (no US, EU, UK, Korea), and on Linux/macOS the example graphs' loaders show red until you re-pick each file.

Where people get burned

  • keep_base_audio on but base_audio not connected - the node warns and returns the patch's own audio, which covers only the patched span. The film gets quieter for those three seconds. Wire the original audio in if you want it kept; that's the whole point of the flag.
  • Expecting the patch to match the surrounding grade. It won't, exactly - the two sides are independent generations. keep_base_audio handles the audio side; the visual seam is up to how carefully your prompt describes the patched span. This is a scissor, not a magic wand.
  • The render target is the fl2va checkpoint, and it samples internally, so an unpatched model is felt here too - the node runs the same patch inspection and warning as the rest of the pack. Run it without Sol-Attn/Spectrum wired and expect the memory and speed characteristics of an unpatched H3 render.
CategoryAddisPulse/H3

Inputs (19)

NameTypeDefaultDescription
model_fl2vaMODELThe First/Last-Frame checkpoint. Patching pins both surrounding frames, which is the fl2va branch specifically.
clipCLIP
vaeVAE
audio_vaeVAE
imagesIMAGEThe rendered clip to patch.
schema_versionSTRING3.0.0Which widget layout this node was saved with. Written by the node, read at load time to restore values by name. Do not edit.
promptSTRINGWhat should happen in the patched span. Defaults to describing the shots that overlapped the cut.
cut_start_secondsFLOAT0.000–3600
cut_end_secondsFLOAT1.000–3600
keep_base_audioBOOLEANtrueKeep the original clip's audio. A re-rendered patch invents its own score and will not match the surrounding track.
fpsINT241–120
seedINT00–18446744073709550000
stepsINT201–100
sampler_nameCOMBOres_multistep6 options: res_multistep, euler, euler_ancestral, dpmpp_2m, dpmpp_2m_sde, ddim
schedulerCOMBOsimple6 options: simple, normal, beta, sgm_uniform, karras, exponential
cfgFLOAT1.01–20
shift_videoFLOAT12.000.01–100
shift_audioFLOAT3.000.01–100
base_audiooptAUDIOThe clip's original audio, returned as-is when keep_base_audio is on.

Outputs (3)

NameTypeDescription
imagesIMAGE
audioAUDIO
planSTRING