Flex Mask Emanating Rings β‘π ‘π π £π
Sonar-ping ripples radiating out from your mask
- masks
- opt_feature
- MASK
This is one of the more purely decorative nodes in the pack's mask family - instead of reshaping your source mask's edges, it generates concentric rings that propagate outward from it over the course of your sequence, like a sonar ping or a stone dropped in water. Feed it a subject mask and it turns that subject into an emitter of expanding rings, which is a fun effect on its own and a genuinely useful one paired with an audio FEATURE for a beat-synced pulse radiating off a person or object.
How it works
ring_speed controls how fast the rings expand outward per frame, ring_width sets how thick each ring is, and ring_falloff controls how quickly a ring fades as it travels - low falloff keeps rings visible far from the source, high falloff makes them fade fast, closer in. binary_mode switches between smooth, soft-edged gradient rings (off) and hard black-and-white rings (on). All three of the ring-specific parameters - speed, width, falloff - are available as feature_param targets, so an audio or motion signal can drive the pulse rate or thickness in real time instead of holding one constant rhythm for the whole clip. The same post-processing set as the rest of the Flex mask family sits on top: invert, subtract_original, grow_with_blur, and mask_strength.
Inputs and outputs that matter
masks(required,MASK) - the source shape the rings emanate from.ring_speed(default 0.05, 0.01β0.2) - propagation speed.ring_width(default 0.2, 0.01β0.5) - thickness of each ring.ring_falloff(default 0.5, 0β1) - how fast a ring fades as it travels outward.binary_mode- smooth gradient rings vs. hard-edged rings.opt_feature(optional,FEATURE) - drive ring speed, width, or falloff 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. Pure procedural generation on the mask - no model weights.
Common issues & troubleshooting
Rings look static or barely visible across the clip. This is a sequence effect - the rings need frames to actually propagate outward. On a single still image, or a very short clip, you likely won't see the expansion at all. Give it more frames, or push ring_speed up, before assuming it's not working.
Rings never seem to fade. Check ring_falloff - a low value keeps rings visible far out, which can read as "not fading" if your canvas or subject is large relative to the ring width. Push it up for rings that die out closer to the source.
Beat-synced pulse feels sluggish or mistimed. Ring propagation and your feature's timing are two separate clocks - ring_speed sets how fast a ring physically expands, while the feature only nudges that value up or down per-frame. If the pulse doesn't feel locked to the beat, it's worth checking your feature extractor's own smoothing/threshold settings before assuming this node's parameters are wrong.
Inputs (14)
| 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: - ring_speed: Dynamically adjust propagation speed - ring_width: Dynamically adjust ring thickness - ring_falloff: Dynamically adjust ring fade rate - 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) |
| ring_speed | FLOAT | 0.050.01β0.2 | Speed of ring propagation (0.01 to 0.2) |
| ring_width | FLOAT | 0.200.01β0.5 | Width of each ring (0.01 to 0.5) |
| ring_falloff | FLOAT | 0.500β1 | Rate at which rings fade out (0.0 to 1.0) |
| binary_mode | BOOLEAN | false | Whether to output binary rings instead of smooth gradients |
| 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 | β |