🎭 S42 CutFlow Mask Wipe
Broadcast-style wipes between clips, iris-out and clock included
- clip_a
- clip_b
- custom_mask
- clip
- frame_count
- info
Mask Wipe is the transition node for when a plain crossfade isn't enough. It blends between two clips using a shaped mask - a linear gradient sweep, a radial iris that closes or opens from center, a diamond reveal, or the rotating clock wipe you know from a certain galaxy far away. It also takes a custom_mask input, which is where it stops being a toy: connect any grayscale mask and the wipe follows whatever pattern you drew or generated.
It's one of S42 CutFlow's composition nodes, and it's the sibling of the pack's big Transition node - Transition has 25 types and handles full clip-to-clip assembly, while Mask Wipe is the focused mask-reveal tool. If you mostly need iris/diamond/custom-mask reveals, this is the lighter-weight option to grab.
The inputs that matter
- clip_a (visible at the start) and clip_b (revealed at the end) - the two clips.
- wipe_type - eight patterns:
gradient_left/right/up/down(linear sweeps),radial_in(closes in from the edges) /radial_out(the classic iris-out from center),diamond, andclock(rotating sweep). - transition_frames (int, default 24, max 120) - how long the wipe takes. 24 frames is one second at 24fps; 12 is a snappier half-second.
- softness (float, 0–0.5, default 0.1) - edge softness. 0 gives a hard-edged graphic wipe; 0.3+ turns it into a smooth, filmic blend. This one input changes the whole feel - hard edge for graphic/retro, soft for cinematic.
- easing - the pack's shared ten easings.
ease_in_out(default) makes the wipe accelerate and decelerate instead of moving at constant speed. - custom_mask (MASK, optional) - a grayscale mask that defines the wipe pattern. White reveals clip_b, black keeps clip_a.
How it works (and the detail that matters)
Here's the mechanism worth knowing about, because it's the difference between smooth and jittery: Mask Wipe is a motion transition, and motion transitions that animate changing source frames get jittery. So the node composites the wipe using stable reference frames - the last frame of clip A and the first frame of clip B - for the moving mask, rather than crossfading live frames through the motion. That's the same fix the author applied in his earlier S42P Transition node, and the source code flags it as CRITICAL. Blending-type transitions (dissolves) use real per-frame overlap, but the wipes here use the stable frames, which is the right engineering call.
Outputs: clip (the merged batch), frame_count, and info. The merge pattern is [clip_a minus the overlap] + [wipe frames] + [clip_b after the overlap], so the output length is roughly the sum of both clips minus the overlap frames.
Installing it
Same pack install as everything else in S42 CutFlow:
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/Composition.
Gotchas
The most common mistake is assuming the wipe blends live footage - because it uses stable reference frames, a wipe over fast-moving content can look slightly "stuck" mid-transition compared to a true crossfade. That's a deliberate trade for smoothness, and you fix it by keeping wipes short (12–24 frames). Second, the custom_mask must be grayscale and roughly the right shape; a detailed photographic mask will produce a messy reveal. Third, resolution: both clips get matched automatically, but mismatched frame counts mean the overlap trims from the shorter one - so trim your clips to sensible lengths upstream. And yes, the color picker for border-type widgets is broken in this pack currently; here it doesn't apply since there's no color input, but it's a pack-wide quirk to know about.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| clip_a | IMAGE | Clip to transition FROM (visible at start). | |
| clip_b | IMAGE | Clip to transition TO (visible at end). | |
| wipe_type | COMBO | gradient_right | Wipe pattern type. Gradient = linear wipe. Radial = circle from center. Diamond = diamond shape. Clock = rotating clock wipe. |
| transition_frames | INT | 241–120 | Number of frames for the wipe transition. |
| softness | FLOAT | 0.100–0.5 | Edge softness of the wipe. 0 = hard edge, 0.5 = very soft. |
| easing | COMBO | ease_in_out | Wipe animation easing. |
| custom_maskopt | MASK | Custom grayscale mask for wipe pattern. White reveals clip_b. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| clip | IMAGE | — |
| frame_count | INT | — |
| info | STRING | — |