Nodes/ComfyTV/Kaleidoscope
ComfyUI Node

Kaleidoscope

Mirror-symmetric psychedelia with six knobs

By jtydhr88·Created 3 months ago·Updated about 16 hours ago· 725
Kaleidoscope
  • video
  • video
force_run_token0
project_id
parent_output_id0
segments6
angle0
source_angle0
center_x0.50
center_y0.50

Kaleidoscope is the effect you reach for when you want a music-video-grade trip on a clip that's otherwise too normal. It mirrors the frame around a center point into N symmetric segments, and because it runs per-frame over video, you get that rotating, mandala-ish chaos without touching a keyframe editor. It's a one-node visual identity changer - slap it on a talking head and suddenly it's an album cover.

It lives in ComfyTV, the canvas-style app layer that turns ComfyUI into a LibTV-style workbench where every operation is its own node and results flow downstream automatically. Kaleidoscope is one of the ~100 VideoFX stages.

How it works. This stage doesn't render a file itself - it's built for ComfyTV's FX Chain. Internally it appends a torch op (op kaleido) to a JSON chain that rides along the video, and the chain renders in a single pass when it's baked downstream (or previewed live in the node body). That's why most effects like this feel instant: you're stacking descriptions of transforms, not rendering each one. The live preview is the thing you'll actually tune against.

The inputs that matter. The force_run_token, project_id and parent_output_id inputs are internal plumbing - ignore them. The rest are the six knobs, all set in the node body:

  • segments - how many mirrored slices, 1 to 64. 6 is a gentle mandala; crank toward 32+ for full kaleidoscope melt.
  • angle - global rotation of the whole kaleidoscope pattern (degrees).
  • source_angle - rotates the source before mirroring; animating this one over time is where the "spinning" feel comes from.
  • center_x / center_y - the mirror point, 0–1 normalized (0.5/0.5 is dead center). Off-center gives you the asymmetric, editorial look.

The video input is optional but effectively required - this is a transform of an upstream clip, so wire in whatever COMFYTV_VIDEO you're effecting. The output is a video you can chain more FX onto or bake into a file.

Install. Install the pack once and every ComfyTV stage comes with it:

cd ComfyUI/custom_nodes
git clone https://github.com/jtydhr88/ComfyTV

Restart ComfyUI and find it under ComfyTV → VideoFX. ComfyUI Manager (search "ComfyTV") works too. The pleasant surprise: zero Python dependencies - the pack's pyproject.toml has an empty dependencies list, so there's nothing to conflict with your other nodes. The one install trap is ComfyUI Desktop or multi-install setups: clone into the running instance's absolute path (the startup log prints it) or the node never appears.

Where people get burned. The two classic mistakes are feeding it no video (the effect needs an upstream clip - nothing appears otherwise) and expecting it to output a finished file on its own. Because the FX chain defers rendering, "Run" on this stage alone may just hand the chained spec to the next stage. If you want a real render, let the chain flow into a bake/export stage or wherever your pipeline writes files. For subtle use, keep segments low and angle near 0; the default 6-segment full-center mirror is already loud.

CategoryComfyTV/VideoFX

Inputs (9)

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.
segmentsINT61–64
angleFLOAT0-180–180
source_angleFLOAT0-180–180
center_xFLOAT0.500–1
center_yFLOAT0.500–1
videooptCOMFYTV_VIDEO

Outputs (1)

NameTypeDescription
videoCOMFYTV_VIDEO