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

Feature Combine βš‘πŸ…‘πŸ…žπŸ…£πŸ…˜

Mix two reactive signals into one

By ryanontheinsideΒ·Created 2 years agoΒ·Updated 5 months agoΒ· 852
Feature Combine βš‘πŸ…‘πŸ…žπŸ…£πŸ…˜
  • feature1
  • feature2
  • FEATURE
β—„operationβ–Ύβ–Ί
β—„weight11.00β–Ί
β—„weight21.00β–Ί
β—„invert_outputfalseβ–Ί

Once you've got more than one reactive signal going - say, an audio amplitude curve and a motion feature from the same clip - you eventually want them to act as one. Feature Combine takes two FEATURE curves and merges them with a math operation, weighting each one separately first. It's the basic mixing node in the RyanOnTheInside pack's Feature Modulator family, and you'll reach for it any time you want a single parameter to respond to more than one thing at once.

Quick context if you're new to this pack (by Ryan / u/ryanontheinside, also behind ComfyStream and Daydream's real-time reactive video work): a FEATURE here is a normalized per-frame curve, extracted from a source like audio, MIDI, or motion by a Feature Extraction node, then reshaped by Feature Modulator nodes like this one before it drives a Flex node's parameter (FlexImage, FlexMask, FlexParticles) or an external target.

How it works

Each input feature is scaled by its own weight first - weight1 for feature1, weight2 for feature2 - and then the two are combined using whichever operation you pick: add, subtract, multiply, divide, max, or min. Add and multiply are the ones you'll use most: add for "both signals contribute," multiply for "only react when both are active" (since multiplying by a near-zero value suppresses the result even if the other feature is high). Max and min are useful when you want the combined curve to just track whichever input happens to be higher or lower at any given frame, rather than blending them numerically.

Inputs and outputs that matter

  • feature1 / feature2 (required) - the two curves to combine.
  • operation - one of add, subtract, multiply, divide, max, min.
  • weight1 / weight2 (0.0–1.0, default 1 each) - per-feature scaling applied before the operation. Drop one to 0 and that feature effectively stops contributing.
  • invert_output - flips the resulting curve.

Output is a single FEATURE, the combined curve - wire it into a Flex node's optional feature input, or chain it into another modulator if you need further shaping.

Installing it

Through ComfyUI Manager: search RyanOnTheInside. Manually:

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

Like the other modulator nodes, Feature Combine itself is lightweight math on top of already-extracted features - it's the Feature Extraction nodes elsewhere in the pack (audio, MIDI, optical flow) that need the heavier dependencies, but they all install together from the one requirements file.

Where people get tripped up

The README warns that upgrading from v1 to v2 has broken installs for some users - the documented fix is a full uninstall and reinstall, not a git pull on top of the old version.

The gotcha specific to this node is divide: if feature2 (or the weighted version of it) ever hits zero for a frame, you're dividing by zero, and depending on how your downstream node handles that, you can end up with a spike, a NaN, or an error partway through your render. If you're using divide, it's worth routing feature2 through something like Feature Rebase or Feature Renormalize first so its floor never actually reaches zero. The other common trip-up is forgetting that weight1/weight2 only go up to 1.0 - if you want one feature to dominate more aggressively than a 1:1 weighted blend allows, combine this node with Feature Math afterward to scale the result further, rather than expecting the weights alone to do it.

CategoryRyanOnTheInside/FlexFeatures/FeatureModulators

Inputs (6)

NameTypeDefaultDescription
feature1FEATUREFirst input feature
feature2FEATURESecond input feature
operationCOMBOMathematical operation to perform ("add", "subtract", "multiply", "divide", "max", "min")
weight1FLOAT1.000–1Weight applied to feature1 (0.0 to 1.0)
weight2FLOAT1.000–1Weight applied to feature2 (0.0 to 1.0)
invert_outputBOOLEANfalseβ€”

Outputs (1)

NameTypeDescription
FEATUREFEATUREβ€”