Nodes/Mickmumpitz-Nodes/Control Crossfade (Simple)
ComfyUI Node

Control Crossfade (Simple)

Blend two control sequences without a hard cut

By mickmumpitz·Created 8 months ago·Updated 9 days ago· 47
Control Crossfade (Simple)
  • images_A
  • images_B
  • blended
transition_frame14
blend_frames8
curve

Control Crossfade (Simple) takes two image sequences and blends one into the other over a short window, so the handoff between them reads as a transition instead of a jarring cut. It's a Mickmumpitz pack utility that shows up mostly in video work - think control frames or context images for LTX/Wan iterative generation, where you have sequence A (say, shot one) and sequence B (shot two) and want the conditioning to ease between them rather than snap.

The full pack ships a fancier ControlCrossfadeIterationFix that's aware of the pack's iteration loop and blends at the seam where one pass hands off to the next. This is the "Simple" version: no iteration tracking, no seam logic - you give it two batches, a transition point, and it cross-fades. For a beginner it's often the better place to start, because you can drop it in a plain workflow with no iterative machinery and watch exactly what it does.

How it works

The node walks the output batch frame by frame. Before the blend window it copies frames from images_A; after the window it copies from images_B; inside the window it interpolates each frame as (1-w) * A + w * B, where w ramps from 0 to 1 across the window. The blend is centered on transition_frame: the window starts blend_frames // 2 frames before the transition and ends half a window after. The curve choice (ease_in_out, linear, ease_in, ease_out) shapes that ramp. If one input batch is shorter than the other, the last frame of the shorter one is held, so the node never indexes past the end. Output length matches the longer batch.

The inputs that matter

  • images_A / images_B - the two IMAGE batches to blend, A being the "before" sequence.
  • transition_frame (default 14) - the frame around which the cross-fade happens. Frames before the window are pure A, after it pure B.
  • blend_frames (default 8, min 2) - width of the fade. Too narrow and you're back to a hard cut; too wide and you'll see the A footage ghosting through the middle. 8 is a sensible starting point.
  • curve - easing applied to the blend weight. ease_in_out is the standard choice; linear is fine for short fades where nobody's counting.

The single output, blended, is an IMAGE you'd wire straight into whatever consumed the originals - a ControlNet apply, a context-image input, a save node.

Installing it

This is part of the Mickmumpitz pack, so it comes with the whole set. In ComfyUI Manager, search "Mickmumpitz", install, restart. Or:

cd ComfyUI/custom_nodes
git clone https://github.com/mickmumpitz/ComfyUI-Mickmumpitz-Nodes.git

Dependencies are just numpy, Pillow and opencv-python (already in most ComfyUI installs) - no models to download for this node.

Common issues

The main trap is ordering: images_A and images_B must share the same spatial dimensions, and the node uses A's dimensions for the output buffer - if B is a different size you'll get a tensor-shape error rather than a graceful scale. It's a blender, not a resizer, so normalize your batches first. Also, this node is frame-index naive: it doesn't know anything about your iteration loop, so if you set transition_frame beyond the batch length you get a pure pass-through of the last frames. That's not a bug - it's what "Simple" means.

Categoryimage/transform

Inputs (5)

NameTypeDefaultDescription
images_AIMAGE
images_BIMAGE
transition_frameINT140–200
blend_framesINT82–40
curveCOMBO4 options: ease_in_out, linear, ease_in, ease_out

Outputs (1)

NameTypeDescription
blendedIMAGE