~mod marks parameters that accept inline modulation — e.g. lpf/200~4000:2, verb/0>0.9:8, combfreq/100?1200:0.5.

sources

Basic

see also OscillatorWavetable

These sources provide fundamental waveforms that can be combined and manipulated to create complex sounds. They are inspired by classic substractive synthesizers.

sine

Pure sine wave. The simplest waveform with no harmonics.

tri

Triangle wave. Contains only odd harmonics with gentle rolloff.

saw

Band-limited sawtooth wave. Rich in harmonics, bright and buzzy.

zaw

Naive sawtooth with no anti-aliasing. Cheaper but more aliasing artifacts than saw.

pulse

Band-limited pulse wave. Hollow sound with only odd harmonics. Use /pw to control pulse width.

pulze

Naive pulse with no anti-aliasing. Cheaper but more aliasing artifacts than pulse.

white

White noise. Equal energy at all frequencies.

pink

Pink noise (1/f). Equal energy per octave, more natural sounding.

brown

Brown/red noise (1/f^2). Deep rumbling, heavily weighted toward low frequencies.

osc

Morphing oscillator. Sweeps through sine, triangle, saw, and square as wave goes from 0 to 1. The wave parameter is modulable.

pluck

Karplus-Strong plucked string. A noise burst rings through a tuned, damped feedback loop. The string is retuned every sample, so vibrato and pitch modulation bend it continuously. Aliases: ks, string.

Every source names its three tone-shaping parameters this way: semantic names per source, while the generic timbre, harmonics, and morph work on all of them — useful when retargeting a sounding voice without restating sound.

paramaliasrangedefaultdescription
bright~modtimbre0–10.5brightness (loop damping: 0 = dark thud, 1 = bright ring)
ring~modharmonics, harm0–10.5sustain (0 = dead, 0.5 ≈ half-second tail, 1 = drone)
excite~modmorph0–10.5excitation color (0 = soft dark pluck, 1 = snappy attack)
sources

Drums

Synthesized percussion. Each drum has percussive defaults so it sounds right without extra parameters. All tonal drums (kick, snare, tom, rim) support wave to change the oscillator waveform: 0 = sine (default), 0.5 = triangle, 1 = sawtooth. Values in between crossfade smoothly.

Each drum names its tone-shaping parameters semantically; the generic timbre, harmonics, and morph still work on every drum as aliases.

kick

Pitched body with sweep and optional saturation. Aliases: bd. Default freq: 55 Hz.

paramaliasrangedefaultdescription
sweep~modmorph0–10.5sweep depth (subtle to boomy)
punch~modharmonics, harm0–10.5sweep speed
drive~modtimbre0–10.5saturation
wave~modwaveform0–10oscillator waveform (0 sine, 0.5 triangle, 1 sawtooth)
snare

Body + noise. Aliases: sd. Default freq: 180 Hz.

paramaliasrangedefaultdescription
snappy~modtimbre0–10.5body/noise mix
bright~modharmonics, harm0–10.5noise brightness
wave~modwaveform0–10oscillator waveform (0 sine, 0.5 triangle, 1 sawtooth)
hat

Phase-modulated metallic tone through a resonant lowpass. Aliases: hh, hihat. Default freq: 320 Hz.

paramaliasrangedefaultdescription
metal~modmorph0–10.5clean to metallic (ratio spread)
bright~modharmonics, harm0–10.5dark to bright (filter cutoff)
reso~modtimbre0–10.5filter resonance
tom

Pitched body with gentle sweep and optional noise. Default freq: 120 Hz.

paramaliasrangedefaultdescription
sweep~modmorph0–10.5sweep depth
punch~modharmonics, harm0–10.5sweep speed
noise~modtimbre0–10.5stick-noise amount
wave~modwaveform0–10oscillator waveform (0 sine, 0.5 triangle, 1 sawtooth)
rim

Short pitched click with noise. Aliases: rimshot, rs. Default freq: 400 Hz.

paramaliasrangedefaultdescription
shift~modmorph0–10.5upper partial shift
bright~modharmonics, harm0–10.5click brightness
ring~modtimbre0–10.5ring length
wave~modwaveform0–10oscillator waveform (0 sine, 0.5 triangle, 1 sawtooth)
cowbell

Two detuned oscillators through a bandpass. Aliases: cb. Default freq: 540 Hz.

paramaliasrangedefaultdescription
clang~modmorph0–10.5detune amount
bright~modharmonics, harm0–10.5brightness (bandpass center)
drive~modtimbre0–10.5metallic bite (saturation)
cymbal

Inharmonic metallic wash with filtered noise. Aliases: crash, cy. Default freq: 420 Hz.

paramaliasrangedefaultdescription
metal~modmorph0–10.5ratio spread (bell-like to crash)
bright~modharmonics, harm0–10.5brightness (dark to sizzly)
sizzle~modtimbre0–10.5noise tail (pure metallic to noisy crash)
sources

