✂ S42 CutFlow Multi Split
Splitting one clip into segments — the engine behind beat-synced edits
- clip
- segment
- frame_count
- info
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.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | IMAGE | Video clip to split into segments. | |
| split_points | STRING | 24, 48 | Comma-separated frame indices where to split. E.g. '24, 48' splits into 3 segments: [0-23], [24-47], [48-end]. |
| segment_index | INT | 00–99 | Which segment to output (0-based). Segment 0 is before first split point. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| segment | IMAGE | — |
| frame_count | INT | — |
| info | STRING | — |