Flashback Manual Sync
The same morph effect, but the beats are hand-typed into the source
- ori1
- edit1
- ori2
- edit2
- ori3
- edit3
- ori4
- edit4
- audio
- frames
Flashback Manual Sync is the sibling node in the ComfyUI-video-warptrans pack, and you should know going in that it is not really a tool for your workflow. It's the author's reference edit: a version of the same original-vs-edited morph effect where the trigger times aren't detected from the music - they're hardcoded as precise HH:MM:SS:FF timecodes baked into the Python source, tuned frame-by-frame for one specific track.
Everything else is shared with its auto sibling. Same 4-segment / 8-image structure (ori1..4 / edit1..4), same dense optical flow warping between originals and edits, same glitch effects, same frames IMAGE-batch output that runs the full length of the audio. The one real difference is when things happen. Auto Sync asks "where are the beats?"; Manual Sync asks nothing - it reads the audio only for its duration, then plays a hardcoded timeline.
That's both the point and the trap. Because the timecodes are hardwired, this node only looks right with the song it was written for. Point it at any other track and the morphs fire on nothing in particular. If you're syncing your own music, use Flashback Auto Sync; treat Manual Sync as a reference implementation that shows you what "frame-accurate" beat sync looks like, and a working example of a hand-tuned edit structure - the first three segments use exactly observed timings, and the fourth is extrapolated at a steady 10 frames per beat.
The inputs
Required inputs are the eight images and the audio:
ori1..4,edit1..4(IMAGE) - one original/edited pair per segmentaudio(AUDIO) - from ComfyUI's Load Audio node; only its duration is used
Optional inputs are a slimmed-down set: fps, width, height, glitch_intensity, glitch_prob, and glitch_hold_strength. Notice what's missing: trans_dur, inter_trans_dur, and onset_delta - all the timing knobs are gone, because the timing is compiled in.
The output is frames (IMAGE batch), wired into VHS Video Combine at the same frame rate as the node. One important detail: the timecodes are written for 30fps, so leave fps at 30. Raise it and the hardcoded frame numbers get interpreted at a different clock, and your carefully-tuned sync quietly drifts.
Install & notes
Installation is the pack's - ComfyUI Manager, search Video WarpTrans, or:
cd ComfyUI/custom_nodes
git clone https://github.com/GuardSkill/ComfyUI-video-warptrans
pip install -r ComfyUI-video-warptrans/requirements.txt
Restart, and you're done; no model downloads, just opencv-python-headless, librosa, and numpy. If you see ImportError: pip install librosa or the opencv equivalent in the console, those deps didn't install - run the pip line and restart.
Real talk on usage: the honest use case for a beginner is almost zero. Its value is educational - read flashback_multi.py's build_manual_timeline() to see exactly how a beat-synced flashback edit is structured, then go make your own with Auto Sync, where the beat detection does the grunt work and you just tune onset_delta. If you ever want a custom song synced this precisely, you're editing timecodes in the source, not the graph.
Inputs (15)
| Name | Type | Default | Description |
|---|---|---|---|
| ori1 | IMAGE | — | |
| edit1 | IMAGE | — | |
| ori2 | IMAGE | — | |
| edit2 | IMAGE | — | |
| ori3 | IMAGE | — | |
| edit3 | IMAGE | — | |
| ori4 | IMAGE | — | |
| edit4 | IMAGE | — | |
| audio | AUDIO | — | |
| fpsopt | INT | 301–120 | — |
| widthopt | INT | 108064–4096 | — |
| heightopt | INT | 108064–4096 | — |
| glitch_intensityopt | FLOAT | 8.00–30 | — |
| glitch_probopt | FLOAT | 0.250–1 | — |
| glitch_hold_strengthopt | FLOAT | 0.350–1 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| frames | IMAGE | — |