Io

This special source allows you to create a live audio input (microphone) source. Click the ‘Enable Mic’ button in the nav bar first. Effects chain applies normally, envelopes are applied to the input signal too.

live

Live audio input (microphone). Click the ‘Enable Mic’ button in the nav bar first. Effects chain applies normally.

sources

Wavetable

see also Basic

You can use any audio sample as a wavetable oscillator. The sample is played at the specified pitch. The cycle length for each wavetable can be specified with wtlen. Use audio-rate modulation on scan to animate the wavetable position (e.g. scan “0~1:2t”).

scan ~mod number 0–1 =0

Wavetable position. For multi-cycle wavetables, morphs between adjacent waveforms.

wtlen number =0

Cycle length in samples. Set to 0 to use entire sample as one cycle. Common values: 256, 512, 1024, 2048 (Serum standard).

sources

Soundfont

General MIDI playback using SF2 soundfont files. Native engine only — examples on this page won’t produce sound in the browser. Place an .sf2 file inside your samples directory and start doux with --samples.

gm[preset]

Plays a General MIDI instrument. The preset name is part of the source: gmpiano, gmstrings, gmdrums, etc. The engine reads envelope and loop data from the soundfont.

Available preset names
0gmpiano24gmguitar48gmstrings72gmpiccolo
1gmbrightpiano25gmsteelguitar49gmslowstrings73gmflute
4gmepiano26gmjazzguitar52gmchoir74gmrecorder
6gmharpsichord27gmcleangt56gmtrumpet75gmpanflute
7gmclavinet29gmoverdrive57gmtrombone79gmwhistle
8gmcelesta30gmdistgt58gmtuba80gmocarina
9gmglockenspiel33gmbass60gmhorn81gmlead
10gmmusicbox34gmpickbass61gmbrass82gmsawlead
11gmvibraphone35gmfretless64gmsopranosax89gmpad
12gmmarimba36gmslapbass65gmaltosax90gmwarmpad
13gmxylophone38gmsynthbass66gmtenorsax91gmpolysynth
14gmbells40gmviolin67gmbarisax104gmsitar
16gmorgan41gmviola68gmoboe105gmbanjo
19gmchurchorgan42gmcello70gmbassoon108gmkalimba
21gmaccordion43gmcontrabass71gmclarinet114gmsteeldrum
22gmharmonica45gmpizzicato
46gmharp
47gmtimpani

Drums are on a separate bank: use gmdrums or gmpercussion.

synthesis

Pitch

see also Vibrato

Pitch control for all sources, including audio samples.

freq ~mod number 20–20000Hz =330

The frequency of the sound. Has no effect on noise.

note ~mod number 0–127midi

The note (midi number) that should be played. If both note and freq is set, freq wins.

speed ~mod number =1

Multiplies with the source frequency or buffer playback speed.

detune ~mod number cents =0

Shifts the pitch by the given amount in cents. 100 cents = 1 semitone.

synthesis

Timing

The engine clock starts at 0 and advances with each sample. Events with time are scheduled and fired when the clock reaches that value. The gate sets how long the gate stays open before triggering release.

time number ≥0s =0

The time at which the voice should start. Defaults to 0.

gate number ≥0s =1

The gate duration in seconds. Controls how long the note is held before triggering the release phase. A value of 0 means infinite sustain (the voice will play until released explicitly).

synthesis

Envelope

The envelope parameters control the shape of the gain envelope over time. It uses a DAHDSR envelope with exponential curves:

  • Delay: Waits before the attack begins. The signal stays at 0 during this phase.
  • Attack: Ramps from 0 to full amplitude. Uses (slow start, fast finish).
  • Hold: Holds at full amplitude before the decay begins.
  • Decay: Falls from full amplitude to the sustain level. Uses 1-(1-x)² (fast drop, slow finish).
  • Sustain: Holds at a constant level while the note is held.
  • Release: Falls from the sustain level to 0 when the note ends. Uses 1-(1-x)² (fast drop, slow finish).
envdelay envdly number ≥0s =0

The duration (seconds) of the delay phase of the gain envelope. The signal stays silent during this time.

attack number ≥0s =0.003

The duration (seconds) of the attack phase of the gain envelope.

hold hld number ≥0s =0

The duration (seconds) of the hold phase of the gain envelope. The signal stays at full amplitude during this time.

decay number ≥0s =0

The duration (seconds) of the decay phase of the gain envelope.

sustain number 0–1 =1

The sustain level (0-1) of the gain envelope.

release number ≥0s =0.005

The duration (seconds) of the release phase of the gain envelope.

synthesis

Voice

Doux is a polyphonic synthesizer with up to 32 simultaneous voices. By default, each event allocates a new voice automatically. When a voice finishes (envelope reaches zero), it is freed and recycled. The voice parameter lets you take manual control over voice allocation, enabling parameter updates on active voices or retriggering with reset.

