Skip to content

DSP Builtins

Native (__native) constants and functions usable inside dsp blocks.

BEAT_EDGE: Number

Single-sample trigger pulse (1.0) at the start of each beat, 0.0 otherwise. Meaningful only inside dsp signal blocks.

BEAT_PHASE: Number

Sawtooth phase ramping 0.0→1.0 across each beat (fract(TIME * CPS * BPC)). Meaningful only inside dsp signal blocks; reads 0.0 elsewhere.

BPC: Number

Beats per cycle — number of beats spanning one transport cycle (default 4.0). Live transport value inside dsp signal blocks; the static default elsewhere.

CPS: Number

Cycles per second — tempo-derived frequency (e.g. 120 BPM = 2.0 CPS). Live inside dsp signal blocks; static default elsewhere.

CYCLE: Number

Sawtooth cycle position ramping 0.0→1.0 from the transport clock. Live inside dsp signal blocks; static elsewhere.

CYCLE_EDGE: Number

Single-sample trigger pulse (1.0) at the start of each transport cycle, 0.0 otherwise. Meaningful only inside dsp signal blocks.

CYCLE_PHASE: Number

Sawtooth phase ramping 0.0→1.0 across each transport cycle (fract(TIME * CPS)). Meaningful only inside dsp signal blocks; reads 0.0 elsewhere.

INV_SR: Number

Inverse sample rate (1.0 / SR). Useful for phase increment calculations.

PI: Number

Pi (3.14159…)

SR: Number

Current sample rate in Hz. Configure with config.sample_rate(rate).

TIME: Number

Elapsed time in seconds since the signal’s epoch. Available in dsp signal blocks only.

TWOPI: Number

Two pi / tau (6.28318…). Full cycle in radians.

abs(x) -> Number

Absolute value.

Parameters:

  • x — input value

Returns: |x|

ceil(x) -> Number

Round up to the nearest integer.

Parameters:

  • x — input value

Returns: smallest integer >= x

clamp(value, min, max) -> Number

Clamp a value to a range.

Parameters:

  • value — input value
  • min — lower bound
  • max — upper bound

Returns: value clamped to [min, max]

cos(x) -> Number

Cosine function.

Example:

__native("cos", phase * TWOPI)

Parameters:

  • x — angle in radians

Returns: cos(x) in the range [-1, 1]

exp(x) -> Number

Exponential function (e^x).

Parameters:

  • x — exponent

Returns: e raised to the power x

floor(x) -> Number

Round down to the nearest integer.

Parameters:

  • x — input value

Returns: largest integer <= x

fract(x) -> Number

Fractional part (x - floor(x)).

Example:

phase = __native("fract", phase + freq * INV_SR)

Parameters:

  • x — input value

Returns: fractional part in [0, 1)

ftom(freq) -> Number

Frequency in Hz to MIDI note number.

Parameters:

  • freq — frequency in Hz

Returns: MIDI note number (e.g. 440.0 -> 69)

lerp(a, b, t) -> Number

Linear interpolation between two values.

Parameters:

  • a — start value
  • b — end value
  • t — interpolation factor (0.0 = a, 1.0 = b)

Returns: a + (b - a) * t

log(x) -> Number

Natural logarithm (ln).

Parameters:

  • x — input value (must be > 0)

Returns: natural log of x

log10(x) -> Number

Base-10 logarithm.

Parameters:

  • x — input value (must be > 0)

Returns: log base 10 of x

log2(x) -> Number

Base-2 logarithm.

Parameters:

  • x — input value (must be > 0)

Returns: log base 2 of x

max(a, b) -> Number

Maximum of two values.

Parameters:

  • a — first value
  • b — second value

Returns: the larger of a and b

min(a, b) -> Number

Minimum of two values.

Parameters:

  • a — first value
  • b — second value

Returns: the smaller of a and b

mtof(midi) -> Number

MIDI note number to frequency in Hz.

Example:

let freq = __native("mtof", note)

Parameters:

  • midi — MIDI note number (fractional values supported for microtonal)

Returns: frequency in Hz (e.g. 69 -> 440.0)

