Nodes/H3 Context Noise/H3 Context Taper Noise (frames)
ComfyUI Node

H3 Context Taper Noise (frames)

Chroma blocks that fix the seam without a latent

By beijinren·Created 28 days ago·Updated 28 days ago· 13
H3 Context Taper Noise (frames)
  • images
  • images
  • alpha_schedule
tail_frames22
alpha0.45
alpha_end0.10
ramp_frames3
seed0
patternpoc_chroma_blocks
grid_modepoc_36x64
block_size16

If your H3 continuation chain feeds decoded frames rather than latents, the seam problem is the same and the fix comes in a different flavor. MiniMaxH3ContextTaperNoise is the frames-path sibling in Beijinren's ComfyUI-H3-Context-Noise pack: it takes the previous shot's decoded frames, slaps tapered blocky chroma noise onto the tail, and hands them to H3 Motion Context's context_frames.

When to reach for it. When you're not going through the latent path. Remember the pack's one rule: once context_latent is connected, H3 Motion Context completely ignores context_frames. So this node does the real work when your workflow never wires the latent - typically a pipeline that already has the previous shot decoded into an image batch. It's also the exact in-graph replacement for MacroSony's inject_tail_taper.py from minimax-h3-chained-character-swap, minus the offline mp4 round-trip.

How it works. It injects a 6-color chroma palette as block noise into the last tail_frames frames. The pattern is deliberately color-damaging but keeps motion readable, so the model can't copy the previous shot's appearance wholesale and has to re-synthesize from the identity references. The injection is tapered: flat alpha across the window, then a linear ramp down to alpha_end over the last ramp_frames. A constant strength leaves ghosting right at the seam; dropping it too fast throws away the sharpness benefit. The validated recipe is 22 / 0.45 / 0.10 / 3:

| frame (0 = oldest) | 0..18 | 19 | 20 | 21 (seam) | |---|---|---|---|---| | alpha | 0.45 | 0.333 | 0.217 | 0.100 |

The inputs that matter. Four, really:

  • images - the previous clip's decoded frames, exactly what you'd otherwise wire straight into context_frames.
  • tail_frames - how many frames from the end of the clip get injected. Keep it ≥ Motion Context's context_length, or some pinned frames stay clean.
  • alpha, alpha_end, ramp_frames - the taper. Defaults are the validated values; alpha_end must not exceed alpha.
  • seed - one random stream feeds every injected frame, so the whole sequence is reproducible from this alone.

Two optional knobs if you're experimenting. pattern defaults to poc_chroma_blocks, the validated 6-color palette - the other two, gaussian_rgb and uniform_rgb, are explicitly experimental. grid_mode controls the block grid: poc_36x64 reproduces the reference script bit-for-bit but only equals 16×16 pixel blocks at 576×1024, while block_size holds the block scale constant at any resolution.

Outputs. The noised images (wire it into context_frames) plus an alpha_schedule STRING that prints the applied per-frame strengths - the last entry is exactly alpha_end when everything's aligned, which is your quick check that the ramp hit.

Install. Same pack as the latent version - ComfyUI Manager (search "ComfyUI-H3-Context-Noise") or:

cd <ComfyUI>/custom_nodes
git clone https://github.com/Beijinren/ComfyUI-H3-Context-Noise

Restart ComfyUI and it's under conditioning/minimax. Zero extra dependencies - only ComfyUI's bundled torch and Pillow. You'll also want H3 Motion Context installed and H3's weights, licence caveats included.

Gotchas. The output is disposable - never feed the noised frames back in as the next link's context. Keep tail_frames ≥ Motion Context's context_length or the pinned frames partially skip the treatment. And if you've also got the latent node in the graph, disconnect it before trusting this one: H3 will silently prefer context_latent and ignore your carefully-noised frames.

Categoryconditioning/minimax

Inputs (9)

NameTypeDefaultDescription
imagesIMAGEThe previous clip's decoded frames, exactly what you would otherwise wire straight into H3 Motion Context's context_frames.
tail_framesINT221–4096How many frames at the END of this clip get injected. Motion Context pins the LAST context_length frames, so keep this >= context_length or some pinned frames stay clean. Frames before the window pass through untouched.
alphaFLOAT0.450–1Flat injection strength across the window. 0.45 is the validated value. Lower keeps more of the previous clip's appearance; higher pushes the model harder onto the identity references.
alpha_endFLOAT0.100–1Strength at the very last frame, the one touching the seam. Must not exceed alpha.
ramp_framesINT31–4096How many frames at the end taper from alpha down to alpha_end. 3 is the validated value: 0.333 / 0.217 / 0.100.
seedINT00–18446744073709550000Noise pattern seed. One stream feeds every injected frame, so the whole sequence is reproducible from this alone.
patternoptCOMBOpoc_chroma_blockspoc_chroma_blocks is the validated 6-colour chroma palette. The other two are for experiments and are not validated.
grid_modeoptCOMBOpoc_36x64poc_36x64 reproduces the reference script bit-for-bit, but only equals 16x16 pixel blocks at 576x1024. block_size holds the block scale constant at any resolution.
block_sizeoptINT161–256Pixel block size when grid_mode is block_size.

Outputs (2)

NameTypeDescription
imagesIMAGE
alpha_scheduleSTRING