voice number ≥0

The voice index to use. If set, voice allocation will be skipped and the selected voice will be used. If the voice is still active, the sent params will update the active voice.

reset boolean =false

Only has an effect when used together with voice. If set to 1, the selected voice will be reset, even when it’s still active. This will cause envelopes to retrigger for example.

Use slew modulation (>target:duration) to smoothly transition parameters on an active voice instead of jumping instantly:

synthesis

Oscillator

see also Basic

These parameters are dedicated to alter the nominal behavior of each oscillator. Some parameters are specific to certain oscillators, most others can be used with all oscillators.

pw ~mod number 0–1 =0.5

The pulse width (between 0 and 1) of the pulse oscillator. The default is 0.5 (square wave). Only has an effect when used with /sound/pulse or /sound/pulze.

spread number 0–100 =0

Stereo unison. Adds 6 detuned voices (7 total) with stereo panning. Works with sine, tri, saw, zaw, pulse, pulze.

Inspired by the M8 Tracker’s WavSynth, these parameters transform the oscillator phase to create new timbres from basic waveforms. They work with all basic oscillators (sine, tri, saw, zaw, pulse, pulze).

size number 0–256 =0

Phase quantization steps. Creates stair-step waveforms similar to 8-bit sound chips. Set to 0 to disable, or 2-256 for increasing resolution. Lower values produce more lo-fi, chiptune-like sounds.

warp number -1–1 =0

Phase asymmetry using a power curve. Positive values compress the early phase and expand the late phase. Negative values do the opposite. Creates timbral variations without changing pitch.

mirror ~mod number 0–1 =0

Reflects the phase at the specified position. At 0.5, creates symmetric waveforms (a saw becomes triangle-like). Values closer to 0 or 1 create increasingly asymmetric reflections.

Sub Oscillator

A secondary oscillator tuned octaves below the main oscillator. Works with all basic oscillators (sine, tri, saw, zaw, pulse, pulze), pluck, and spread mode.

sub ~mod number 0–1 =0

Mix level of the sub oscillator. At 0 the sub is silent, at 1 it matches the main oscillator volume.

suboct number 1–3 =1

Octave offset below the main oscillator. 1 means one octave down, 2 means two octaves down, 3 means three octaves down.

subwave enum =tri tri | sine | square

Waveform of the sub oscillator.

Sync

A hidden master oscillator runs at the note frequency and drives the main oscillator on each master wrap. Two algorithms are available: hard (classic analog, phase reset each wrap — tearing, aggressive) and soft (main oscillator’s direction flips each wrap — smoother, filter-sweep character, less aliasing). Works with all basic oscillators (sine, tri, saw, zaw, pulse, pulze) as well as the add and osc sources.

sync ~mod number 1–64 =1

Sync ratio. The main oscillator runs at freq * sync and is synced each time the hidden master at freq wraps. 1 disables sync (no effect). Modulate it for the classic sweep.

syncphase ~mod number 0–1 =0

Hard-mode only: phase value the main oscillator resets to on each sync event. Non-zero values shift the reset point for additional timbral variation. Ignored in soft mode. Aliased as syncph.

syncmode enum =hard hard | soft

Sync algorithm. hard resets the main oscillator’s phase each time the master wraps (classic tearing). soft flips the main oscillator’s direction instead (smoother sweep, less aliasing). syncphase only applies in hard mode.

synthesis

Gain

The signal path is: oscillator → gain * velocity → filters → distortion → modulation → phaser/flanger → envelope * postgain → chorus → pan.

gain ~mod number ≥0 =1

Pre-filter gain multiplier. Applied before filters and distortion, combined with velocity as gain * velocity.

postgain ~mod number ≥0 =1

Post-effects gain multiplier. Applied after phaser/flanger, combined with the envelope as envelope * postgain.

velocity number 0–1 =1

Multiplied with gain before filters.

pan ~mod number 0–1 =0.5

Stereo position using constant-power panning: left = cos(pan * π/2), right = sin(pan * π/2). 0 = left, 0.5 = center, 1 = right.

width ~mod number 0–2 =1

Stereo width using mid-side processing. At 0 the signal collapses to mono, at 1 it is unchanged, above 1 the stereo image is exaggerated.

haas ~mod number 0–35ms =0

Haas effect. Delays the right channel by a short amount (1-35ms) to create spatial placement without changing volume. Small values (1-10ms) widen the image, larger values (10-35ms) create a distinct echo.

synthesis

Vibrato

see also Pitch

The pitch of every oscillator can be modulated by a vibrato effect. Vibrato is a technique where the pitch of a note is modulated slightly around a central pitch, creating a shimmering effect.

vib ~mod number ≥0Hz =0

Vibrato frequency (in hertz).