pow(base, exp) -> Number

Raise base to exponent.

Parameters:

  • base — base value
  • exp — exponent

Returns: base^exp

round(x) -> Number

Round to the nearest integer.

Parameters:

  • x — input value

Returns: nearest integer to x

sin(x) -> Number

Sine function.

Example:

__native("sin", phase * TWOPI)

Parameters:

  • x — angle in radians

Returns: sin(x) in the range [-1, 1]

sqrt(x) -> Number

Square root.

Parameters:

  • x — input value (must be >= 0)

Returns: square root of x

tan(x) -> Number

Tangent function.

Parameters:

  • x — angle in radians

Returns: tan(x)

tanh(x) -> Number

Hyperbolic tangent — useful for soft clipping.

Example:

__native("tanh", input * gain)

Parameters:

  • x — input value

Returns: tanh(x) in the range (-1, 1)

aftertouch() -> Number

Read MIDI channel aftertouch, normalized to 0.0–1.0.

Returns: current aftertouch pressure in [0.0, 1.0]

cc(cc_num) -> Number

Read a MIDI CC value, normalized to 0.0–1.0.

Example:

__native("cc", 74)

Parameters:

  • cc_num — CC number (0–127), optionally preceded by channel

Returns: current CC value in [0.0, 1.0]

delay(input, time) -> Number

Integer sample delay (circular buffer, max 1 second).

Parameters:

  • input — audio signal
  • time — delay time in samples

Returns: delayed signal

delay_interp(input, time) -> Number

Fractional delay with linear interpolation (max 1 second).

Parameters:

  • input — audio signal
  • time — delay time in samples (fractional values supported)

Returns: delayed signal

noise() -> Number

White noise generator.

Returns: random value in [-1.0, 1.0], new sample each tick

onepole(input, coeff) -> Number

One-pole lowpass filter.

Parameters:

  • input — audio signal
  • coeff — filter coefficient (0–1, higher = tracks input faster)

Returns: smoothed signal

pitchbend() -> Number

Read MIDI pitch bend, normalized to -1.0–1.0.

Returns: current pitch bend in [-1.0, 1.0]

sample_hold(input, trigger) -> Number

Sample and hold — captures input on rising edge of trigger.

Parameters:

  • input — signal to sample
  • trigger — gate signal (captures on transition from <= 0 to > 0)

Returns: held value until next trigger

svf_allpass(input, cutoff, resonance) -> Number

State variable filter — allpass.

Parameters:

  • input — audio signal
  • cutoff — frequency in Hz (20–20000)
  • resonance — filter Q

Returns: phase-shifted signal (flat magnitude response)

svf_bp(input, cutoff, resonance) -> Number

State variable filter — bandpass.

Parameters:

  • input — audio signal
  • cutoff — center frequency in Hz (20–20000)
  • resonance — filter Q / bandwidth

Returns: filtered signal

svf_hp(input, cutoff, resonance) -> Number

State variable filter — highpass.

Parameters:

  • input — audio signal
  • cutoff — cutoff frequency in Hz (20–20000)
  • resonance — filter Q (0.707 = Butterworth)

Returns: filtered signal

svf_lp(input, cutoff, resonance) -> Number

State variable filter — lowpass (Zavalishin topology-preserving transform).

Example:

__native("svf_lp", input, 1000.0, 0.707)

Parameters:

  • input — audio signal
  • cutoff — cutoff frequency in Hz (20–20000)
  • resonance — filter Q (0.707 = Butterworth, higher = more resonant)

Returns: filtered signal

svf_notch(input, cutoff, resonance) -> Number

State variable filter — notch (band-reject).

Parameters:

  • input — audio signal
  • cutoff — notch frequency in Hz (20–20000)
  • resonance — filter Q / notch width

Returns: filtered signal

svf_peak(input, cutoff, resonance) -> Number

State variable filter — peak (bell).

Parameters:

  • input — audio signal
  • cutoff — center frequency in Hz (20–20000)
  • resonance — filter Q / bell width

Returns: filtered signal with boost around cutoff