← All modules
AvailableEffect

A stage of OSC-1. It works the same on its own page as it does in the chain — same parameters, same paths.

Chorus

One voice, pretending to be several.

Audio and MIDI

Browser session

Audio is stopped.

Input · MIDI keyboard

Octave C4

Your keyboard is a keyboard. Middle row plays the white notes, top row the black ones. Z and X change octave. Keys are ignored while you are typing in a field.

Chorus

A modulated short delay against the dry signal. The detune-and-blur effect that makes a thin patch sound wide without adding a single note.

Parameters

Chorus

2 Hz
70%
3.50
50%

These knobs move the module's published schema, but the preview engine only renders OSC Mini, FX Mini and the OSC-1 chain — so they won't change what you hear yet.

Output · Audio signal

Waveform appears once sound is running.

The signal leaving Chorus, tapped after the output stage. It's a picture of what your speakers are getting.

Preview engine (Web Audio)

About

A modulated short delay against the dry signal. The detune-and-blur effect that makes a thin patch sound wide without adding a single note.

Take it into your DAW.

macOS (arm64 · x64)Windows (x64)Linux (x64)
Same DSP as this page. The plugin isn't a rebuild — it's the identical kernel from the identical TypeScript source, compiled native instead of to WASM.

Free forever, no account, and playing it in the browser will never ask you for one. VST3 and standalone today; AU and CLAP are on the roadmap.

Every knob, and what it actually does.

Generated from the module's parameter schema — the same source as the web UI, the worklet transport and the VST3 parameter table, so it cannot drift.

ParamRangeDefaultUnitsWhat it doesAutomatable
Chorus
Ratechorus.frequency0.1 … 101.5HzSpeed of the delay-time modulation. Slow is lush, fast is seasick.Yes
Depthchorus.depth0 … 10.7How far the delay time swings, and therefore how much pitch wobble you get.Yes
Delaychorus.delayTime0 … 203.5msCentre delay time. Under about 5 ms it flanges; above about 15 ms it stops blending and becomes a distinct double.Yes
Mixchorus.wet0 … 10.5Blend against the dry signal. Chorus is entirely an interference effect, so the dry path matters.Yes

Parameter paths (filter.cutoff) are what you'll see in your DAW's automation list and in the SDK. Same names everywhere.

How it works.

A short delay line whose delay time is swept by an LFO at Rate, summed with the dry signal. The sweep Dopplers the delayed copy slightly sharp and flat, and the interference between the two copies is the whole effect.

Because it is interference, the mix control is not a level control: at full wet you lose the comb filtering that makes it sound like chorus and are left with plain vibrato.

It's yours to read and to fork.

Research preview

npx codex clone chorus
npm run dev

The codex CLI name is proposed, not shipped. That command gives you this module's DSP, schema, presets and UI as a local project — change a number, hear it immediately.

Goes well with.

Available
The full synth, taken apart. Every stage is its own module.

Instruments

Composable — 11 stagesRuns onlineVST3
KeyboardMIDIDemo phrase
Available
Volume, going up and down on purpose.

Effects

Runs onlineVST3

Part of OSC-1

KeyboardMIDIDemo phraseGuitar takeMic
Coming soon
Chorus, phaser, tremolo - one LFO section, three destinations.

Effects

VST3
Guitar takeMicDemo phrase