vibmod ~mod number ≥0semitones =0

Vibrato modulation depth (semitones).

vibshape string =sine

Vibrato LFO waveform shape. Options: sine, tri, saw, square, sh (sample-and-hold).

synthesis

Frequency Modulation

see also Amplitude ModulationRing Modulation

Any source can be frequency modulated. Frequency modulation (FM) is a technique where the frequency of a carrier wave is varied by an audio signal. This creates complex timbres and can produce rich harmonics, from mellow timbres to harsh digital noise. A second modulator can be enabled with fm2 for 3-operator FM. Instead of a discrete algorithm selector, fmpivot continuously rotates op2’s output between op1 and the carrier, sweeping through cascade, branch, parallel, and their phase-inverted variants on a single circle.

fm ~mod number ≥0 =0

The frequency modulation index. FM multiplies the gain of the modulator, thus controls the amount of FM applied.

fmh ~mod number =1

The harmonic ratio of the frequency modulation. fmh*freq defines the modulation frequency. As a rule of thumb, numbers close to simple ratios sound more harmonic.

fmshape string =sine

FM modulator waveform shape. Options: sine, tri, saw, square, sh (sample-and-hold). Different shapes create different harmonic spectra.

fm2 ~mod number ≥0 =0

Modulation index for the second FM operator. When fm2 is greater than 0, a third operator is introduced. Its routing is controlled by fmpivot. The second operator shares the same waveform (fmshape) as the first.

fm2h ~mod number =1

Harmonic ratio of the second FM operator. fm2h * carrier frequency defines the second modulator’s frequency.

fmpivot ~mod number 0–1 =0

Continuous op2 routing pivot, wraps. Replaces the old algorithm selector with a single knob that traces a circle in the (op2→op1, op2→carrier) plane. Total op2 modulation magnitude stays constant; only the destination rotates.

Named points on the circle:

  • 0.000 — cascade (op2 → op1 → carrier)
  • 0.125 — branch (op2 → both, equal-power split)
  • 0.250 — parallel (op2 → carrier, op1 → carrier independently)
  • 0.500 — inverted cascade
  • 0.750 — inverted parallel
  • 1.000 — wraps to cascade

Everything between is reachable; modulating fmpivot at LFO rate creates continuous algorithm morphing.

fmfb ~mod number =0

Self-feedback amount on the topmost FM operator. Feedback progressively adds harmonics, turning a sine into a sawtooth-like waveform at moderate values and into noise at high values. When only fm is active, feedback applies to operator 1. When fm2 is active, feedback applies to operator 2.

synthesis

Amplitude Modulation

see also Ring ModulationFrequency Modulation

Amplitude modulation multiplies the signal by a modulating oscillator. The formula preserves the original signal at depth 0: signal *= 1.0 + modulator * depth. This creates sidebands at carrier ± modulator frequencies while keeping the carrier present.

am ~mod number ≥0Hz =0

AM oscillator frequency in Hz. When set above 0, an LFO modulates the signal amplitude.

amdepth ~mod number 0–1 =0.5

Modulation depth (0-1). At 0, the signal is unchanged. At 1, the signal varies between 0 and 2x its amplitude.

amshape string =sine

AM LFO waveform shape. Options: sine, tri, saw, square, sh (sample-and-hold).

synthesis

Ring Modulation

see also Amplitude ModulationFrequency Modulation

Ring modulation is a crossfade between dry signal and full multiplication: signal *= (1.0 - depth) + modulator * depth. Unlike AM, ring modulation at full depth removes the carrier entirely, leaving only sum and difference frequencies at carrier ± modulator.

rm ~mod number ≥0Hz =0

Ring modulation oscillator frequency in Hz. When set above 0, an LFO multiplies the signal.

rmdepth ~mod number 0–1 =1

Modulation depth (0-1). At 0, the signal is unchanged. At 1, full ring modulation with no dry signal.

rmshape string =sine

Ring modulation LFO waveform shape. Options: sine, tri, saw, square, sh (sample-and-hold).

synthesis

Sample

Doux can play back audio samples organized in folders. Point to a samples directory using the —samples flag. Each subfolder becomes a sample bank accessible via /s/folder_name. Use /n/ to index into a folder.

n number ≥0 =0

Sample index within the folder. If the index exceeds the number of samples, it wraps around using modulo. Samples in a folder are indexed starting from 0.

begin number 0–1 =0

Sample start position (0-1). 0 = beginning, 0.5 = middle, 1 = end. Only works with samples.

end number 0–1 =1

Sample end position (0-1). 0 = beginning, 0.5 = middle, 1 = end. Only works with samples.

cut number ≥0

Choke group. Voices with the same cut value silence each other. Use for hi-hats where open should be cut by closed.

stretch ~mod number ≥0 =1

