Basic

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. The default source. 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.

Complex

Complex oscillator engines based on Mutable Instruments Plaits. All engines share three parameters (0 to 1):

  • harmonics β€” harmonic content, structure, detuning, etc.
  • timbre β€” brightness, tonal color, etc.
  • morph β€” smooth transitions between variations, etc.

Each engine interprets these differently.

va

Virtual analog. Classic waveforms with sync and crossfading. harmonics: detuning, timbre: variable square, morph: variable saw.

ws

Waveshaping oscillator. Asymmetric triangle through waveshaper and wavefolder. harmonics: waveshaper shape, timbre: fold amount, morph: waveform asymmetry.

fm2

Two-operator FM synthesis. harmonics: frequency ratio, timbre: modulation index, morph: feedback.

grain

Granular formant oscillator. Simulates formants through windowed sines. harmonics: formant ratio, timbre: formant frequency, morph: formant width.

additive

Harmonic oscillator. Additive mixture of sine harmonics. harmonics: number of bumps, timbre: prominent harmonic index, morph: bump shape.

wavetable

Wavetable oscillator. Four banks of 8x8 waveforms. harmonics: bank selection, timbre: row index, morph: column index.

chord

Four-note chord engine. Virtual analog or wavetable chords. harmonics: chord type, timbre: inversion/transposition, morph: waveform.

swarm

Granular cloud of 8 enveloped sawtooth oscillators. harmonics: pitch randomization, timbre: grain density, morph: grain duration/overlap.

pnoise

Filtered noise. Clocked noise through multimode filter. harmonics: filter type (LP/BP/HP), timbre: clock frequency, morph: filter resonance.

kick

Analog bass drum. 808-style kick. harmonics: punch, timbre: tone, morph: decay.

snare

Analog snare drum. harmonics: tone/noise balance, timbre: drum mode balance, morph: decay.

hihat

Analog hihat. 808-style metallic hihat. harmonics: metallic tone, timbre: high-pass filter, morph: decay.

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.

Pitch

Pitch control for all sources, including audio samples.

freq number 20–20000Hz =330

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

note number 0–127midi

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

speed number =1

Multiplies with the source frequency or buffer playback speed.

detune number cents =0

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

glide number β‰₯0s =0

Creates a pitch slide when changing the frequency of an active voice. Only has an effect when used with voice.

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 duration sets how long the gate stays open before triggering release. The repeat reschedules the event at regular intervals.

time number β‰₯0s =0

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

duration number β‰₯0s

The duration (seconds) of the gate phase. If not set, the voice will play indefinitely, until released explicitly.

repeat number β‰₯0s

If set, the command is repeated within the given number of seconds.

Envelope

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

  • Attack: Ramps from 0 to full amplitude. Uses xΒ² (slow start, fast finish).
  • 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).
attack number β‰₯0s =0.001

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

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.

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 (e.g., pitch slides with glide) 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.

Oscillator

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 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.

mult number 0.25–16 =1

Phase multiplier that wraps the waveform multiple times per cycle. Creates hard-sync-like harmonic effects. A value of 2 doubles the frequency content, 4 quadruples it, etc.

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 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.

Gain

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

gain number β‰₯0 =1

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

postgain 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. Also passed as accent to Plaits engines.

pan 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.

Pitch Env

An ADSR envelope applied to pitch. The envelope runs with gate always on (no release phase during note). The frequency is multiplied by 2^(env * penv / 12). When psus = 1, the envelope value is offset by -1 so sustained notes return to base pitch.

penv number semitones =0

Pitch envelope depth in semitones. Positive values sweep up, negative values sweep down.

patt number β‰₯0s =0.001

Attack time. Duration to reach peak pitch offset.

pdec number β‰₯0s =0

Decay time. Duration to fall from peak to sustain level.

psus number 0–1 =1

Sustain level. At 1.0, the envelope returns to base pitch after decay.

prel number β‰₯0s =0.005

Release time. Not typically audible since pitch envelope gate stays on.

Vibrato

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 number β‰₯0Hz =0

Vibrato frequency (in hertz).

vibmod number β‰₯0semitones =0

Vibrato modulation depth (semitones).

vibshape string =sine

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

Frequency 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.

fm number β‰₯0 =0

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

fmh 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.

fmenv number =0

Envelope amount of frequency envelope.

fma number β‰₯0s =0

The duration (seconds) of the fm envelope’s attack phase.

fmd number β‰₯0s =0

The duration (seconds) of the fm envelope’s decay phase.

fms number 0–1 =1

The sustain level of the fm envelope.

fmr number β‰₯0s =0

