#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;
