Feature To Float β‘π ‘π π £π
The node that lets any widget in ComfyUI react to audio or motion
- feature
- FLOAT
This is the small utility node that quietly makes the whole pack more useful than just its own nodes. Ryan's system treats "FEATURE" as a first-class data type - a time-varying curve you can extract from audio amplitude, MIDI velocity, motion, depth, color, brightness, or spoken words via Whisper - and most of the pack's own "Flex" nodes accept a feature directly through an opt_feature input. But plenty of workflows want that reactivity somewhere the Flex system doesn't reach: a CFG scale on a totally unrelated sampler, a strength slider on someone else's custom node, a batch count. Feature To Float is the bridge. It converts a FEATURE into a plain FLOAT, which you can then wire - or convert-to-input and wire - into essentially any numeric widget in ComfyUI, Flex-aware or not.
Why this matters more than it looks
Without this node, feature reactivity is trapped inside nodes that were specifically built to accept it. With it, "make this parameter follow the beat" stops being a RyanOnTheInside-only trick and becomes something you can point at any node in your graph that takes a number. That's the actual value proposition here: it's not flashy, but it's the connective tissue between this pack's reactive engine and everything else installed in your ComfyUI.
How it works
There's no processing here beyond the type conversion itself - no smoothing, no scaling, no offset. The node takes whatever numeric curve is baked into the FEATURE object (it's extracted per-frame or per-sample upstream, wherever that feature was originally built) and hands it back out as a FLOAT. If you need to rescale the range before it hits your target node, you'd do that with a separate math node downstream, not here - this one node has exactly one job.
Inputs and outputs
feature(required,FEATURE) - the reactive curve to convert. This has to come from one of the pack's own feature-extraction sources (audio, motion, whisper, etc.) - you can't fabricate aFEATUREfrom a raw number without going through one of those.- Output - a single
FLOAT, ready to feed into anything that accepts a float, inside or outside this pack.
That's the entire interface. No thresholds, no strength multiplier, no mode switch - those live upstream, on whatever node produced the feature in the first place.
Installing it
Search RyanOnTheInside in ComfyUI Manager, or clone by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/ryanontheinside/ComfyUI_RyanOnTheInside
Then pip install -r requirements.txt inside the pack folder and restart. This particular node has no dependency of its own beyond what the feature-extraction nodes upstream already require - audio features need librosa, motion features lean on OpenCV, and so on, depending on which source feeds it.
Common issues
The most common confusion is expecting this node to do something to the value - clamp it, invert it, rescale it. It doesn't; it's a pure type converter. If your downstream parameter is blowing past its expected range, that's a feature-extraction or scaling problem upstream, not something to fix here.
The other snag is ComfyUI's own widget-vs-input mechanics: many nodes' numeric fields start as plain widgets, not input sockets, so you'll need to right-click and convert that widget to an input before you can wire a FLOAT output into it. That's standard ComfyUI behavior, not specific to this pack, but it's the step people forget when they can't figure out why they can't connect Feature To Float's output to the slider they wanted to drive.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| feature | FEATURE | Input feature to convert to float values |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| FLOAT | FLOAT | β |