DSP Builtins
Native (__native) constants and functions usable inside dsp blocks.
Constants
Section titled “Constants”BEAT_EDGE
Section titled “BEAT_EDGE”BEAT_EDGE: NumberSingle-sample trigger pulse (1.0) at the start of each beat, 0.0 otherwise. Meaningful only inside dsp signal blocks.
BEAT_PHASE
Section titled “BEAT_PHASE”BEAT_PHASE: NumberSawtooth phase ramping 0.0→1.0 across each beat (fract(TIME * CPS * BPC)). Meaningful only inside dsp signal blocks; reads 0.0 elsewhere.
BPC: NumberBeats per cycle — number of beats spanning one transport cycle (default 4.0). Live transport value inside dsp signal blocks; the static default elsewhere.
CPS: NumberCycles per second — tempo-derived frequency (e.g. 120 BPM = 2.0 CPS). Live inside dsp signal blocks; static default elsewhere.
CYCLE: NumberSawtooth cycle position ramping 0.0→1.0 from the transport clock. Live inside dsp signal blocks; static elsewhere.
CYCLE_EDGE
Section titled “CYCLE_EDGE”CYCLE_EDGE: NumberSingle-sample trigger pulse (1.0) at the start of each transport cycle, 0.0 otherwise. Meaningful only inside dsp signal blocks.
CYCLE_PHASE
Section titled “CYCLE_PHASE”CYCLE_PHASE: NumberSawtooth 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
Section titled “INV_SR”INV_SR: NumberInverse sample rate (1.0 / SR). Useful for phase increment calculations.
PI: NumberPi (3.14159…)
SR: NumberCurrent sample rate in Hz. Configure with config.sample_rate(rate).
TIME: NumberElapsed time in seconds since the signal’s epoch. Available in dsp signal blocks only.
TWOPI: NumberTwo pi / tau (6.28318…). Full cycle in radians.
Math Functions
Section titled “Math Functions”abs(x) -> NumberAbsolute value.
Parameters:
x— input value
Returns: |x|
ceil(x) -> NumberRound up to the nearest integer.
Parameters:
x— input value
Returns: smallest integer >= x
clamp(value, min, max) -> NumberClamp a value to a range.
Parameters:
value— input valuemin— lower boundmax— upper bound
Returns: value clamped to [min, max]
cos(x) -> NumberCosine function.
Example:
__native("cos", phase * TWOPI)
Parameters:
x— angle in radians
Returns: cos(x) in the range [-1, 1]
exp(x) -> NumberExponential function (e^x).
Parameters:
x— exponent
Returns: e raised to the power x
floor(x) -> NumberRound down to the nearest integer.
Parameters:
x— input value
Returns: largest integer <= x
fract(x) -> NumberFractional part (x - floor(x)).
Example:
phase = __native("fract", phase + freq * INV_SR)
Parameters:
x— input value
Returns: fractional part in [0, 1)
ftom(freq) -> NumberFrequency in Hz to MIDI note number.
Parameters:
freq— frequency in Hz
Returns: MIDI note number (e.g. 440.0 -> 69)
lerp(a, b, t) -> NumberLinear interpolation between two values.
Parameters:
a— start valueb— end valuet— interpolation factor (0.0 = a, 1.0 = b)
Returns: a + (b - a) * t
log(x) -> NumberNatural logarithm (ln).
Parameters:
x— input value (must be > 0)
Returns: natural log of x
log10(x) -> NumberBase-10 logarithm.
Parameters:
x— input value (must be > 0)
Returns: log base 10 of x
log2(x) -> NumberBase-2 logarithm.
Parameters:
x— input value (must be > 0)
Returns: log base 2 of x
max(a, b) -> NumberMaximum of two values.
Parameters:
a— first valueb— second value
Returns: the larger of a and b
min(a, b) -> NumberMinimum of two values.
Parameters:
a— first valueb— second value
Returns: the smaller of a and b
mtof(midi) -> NumberMIDI 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) -> NumberRaise base to exponent.
Parameters:
base— base valueexp— exponent
Returns: base^exp
round(x) -> NumberRound to the nearest integer.
Parameters:
x— input value
Returns: nearest integer to x
sin(x) -> NumberSine function.
Example:
__native("sin", phase * TWOPI)
Parameters:
x— angle in radians
Returns: sin(x) in the range [-1, 1]
sqrt(x) -> NumberSquare root.
Parameters:
x— input value (must be >= 0)
Returns: square root of x
tan(x) -> NumberTangent function.
Parameters:
x— angle in radians
Returns: tan(x)
tanh(x) -> NumberHyperbolic tangent — useful for soft clipping.
Example:
__native("tanh", input * gain)
Parameters:
x— input value
Returns: tanh(x) in the range (-1, 1)
DSP Functions
Section titled “DSP Functions”aftertouch
Section titled “aftertouch”aftertouch() -> NumberRead MIDI channel aftertouch, normalized to 0.0–1.0.
Returns: current aftertouch pressure in [0.0, 1.0]
cc(cc_num) -> NumberRead 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) -> NumberInteger sample delay (circular buffer, max 1 second).
Parameters:
input— audio signaltime— delay time in samples
Returns: delayed signal
delay_interp
Section titled “delay_interp”delay_interp(input, time) -> NumberFractional delay with linear interpolation (max 1 second).
Parameters:
input— audio signaltime— delay time in samples (fractional values supported)
Returns: delayed signal
noise() -> NumberWhite noise generator.
Returns: random value in [-1.0, 1.0], new sample each tick
onepole
Section titled “onepole”onepole(input, coeff) -> NumberOne-pole lowpass filter.
Parameters:
input— audio signalcoeff— filter coefficient (0–1, higher = tracks input faster)
Returns: smoothed signal
pitchbend
Section titled “pitchbend”pitchbend() -> NumberRead MIDI pitch bend, normalized to -1.0–1.0.
Returns: current pitch bend in [-1.0, 1.0]
sample_hold
Section titled “sample_hold”sample_hold(input, trigger) -> NumberSample and hold — captures input on rising edge of trigger.
Parameters:
input— signal to sampletrigger— gate signal (captures on transition from <= 0 to > 0)
Returns: held value until next trigger
svf_allpass
Section titled “svf_allpass”svf_allpass(input, cutoff, resonance) -> NumberState variable filter — allpass.
Parameters:
input— audio signalcutoff— frequency in Hz (20–20000)resonance— filter Q
Returns: phase-shifted signal (flat magnitude response)
svf_bp
Section titled “svf_bp”svf_bp(input, cutoff, resonance) -> NumberState variable filter — bandpass.
Parameters:
input— audio signalcutoff— center frequency in Hz (20–20000)resonance— filter Q / bandwidth
Returns: filtered signal
svf_hp
Section titled “svf_hp”svf_hp(input, cutoff, resonance) -> NumberState variable filter — highpass.
Parameters:
input— audio signalcutoff— cutoff frequency in Hz (20–20000)resonance— filter Q (0.707 = Butterworth)
Returns: filtered signal
svf_lp
Section titled “svf_lp”svf_lp(input, cutoff, resonance) -> NumberState variable filter — lowpass (Zavalishin topology-preserving transform).
Example:
__native("svf_lp", input, 1000.0, 0.707)
Parameters:
input— audio signalcutoff— cutoff frequency in Hz (20–20000)resonance— filter Q (0.707 = Butterworth, higher = more resonant)
Returns: filtered signal
svf_notch
Section titled “svf_notch”svf_notch(input, cutoff, resonance) -> NumberState variable filter — notch (band-reject).
Parameters:
input— audio signalcutoff— notch frequency in Hz (20–20000)resonance— filter Q / notch width
Returns: filtered signal
svf_peak
Section titled “svf_peak”svf_peak(input, cutoff, resonance) -> NumberState variable filter — peak (bell).
Parameters:
input— audio signalcutoff— center frequency in Hz (20–20000)resonance— filter Q / bell width
Returns: filtered signal with boost around cutoff