Onda
Expressive and performant JIT-compiled audio programming language
Code example
A standard-library oscillator and resonant filter with a custom oversampled saturator
import std/osc
import std/filter
params:
freq = 110.0 {20.0, 880.0}
cutoff = 1200.0 {40.0, 12000.0}
resonance = 0.8 {0.1, 8.0}
drive = 1.0 {1.0, 10.0}
def soft_clip(x):
return tanh(x)
proc Saturator:
params:
amount = 1.0
sample 4:
out1 = soft_clip(in1 * amount)
init:
osc = std::osc::Saw()
filter = std::filter::Svf(cutoff = cutoff, q = resonance)
saturator = Saturator()
block:
filter.update_coeffs(cutoff, resonance)
sample:
tone = osc(freq = freq)
out1 = saturator(filter(tone), amount = drive)
Open in playground