Modifiers
Float-in, float-out, these are the nodes you wire between a raw value source (a sound band, a time, a knob) and the port it's driving.
Most modifiers are stateless and trivially cheap. The accumulator, delay, smoothing and trigger nodes are the exceptions, they hold per- frame state so the value you read this frame depends on the previous ones.
Sine Wave
sineWaveModifierSine oscillator at a chosen frequency, amplitude and phase offset.
| Port | Type | Default | Range | Notes |
|---|---|---|---|---|
| frequency | float | 1 | , | |
| amplitude | float | 1 | , | |
| offset | float | 0 | , |
| Port | Type | Default | Range | Notes |
|---|---|---|---|---|
| value | float | , | , |
Output runs in [-amplitude, amplitude]; add offset to shift the centre.
Range Remap
rangeRemapModifierLinear remap from [inMin, inMax] to [outMin, outMax]. The most-used utility in the engine.
| Port | Type | Default | Range | Notes |
|---|---|---|---|---|
| value | float | 0 | , | |
| inMin | float | 0 | , | |
| inMax | float | 1 | , | |
| outMin | float | 0 | , | |
| outMax | float | 1 | , |
| Port | Type | Default | Range | Notes |
|---|---|---|---|---|
| result | float | , | , |
Same node as in Math & Logic, listed here too because it's the second-most-reached-for modifier after Sine Wave.
Step Sequencer
stepSequencerModifierOutputs a value from an 8-step sequence advancing at a given BPM.
| Port | Type | Default | Range | Notes |
|---|---|---|---|---|
| bpm | float | 120 | , |
| Port | Type | Default | Range | Notes |
|---|---|---|---|---|
| value | float | , | , | |
| step | int | , | , |
The eight step values are set on the inspector. The step output is the integer index, useful for triggering different actions per beat.
Accumulator
accumulatorModifierRunning sum of input × dt. Reset goes back to zero. The integrator primitive.
| Port | Type | Default | Range | Notes |
|---|---|---|---|---|
| input | float | 1 | , | |
| rate | float | 1 | , | |
| reset | float | 0 | , |
| Port | Type | Default | Range | Notes |
|---|---|---|---|---|
| value | float | , | , |
Drive a continuously-increasing rotation, fake an energy bar that fills over time, or build a one-shot ramp by feeding constant 1.
Smooth Value
smoothValueModifierExponential smoothing with separate up / down rates.
| Port | Type | Default | Range | Notes |
|---|---|---|---|---|
| value | float | 0 | , | |
| smoothUp | float | 0.9 | , | |
| smoothDown | float | 0.9 | , |
| Port | Type | Default | Range | Notes |
|---|---|---|---|---|
| result | float | , | , |
Asymmetric smoothing means a snappy attack and a slow release, exactly what you want when an audio band drives a brightness or scale.
Quantise
quantiseModifierSnaps a continuous value to N discrete steps.
| Port | Type | Default | Range | Notes |
|---|---|---|---|---|
| value | float | 0 | , | |
| steps | float | 4 | , |
| Port | Type | Default | Range | Notes |
|---|---|---|---|---|
| result | float | , | , |
Useful for stepped color shifts, pixel-art-style scale jumps or for making a smooth control feel notched.
Delay Value
delayValueModifierDelays the input by N seconds using a ring buffer.
| Port | Type | Default | Range | Notes |
|---|---|---|---|---|
| value | float | 0 | , | |
| delay | float | 0.5 | , |
| Port | Type | Default | Range | Notes |
|---|---|---|---|---|
| result | float | , | , |
Wire several at increasing delays to spread one signal across multiple downstream targets, like a lighting console's strobe-chase.
Limiter
limiterModifierHard clamp between min and max.
| Port | Type | Default | Range | Notes |
|---|---|---|---|---|
| value | float | 0 | , | |
| min | float | 0 | , | |
| max | float | 1 | , |
| Port | Type | Default | Range | Notes |
|---|---|---|---|---|
| result | float | , | , |
Math Modifier
mathModifierModifierUnary math, abs, floor, sin, cos, sqrt, exp, log, sign, etc. Pick the function on the inspector.
| Port | Type | Default | Range | Notes |
|---|---|---|---|---|
| value | float | 0 | , |
| Port | Type | Default | Range | Notes |
|---|---|---|---|---|
| result | float | , | , |
Curve Remap
curveRemapModifierPower-curve easing, pow(value, exponent). Set exponent < 1 for ease-out, > 1 for ease-in.
| Port | Type | Default | Range | Notes |
|---|---|---|---|---|
| value | float | 0 | , | |
| exponent | float | 2 | , |
| Port | Type | Default | Range | Notes |
|---|---|---|---|---|
| result | float | , | , |
Trigger Value
triggerValueModifierAttack / hold / release envelope retriggered by a threshold crossing.
| Port | Type | Default | Range | Notes |
|---|---|---|---|---|
| trigger | float | 0 | , | |
| attack | float | 0.05 | , | |
| hold | float | 0.1 | , | |
| release | float | 0.3 | , |
| Port | Type | Default | Range | Notes |
|---|---|---|---|---|
| value | float | , | , |
Fires a 0→1→0 envelope each time the trigger input crosses 0.5. Useful for one-shot punches off a bass band or a beat detector.
Texture utilities
These operate on texture streams rather than single floats - compositing, feedback, frame timing, and resolution changes. Most of their controls (blend mode, feedback amount, scale factor) live in the inspector; the connectable ports are listed below.
Composite Sources
compositeSourcesModifierLayers two texture sources with a selectable blend mode and opacity.
| Port | Type | Default | Range | Notes |
|---|---|---|---|---|
| background | texture | , | , | Bottom layer. Null = opaque black. |
| foreground | texture | , | , | Top layer. Null = transparent. |
| opacity | float | 1 | 0 – 1 | Foreground opacity. |
| Port | Type | Default | Range | Notes |
|---|---|---|---|---|
| texture | texture | , | , |
Proper premultiplied alpha-over compositing. The blend mode (Normal, Add, Multiply, Screen, Overlay, Lighten, Darken, Difference) is an inspector field. Use it to stack two finished chains.
Luminance Key
luminanceKeyModifierKeys out pixels by brightness - a luma key for removing dark or bright areas.
| Port | Type | Default | Range | Notes |
|---|---|---|---|---|
| texture | texture | , | , | Source. Null = transparent black. |
| low | float | 0 | 0 – 1 | Low luminance threshold. |
| high | float | 0.1 | 0 – 1 | High luminance threshold. |
| Port | Type | Default | Range | Notes |
|---|---|---|---|---|
| texture | texture | , | , |
Modulates alpha by a luminance key (Rec. 601 weights). Softness, invert, and key mode (key dark / key bright / keep the range between the thresholds) are inspector fields.
Temporal Filter
temporalFilterModifierExponential moving average over frames for motion blur, ghost trails, or temporal denoising.
| Port | Type | Default | Range | Notes |
|---|---|---|---|---|
| texture | texture | , | , | |
| smoothing | float | 0.8 | , | 0 = no trail, 1 = infinite trail. |
| Port | Type | Default | Range | Notes |
|---|---|---|---|---|
| texture | texture | , | , |
Accumulates each frame into a running average. A motion threshold and a fade-to-black option (inspector) let you trail only moving regions or slowly clear the buffer.
Frame Delay
frameDelayModifierDelays the input by N frames through a ring buffer, for time-offset effects and motion echo.
| Port | Type | Default | Range | Notes |
|---|---|---|---|---|
| texture | texture | , | , |
| Port | Type | Default | Range | Notes |
|---|---|---|---|---|
| texture | texture | , | , |
The delay length (1–30 frames) is an inspector field. Stack a few at different delays and composite them for a strobing echo trail.
Frame Buffer
frameBufferModifierFeedback loop that blends the current input with its own previous output for trails and recursive effects.
| Port | Type | Default | Range | Notes |
|---|---|---|---|---|
| texture | texture | , | , |
| Port | Type | Default | Range | Notes |
|---|---|---|---|---|
| texture | texture | , | , |
The classic feedback primitive. Feedback amount, per-frame decay, and a momentary clear are inspector fields. Insert a transform in the loop for zooming / rotating tunnels.
Downsample
downsampleModifierReduces resolution by an integer factor with optional box filtering - for pixelation or blur chains.
| Port | Type | Default | Range | Notes |
|---|---|---|---|---|
| texture | texture | , | , |
| Port | Type | Default | Range | Notes |
|---|---|---|---|---|
| texture | texture | , | , | 1/factor the input size. |
Factor (2×–16×) and box-filter vs point-sample are inspector fields. Pair with upsample to build cheap blurs.
Upsample
upsampleModifierIncreases resolution by an integer factor with bilinear or nearest filtering.
| Port | Type | Default | Range | Notes |
|---|---|---|---|---|
| texture | texture | , | , |
| Port | Type | Default | Range | Notes |
|---|---|---|---|---|
| texture | texture | , | , | factor × input, capped at 8K. |
Factor (2×–8×) and filter mode (bilinear or nearest, for pixel-art scaling) are inspector fields.
Resize
resizeModifierResizes the input to a scale factor or an absolute resolution, bilinear or nearest.
| Port | Type | Default | Range | Notes |
|---|---|---|---|---|
| texture | texture | , | , | |
| scaleFactor | float | 0.5 | 0.01 – 4 | Used in scale-factor mode. |
| Port | Type | Default | Range | Notes |
|---|---|---|---|---|
| texture | texture | , | , |
Mode (scale factor vs absolute), target width/height, and filter mode are inspector fields. Useful to pin a chain to a fixed working resolution.
Video Null
videoNullModifierPass-through node that forwards the input texture unchanged.
| Port | Type | Default | Range | Notes |
|---|---|---|---|---|
| texture | texture | , | , |
| Port | Type | Default | Range | Notes |
|---|---|---|---|---|
| texture | texture | , | , |
A no-op for organizing graphs: name a connection point, fan one signal out to several destinations, or leave a reroute handle while debugging. Null input returns transparent black.