🕺 S42 CutFlow Funky Beat Sync
Audio-Reactive Time Warping
- clip
- audio
- synced_video
- original_audio
- info
Most "beat sync" nodes detect beats and give you a list of frame indices to cut on. S42CF_FunkyBeatSync is different, and honestly a little wild: it reads the energy of your audio and continuously time-warps the video so it speeds up and slows down with the music. It's audio-reactive time warping - the video's playback speed becomes the audio's waveform. The output length is driven by the audio, not the clip.
This is the most experimental node in the S42 CutFlow pack - it lives in the /Audio/Advanced category for a reason - and it's the one people pick up when they want a music video where the footage visibly reacts instead of just cutting on beat.
What it does under the hood
From the source: it takes the audio waveform, computes a per-frame energy curve, and remaps the video so playback speed oscillates between min_speed (default 0.5×) and max_speed (default 2×) following that energy. The audio_smoothing (5) window and dynamic_smoothness control how aggressively the speed changes track the peaks; beat_threshold (0.7) decides what counts as a beat for the reaction modes. Outputs are synced_video (the warped IMAGE batch), original_audio (passed through untouched so you can reattach it downstream), and info.
The inputs worth touching on a first run:
beat_reaction-noneis pure continuous speed-warping.vj_remix(default) adds beat-triggered shifts.chaos_reverseandstutter_stepare the weird ones: reverse flips and stutter effects on hits. Start withvj_remix, get boring later.edge_behavior- what happens at the clip's end when the audio runs longer:loop(default),ping_pong, orclamp(freeze on the last frame).seed- randomizes the mapping so you can roll new versions.
The reality check
Two things to know before you love it. First, it's not doing optical flow or frame interpolation - it resamples existing frames, so slow-motion sections at 0.5× can look a little stuttery. Run the output through S42CF_FrameBlend afterward to smooth the seams, and that mostly goes away. Second, the AUDIO input has to come from a node that outputs ComfyUI's AUDIO format - VHS audio nodes, the LTX audio conditioning output, that family. It can't magically find audio inside a video file that was loaded as plain IMAGE frames.
Is it overhyped? A little, in the sense that "funky" is doing real work in the name. But for short music-video bursts, a 4-second clip warping to a kick drum genuinely slaps, and nothing else in the pack does this. Pair it with the clip ops - trim to the good section first, then let it dance.
Install
ComfyUI Manager → search "S42 CutFlow" → Install → restart. Or:
cd ComfyUI/custom_nodes/
git clone https://github.com/GeekyGhost/S42-CutFlow.git
pip install -r S42-CutFlow/requirements.txt
Restart fully; console prints [S42 CutFlow] Loaded 53 total nodes. It runs on CPU with numpy/torch - no models, no VRAM. The pack's only hard dependency is OpenCV (opencv-python-headless in requirements.txt, opencv-python in the README - either fixes "No module named 'cv2'").
One final word: this pack is a declared work-in-progress being refined for LTX Desktop, and this is exactly the node where that shows. If a setting moves between versions, blame the churn, not yourself.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | IMAGE | — | |
| audio | AUDIO | — | |
| fps | FLOAT | 24.00 | — |
| min_speed | FLOAT | 0.50 | — |
| max_speed | FLOAT | 2.00 | — |
| audio_smoothing | INT | 5 | — |
| dynamic_smoothness | BOOLEAN | true | — |
| edge_behavior | COMBO | loop | 3 options: ping_pong, loop, clamp |
| beat_reaction | COMBO | vj_remix | 4 options: none, vj_remix, chaos_reverse, stutter_step |
| beat_threshold | FLOAT | 0.70 | — |
| seed | INT | 42 | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| synced_video | IMAGE | — |
| original_audio | AUDIO | — |
| info | STRING | — |