#N canvas 173 105 567 576 12; #X text 246 260 attack; #X text 317 261 release; #X obj 248 397 line~; #X msg 318 355 0 500; #X text 126 7 ENVELOPE GENERATORS; #X obj 65 369 phasor~ 50; #X obj 65 417 *~; #X obj 65 465 wrap~; #X msg 247 355 1 2500; #X obj 65 393 -~ 0.5; #X msg 182 331 10 200; #X obj 247 331 del 200; #X text 26 22 This patch uses an envelope generator to control a sound. When you hit "attack" two things happen. First \, the line~ object rises to 10 in 200 milliseconds. Then after a "delay" of the same 200 msec \, the second message sends the line~ back down to 1 over another 2500 msec. The "release" just ramps us down to zero at the end.; #X obj 65 513 output~; #X text 311 550 updated for Pd version 0.37; #X obj 65 441 +~ 0.5; #X obj 65 489 hip~ 5; #X obj 247 280 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 318 281 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X msg 257 308 stop; #X text 28 121 You can hit the "attack" and/or "release" while something is still going on from a previous attack or release \, and the envelope generator does the ``right thing". In particular \, the release button sends a "stop" to the "del" object \, in case it is still scheduled to go off from a previous attack.; #X text 27 218 The synthesis method is a form of waveshaping \, which is the subject of a later chapter.; #X connect 2 0 6 1; #X connect 3 0 2 0; #X connect 5 0 9 0; #X connect 6 0 15 0; #X connect 7 0 16 0; #X connect 8 0 2 0; #X connect 9 0 6 0; #X connect 10 0 2 0; #X connect 11 0 8 0; #X connect 15 0 7 0; #X connect 16 0 13 0; #X connect 17 0 11 0; #X connect 17 0 10 0; #X connect 18 0 3 0; #X connect 18 0 19 0; #X connect 19 0 11 0;