[PD] analog-style adsr

Ben Saylor bsaylor at macalester.edu
Sat Mar 16 00:01:15 CET 2002


Hi,

I took a shot at making an analog-style adsr envelope generator.  Rather
than using straight line segments, it uses ones that are curved such
that the rate of change in 'voltage' decreases as it approaches the
target voltage.  Also, the attack begins at the current output value
rather than zero for nice legato sequences.  I've attached it along with
a test patch in case anyone might find it useful.

Ben
-------------- next part --------------
#N canvas 235 78 661 542 10;
#X obj 183 504 outlet~;
#X obj 130 7 inlet;
#X obj 130 35 route a r;
#X obj 119 187 line~;
#X obj 326 191 line~;
#X obj 93 220 *~;
#X obj 119 220 *~;
#X obj 103 242 *~;
#X obj 310 222 *~;
#X obj 339 221 *~;
#X obj 323 244 *~;
#X obj 205 188 line~;
#X obj 179 220 *~;
#X obj 205 220 *~;
#X obj 189 242 *~;
#X obj 148 411 *~;
#X obj 183 440 *~;
#X obj 119 153 pack f f;
#X obj 192 153 pack f f;
#X obj 320 157 pack f f;
#X obj 212 71 unpack f f f f;
#X msg 271 154 1;
#X msg 67 148 1;
#X msg 367 119 0;
#X obj 192 108 del;
#X msg 192 131 0;
#X obj 223 340 +~;
#X obj 227 255 expr 1 - $f1;
#X obj 211 297 *~;
#X msg 152 80 bang;
#X obj 67 91 t b b b;
#X obj 93 487 snapshot~;
#X obj 129 299 *~ -1;
#X obj 129 322 +~ 1;
#X msg 119 132 0;
#X obj 93 378 +~;
#X obj 22 296 expr 1 - $f1;
#X obj 93 355 *~;
#X text 410 19 analog-style envelope generator;
#X msg 360 334 <attack> <decay> <sustain> <release>;
#X text 348 314 to set up:;
#X text 348 392 attack:;
#X msg 419 389 a;
#X text 349 426 release:;
#X msg 419 423 r;
#X text 372 493 Ben Saylor <bsaylor at macalester.edu>;
#X text 359 353 (times are in ms \, sustain level is 0..1);
#X obj 19 148 s \$0-a;
#X obj 159 58 s \$0-r;
#X obj 367 96 r \$0-r;
#X obj 271 132 r \$0-a;
#X obj 93 461 r \$0-snap;
#X obj 121 111 s \$0-snap;
#X connect 1 0 2 0;
#X connect 2 0 29 0;
#X connect 2 0 30 0;
#X connect 2 1 48 0;
#X connect 2 2 20 0;
#X connect 3 0 5 0;
#X connect 3 0 5 1;
#X connect 3 0 6 0;
#X connect 3 0 6 1;
#X connect 4 0 8 0;
#X connect 4 0 8 1;
#X connect 4 0 9 0;
#X connect 4 0 9 1;
#X connect 5 0 7 0;
#X connect 6 0 7 1;
#X connect 7 0 32 0;
#X connect 8 0 10 0;
#X connect 9 0 10 1;
#X connect 10 0 16 1;
#X connect 11 0 12 0;
#X connect 11 0 12 1;
#X connect 11 0 13 0;
#X connect 11 0 13 1;
#X connect 12 0 14 0;
#X connect 13 0 14 1;
#X connect 14 0 28 0;
#X connect 15 0 16 0;
#X connect 16 0 0 0;
#X connect 16 0 31 0;
#X connect 17 0 3 0;
#X connect 18 0 11 0;
#X connect 19 0 4 0;
#X connect 20 0 17 1;
#X connect 20 0 24 1;
#X connect 20 1 18 1;
#X connect 20 2 26 1;
#X connect 20 2 27 0;
#X connect 20 3 19 1;
#X connect 21 0 4 0;
#X connect 21 0 11 0;
#X connect 22 0 3 0;
#X connect 23 0 19 0;
#X connect 24 0 25 0;
#X connect 25 0 18 0;
#X connect 26 0 15 1;
#X connect 27 0 28 1;
#X connect 28 0 26 0;
#X connect 29 0 24 0;
#X connect 30 0 34 0;
#X connect 30 0 47 0;
#X connect 30 1 22 0;
#X connect 30 2 52 0;
#X connect 31 0 35 1;
#X connect 31 0 36 0;
#X connect 32 0 33 0;
#X connect 33 0 37 0;
#X connect 34 0 17 0;
#X connect 35 0 15 0;
#X connect 36 0 37 1;
#X connect 37 0 35 0;
#X connect 49 0 23 0;
#X connect 50 0 21 0;
#X connect 51 0 31 0;
-------------- next part --------------
#N canvas -2 28 986 668 10;
#X obj 56 271 notein 1;
#X obj 56 302 stripnote;
#X obj 75 358 mtof;
#X obj 116 429 *~;
#X msg 171 153 a;
#X obj 179 266 select 0;
#X msg 205 153 r;
#X obj 72 382 phasor~;
#X graph graph2 0 0 44099 1.2 461 317 661 177;
#X array test 44100 float 0;
#X pop;
#X obj 299 379 bng 15 250 50 0 empty empty empty 20 8 0 8 -262144 -1
-1;
#X obj 298 423 tabwrite~ test;
#X obj 181 387 vca~;
#X obj 74 405 lop~ 1000;
#X obj 98 562 dac~;
#X msg 264 102 100 140 0.7 1000;
#X msg 274 126 2000 2000 0.7 4000;
#X msg 289 152 20 20 0.6 50;
#X obj 268 69 loadbang;
#X connect 0 0 1 0;
#X connect 0 1 1 1;
#X connect 0 1 5 0;
#X connect 1 0 2 0;
#X connect 1 0 4 0;
#X connect 2 0 7 0;
#X connect 3 0 13 0;
#X connect 3 0 13 1;
#X connect 4 0 11 0;
#X connect 4 0 9 0;
#X connect 5 0 6 0;
#X connect 6 0 11 0;
#X connect 7 0 12 0;
#X connect 9 0 10 0;
#X connect 11 0 3 1;
#X connect 11 0 10 0;
#X connect 12 0 3 0;
#X connect 14 0 11 0;
#X connect 15 0 11 0;
#X connect 16 0 11 0;
#X connect 17 0 14 0;


More information about the Pd-list mailing list