Nodes/ComfyTV/Feedback FX
ComfyUI Node

Feedback FX

Self-referential video weirdness, vertigo mode included

By jtydhr88·Created 3 months ago·Updated about 15 hours ago· 725
Feedback FX
  • video
  • video
force_run_token0
project_id
parent_output_id0
modevertigo
phase_increment0.080
zoom0.060
feedback_mix0.75
styleshuffle
frames32
seed7

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_mix too high for the content. Pull it to 0.6 and let the effect build.
  • The effect looks identical to the source - raise feedback_mix and check mode/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 mix rather than fighting the artifact.
CategoryComfyTV/VideoFX

Inputs (11)

NameTypeDefaultDescription
force_run_tokenINT00–2147483647Internal — bumped on Run to invalidate ComfyUI's input cache.
project_idSTRINGInternal — populated by the projectStore on the frontend.
parent_output_idINT00–2147483647Internal — lineage parent set by spawn handlers on the frontend.
modeCOMBOvertigo3 options: vertigo, echo, nervous
phase_incrementFLOAT0.0800–1
zoomFLOAT0.060-0.5–0.5
feedback_mixFLOAT0.750–0.98
styleCOMBOshuffle2 options: shuffle, scratch
framesINT322–32
seedINT70–99999
videooptCOMFYTV_VIDEO

Outputs (1)

NameTypeDescription
videoCOMFYTV_VIDEO