Time stretch factor. Controls playback duration independently from pitch. 1 = normal speed, 2 = twice as long (same pitch), 0.5 = half as long (same pitch), 0 = freeze.

synthesis

Recorder

The recorder captures the master output into a buffer. /doux/rec/myloop starts a recording under that name (any name works); a nameless /doux/rec is a no-op. Stop explicitly with /doux/rec/endrec/1. The buffer is registered as a sample under the chosen name and can be played back with all standard parameters. Maximum ~10 minutes. Native only.

rec

Start recording under an explicit name, passed as a positional argument. A nameless /doux/rec does nothing. Recording continues until you send endrec.

endrec

Stop the active recording and register the captured buffer as a sample. This is the only way to stop — recording no longer toggles.

overdub

Layers new output on top of an existing recording. Wraps at buffer end. Falls back to fresh recording if the target does not exist.

Recorded samples work like any other sample: begin, end, speed, filters, effects all apply.

synthesis

Multichannel

superpan rings a voice’s stereo signal around a set of output pairs using equal-power azimuth panning, in the style of SuperCollider’s PanAz. It is meant for multi-speaker setups with more than two output channels. Disabled by default: when superpan is unset, the voice uses the normal stereo pan and orbit routing.

superpan ~mod number 0–1

Azimuth position around the ring of output pairs (wraps 0..1). Setting this switches the voice from stereo pan to multichannel panning. Aliased as span.

superwidth ~mod number ≥1 =2

Number of adjacent output pairs lit. About 2 keeps the source localised to one pair; larger values spread it wider across the ring. Gains are normalised so loudness stays constant as the source moves. Aliased as swidth.

speakers

Ordered, 1-based list of output pairs the ring spans, e.g. 1,3,5,7. Pair p drives channels 2p and 2p+1. Empty (omitted) means all pairs, in order. Aliased as spk.

effects

Lowpass Filter

see also Highpass FilterBandpass FilterLadder FilterSteep Lowpass Filter

A state variable lowpass filter (TPT/SVF) that attenuates frequencies above the cutoff. The cutoff frequency supports inline modulation (~, >, ^).

lpf ~mod number 20–20000Hz

Cutoff frequency in Hz. Frequencies above this are attenuated.

lpq ~mod number 0–1 =0.2

Resonance (0-1). Boosts frequencies near the cutoff.

effects

Highpass Filter

see also Lowpass FilterBandpass FilterSteep Highpass Filter

A state variable highpass filter (TPT/SVF) that attenuates frequencies below the cutoff. The cutoff frequency supports inline modulation (~, >, ^).

hpf ~mod number 20–20000Hz

Cutoff frequency in Hz. Frequencies below this are attenuated.

hpq ~mod number 0–1 =0.2

Resonance (0-1). Boosts frequencies near the cutoff.

effects

Bandpass Filter

see also Lowpass FilterHighpass FilterSteep Bandpass Filter

A state variable bandpass filter (TPT/SVF) that attenuates frequencies outside a band around the center frequency. The center frequency supports inline modulation (~, >, ^).

bpf ~mod number 20–20000Hz

Center frequency in Hz. Frequencies outside the band are attenuated.

bpq ~mod number 0–1 =0.2

Resonance (0-1). Higher values narrow the passband.

effects

Comb Filter

see also FeedbackDelay

Send effect with feedback comb filter. Creates pitched resonance, metallic timbres, and Karplus-Strong plucked sounds. Tail persists after voice ends.

comb ~mod number 0–1 =0

Send amount to comb filter.

Noise into a tuned comb creates plucked string sounds (Karplus-Strong).

combfreq ~mod number 20–20000Hz =220

Resonant frequency. All voices share the same orbit comb.

combfeedback ~mod number 0–0.99 =0.9

Feedback amount. Higher values create longer resonance.

combdamp ~mod number 0–1 =0.1

High-frequency damping. Higher values darken the sound over time.

effects

Ladder Filter

see also Lowpass Filter

A Moog-style ladder filter with self-oscillation and analog-modeled nonlinear saturation. Produces a warmer, more aggressive character than the standard filters. Based on the improved virtual analog model by Stefano D’Angelo and Vesa Välimäki. Available as lowpass (llpf), highpass (lhpf), and bandpass (lbpf). Cutoff frequencies support inline modulation (~, >, ^).

llpf ~mod number 20–20000Hz

Ladder lowpass cutoff frequency in Hz.

lhpf ~mod number 20–20000Hz

Ladder highpass cutoff frequency in Hz.

lbpf ~mod number 20–20000Hz

Ladder bandpass cutoff frequency in Hz.

llpq ~mod number 0–1 =0.2

Ladder lowpass resonance (0-1). At high values, the filter self-oscillates.

lhpq ~mod number 0–1 =0.2

Ladder highpass resonance (0-1).

lbpq ~mod number 0–1 =0.2

Ladder bandpass resonance (0-1).

