ADSR
An envelope that can hold its value for as long as Gate is open. When Gate becomes true, it rises from 0 to 1 over Attack seconds, falls over Decay seconds to the Sustain level, and holds there. When Gate becomes false, it falls from the value at that instant to 0 over Release seconds. The curve shape is chosen with the Curve dropdown, and the same Ease is used for all four segments (the same list as Easing).
The Trigger input is for sources that have no gate (beats, hit detection); right after it opens, it closes automatically once Attack + Decay have elapsed. The result is an AD envelope plus Release, where Sustain takes effect as the landing point of Decay.
- Attack default 0.05 s / Decay default 0.2 s / Release default 0.4 s (negative values are treated as 0 in all three)
- Sustain default 0.6 (clamped to 0-1)
- Curve default OutQuad
- Envelope is 0-1, On Release End fires the moment the release ends and reaches 0
Retriggering does not preserve continuity of the value; it always rises again from 0.
Gate only looks at the moment the value changes (false→true / true→false). Plugging in an output that keeps sending true every frame (a “playing” flag, etc.) does not cause it to re-open, and Attack completes normally.
Video
Input ports
| Port ID | Type |
|---|---|
Gate | bool |
Trigger | trigger |
Attack | float |
Decay | float |
Sustain | float |
Release | float |
Output ports
| Port ID | Type |
|---|---|
Envelope | float |
On Release End | trigger |
Scriptable members
| Path | Type |
|---|---|
gateInput | bool |
attackInput | float |
decayInput | float |
sustainInput | float |
releaseInput | float |
Synapse Apps (scripting)
await synapse.modules.create({ type: "ADSR" }) 
