aboutsummaryrefslogtreecommitdiff
path: root/pd/doc/3.audio.examples/71.adsr.sequenced.pd
blob: 26300054e0ce8c7a0328eb1f78da04a93b5a34e8 (plain)
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
#N canvas 32 15 950 613 12;
#X obj 33 220 r trigger;
#X floatatom 70 520 0 0 0;
#N canvas 159 26 584 307 output 0;
#X obj 390 189 t b;
#X obj 390 129 f;
#X obj 390 69 inlet;
#X text 397 32 mute;
#X obj 390 219 f;
#X msg 451 217 0;
#X msg 390 99 bang;
#X obj 390 159 moses 1;
#X obj 460 137 moses 1;
#X obj 100 178 dbtorms;
#X obj 460 107 r master-lvl;
#X obj 100 50 r master-lvl;
#X obj 390 249 s master-lvl;
#X obj 26 217 inlet~;
#X obj 239 49 inlet;
#X text 239 22 level;
#X obj 239 120 s master-lvl;
#X msg 115 78 set \$1;
#X obj 115 107 outlet;
#X msg 257 77 \; pd dsp 1;
#X obj 100 233 line~;
#X obj 26 254 *~;
#X obj 26 289 dac~;
#X obj 100 205 pack 0 50;
#X text 24 190 audio;
#X text 112 132 show level;
#X connect 0 0 4 0;
#X connect 1 0 7 0;
#X connect 2 0 6 0;
#X connect 4 0 12 0;
#X connect 5 0 12 0;
#X connect 6 0 1 0;
#X connect 7 0 0 0;
#X connect 7 1 5 0;
#X connect 8 1 4 1;
#X connect 9 0 23 0;
#X connect 10 0 1 1;
#X connect 10 0 8 0;
#X connect 11 0 9 0;
#X connect 11 0 17 0;
#X connect 13 0 21 0;
#X connect 14 0 16 0;
#X connect 14 0 19 0;
#X connect 17 0 18 0;
#X connect 20 0 21 1;
#X connect 21 0 22 0;
#X connect 21 0 22 1;
#X connect 23 0 20 0;
#X restore 32 546 pd output;
#X msg 108 521 MUTE;
#X obj 33 438 *~;
#X obj 33 331 *~ 0.01;
#X obj 33 366 *~;
#X obj 33 396 *~;
#X obj 80 360 r pitch;
#X obj 80 410 mtof;
#X floatatom 80 385 4 0 0;
#X floatatom 57 272 4 0 0;
#X obj 57 247 r level;
#X floatatom 131 272 4 0 0;
#X obj 131 247 r attack;
#X floatatom 216 272 4 0 0;
#X obj 216 247 r decay;
#X floatatom 291 272 4 0 0;
#X floatatom 385 272 4 0 0;
#X obj 291 247 r sustain;
#X obj 385 247 r release;
#X obj 509 106 r note;
#X msg 510 195 \; trigger 1;
#X obj 634 185 del;
#X msg 634 210 \; trigger 0;
#X obj 9 167 qlist;
#X obj 8 6 r qlist;
#X msg 30 35 bang;
#X msg 30 60 rewind;
#X obj 37 89 r tempo;
#X floatatom 37 114 4 0 0;
#X msg 37 139 tempo \$1;
#X obj 509 156 t b f;
#X obj 564 157 s pitch;
#X obj 656 120 r duration;
#X floatatom 656 145 4 0 0;
#X floatatom 509 131 4 0 0;
#X obj 289 320 r trigger;
#X floatatom 315 376 4 0 0;
#X floatatom 387 406 4 0 0;
#X floatatom 477 406 4 0 0;
#X floatatom 563 406 4 0 0;
#X floatatom 659 406 4 0 0;
#X obj 315 351 r level2;
#X obj 387 381 r attack2;
#X obj 477 381 r decay2;
#X obj 563 381 r sustain2;
#X obj 659 381 r release2;
#X obj 80 435 tabosc4~ array1;
#X floatatom 239 366 4 0 0;
#X obj 33 482 vcf~;
#X floatatom 140 488 4 0 0;
#X obj 140 463 r q;
#X obj 33 306 adsr 0 0 0 0 0;
#X obj 289 444 adsr 0 0 0 0 0;
#X obj 315 401 / 69.23;
#X obj 239 391 mtof;
#X obj 239 416 sqrt;
#X obj 239 441 sqrt;
#X obj 197 336 r filter;
#X obj 240 494 *~;
#X obj 240 519 *~;
#X obj 289 469 +~ 1;
#X obj 239 466 *~;
#X text 139 215 ADSR for amplitude:;
#X text 402 300 ADSR for filter. Here \, I thought it better to make
the envelope modify a constant "filter pitch"--so the "filter" receive
gets the "mtof" treatment and the ADSR is an offset in halftones (thus
the "/ 69.23" as compared to the previous patch.);
#X text 141 5 USING QLIST TO MAKE SEQUENCES OF "NOTES";
#N canvas -10 258 703 380 otherstuff 0;
#X obj 289 86 loadbang;
#X obj 418 85 loadbang;
#X graph graph2 0 -1 66 1 62 221 262 81;
#X array array1 67 float 1;
#A 0 0 0 0 0 0.714286 0.742857 0.757143 0.771429 0.778571 0.785714
0.785714 0.785714 0.785714 0.790476 0.795238 0.614286 0.585714 0.442857
0.271429 -0.128571 -0.142857 -0.157143 -0.171429 -0.642857 -0.528571
-0.614286 -0.685714 -0.828571 -0.828571 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0.557143 0.571429 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;
#X pop;
#X msg 418 115 \; qlist read qlist2.txt;
#X msg 289 111 \; level 100 \; attack 20 \; decay 300 \; sustain 70
\; release 300 \; duration 300 \; pitch 72 \; filter 38 \; level2 49
\; attack2 19 \; decay2 300 \; sustain2 17 \; release2 700 \; q 3 \;
tempo 1;
#X connect 0 0 4 0;
#X connect 1 0 3 0;
#X restore 32 571 pd otherstuff;
#X text 82 34 <--start loop;
#X text 99 62 <--stop loop;
#X text 85 114 <--set tempo;
#X text 248 34 The qlist reads the file \, "qlist2.txt" \, which contains
four "note" messages and a message at the end that restarts the qlist
at the beginning. The "note" messages are translated into a pitch change
and triggers for the ADSRs:;
#X text 694 573 updated for Pd version 0.34;
#X text 155 573 <--loadbangs and table;
#X msg 468 518 \; qlist read qlist2.txt;
#X text 462 494 click to reload qlist2.txt;
#X text 149 521 <--output;
#X connect 0 0 53 0;
#X connect 1 0 2 1;
#X connect 2 0 1 0;
#X connect 3 0 2 2;
#X connect 4 0 50 0;
#X connect 5 0 6 0;
#X connect 5 0 6 1;
#X connect 6 0 7 0;
#X connect 6 0 7 1;
#X connect 7 0 4 0;
#X connect 8 0 10 0;
#X connect 9 0 48 0;
#X connect 10 0 9 0;
#X connect 11 0 53 1;
#X connect 12 0 11 0;
#X connect 13 0 53 2;
#X connect 14 0 13 0;
#X connect 15 0 53 3;
#X connect 16 0 15 0;
#X connect 17 0 53 4;
#X connect 18 0 53 5;
#X connect 19 0 17 0;
#X connect 20 0 18 0;
#X connect 21 0 36 0;
#X connect 23 0 24 0;
#X connect 26 0 25 0;
#X connect 27 0 25 0;
#X connect 28 0 25 0;
#X connect 29 0 30 0;
#X connect 30 0 31 0;
#X connect 31 0 25 0;
#X connect 32 0 23 0;
#X connect 32 0 22 0;
#X connect 32 1 33 0;
#X connect 34 0 35 0;
#X connect 35 0 23 1;
#X connect 36 0 32 0;
#X connect 37 0 54 0;
#X connect 38 0 55 0;
#X connect 39 0 54 2;
#X connect 40 0 54 3;
#X connect 41 0 54 4;
#X connect 42 0 54 5;
#X connect 43 0 38 0;
#X connect 44 0 39 0;
#X connect 45 0 40 0;
#X connect 46 0 41 0;
#X connect 47 0 42 0;
#X connect 48 0 4 1;
#X connect 49 0 56 0;
#X connect 50 0 2 0;
#X connect 51 0 50 2;
#X connect 52 0 51 0;
#X connect 53 0 5 0;
#X connect 54 0 62 0;
#X connect 55 0 54 1;
#X connect 56 0 57 0;
#X connect 57 0 58 0;
#X connect 58 0 63 0;
#X connect 59 0 49 0;
#X connect 60 0 61 0;
#X connect 60 0 61 1;
#X connect 61 0 50 1;
#X connect 62 0 63 1;
#X connect 63 0 60 0;
#X connect 63 0 60 1;