effects

Steep Lowpass Filter

see also Lowpass FilterSteep Highpass FilterSteep Bandpass Filter

A 24 dB/oct steep lowpass filter built by cascading two state variable stages. Steeper rolloff than lpf (12 dB/oct), with a cleaner, more focused single resonance peak than the Moog-style llpf. Sits in the “Curtis/Roland” sonic family — punchy and surgical, not throaty. Cutoff supports inline modulation (~, >, ^).

slpf ~mod number 20–20000Hz

Cutoff frequency in Hz. Frequencies above the cutoff are attenuated at 24 dB/oct.

slpq ~mod number 0–1 =0.2

Resonance (0-1). Single focused peak near the cutoff. Self-oscillates cleanly at 1.0.

effects

Steep Highpass Filter

see also Highpass FilterSteep Lowpass FilterSteep Bandpass Filter

A 24 dB/oct steep highpass filter built by cascading two state variable stages. Steeper rolloff than hpf (12 dB/oct), distinct character from the Moog-style lhpf: clean single peak, punchy and focused. Cutoff supports inline modulation (~, >, ^).

shpf ~mod number 20–20000Hz

Cutoff frequency in Hz. Frequencies below the cutoff are attenuated at 24 dB/oct.

shpq ~mod number 0–1 =0.2

Resonance (0-1). Single focused peak near the cutoff. Self-oscillates cleanly at 1.0.

effects

Steep Bandpass Filter

see also Bandpass FilterSteep Lowpass FilterSteep Highpass Filter

A 24 dB/oct steep bandpass filter built by cascading two state variable stages. Narrower and more focused than bpf (12 dB/oct), distinct character from the Moog-style lbpf. Center frequency supports inline modulation (~, >, ^).

sbpf ~mod number 20–20000Hz

Center frequency in Hz. Frequencies far from the center are attenuated at 24 dB/oct per side.

sbpq ~mod number 0–1 =0.2

Resonance (0-1). Tightens the bandpass peak. Self-oscillates cleanly at 1.0.

effects

Phaser

Two cascaded notch filters (offset by 282Hz) with LFO-modulated center frequency.

phaser ~mod number ≥0Hz =0

Phaser LFO rate in Hz. Creates sweeping notch filter effect.

phaserdepth ~mod number 0–1 =0.5

Phaser effect intensity (0-1). Controls resonance and wet/dry mix.

phasersweep ~mod number ≥0Hz =2000

Phaser frequency sweep range in Hz. Default is 2000 (±2000Hz sweep).

phasercenter ~mod number 20–20000Hz =1000

Phaser center frequency in Hz. Default is 1000Hz.

effects

Flanger

LFO-modulated delay (0.5-10ms) with feedback and linear interpolation. Output is 50% dry, 50% wet.

flanger ~mod number ≥0Hz =0

Flanger LFO rate in Hz. Creates sweeping comb filter effect with short delay modulation.

flangerdepth ~mod number 0–1 =0.5

Flanger modulation depth (0-1). Controls delay time sweep range.

flangerfeedback ~mod number 0–0.95 =0

Flanger feedback amount (0-0.95).

flangermode enum =classic classic | throughzero

Flanger mode. classic leaves the dry signal undelayed (the default). throughzero delays the dry path by the sweep centre so the swept comb crosses zero relative delay — the notch passes through DC for a deeper, hollow “jet” flange. Alias flmode.

effects

Frequency Shifter

Single-sideband frequency shifter — moves every partial up or down by a fixed number of Hz. Unlike a pitch shift it does not preserve harmonic ratios, so the spectrum turns inharmonic: small shifts phase and detune, larger shifts ring-modulate into metallic, clangorous “barber-pole” textures. Built from an analytic signal (Hilbert pair) heterodyned by a quadrature oscillator.

fshift ~mod fsh number -2000–2000Hz =0

Shift amount in Hz. Positive shifts up, negative shifts down, 0 bypasses — the sign selects the sideband.

effects

Pitch Shifter

Granular (delay-line) pitch shifter — transposes by semitones, preserving harmonic ratios. The musical counterpart to the inharmonic frequency shifter: octaves, fifths, sub-octaves, subtle detune thickening, or dive-bombs and risers when you modulate it. The characteristic granular warble grows past ~±7 semitones.

pshift ~mod psh number -24–24st =0

Transposition in semitones. Positive shifts up, negative down, 0 bypasses.

pshiftwin ~mod pwin number 5–200ms =40

Grain window in ms — the character knob. Short windows (5-20 ms) are grainy and robotic with a faster warble; long windows (80-200 ms) are smoother but add latency. Only audible while pshift is non-zero.

effects

Chorus

A rich chorus effect that adds depth and movement to any sound.

chorus ~mod number ≥0Hz =0

Chorus LFO rate in Hz.

chorusdepth ~mod number 0–1 =0.5