The duration (seconds) of the fm envelope’s release phase.

Amplitude 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 number β‰₯0Hz =0

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

amdepth 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).

Ring 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 number β‰₯0Hz =0

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

rmdepth 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).

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.

Lowpass Filter

A lowpass filter attenuates frequencies above the cutoff. Each filter has its own ADSR envelope that modulates the cutoff frequency.

lpf number 20–20000Hz

Cutoff frequency in Hz. Frequencies above this are attenuated.

lpq number 0–1 =0.2

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

lpe number =0

Envelope amount. Positive values sweep the cutoff up, negative values sweep down.

lpa number β‰₯0s =0

Envelope attack time in seconds.

lpd number β‰₯0s =0

Envelope decay time in seconds.

lps number 0–1 =1

Envelope sustain level (0-1).

lpr number β‰₯0s =0

Envelope release time in seconds.

Highpass Filter

A highpass filter attenuates frequencies below the cutoff. Each filter has its own ADSR envelope that modulates the cutoff frequency.

hpf number 20–20000Hz

Cutoff frequency in Hz. Frequencies below this are attenuated.

hpq number 0–1 =0.2

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

hpe number =0

Envelope amount. Positive values sweep the cutoff up, negative values sweep down.

hpa number β‰₯0s =0

Envelope attack time in seconds.

hpd number β‰₯0s =0

Envelope decay time in seconds.

hps number 0–1 =1

Envelope sustain level (0-1).

hpr number β‰₯0s =0

Envelope release time in seconds.

Bandpass Filter

A bandpass filter attenuates frequencies outside a band around the center frequency. Each filter has its own ADSR envelope that modulates the center frequency.

bpf number 20–20000Hz

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

bpq number 0–1 =0.2

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

bpe number =0

Envelope amount. Positive values sweep the center up, negative values sweep down.

bpa number β‰₯0s =0

Envelope attack time in seconds.

bpd number β‰₯0s =0

Envelope decay time in seconds.

bps number 0–1 =1

Envelope sustain level (0-1).

bpr number β‰₯0s =0

Envelope release time in seconds.

Comb Filter

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

comb number 0–1 =0

Send amount to comb filter.

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

combfreq number 20–20000Hz =220

Resonant frequency. All voices share the same orbit comb.

combfeedback number 0–0.99 =0.9

Feedback amount. Higher values create longer resonance.

combdamp number 0–1 =0.1

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

Filter Type

Controls the steepness of all filters. Higher dB/octave values create sharper transitions between passed and attenuated frequencies.

ftype enum =12db 12db | 24db | 48db

Filter slope steepness. Higher dB/octave values create sharper cutoffs. Applies to all filter types (lowpass, highpass, bandpass).

Phaser

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

phaser number β‰₯0Hz =0

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

phaserdepth number 0–1 =0.5

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

phasersweep number β‰₯0Hz =2000

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

phasercenter number 20–20000Hz =1000

Phaser center frequency in Hz. Default is 1000Hz.

Flanger

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

flanger number β‰₯0Hz =0

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

flangerdepth number 0–1 =0.5

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

flangerfeedback number 0–0.95 =0

Flanger feedback amount (0-0.95).

Chorus

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

chorus number β‰₯0Hz =0

Chorus LFO rate in Hz.

chorusdepth number 0–1 =0.5

Chorus modulation depth (0-1).

chorusdelay number β‰₯0ms =20

Chorus base delay time in milliseconds.

Delay

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

delay number 0–1 =0

Send level to the delay bus.

delayfeedback number 0–1 =0.5

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

delaytime 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.

Reverb

Dattorro plate reverb with 4 input diffusers and a cross-fed stereo tank.

verb number 0–1 =0

Send level to the reverb bus.

verbdecay number 0–1 =0.5

Tank feedback amount (clamped to 0.99 max). Controls tail length.

verbdamp number 0–1 =0.5

One-pole lowpass in the tank feedback path. Higher values darken the tail.

verbpredelay number 0–1 =0

Delay before the diffusers (0-1 of max ~100ms). Creates space before reverb onset.

verbdiff number 0–1 =0.7

Allpass coefficients in both input and tank diffusers. Higher values smear transients.

Lo-Fi

Sample rate reduction, bit crushing, and waveshaping distortion.

coarse number β‰₯1 =1

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

crush number 1–16bits =16

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

fold number β‰₯1 =1

Sine-based wavefold (Serge-style). At 1, near-passthrough. At 2, one fold per peak. At 4, two folds.

wrap number β‰₯1 =1

Wrap distortion. Signal wraps around creating harsh digital artifacts.

distort 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.