Skip to content

Modulation Curves

Modulation signals run through a response curve between the source and the output range. The curve is a piecewise function from [0, 1] to [0, 1], built from control points with optional Bezier tangent handles. Lightbridge ships 16 presets to cover common shapes — you can also build fully custom curves from inside the modulation panel.

Every preview below is computed at build time from the same evaluation function the engine uses at runtime (evaluateCurve in packages/engine/src/modulation/EnvelopeCurve.ts). They are exact.

Linear & inverse

The identity pair. linear passes the signal through unchanged; inverse flips it end-for-end.

Linear
Linear
Identity mapping — input passes through unchanged.
Inverse
Inverse
Straight diagonal, flipped — 1 → 0 and 0 → 1.

Eases

The classic animation curves. Use these when the default linear response feels lifeless.

  • Ease In accelerates — useful for “hit hard at the end” behaviours.
  • Ease Out decelerates — gentler responses on big signals.
  • S-Curve combines both — a smoothstep that flattens the ends and steepens the middle.
Ease In
Ease In
Slow start, fast finish — cubic ease in.
Ease Out
Ease Out
Fast start, slow finish — cubic ease out.
S-Curve
S-Curve
Slow, fast, slow — smoothstep / cubic S-curve.

Thresholds & stairs

Hard discrete responses. step is binary. 4-Step Ladder quantises into four plateaus, 8-Step Ladder into eight. Use these to turn a smooth signal into chunky, pixel-art-like motion.

Step
Step
Hard threshold at the midpoint.
4-Step Ladder
4-Step Ladder
Four equal steps from 0 to 1.
8-Step Ladder
8-Step Ladder
Eight finer steps — quantises the signal harder.

Bounce & pulse

Shapes that peak and return. bounce overshoots and settles — great for “punchy” reactions. pulse and gate give you rectangular on/off windows with soft and hard edges respectively.

Bounce
Bounce
Overshoot past the target, then settle — smooth bounce.
Pulse
Pulse
Smooth rectangular pulse — ramps up, holds, ramps down.
Gate
Gate
Hard rectangular gate — on/off at fixed thresholds.

Shaped peaks

Single-peak shapes. bell is smooth and symmetrical. spike is the same idea but angular. notch is the inverse of spike — a flat signal with a sharp dip.

Bell
Bell
Smooth dome — peaks in the middle, falls off gently.
Spike
Spike
Sharp triangular peak — sudden hit, sudden fall.
Notch
Notch
Inverted spike — flat with a sharp dip at the middle.

Plateau & alternating

shelf is a flat hold zone with smooth ramps into and out — useful for “hold at 80%” behaviours. zigzag gives you two alternating peaks across the input, which produces interesting rhythmic behaviour when driven by a slow LFO.

Shelf
Shelf
Plateau with smooth ramps into and out of the hold zone.
Zigzag
Zigzag
Sawtooth with alternating peaks and valleys.

Picking a curve

Rough guide:

You want…Try…
The modulation to feel linear and naturallinear (default)
A “dead zone” at low signal and snap at higheaseIn, step
Instant reaction that settleseaseOut
Smooth build-up and releasesCurve, bell
On/off with hard edgesgate
On/off with soft edgespulse
Overshoot and settle (physics feel)bounce
Chunky discrete levelsstairs4, stairs8
Flat but with a dipnotch
Flat plateau with edgesshelf
Rhythmic alternating shapezigzag

Custom curves

The modulation panel lets you edit the curve directly — add a point by clicking the curve, drag handles to adjust Bezier tangents, right-click for a context menu of operations. Custom curves are persisted per slot in the show file.

If you build a curve you want to reuse, the mod preset system saves the curve shape (without the rest of the slot config) so you can apply the same shape to other parameters later.