Nodes/S42 CutFlow/🔀 S42 CutFlow Transition
ComfyUI Node

🔀 S42 CutFlow Transition

Twenty-five ways to get from clip A to clip B, no external NLE required

By GeekyGhost·Created 6 months ago·Updated 4 months ago· 3
🔀 S42 CutFlow Transition
  • clip_a
  • clip_b
  • merged_frames
  • total_frame_count
  • info
transition_typedissolve
transition_frames12
easingease_in_out
glitch_seed42

Transitions are the connective tissue of a cut - without them every edit is a hard jump. S42CF_Transition gives you 25 of them in one node: the classic dissolve, fades through black and white, push/wipe/zoom/spin/iris motion transitions, a glitch, a pixelize, luma wipes, and slides. Feed it two clips, pick a type and a duration, and it hands back one merged clip with the transition built in. It's one of the "Expanded" nodes in GeekyGhost's S42 CutFlow suite, and it's how you assemble AI-generated clips into something that reads as edited rather than concatenated.

The inputs

  • clip_a and clip_b - the two clips. Clip A plays first and transitions out; clip B transitions in and plays after.
  • transition_type - 25 options: cut (just concatenates, no blending), the blending types (dissolve, fade_black, fade_white, luma_wipe, glitch, pixelize), and the motion types (push_*, wipe_*, zoom_in/out, spin_cw/ccw, spin_zoom_*, iris_in/out, slide_up/down). The dropdown also carries the easing options for easing - linear through bounce.
  • transition_frames (int, 1–120, default 12) - duration. 12 frames is half a second at 24fps; 24 is a full second.
  • easing - ten easings, default ease_in_out, so a push_right accelerates and decelerates instead of gliding at constant speed.
  • glitch_seed (int, default 42) - reproducible randomness for the glitch transition. Same seed, same glitch, every time.

How it works - and why the implementation detail matters

Here's the thing most people get wrong about video transitions, and this node gets it right. Blending transitions (dissolve, fades, glitch, pixelize, luma) composite the actual overlapping frames from both clips - a true temporal crossfade. Motion transitions (push, wipe, zoom, spin, iris, slide) do not animate live frames - they use stable reference frames: the last frame of clip A and the first frame of clip B. That's deliberate. Animating a moving source frame through a push or zoom produces jitter, and the fix - used in the author's earlier S42P Transition node - is to lock the motion to a reference frame. Result: smooth, non-shimmering wipes even on busy footage.

The output structure is [clip_a minus the overlap] + [transition frames] + [clip_b after the overlap], with resolutions auto-matched. Outputs: merged_frames (the assembled IMAGE batch), total_frame_count, and info.

Installing it

Standard S42 CutFlow install:

cd ComfyUI/custom_nodes/
git clone https://github.com/GeekyGhost/S42-CutFlow.git
pip install -r S42-CutFlow/requirements.txt   # Windows portable: python_embeded\python.exe -m pip

Or ComfyUI Manager → search S42 CutFlow → install → restart. It's under S42 CutFlow/Expanded.

Gotchas

The practical traps. First, the transition consumes frames from both clips - transition_frames is taken off the end of A and the start of B, so short clips can't host long transitions (the node clamps to the shorter clip's length). Give both clips a little padding if you want roomy transitions. Second, motion transitions use reference frames, so on fast-moving content they can look slightly "frozen" mid-transition compared to a dissolve - that's the jitter fix, and it's why you keep transitions short (12–24 frames). Third, cut is genuinely useful: it's the correct way to concatenate two clips of different lengths without any effect, and it's faster than wiring a concat node. And a workflow tip: for beat-synced edits, drive transition_frames from your audio's tempo and chain Multi Split → Transition per segment; the README's montage workflow does exactly this. Pair with a final film-grain or grade pass so the transition's seams don't show.

CategoryS42 CutFlow/Expanded

Inputs (6)

NameTypeDefaultDescription
clip_aIMAGE
clip_bIMAGE
transition_typeCOMBOdissolve25 options: cut, dissolve, fade_black, fade_white, luma_wipe, push_left, +19
transition_framesINT121–120
easingCOMBOease_in_out10 options: linear, ease_in, ease_out, ease_in_out, ease_in_cubic, ease_out_cubic, +4
glitch_seedINT420–9999

Outputs (3)

NameTypeDescription
merged_framesIMAGE
total_frame_countINT
infoSTRING