Flex Mask Wave Propagation β‘π ‘π π £π
Ripples spreading out from your mask, like water
- masks
- opt_feature
- MASK
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.
Inputs (15)
| Name | Type | Default | Description |
|---|---|---|---|
| strength | FLOAT | 1.000β1 | Overall strength of the feature modulation (0.0 to 1.0) |
| feature_threshold | FLOAT | 0.000β1 | Threshold for feature activation (0.0 to 1.0) |
| feature_param | COMBO | Choose 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_mode | COMBO | relative | How to apply the feature modulation: - relative: Changes are centered around the original value - absolute: Changes scale directly from zero to the maximum |
| masks | MASK | Input mask or sequence of masks to be processed (MASK type) | |
| invert | BOOLEAN | false | When enabled, inverts the mask output (black becomes white and vice versa) |
| subtract_original | FLOAT | 0.000β1 | Amount of the original mask to subtract from the result (0.0 to 1.0) |
| grow_with_blur | FLOAT | 0.00β10 | Amount of Gaussian blur to apply for mask growth (0.0 to 10.0) |
| mask_strength | FLOAT | 1.000β1 | Overall strength of the mask effect (0.0 to 1.0) |
| wave_speed | FLOAT | 50.00.1β100 | Speed of wave propagation (0.1 to 100.0) |
| wave_amplitude | FLOAT | 1.000.1β2 | Amplitude of the wave effect (0.1 to 2.0) |
| wave_decay | FLOAT | 5.0000.9β10 | Rate of wave decay (0.9 to 10.0) |
| wave_frequency | FLOAT | 0.100.01β10 | Frequency of wave oscillation (0.01 to 10.0) |
| max_wave_field | FLOAT | 75010β10000 | Maximum size of the wave field (10.0 to 10000.0) |
| opt_featureopt | FEATURE | Optional 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)
| Name | Type | Description |
|---|---|---|
| MASK | MASK | β |