Nodes/Difforum/Difforum · Feedback Sampler (Classic+) [legacy]
ComfyUI Node

Difforum · Feedback Sampler (Classic+) [legacy]

The heart of Difforum — warp, re-diffuse, colour-match, repeat

By chillithebillis·Created 4 months ago·Updated 2 days ago· 10
Difforum · Feedback Sampler (Classic+) [legacy]
  • model
  • positive
  • negative
  • vae
  • params
  • camera
  • init_image
  • strength_schedule
  • depth
  • cfg_schedule
  • positive_schedule
  • control_net
  • control_image
  • frames
◄steps20►
◄cfg7.0►
◄sampler_nameeuler►
◄schedulernormal►
◄color_coherence0.80►
◄color_modelab►
◄near1.00►
◄far100.00►
◄invert_depthfalse►
◄translation_scale1.0►
◄control_strength0.60►
◄symmetrynone►
◄symmetry_segments6►
◄borderreflection►
◄sharpen0.20►
◄noise0.020►
◄cadence1►
◄start_frame0►
◄end_frame0►
◄seed_modefixed►

This is the node the whole pack is built around. Difforum · Feedback Sampler (Classic+) is Deforum's famous feedback loop, rebuilt for modern models: each frame is born from the last - warp the previous frame along the camera path, re-diffuse it as img2img, match its colour back to the first frame, and repeat. The result is the continuous-morphing, psychedelic, living-image look Deforum was known for, except this version takes a plain ComfyUI MODEL, VAE, and CONDITIONING, so it runs SD1.5, SDXL, Flux, or SD3.5 - no 2023-era lock-in, no Python 3.12 refusal, no auto-queue hacks. If you want one sentence for what makes this pack worth installing, it's "Deforum that still runs on a current ComfyUI."

The required inputs read like a sampler plus a camera: model, positive, negative, vae, the params from Anim Setup, a camera track, an init_image for frame 0, and a strength_schedule (the per-frame denoise curve - lower strength = more stable, higher = more morph). Then the usual steps, cfg, sampler_name, scheduler, plus the two colour-coherence controls: color_mode (default lab - perceptual LAB matching, and yes, lab beats rgb for keeping a clip coherent) and color_coherence (0.7–0.9 is the sweet spot per the README).

The optional inputs are where it gets powerful, and the README's "Quality & coherence" section is basically a tour of them:

  • depth (+ near/far/invert_depth/translation_scale) - unlocks real 3D camera. No depth map, no 3D motion; that's the pack's most common gotcha.
  • positive_schedule - prompt travel, one conditioning per frame; the scene morphs its subject as the camera moves.
  • control_net + control_image + control_strength - structure guidance each frame (keep it ~0.3–0.5 if it feels rigid). Must match your base model family (SD1.5↔SD1.5, SDXL↔SDXL).
  • symmetry + symmetry_segments - fold the frame inside the loop; the diffusion heals the seams, giving the living-kaleidoscope look that the mesh of every frame compounds.
  • sharpen (0.2–0.5) and noise (0.02–0.05) - re-inject detail every frame so the loop resolves it into structure instead of amplifying blur (the anti-mush trick, same as Detail Guard).
  • border (default reflection) - stops black edges creeping in on zoom-out and rotation.
  • cadence (2–3) - only diffuse every Nth frame; the in-between frames ride the camera warp. Roughly N× faster with smoother motion.
  • seed_mode - fixed (default) reuses the same noise each frame, calming texture boil enormously; increment for livelier churn.

Output: a single frames IMAGE batch (frame 0 through max_frames), ready for VHS-style post, Flow Stabilize, or Save Video.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/chillithebillis/Difforum.git difforum

Restart ComfyUI ([Difforum] loaded N nodes in console) or ComfyUI Manager → "Difforum". numpy only; the sampler uses ComfyUI's own common_ksampler underneath, so no extra deps.

Common issues & the fixes that actually work

  • Flicker / texture boiling - lower per-frame strength to ~0.4–0.5, keep seed_mode=fixed, and run the frames through Flow Stabilize (~0.5). Naive frame blending ghosts; flow-aligned blending doesn't.
  • Colour drift - color_mode=lab, color_coherence 0.7–0.9.
  • All-black frames on SD1.5 - a real, pack-documented one: some ComfyUI builds make SD1.5 fp16 NaN. Launch with --force-fp32; it's a base-model precision issue, not Difforum.
  • Mush after many frames - sharpen ~0.3, noise ~0.02–0.05.
  • 3D camera does nothing - you're in 3d mode without a depth input.

This is the node people actually mean when they say "Deforum." It's also the one where the pack's 16 test suites and the difforum_feedback_classic.json template earn their keep - start from the template, swap in a modern checkpoint, and let the loop do its thing.

CategoryDifforum/legacy

Inputs (33)

NameTypeDefaultDescription
modelMODEL—
positiveCONDITIONING—
negativeCONDITIONING—
vaeVAE—
paramsDIFFORUM_PARAMS—
cameraDIFFORUM_CAMERA—
init_imageIMAGE—
strength_scheduleDIFFORUM_SCHEDULE—
stepsINT201–200—
cfgFLOAT7.00–30—
sampler_nameCOMBOeuler44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38
schedulerCOMBOnormal9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3
color_coherenceFLOAT0.800–1—
color_modeCOMBOlab3 options: lab, rgb, none
depthoptIMAGE—
cfg_scheduleoptDIFFORUM_SCHEDULE—
positive_scheduleoptDIFFORUM_PROMPT—
nearoptFLOAT1.000.01–1000—
faroptFLOAT100.000.02–10000—
invert_depthoptBOOLEANfalse—
translation_scaleoptFLOAT1.00–100—
control_netoptCONTROL_NET—
control_strengthoptFLOAT0.600–3—
control_imageoptIMAGE—
symmetryoptCOMBOnone5 options: none, mirror_h, mirror_v, mirror_quad, kaleidoscope
symmetry_segmentsoptINT62–64—
borderoptCOMBOreflection3 options: reflection, zeros, border
sharpenoptFLOAT0.200–2—
noiseoptFLOAT0.0200–0.5—
cadenceoptINT11–12—
start_frameoptINT00–1000000—
end_frameoptINT00–1000000—
seed_modeoptCOMBOfixed2 options: fixed, increment

Outputs (1)

NameTypeDescription
framesIMAGE—