Chorus modulation depth (0-1).

chorusdelay ~mod number ≥0ms =20

Chorus base delay time in milliseconds.

chorustype enum =classic classic | ensemble | dimension

Chorus voicing. The default reproduces the original 3-voice chorus exactly.

  • classic — 3-voice chorus (the default).
  • ensemble — 4 voices, wider detune. Juno-style lushness.
  • dimension — 2 quadrature voices, deeper, no centre.
effects

Feedback

see also DelayComb Filter

Orbit feedback delay. Sends voice signal to the orbit bus where it is re-injected with controllable delay time, damping, and cross-channel blend.

feedback ~mod number 0–1 =0

Feedback delay send level and re-injection amount. 0 = bypassed. Internally clamped to 0.99 to prevent runaway.

fbtime ~mod number 0.1–680ms =10

Feedback delay time in milliseconds. Short values produce metallic resonances, longer values give slapback echoes.

fbdamp ~mod number 0–1 =0

High-frequency damping in the feedback path. Higher values roll off treble on each iteration, producing warmer repeats.

fbcross ~mod number 0–1 =0

Cross-channel blend in the feedback loop. 0 = self-feedback (each channel loops into itself), 1 = pure ping-pong (left’s loop reads right’s tail and vice versa). Intermediate values smear stereo.

effects

Delay

see also ReverbFeedbackComb Filter

Stereo delay line with feedback (max 1 second at 48kHz, clamped to 0.95 feedback).

delay ~mod number 0–1 =0

Send level to the delay bus.

delayfeedback ~mod number 0–1 =0.5

Feedback amount (clamped to 0.95 max). Output is fed back into input.

delaytime ~mod number ≥0s =0.25

Delay time in seconds (max ~1s at 48kHz).

delaytype enum =standard standard | pingpong | tape | multitap
  • standard — Clean digital. Precise repeats.
  • pingpong — Mono in, bounces L→R→L→R.
  • tape — Each repeat darker. Analog warmth.
  • multitap — 4 taps. Feedback 0=straight, 1=triplet, between=swing.
effects

Reverb

see also DelaySmear

Send-effect reverb with two algorithms: space (default) and plate.

verb ~mod number 0–1 =0

Send level to the reverb bus.

verbtype enum =space space | plate
  • space — Lush and dense with chorus modulation.
  • plate — Bright and metallic.
verbdecay ~mod number 0–1 =0.75

Controls how long the reverb tail rings out.

verbdamp ~mod number 0–1 =0.95

Higher values darken the reverb tail.

verbpredelay ~mod number 0–1 =0

Gap before the reverb starts.

verbdiff ~mod number 0–1 =0.7

Room size. Low values give small tight spaces, high values give large halls.

verbchorus ~mod number 0–1 =0.3

Adds movement to the reverb tail (space only).

verbchorusfreq ~mod number 0–1 =0.2

Speed of the chorus modulation (space only).

verbprelow ~mod number 0–1 =0.2

Cuts low frequencies before they enter the reverb (space only).

verbprehigh ~mod number 0–1 =0.8

Cuts high frequencies before they enter the reverb (space only).

verblowcut ~mod number 0–1 =0.5

Where the low-frequency shaping kicks in inside the reverb (space only).

verbhighcut ~mod number 0–1 =0.7

Where the high-frequency shaping kicks in inside the reverb (space only).

verblowgain ~mod number 0–1 =0.4

How much bass survives in the reverb tail (space only). Lower values thin it out.

effects

Lo-Fi

Sample rate reduction, bit crushing, and waveshaping distortion.

coarse ~mod number ≥1 =1

Sample rate reduction. Holds each sample for n samples, creating stair-stepping and aliasing artifacts.

crush ~mod number 1–16bits =16

Bit depth reduction. Quantizes amplitude to 2^(bits-1) levels, creating stepping distortion.

fold ~mod number 0–1 =0

Reflective triangle wavefold (Buchla/Serge-style). At 0, near-passthrough. At 0.25, subtle harmonics. At 0.5, rich harmonics. At 1, extreme density.

foldmode enum =triangle triangle | sine | wrap

Fold shape. The default reproduces the original triangle fold exactly.

  • triangle — Reflective triangle fold (the default). Rich odd harmonics.
  • sine — Sine fold. Rounder, fewer high harmonics.
  • wrap — Sawtooth wrap. Harsher, more digital.
wrap ~mod number ≥1 =1

Wrap distortion. Signal wraps around creating harsh digital artifacts.

distort ~mod number ≥0 =0

Soft-clipping waveshaper using (1+k)*x / (1+k*|x|) where k = e^amount - 1. Higher values add harmonic saturation.

distortvol number ≥0 =1

Output gain applied after distortion to compensate for increased level.

distortmode enum =soft soft | tanh | arctan | hardclip | parabolic | sinarctan

