Nodes/RyanOnTheInside/Feature To Mask βš‘πŸ…‘πŸ…žπŸ…£πŸ…˜
ComfyUI Node

Feature To Mask βš‘πŸ…‘πŸ…žπŸ…£πŸ…˜

The exit ramp out of RyanOnTheInside's reactive system

By ryanontheinsideΒ·Created 2 years agoΒ·Updated 5 months agoΒ· 852
Feature To Mask βš‘πŸ…‘πŸ…žπŸ…£πŸ…˜
  • feature
  • MASK

If you've landed on this page you've probably already run into a FEATURE output somewhere in the RyanOnTheInside pack and wondered what you're supposed to do with it. Short answer: plug it into this node, and it stops being a special pack-specific type and becomes an ordinary ComfyUI MASK - the kind every other node in your workflow already knows how to use.

Where it fits

RyanOnTheInside's whole thing is "everything-reactivity" - audio amplitude, MIDI velocity, motion from optical flow, depth, color, brightness, even plain elapsed time, all get extracted by dedicated Feature nodes into one common format: a normalized value per frame. That FEATURE object is fuel for the pack's own Flex nodes (FlexImageBloom, FlexAudioPitchShift, and so on), which all expose a feature_param / feature_mode pair that lets a feature nudge one of their settings frame by frame.

But not everything in your graph is a Flex node. Sometimes you just want the reactive signal itself, as a mask, so you can composite it, invert it, multiply it into an image, or feed it to a completely unrelated node pack that has no idea what a "Feature" is. That's what FeatureToMask is for - it converts the feature timeline directly into mask frames, one-to-one. High feature value at frame 12 (loud beat, fast motion, bright pixel, whatever your source was) becomes a bright region in mask frame 12; low value becomes dark.

Inputs and outputs

There's exactly one input and it's required: feature, type FEATURE. No knobs, no thresholds, no normalization options here - those live upstream, on whichever Feature-extraction node produced the value in the first place. FeatureToMask is deliberately dumb: it just relays.

The single output is MASK, and that's the whole point - it wires into anything downstream that accepts a mask: a compositing node, a MaskToImage, a SetLatentNoiseMask, an IPAdapter's mask slot, whatever your workflow needs. Once it's a plain mask, RyanOnTheInside's ecosystem is out of the picture entirely.

How to install it

Same as everything else in this pack. Easiest route is ComfyUI Manager - search "RyanOnTheInside" and install. Manual route:

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

Then restart ComfyUI. The requirements pull in audio (librosa), computer-vision (OpenCV, for the optical-flow-based motion features), and MIDI/Whisper dependencies used by other nodes in the pack - FeatureToMask itself doesn't need any of that, but you can't use the pack without them since everything ships as one dependency set.

The one install quirk worth knowing about, straight from the author: if ComfyUI Manager stops picking up updates for this pack, don't fight it - fully uninstall the node pack and reinstall from scratch. That resets whatever state gets Manager confused.

Common issues & troubleshooting

Nothing happens, or the node won't even run. FeatureToMask has no fallback behavior - feature is required and there's no way to leave it unwired. If you see an error here, it's almost always that you forgot to actually connect a Feature-extraction node upstream, not a bug in this node.

The mask looks inverted, or too flat/too extreme. There's nothing to adjust on FeatureToMask itself - no invert toggle, no min/max clamp. If the values feel wrong, that's a normalization or range issue on whichever Feature node produced them; fix it at the source rather than hunting for a setting here that doesn't exist.

The author, Ryan, is also one of the people behind ComfyStream and Daydream (real-time AI video tooling), which tracks with how this pack is built: it's designed for live, frame-by-frame reactivity rather than one-off image edits, and this node is the small, unglamorous piece that lets that reactivity leak out into the rest of ComfyUI.

CategoryRyanOnTheInside/FlexFeatures/Targets/ExternalTargets

Inputs (1)

NameTypeDefaultDescription
featureFEATUREβ€”

Outputs (1)

NameTypeDescription
MASKMASKβ€”