Difforum · Glitch (DSP databending)
Convolution, delay-line databending, bitcrush, VHS — all in one node
- frames
- frames
If Datamosh is the motion-melt glitch, Difforum · Glitch (DSP databending) is the everything-else glitch: a one-stop IMAGE-batch node that stacks the full vocabulary of digital damage - convolution kernels, a 1D delay-line databender, bitcrushing, VHS jitter and banding, chroma blur, and RGB channel split. It's the node you reach for when you want your clip to look like it survived a damaged CRT feed, a broken JPEG pipeline, or a signal that's been through seven effects pedals. Works on a single image, a feedback render, or whole footage batches.
Everything defaults to 0/off, so it's an additive toolbox: turn on only what you want, stack as many as you like. The inputs, grouped by flavor:
- Kernel pass -
kernel(none/blur/sharpen/edge/emboss) with akernel_mix(0–1) controlling how much of the convolved result blends over the original. Edge + emboss give that "image processed through a broken scanner" texture. dsp_delay+dsp_feedback- the databending pair. A 1D delay line reads the image data (row-major, like a signal) and feeds part of it back:dsp_delayis the line length in samples (0–500k, stepped by 64 - think bytes of the image stream),dsp_feedback(0–0.95) how much loops back. This is the true databend - it smears the image along its own data layout rather than across spatial coordinates. This is the pair to play with last; it's the most unpredictable and the most authentically "databend."bitcrush(0–7) - quantize the color depth for that harsh digital staircase banding. 1–3 is subtle crunch, 6–7 is brutally posterized.- VHS trio -
vhs_jitter(0–64, horizontal line displacement),vhs_band(0–1, tracking-band strength),chroma_blur(0–31, color-channel smearing). Together: the tape-deck look. rgb_split(0–64) - chromatic aberration, channel separation in pixels. The cheapest way to sell "broken display" in any amount.seed(optional) - makes the jitter deterministic, which you want on video so the glitch doesn't re-roll into seizure flicker every frame.
Output: frames (IMAGE batch), same length in/out. This node loves the VJ pipeline - Load Video → grade → Glitch → Echo Trails → Save Video is a complete broken-tape aesthetic in a handful of nodes, no checkpoint required.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/chillithebillis/Difforum.git difforum
Restart ComfyUI ([Difforum] loaded N nodes) or ComfyUI Manager → "Difforum". numpy-only, no model downloads.
Common issues
- "Where do I even start?" One dial at a time.
rgb_splitat 8 +vhs_jitterat 12 +vhs_bandat 0.3 is an instantly recognizable VHS look with three clicks. Add bitcrush later. - The dsp pair does something horrifying. Yes - that's the point, but it's also the least predictable. Start with a big
dsp_delay(long line, less global smearing) and smalldsp_feedback; the texture of the effect depends on image width, so expect to fiddle. - Flickering chaos on video.
vhs_jitterwithout a fixedseedre-rolls per frame. Set the seed for a stable (but still glitchy) tape.
Honest verdict: it's a toy until it isn't. Most of these effects you'd reach for once a month; the VHS + RGB combo is good enough that it's the difference between "processed clip" and "found footage," and it costs zero models and almost zero compute.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| frames | IMAGE | — | |
| kernel | COMBO | none | 5 options: none, blur, sharpen, edge, emboss |
| kernel_mix | FLOAT | 0.500–1 | — |
| dsp_delay | INT | 00–500000 | — |
| dsp_feedback | FLOAT | 0.500–0.95 | — |
| bitcrush | INT | 00–7 | — |
| vhs_jitter | INT | 00–64 | — |
| vhs_band | FLOAT | 0.000–1 | — |
| chroma_blur | INT | 00–31 | — |
| rgb_split | INT | 00–64 | — |
| seedopt | INT | 00–4294967295 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| frames | IMAGE | — |