Nodes/S42 CutFlow/✂ S42 CutFlow Multi Split
ComfyUI Node

✂ S42 CutFlow Multi Split

Splitting one clip into segments — the engine behind beat-synced edits

By GeekyGhost·Created 6 months ago·Updated 4 months ago· 3
✂ S42 CutFlow Multi Split
  • clip
  • segment
  • frame_count
  • info
split_points24, 48
segment_index0

Multi Split is how you build a montage without a timeline. You give it a clip and a list of frame indices where you want cuts; it gives you back the segment you ask for. That single, boring capability is what makes beat-synced editing possible inside the node graph - and it's the node GeekyGhost's S42 CutFlow README points at when it talks about automated music-video cutting.

How it works

Three inputs. clip is your footage as an IMAGE batch. split_points is a comma-separated string of frame indices - "24, 48" is the default, and it splits into three segments: [0–23], [24–47], [48–end]. segment_index (int, default 0) picks which of those segments comes out the other side, 0-based.

The behavior that catches people: it outputs exactly one segment at a time. You don't get all segments in one go - you get the one at segment_index. To process each segment through a different effects chain, you place multiple Multi Split nodes sharing the same split_points string, each with a different index. That's the "one node per segment" pattern, and it's how the README's example workflow cuts a clip at beat points and then treats each chunk differently.

The implementation is straightforward - it parses the string, keeps the split points that fall strictly inside the clip, builds boundaries [0, ...points, n], and slices. It also clamps segment_index to a valid range, so an out-of-bounds index gives you the last segment rather than an error. The info output is genuinely nice here: it lists every segment with its frame ranges, so you can verify your cuts at a glance instead of guessing.

The beat-sync pattern

The killer use case is wiring the output of a beat-detection node straight into split_points. S42 CutFlow's own Beat Snap outputs beat frame indices in exactly the string format Multi Split wants - the README's montage workflow is literally Beat Snap → Multi Split (split_points from BeatSnap) → Transition → Video Combine. No manual cut marking, no arithmetic; the music decides the edits. Beyond that, Multi Split is your general "cut a long recording into chapters" tool - split a screen recording at scene changes, divide a lecture into topic segments, whatever. It outputs segment (IMAGE), frame_count (INT), and info (STRING).

Installing it

The whole S42 CutFlow suite installs at once:

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 use ComfyUI Manager and search S42 CutFlow. Restart ComfyUI completely, and you'll find it under S42 CutFlow/Clip Ops. No models, no extra downloads - like the rest of the core suite it's pure tensor slicing on standard IMAGE batches.

Gotchas

First, split points outside the clip's length are silently dropped - if you typo 48 into a 30-frame clip, you just get fewer segments than you expected, and the info string is how you'd notice. Second, remember the split point is the start of the next segment, so "24" alone gives you two segments, [0–23] and [24–end]. Third, if you're splitting for a montage, trim first and split second - splitting a clip with junk frames just spreads the junk across segments. And the one-node-per-segment pattern can crowd your graph when you have many segments; the trade-off is that each segment gets its own clean effects chain, which is usually worth the mess.

CategoryS42 CutFlow/Clip Ops

Inputs (3)

NameTypeDefaultDescription
clipIMAGEVideo clip to split into segments.
split_pointsSTRING24, 48Comma-separated frame indices where to split. E.g. '24, 48' splits into 3 segments: [0-23], [24-47], [48-end].
segment_indexINT00–99Which segment to output (0-based). Segment 0 is before first split point.

Outputs (3)

NameTypeDescription
segmentIMAGE
frame_countINT
infoSTRING