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

Envelope

Four numbers that decide whether it is a pluck or a pad.

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.

Envelope

The amplitude ADSR. Attack, decay, sustain, release - the shape of a note over time, and the stage that turns the same oscillator into a bass, a stab or a wash.

Parameters

Amp Envelope

10 ms
100 ms
50%
500 ms

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 Envelope, tapped after the output stage. It's a picture of what your speakers are getting.

Preview engine (Web Audio)

About

The amplitude ADSR. Attack, decay, sustain, release - the shape of a note over time, and the stage that turns the same oscillator into a bass, a stab or a wash.

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
Amp Envelope
Attackenvelope.attack0 … 20.01sSilence to full level. At zero it is a click, and a click is a perfectly good transient.Yes
Decayenvelope.decay0 … 20.1sFall from the attack peak down to the sustain level.Yes
Sustainenvelope.sustain0 … 10.5Level held while the key is down. At zero the note plucks no matter how long you hold it.Yes
Releaseenvelope.release0 … 50.5sFade after you let go. Long release plus short decay is where pads live.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 four-stage amplitude envelope applied per voice. Attack and decay run on exponential curves because linear amplitude ramps do not sound linear - the ear hears loudness logarithmically, and a linear fade sounds like it stalls at the end.

Release starts from wherever the envelope has actually reached, not from the sustain level, so releasing during the attack phase fades from that partial level rather than jumping up first.

It's yours to read and to fork.

Research preview

npx codex clone envelope
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
The knob everybody reaches for first.

Effects

Runs onlineVST3

Part of OSC-1

KeyboardMIDIDemo phraseGuitar take
Available
Two tone generators and the interval between them.

Instruments

Runs onlineVST3

Part of OSC-1

KeyboardMIDIDemo phrase