ComfyUI Node

FL Ripple

Radial wave distortion you can drive with audio

By filliptm·Created 3 years ago·Updated about 12 hours ago· 628
FL Ripple
  • images
  • mask
  • IMAGE
envelope_json
blend_intensity1.00
invertfalse
amplitude10.0
frequency20.0
phase0
center_x50.0
center_y50.0
modulation0.00

Drop a stone in a pond and watch the rings spread - that's the effect FL_Ripple paints onto your images. It applies a radial, sinusoidal displacement out from a center point, so pixels get pushed along concentric waves. Water surfaces, shockwaves, heat shimmer, trippy psychedelic warping - it's a straightforward VFX node that does one distortion well and gives you enough knobs to make it subtle or completely unhinged.

The bit that lifts it above a plain filter is that it can react to audio. Feed it an envelope and the ripple pulses with the sound, which drops it neatly into the pack's audio-reactive visual workflows alongside the scale, brightness, and glow nodes.

How it works

For every pixel, the node computes its distance from a center point and offsets it along a sine wave based on that distance. amplitude sets how far pixels get pushed, frequency sets how many rings pack into the image, and phase slides the whole wave pattern - animate the phase across a batch and the rings appear to travel outward. If you supply an envelope_json, the effect strength tracks that per-frame audio curve instead of staying constant, so the ripple breathes with the beat.

The inputs and outputs that matter

One required input:

  • images (IMAGE) - the frame or batch to distort.

The optionals are the whole toolkit:

  • amplitude (FLOAT, default 10) - displacement strength. The main "how intense" dial.
  • frequency (FLOAT, default 20) - ring density. Higher packs more, tighter waves.
  • center_x / center_y (FLOAT, default 50 each) - the ripple origin, as a percentage of the image (50/50 is dead center). Move it to ripple from a corner.
  • phase (FLOAT, 0–360) - wave offset; animate for traveling rings.
  • envelope_json (STRING) - optional audio curve to make the effect reactive.
  • mask (IMAGE), invert (BOOLEAN), blend_intensity (FLOAT, default 1), and modulation (FLOAT) round it out for confining and mixing the effect.

Output is a single IMAGE - the rippled result.

When you'd reach for it

Stylized transitions, water and energy effects, glitchy music-video visuals, or just adding organic movement to an otherwise static frame. On a batch with an animated phase it becomes a looping motion effect; with an audio envelope it becomes a beat-reactive one.

Installing it

ComfyUI ManagerComfyUI_Fill-Nodes → install → restart. Or:

cd ComfyUI/custom_nodes
git clone https://github.com/filliptm/ComfyUI_Fill-Nodes

then restart. It's part of the pack's VFX set; no unusual dependency of its own.

Common issues & troubleshooting

Way too much distortion. amplitude is doing that. Big amplitude plus high frequency turns an image into abstract soup fast. Back the amplitude down and raise frequency for fine ripples, or vice versa for big slow swells.

The center is in the wrong spot. center_x/center_y are percentages, not pixels - 0–100 across the image, 50 being center. If your ripple is originating off-frame, you've probably fed pixel values instead of percents.

No motion across frames. A single static phase gives the same ripple on every frame. Animate the phase (or drive the node with an envelope) to get movement.

Reactive mode does nothing. The envelope_json has to be a real per-frame curve from an upstream envelope node and match your frame count. Empty or mismatched, and the effect just stays at its constant strength.

Category🏵️Fill Nodes/VFX

Inputs (11)

NameTypeDefaultDescription
imagesIMAGE
envelope_jsonoptSTRING
blend_intensityoptFLOAT1.000–2
invertoptBOOLEANfalse
maskoptIMAGE
amplitudeoptFLOAT10.00.1–50
frequencyoptFLOAT20.01–100
phaseoptFLOAT00–360
center_xoptFLOAT50.00–100
center_yoptFLOAT50.00–100
modulationoptFLOAT0.000–1

Outputs (1)

NameTypeDescription
IMAGEIMAGE