-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathjw.adsr~.pd
107 lines (107 loc) · 2.94 KB
/
jw.adsr~.pd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#N canvas 275 25 1108 741 12;
#X obj 3 3 cnv 15 1100 40 empty empty ADSR_ABSTRACTION 20 12 0 20 #e0e0e0
#404040 0;
#X obj 82 71 inlet;
#X obj 521 77 inlet;
#X text 520 57 A;
#X obj 606 77 inlet;
#X obj 696 77 inlet;
#X obj 786 77 inlet;
#X text 605 57 D;
#X text 695 57 S;
#X text 785 57 R;
#X obj 521 171 s \$0-a;
#X obj 606 171 s \$0-d;
#X obj 696 171 s \$0-s;
#X obj 786 171 s \$0-r;
#X obj 101 349 r \$0-a;
#X obj 805 482 pack f f;
#X obj 805 460 f;
#X obj 861 461 r \$0-d;
#X text 130 420 <-- Pack peak amplitude with attack time in a 2 number
list, f 23;
#X obj 823 407 r \$0-s;
#X obj 664 423 del, f 4;
#X obj 689 402 r \$0-a;
#X text 513 390 Wait until after the attack time to trigger decay -->
, f 19;
#X msg 664 372 stop;
#X text 506 322 Cancel decay part of the envelope if the note is released
or re-attacked early -->, f 21;
#X obj 44 444 s \$0-attack;
#X obj 791 504 s \$0-decay;
#X obj 82 185 s \$0-startAttack;
#X obj 44 323 r \$0-startAttack;
#X obj 105 154 s \$0-startRelease;
#X obj 664 325 r \$0-startRelease;
#X obj 18 256 cnv 30 400 60 empty empty ATTACK 20 12 0 14 #e0e0e0 #404040
0;
#X text 36 286 Ramp to peak amplitude over the attack time in ms;
#X obj 507 256 cnv 30 400 60 empty empty DECAY 20 12 0 14 #e0e0e0 #404040
0;
#X text 525 286 Ramp down to the sustain level over decay time in ms
;
#X obj 18 536 cnv 30 400 60 empty empty RELEASE 20 12 0 14 #e0e0e0
#404040 0;
#X text 36 561 Ramp down from the sustain level to 0 over the release
time, f 53;
#X obj 51 639 r \$0-r;
#X text 840 76 <-- input values for ADSR env;
#X obj 33 663 f;
#X msg 33 685 0 \$1;
#X obj 33 610 r \$0-startRelease;
#X obj 498 536 cnv 30 400 60 empty empty GENERATE_ENV 20 12 0 14 #e0e0e0
#404040 0;
#X text 516 561 Generate the envelope and output, f 53;
#X obj 33 707 s \$0-release;
#X obj 535 604 r \$0-attack;
#X obj 636 604 r \$0-decay;
#X obj 739 604 r \$0-release;
#X obj 636 654 line~;
#X obj 636 678 outlet~;
#X obj 521 126 f \$1;
#X obj 606 126 f \$2;
#X obj 696 126 f \$3;
#X obj 786 126 f \$4;
#X text 840 125 <-- get arguments of abstraction;
#X msg 44 414 1 \$1;
#X obj 44 380 f;
#X obj 82 96 > 0;
#X obj 82 119 sel 1 0;
#X text 149 97 <- convert input to 1-0 on/off messages;
#X obj 702 372 r \$0-startAttack;
#X text 78 50 TRIGGER;
#X text 694 678 ADSR~ SIGNAL OUTPUT;
#X connect 1 0 57 0;
#X connect 2 0 50 0;
#X connect 4 0 51 0;
#X connect 5 0 52 0;
#X connect 6 0 53 0;
#X connect 14 0 56 1;
#X connect 15 0 26 0;
#X connect 16 0 15 0;
#X connect 17 0 15 1;
#X connect 19 0 16 1;
#X connect 20 0 16 0;
#X connect 21 0 20 1;
#X connect 23 0 20 0;
#X connect 28 0 56 0;
#X connect 30 0 23 0;
#X connect 37 0 39 1;
#X connect 39 0 40 0;
#X connect 40 0 44 0;
#X connect 41 0 39 0;
#X connect 45 0 48 0;
#X connect 46 0 48 0;
#X connect 47 0 48 0;
#X connect 48 0 49 0;
#X connect 50 0 10 0;
#X connect 51 0 11 0;
#X connect 52 0 12 0;
#X connect 53 0 13 0;
#X connect 55 0 25 0;
#X connect 56 0 55 0;
#X connect 57 0 58 0;
#X connect 58 0 27 0;
#X connect 58 1 29 0;
#X connect 60 0 20 0;