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

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

Add a steady pulse under (or instead of) your reactive signal

By ryanontheinsideΒ·Created 2 years agoΒ·Updated 5 months agoΒ· 852
Feature Oscillator βš‘πŸ…‘πŸ…žπŸ…£πŸ…˜
  • feature
  • FEATURE
β—„oscillator_typeβ–Ύβ–Ί
β—„frequency1.0β–Ί
β—„amplitude0.50β–Ί
β—„phase_shift0.0β–Ί
β—„blend0.50β–Ί
β—„invert_outputfalseβ–Ί

Not every reactive effect should be entirely at the mercy of your audio or motion data - sometimes you want a steady, predictable pulse underneath it, the way a synth pad has an LFO ticking away regardless of what else is happening in the mix. Feature Oscillator generates a periodic wave - sine, square, sawtooth, or triangle - and blends it with an input feature, so you can layer rhythmic, data-independent motion on top of (or in place of) whatever's actually driving the rest of your reactivity.

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, extracted from a source and reshaped by Feature Modulator nodes like this one before it drives a Flex node's parameter or an external target.

How it works

The node generates a waveform of the type you pick (sine for smooth up-and-down motion, square for a hard on/off pulse, sawtooth for a ramp-and-snap pattern, triangle for a linear up-and-down) at your chosen frequency and amplitude, with phase_shift letting you offset where in the cycle it starts. blend then mixes that generated wave with your input feature - at 0 the output is entirely the original feature, at 1 it's entirely the oscillator, and values in between mix the two.

Inputs and outputs that matter

  • feature (required) - the input curve the oscillator blends against. This is required even if you want something close to a pure oscillator - push blend toward 1 to minimize the input feature's contribution.
  • oscillator_type - sine, square, sawtooth, or triangle.
  • frequency (0.1–10, default 1) - how fast the wave cycles.
  • amplitude (0.0–1.0, default 0.5) - how large the wave's swing is.
  • phase_shift (0 to 2Ο€, default 0) - where in the cycle the wave starts.
  • blend (0.0–1.0, default 0.5) - the mix between the original feature and the generated oscillation.
  • invert_output - flips the result.

Output is a single FEATURE, ready to wire into a Flex node's optional feature input.

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

Pure signal generation and math - no models, no GPU work, no audio-processing dependencies of its own, though it ships with the pack's full requirements set.

Where people get tripped up

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

The most common confusion with this node is frequency's units: neither the tooltip nor the README pins down whether it's cycles-per-second or cycles-across-the-whole-clip, and the node has no awareness of your source audio's actual tempo or duration - it only sees the feature curve it's given. Don't expect it to auto-sync to your track's BPM. Treat frequency as a dial you tune by eye against a preview render rather than a value you can calculate up front, and re-check it any time your clip length changes, since the same value can read as a slow drift on a short clip and a rapid flicker on a long one (or vice versa) depending on which convention the node actually uses.

CategoryRyanOnTheInside/FlexFeatures/FeatureModulators

Inputs (7)

NameTypeDefaultDescription
featureFEATUREInput feature to be processed
oscillator_typeCOMBOType of oscillation ("sine", "square", "sawtooth", "triangle")
frequencyFLOAT1.00.1–10Frequency of oscillation (0.1 to 10.0)
amplitudeFLOAT0.500–1Amplitude of oscillation (0.0 to 1.0)
phase_shiftFLOAT0.00–6.283185307179586Phase shift of oscillation (0.0 to 2Ο€)
blendFLOAT0.500–1Blend factor between original feature and oscillation (0.0 to 1.0)
invert_outputBOOLEANfalseβ€”

Outputs (1)

NameTypeDescription
FEATUREFEATUREβ€”