Nodes/RyanOnTheInside/Feature Interpolate Multi βš‘πŸ…‘πŸ…žπŸ…£πŸ…˜
ComfyUI Node

Feature Interpolate Multi βš‘πŸ…‘πŸ…žπŸ…£πŸ…˜

Reconcile three reactive signals so switching between them doesn't jump

By ryanontheinsideΒ·Created 2 years agoΒ·Updated 5 months agoΒ· 852
Feature Interpolate Multi βš‘πŸ…‘πŸ…žπŸ…£πŸ…˜
  • feature1
  • feature2
  • feature3
  • FEATURE1
  • FEATURE2
  • FEATURE3
β—„min_aggregate_value1.00β–Ί
β—„transition_frames5β–Ί
β—„invert_outputfalseβ–Ί

Most of the Feature Modulator nodes in this pack take one or two features in and give you one back. Feature Interpolate Multi is unusual: it takes three in and gives you three back out - FEATURE1, FEATURE2, FEATURE3 - reshaped against each other rather than merged into a single curve. If you've got three reactive signals feeding parallel effects and you want handoffs between them to feel smooth rather than abrupt, this is the node for that.

Quick orientation if you're new to the RyanOnTheInside pack (Ryan / u/ryanontheinside, also behind ComfyStream and Daydream's real-time reactive video work): a FEATURE is a per-frame value curve, produced by a Feature Extraction node and reshaped by Feature Modulator nodes like this one before it drives a Flex node's parameter or an external target.

How it works

Worth being upfront about: neither the pack's tooltips nor its README document the exact aggregation math for this node beyond the parameter names, so treat this as the functional read rather than a guaranteed internal description. transition_frames controls how many frames a handoff between the three inputs takes - set it higher for a slower, more gradual transition, lower for a snappier one. min_aggregate_value (0–10, higher than the usual 0–1 range you'll see on most feature params) sets a floor on the combined signal across the three, so the overall output doesn't collapse toward zero at the moments where all three inputs happen to be quiet simultaneously.

The practical use case: three parallel reactive signals - say, driving three different regions of a particle system, or three stages of an effect - that need to hand off to each other over the course of a clip without a visible seam. This node exists specifically in the "FeatureModulators" family, not "Utilities" or "Scheduling," which tells you it's meant to shape the curves themselves, not just report on them or bridge them elsewhere.

Inputs and outputs that matter

  • feature1 / feature2 / feature3 (required) - the three curves being reconciled against each other.
  • min_aggregate_value (0–10, default 1) - a floor for the combined signal.
  • transition_frames (1–100, default 5) - how many frames a handoff between inputs takes.
  • invert_output - flips the results.

Three outputs - FEATURE1, FEATURE2, FEATURE3 - each corresponding to its input, reshaped. Wire each into whatever Flex node parameter it's meant to drive.

Installing it

Via ComfyUI Manager: search RyanOnTheInside. Manual install:

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

This is math on already-extracted features - no models or GPU work required on its own, though it ships with the pack's full dependency set for the extraction nodes elsewhere.

Where people get tripped up

If a v1-to-v2 update leaves the pack broken, the README's documented fix is a clean uninstall and reinstall rather than a git pull.

Given the light documentation on this one specifically, the practical advice is to drop three Feature Info Node instances on the outputs and actually look at min_value/max_value before assuming the node did what you expected - that's the fastest way to confirm whether min_aggregate_value did what its name implies for your particular three inputs. If the transitions still feel abrupt, raise transition_frames well past the default of 5 before concluding the node isn't working; five frames at typical video frame rates is well under a quarter of a second and can read as instant.

CategoryRyanOnTheInside/FlexFeatures/FeatureModulators

Inputs (6)

NameTypeDefaultDescription
feature1FEATUREβ€”
feature2FEATUREβ€”
feature3FEATUREβ€”
min_aggregate_valueFLOAT1.000–10β€”
transition_framesINT51–100β€”
invert_outputBOOLEANfalseβ€”

Outputs (3)

NameTypeDescription
FEATURE1FEATUREβ€”
FEATURE2FEATUREβ€”
FEATURE3FEATUREβ€”