Nodes/S42 CutFlow/🕺 S42 CutFlow Funky Beat Sync
ComfyUI Node

🕺 S42 CutFlow Funky Beat Sync

Audio-Reactive Time Warping

By GeekyGhost·Created 6 months ago·Updated 4 months ago· 3
🕺 S42 CutFlow Funky Beat Sync
  • clip
  • audio
  • synced_video
  • original_audio
  • info
fps24.00
min_speed0.50
max_speed2.00
audio_smoothing5
dynamic_smoothnesstrue
edge_behaviorloop
beat_reactionvj_remix
beat_threshold0.70
seed42

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 - none is pure continuous speed-warping. vj_remix (default) adds beat-triggered shifts. chaos_reverse and stutter_step are the weird ones: reverse flips and stutter effects on hits. Start with vj_remix, get boring later.
  • edge_behavior - what happens at the clip's end when the audio runs longer: loop (default), ping_pong, or clamp (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.

CategoryS42 CutFlow/Audio/Advanced

Inputs (11)

NameTypeDefaultDescription
clipIMAGE
audioAUDIO
fpsFLOAT24.00
min_speedFLOAT0.50
max_speedFLOAT2.00
audio_smoothingINT5
dynamic_smoothnessBOOLEANtrue
edge_behaviorCOMBOloop3 options: ping_pong, loop, clamp
beat_reactionCOMBOvj_remix4 options: none, vj_remix, chaos_reverse, stutter_step
beat_thresholdFLOAT0.70
seedINT42

Outputs (3)

NameTypeDescription
synced_videoIMAGE
original_audioAUDIO
infoSTRING