🔀 S42 CutFlow Sync Transition
The transition that crossfades the audio too, so your edit doesn't sound like a mistake
- clip_a
- audio_a
- clip_b
- audio_b
- merged_video
- merged_audio
- total_frame_count
- info
Here's a tiny annoyance that ruins a lot of "done in ComfyUI" videos: the picture crossfades beautifully between two clips, but the audio just slams from one track into the other. It reads as an editing error even if the visuals are perfect. S42CF_TransitionSync is CutFlow's answer - it's the pack's 20-transition node plus a matched audio crossfade, so picture and sound change together.
The name is doing a lot of honest work: the video half is the same engine as the plain S42CF Transition node, and the sync part is what you're actually paying for. It takes two clips and two AUDIO tracks, merges the video with whatever transition you pick, and merges the audio with a crossfade timed to the transition duration.
How it works
The video side delegates to the pack's proven transition code. Blending transitions (dissolve, fades, glitch, and the luma wipe) composite actual overlapping frames from both clips; the motion types (push, wipe, zoom, spin, iris, slide) use stable reference frames - the last frame of clip A and the first frame of clip B - so the moving transition doesn't jitter as the source frames change underneath it.
The audio side is simpler and worth understanding. It computes how many samples the transition lasts (transition_frames / fps seconds at the sample rate of audio_a), cuts the tail off audio_a and the head off audio_b, and - when audio_crossfade is on - ramps one down while the other ramps up across that overlap. Turn audio_crossfade off and it's a hard splice, which is exactly the clicky cut you were trying to avoid.
The inputs that matter
You set surprisingly few things here:
clip_a/audio_a,clip_b/audio_b- both clips and both audio tracks. They're all required; there's no "video only" mode on this node, so if you only have one soundtrack, feed the same AUDIO to both inputs.transition_type- 25 choices, a superset of the core Transition node (it addsluma_wipe).dissolveis the safe default.transition_frames- duration; 12 frames is half a second at 24fps.audio_crossfade- the headline toggle. Leave it on.easing,fps, andglitch_seedfor the glitch transition - set them once and forget.
Outputs
merged_video→ wire into your video combine/save node (VHS Video Combine works).merged_audio→ your audio save node, or LTX 2.3's audio conditioning if you're re-generating rather than exporting.total_frame_countandinfo- the former is handy for downstream timing nodes.
Installing it
This is one of 53 nodes in the S42 CutFlow pack, so you install the whole suite:
- ComfyUI Manager → search S42 CutFlow → Install, or
cd ComfyUI/custom_nodes && git clone https://github.com/GeekyGhost/S42-CutFlowthen install requirements and restart.
The pack is a work in progress (the author says these nodes are being refined for a port to LTX Desktop), and it's fresh enough that you won't find much community lore about it yet - judge it by running the bundled workflows. One honest gotcha: the audio sample rate is taken from audio_a with no conversion, so mismatched-rate tracks will drift on the timeline. And note the merged length is len(A) + len(B) - overlap - it doesn't resample either track to match, so trim both to the lengths you actually want with the pack's S42CF Audio Trim node first.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| clip_a | IMAGE | — | |
| audio_a | AUDIO | — | |
| clip_b | IMAGE | — | |
| audio_b | AUDIO | — | |
| transition_type | COMBO | dissolve | 25 options: cut, dissolve, fade_black, fade_white, luma_wipe, push_left, +19 |
| transition_frames | INT | 12 | — |
| fps | FLOAT | 24.00 | — |
| audio_crossfade | BOOLEAN | true | — |
| easing | COMBO | ease_in_out | 10 options: linear, ease_in, ease_out, ease_in_out, ease_in_cubic, ease_out_cubic, +4 |
| glitch_seed | INT | 42 | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| merged_video | IMAGE | — |
| merged_audio | AUDIO | — |
| total_frame_count | INT | — |
| info | STRING | — |