Nodes/RyanOnTheInside/Flex Mask Wave Propagation βš‘πŸ…‘πŸ…žπŸ…£πŸ…˜
ComfyUI Node

Flex Mask Wave Propagation βš‘πŸ…‘πŸ…žπŸ…£πŸ…˜

Ripples spreading out from your mask, like water

By ryanontheinsideΒ·Created 2 years agoΒ·Updated 5 months agoΒ· 852
Flex Mask Wave Propagation βš‘πŸ…‘πŸ…žπŸ…£πŸ…˜
  • masks
  • opt_feature
  • MASK
β—„strength1.00β–Ί
β—„feature_threshold0.00β–Ί
β—„feature_paramβ–Ύβ–Ί
β—„feature_moderelativeβ–Ί
β—„invertfalseβ–Ί
β—„subtract_original0.00β–Ί
β—„grow_with_blur0.0β–Ί
β—„mask_strength1.00β–Ί
β—„wave_speed50.0β–Ί
β—„wave_amplitude1.00β–Ί
β—„wave_decay5.000β–Ί
β—„wave_frequency0.10β–Ί
β—„max_wave_field750β–Ί

Close cousin to Flex Mask Emanating Rings, but built on wave-simulation math instead of simple concentric circles - this one models an actual decaying oscillation spreading outward from your mask, the classic "stone dropped in a pond" visual, with real wave physics vocabulary (speed, amplitude, decay, frequency) rather than a fixed ring pattern. It's the pick when you want something that reads as a physical ripple rather than a graphic ring effect.

How it works

wave_speed sets how fast the wavefront travels outward from the source. wave_amplitude is the wave's height - how strongly it displaces the mask value at its peak. wave_frequency controls how tightly packed the oscillations are (more frequency, more ripples per unit distance, closer to a texture; less, and you get a single broad pulse). wave_decay governs how quickly the wave loses energy as it travels - high decay means the ripple dies out fast near the source, low decay lets it propagate much further before fading. max_wave_field caps the overall size of the simulated field the wave is allowed to occupy. Five of these - speed, amplitude, decay, frequency, and the field size itself - are available through feature_param, so an audio feature can drive the propagation speed or the wave's height directly, which is the more physically grounded sibling to Emanating Rings' simpler propagation model.

Inputs and outputs that matter

  • masks (required, MASK) - the source the wave originates from.
  • wave_speed (default 50, 0.1–100) - propagation speed.
  • wave_amplitude (default 1, 0.1–2) - wave height/displacement.
  • wave_decay (default 5, 0.9–10) - how fast the wave loses energy.
  • wave_frequency (default 0.1, 0.01–10) - oscillation density.
  • opt_feature (optional, FEATURE) - drive speed, amplitude, decay, frequency, or field size reactively.
  • Output - a single MASK.

Installing it

Via ComfyUI Manager: search "RyanOnTheInside," install, restart. Manually:

cd ComfyUI/custom_nodes
git clone https://github.com/ryanontheinside/ComfyUI_RyanOnTheInside.git
cd ComfyUI_RyanOnTheInside
pip install -r requirements.txt

then restart. Simulation math on the mask, no model downloads.

Common issues & troubleshooting

Wave dies out almost immediately. wave_decay's default sits mid-range (5, out of a 0.9–10 scale) - if your ripple isn't traveling far enough before fading, lower it; higher values are for a sharp, contained pulse rather than a far-reaching ripple.

Looks like a texture, not a wave. wave_frequency set too high packs many oscillations close together, which reads as fine ripple texture rather than a single visible wavefront. Drop it toward the low end of its range for a cleaner, more singular ripple.

Nothing visible across a short clip. Like Emanating Rings, this is fundamentally a sequence effect - wave_speed needs frames to actually propagate anything. On a very short clip, push wave_speed up or give the sequence more length before assuming it's inert.

CategoryRyanOnTheInside/FlexFeatures/Targets/Masks

Inputs (15)

NameTypeDefaultDescription
strengthFLOAT1.000–1Overall strength of the feature modulation (0.0 to 1.0)
feature_thresholdFLOAT0.000–1Threshold for feature activation (0.0 to 1.0)
feature_paramCOMBOChoose which parameter to modulate: - wave_speed: Dynamically adjust propagation speed - wave_amplitude: Dynamically adjust wave height - wave_decay: Dynamically adjust decay rate - wave_frequency: Dynamically adjust oscillation speed - max_wave_field: Dynamically adjust field size - None: No parameter modulation
feature_modeCOMBOrelativeHow to apply the feature modulation: - relative: Changes are centered around the original value - absolute: Changes scale directly from zero to the maximum
masksMASKInput mask or sequence of masks to be processed (MASK type)
invertBOOLEANfalseWhen enabled, inverts the mask output (black becomes white and vice versa)
subtract_originalFLOAT0.000–1Amount of the original mask to subtract from the result (0.0 to 1.0)
grow_with_blurFLOAT0.00–10Amount of Gaussian blur to apply for mask growth (0.0 to 10.0)
mask_strengthFLOAT1.000–1Overall strength of the mask effect (0.0 to 1.0)
wave_speedFLOAT50.00.1–100Speed of wave propagation (0.1 to 100.0)
wave_amplitudeFLOAT1.000.1–2Amplitude of the wave effect (0.1 to 2.0)
wave_decayFLOAT5.0000.9–10Rate of wave decay (0.9 to 10.0)
wave_frequencyFLOAT0.100.01–10Frequency of wave oscillation (0.01 to 10.0)
max_wave_fieldFLOAT75010–10000Maximum size of the wave field (10.0 to 10000.0)
opt_featureoptFEATUREOptional feature input for modulation Connect any feature node here to control the effect. Features can come from audio, motion, color, or other sources.

Outputs (1)

NameTypeDescription
MASKMASKβ€”