#N canvas 141 83 672 516 12;
#X text 412 489 updated for Pd version 0.26;
#X graph graph1 0 -1.02 44100 1.02 395 235 595 105;
#X array adsr-output 44100 float 0;
#X pop;
#X text 394 244 ------ 1 second ------;
#X obj 32 74 r trigger;
#X obj 32 148 tabwrite~ adsr-output;
#X obj 54 123 r graphit;
#X msg 31 176 bang;
#X text 75 177 <-- attack and delayed release;
#X obj 42 200 del 500;
#X text 146 283 <-- attack only;
#X msg 31 264 \; pd dsp 1 \; trigger 1 \; graphit bang;
#X text 147 360 <-- release only;
#X msg 30 334 \; pd dsp 1 \; trigger 0 \; graphit bang;
#X msg 42 225 \; trigger 0;
#X text 598 221 -1;
#X text 600 96 1;
#X text 35 24 This patch introduces a simple "adsr" abstraction we'll
use frequently. You can click on the "adsr" object to see what's inside.
;
#X text 30 402 The active ingredient of the ADSR envelope generator
is a single line~ which gets passed messages to make the attack and
release behavior. You can retrigger the ADSR envelope generator all
you wish without having to wait for attacks or releases to finish;
#X text 104 5 ENVELOPE GENERATOR ABSTRACTION;
#X obj 32 100 adsr 1 100 200 50 300;
#X connect 3 0 19 0;
#X connect 5 0 4 0;
#X connect 6 0 10 0;
#X connect 6 0 8 0;
#X connect 8 0 13 0;
#X connect 19 0 4 0;