Saturator curve. The default reproduces the original soft clip exactly; the others are antialiased (ADAA) shapers driven by the distort amount.

  • soft — Original (1+k)*x / (1+k*|x|) soft clip (the default).
  • tanh — Smooth hyperbolic-tangent saturation.
  • arctan — Gentler arctangent knee.
  • hardclip — Hard digital clip.
  • parabolic — Rounded parabolic clip, between soft and hard.
  • sinarctanx / sqrt(1+x²) sigmoid, smooth and symmetric.
distortasym number -1–1 =0

Pre-shaper bias. Pushes the signal off-centre into the saturator for asymmetric clipping and even-harmonic colour (tube-ish). The induced DC offset is removed by the downstream DC blocker. At 0 every curve is unchanged.

effects

EQ

Per-voice equalizer with a 3-band DJ-style EQ and a single-knob tilt control.

3-Band EQ

Fixed-frequency shelving and peaking filters. All gains are in dB: 0 is flat, positive boosts, negative cuts.

eqlo ~mod number dB =0

Low shelf gain at 200Hz.

eqmid ~mod number dB =0

Mid peak gain at 1000Hz (Q adjustable via eqmidq, default 0.7).

eqhi ~mod number dB =0

High shelf gain at 5000Hz.

EQ Frequencies

eqlofreq ~mod number Hz =200

Low shelf frequency.

eqmidfreq ~mod number Hz =1000

Mid peak frequency.

eqmidq ~mod number 0.2–8 =0.7

Mid peak Q (bandwidth). 0.7 is the original broad bell; higher values narrow it toward a surgical notch.

eqhifreq ~mod number Hz =5000

High shelf frequency.

Tilt EQ

tilt ~mod number -1–1 =0

Spectral tilt using a high shelf at 800Hz. Positive values brighten, negative values darken. Range maps to ±6dB.

effects

Smear

Allpass chain — 12 cascaded first-order allpass filters that smear transients into laser chirps and metallic sweeps. Zero buffers, pure phase manipulation. Allpass filters only shift phase, so the effect is inaudible at static frequencies — modulate smearfreq to hear it.

smear ~mod number 0–1 =0

Wet/dry mix (0 = bypass, 1 = full wet). Controls the blend between dry input and the allpass-smeared signal.

smearfreq ~mod number ≥20Hz =1000

Break frequency of the allpass chain. Lower values produce longer, more dramatic chirps. Higher values affect only the highest partials. Sweep it to hear the smearing.

smearfb ~mod number 0–0.95 =0

Feedback amount for resonance. Wraps the allpass output back to the input, creating metallic resonances and self-oscillation at high values.

effects

Auto-Wah

Envelope-follower auto-wah: a resonant bandpass whose cutoff rides up with the input’s amplitude envelope (a “touch wah”). The follower tracks the live signal inside the DSP, so the sweep responds to dynamics rather than a fixed LFO.

wah number 0–1 =0

Dry/wet mix (0 = bypass, 1 = full wet).

wahpeak number 0–1 =0.5

Resonance / peak sharpness of the bandpass.

wahsens number 0–1 =0.5

Envelope sensitivity — how far the cutoff sweeps up as the signal gets louder.

wahmanual number 100–4000Hz =400

Base cutoff in Hz — the resting position the envelope sweeps up from.

effects

VinylSim

Vinyl / cassette “character” insert: wow + flutter pitch wobble, band-limiting, tape/vinyl hiss and gentle saturation — the lo-fi degrade box. It sits after the distortion group in the voice chain, so the hiss is shaped by the note’s envelope rather than a constant floor.

vinyl number 0–1 =0

Dry/wet mix (0 = bypass, 1 = full wet).

vinylwow number 0–1 =0.3

Wow + flutter depth — slow and fast pitch wobble of worn tape/vinyl.

vinylnoise number 0–1 =0.2

Hiss level — the high-passed noise bed (most present on the cassette voicing).

vinyltone number -1–1 =0

Tone tilt — negative darkens, positive brightens the high shelf.

vinyltype enum =dull dull | clear | cassette

Voicing. dull is the warmest (dullest low-pass), clear a touch brighter, cassette is mid-focused with the most hiss.

effects

Compressor

Sidechain compressor. Ducks this orbit’s output based on another orbit’s level — classic pumping effect.

comp ~mod number 0–1 =0

Duck amount. 0 = off, 1 = full duck. Point it at another orbit with comporbit.

compattack ~mod number 0.001–1s =0.01

How fast the ducker reacts. Short = tight pumping, long = slow swell. Alias: cattack.

comprelease ~mod number 0.001–2s =0.15

Recovery time after the sidechain drops. Longer = more pronounced pump. Alias: crelease.

comporbit number 0–7 =0

Which orbit drives the compression. Typically the orbit carrying your kick or bass. Alias: corbit.