Feedback FX
Self-referential video weirdness, vertigo mode included
- video
- video
Point a camera at its own monitor and you get the infinite regress that's been a visual effect since the 60s: the image feeding itself, shrinking into a tunnel of itself. Feedback FX is that trick as a node. Feed it a video and it re-feeds its own output back into the input, over and over, until you get trails, smears, and that hypnotic recursive zoom. It's a vibe node - you use it for music videos, dream sequences, and album covers, not for anything resembling realism.
How it works
ComfyTV is jtydhr88's canvas app - ~190 stages, each its own node, with per-node Run handled by hidden frontend inputs (force_run_token, project_id, parent_output_id) you never touch. Feedback FX is a temporal effect: over frames passes it composites the previous result back into the frame with feedback_mix controlling how much of the past survives each pass. The two creative knobs:
- mode - default vertigo, the classic dolly-zoom-style pulse where the zoom and the background fight each other. That's the "what does this even do" demo mode and a great place to start.
- style - default shuffle, which scrambles which part of the feedback is reused, giving you the organic, glitchy-organic smear rather than a clean tunnel.
zoom (how much each feedback pass scales), phase_increment (how fast the phase of the effect advances per frame), and seed (which permutation of the shuffle you get - bump it when a pass comes out ugly) round out the controls.
Optional video in, video out. No video in, nothing happens - it needs a source to start feeding on itself.
The settings that matter most
- feedback_mix (0–0.98, default 0.75) - this is the heart of the effect. Higher = more trails, more smear, faster descent into noise. Past about 0.9 the image decays into mush quickly, so treat the upper range as "yes, and I want it broken."
- frames (2–32) - how many feedback passes. More passes = longer trails but a heavier render.
- zoom - negative values zoom out, which gives a different feel (a collapse instead of a descent). Worth trying both directions.
Installing it
Same pack, same steps:
cd ComfyUI/custom_nodes
git clone https://github.com/jtydhr88/ComfyTV
or ComfyUI Manager ("ComfyTV"), then a full backend restart. It lives under ComfyTV → VideoFX.
The whole-pack gotcha: on ComfyUI Desktop, macOS, or multiple installs, clone into the running instance by absolute path, confirm custom_nodes/ComfyTV/__init__.py (not a nested ComfyTV/ComfyTV/…), and fully restart. No pip dependencies are declared, but video stages lazily import PyAV - pip install av if a video node errors.
Common issues
- Everything turns to white noise in two seconds -
feedback_mixtoo high for the content. Pull it to 0.6 and let the effect build. - The effect looks identical to the source - raise
feedback_mixand checkmode/style; at low mix the feedback is invisible. - Unwanted texture on faces - feedback amplifies whatever's bright. Key the effect or run it on a duplicated track at lower
mixrather than fighting the artifact.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| force_run_token | INT | 00–2147483647 | Internal — bumped on Run to invalidate ComfyUI's input cache. |
| project_id | STRING | Internal — populated by the projectStore on the frontend. | |
| parent_output_id | INT | 00–2147483647 | Internal — lineage parent set by spawn handlers on the frontend. |
| mode | COMBO | vertigo | 3 options: vertigo, echo, nervous |
| phase_increment | FLOAT | 0.0800–1 | — |
| zoom | FLOAT | 0.060-0.5–0.5 | — |
| feedback_mix | FLOAT | 0.750–0.98 | — |
| style | COMBO | shuffle | 2 options: shuffle, scratch |
| frames | INT | 322–32 | — |
| seed | INT | 70–99999 | — |
| videoopt | COMFYTV_VIDEO | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| video | COMFYTV_VIDEO | — |