ADSR ENVELOPE
ADSR Envelope
Installation
Node.js
npm install adsr-envelope
Online Demo
ADSR
API
ADSREnvelope
constructor(opts: object = {})
attackTime: number
default: 0.01 (10msec)decayTime: number
default: 0.3 (300msec)sustainLevel: number
default: 0.5releaseTime: number
default: 1 (1sec)gateTime: number
default: InfinitysustainTime: number
duration: number
peakLevel: number
default: 1epsilon: number
default: 0.001attackCurve: string
default: lin- lin or exp (linear or exponential)
decayCurve: string
default: lin- lin or exp (linear or exponential)
releaseCurve: string
default: lin- lin or exp (linear or exponential)
Instance Attributes
duration: number
attackTime: number
decayTime: number
sustainTime: number
sustainLevel: number
releaseTime: number
gateTime: number
peakLevel: number
epsilon: number
attackCurve: string
decayCurve: string
releaseCurve: string
Instance Methods
valueAt(time: number = 0): number
applyTo(audioParam: AudioParam, playbackTime: number = 0): self
getWebAudioAPIMethods(playbackTime: number = 0): Array[]
clone(): ADSREnvelope
Example
sequencer style
; let audioContext = ;let oscillator = audioContext;let gain = audioContext;let adsr = attackTime: 05 decayTime: 025 sustainLevel: 08 releaseTime: 25 gateTime: 6 releaseCurve: "exp"; adsr; console;// [// [ "setValueAtTime", 0, 0 ],// [ "linearRampToValueAtTime", 1, 0.5 ],// [ "linearRampToValueAtTime", 0.8, 0.75],// [ "setValueAtTime", 0.8, 6 ],// [ "exponentialRampToValueAtTime", 0.001, 8.5 ],// ] oscillatorstartaudioContextcurrentTime;oscillator; oscillator;gain;
noteOn / noteOff style
; let audioContext = ;let adsr = attackTime: 05 decayTime: 025 sustainLevel: 08 releaseTime: 25 gateTime: 6 releaseCurve: "exp";let noteMap = {}; { thisaudioContext = audioContext; thisnoteNumber = noteNumber; thisenvelope = envelope; thisstartTime = 0; thisoscillator = audioContext; thisgain = audioContext; thisoscillatorfrequencyvalue = ; thisoscillator { thisoscillator; thisgain; }; thisoscillator; thisgain; } { thisstartTime = playbackTime; thisenvelopegateTime = Infinity; thisenvelope; thisoscillatorstartplaybackTime; } { thisgaingain; thisenvelopegateTime = playbackTime - thisstartTime; thisenvelope; thisoscillator; } midiKeyboard;midiKeyboard;
License
MIT