#N canvas 377 29 843 687 12;
#X declare -stdpath ./;
#X obj 30 250 r trigger;
#X obj 30 471 *~;
#X obj 30 364 *~ 0.01;
#X obj 30 399 *~;
#X obj 30 429 *~;
#X obj 77 393 r pitch;
#X obj 77 443 mtof;
#X floatatom 77 418 4 0 0 0 - - - 0;
#X floatatom 49 305 4 0 0 0 - - - 0;
#X obj 49 280 r level;
#X floatatom 112 305 4 0 0 0 - - - 0;
#X obj 112 280 r attack;
#X floatatom 180 305 4 0 0 0 - - - 0;
#X obj 180 280 r decay;
#X floatatom 244 305 4 0 0 0 - - - 0;
#X floatatom 320 305 4 0 0 0 - - - 0;
#X obj 244 280 r sustain;
#X obj 320 280 r release;
#X obj 481 186 r note;
#X msg 481 275 \; trigger 1;
#X msg 577 289 \; trigger 0;
#X obj 50 174 qlist;
#X obj 50 15 r qlist;
#X msg 68 67 rewind;
#X obj 78 96 r tempo;
#X floatatom 78 121 4 0 0 0 - - - 0;
#X msg 78 146 tempo \$1;
#X obj 481 233 t b f;
#X obj 539 229 s pitch;
#X obj 609 214 r duration;
#X floatatom 609 239 4 0 0 0 - - - 0;
#X floatatom 481 209 4 0 0 0 - - - 0;
#X obj 286 347 r trigger;
#X floatatom 305 403 4 0 0 0 - - - 0;
#X floatatom 365 433 4 0 0 0 - - - 0;
#X floatatom 455 433 4 0 0 0 - - - 0;
#X floatatom 541 433 4 0 0 0 - - - 0;
#X floatatom 637 433 4 0 0 0 - - - 0;
#X obj 305 378 r level2;
#X obj 365 408 r attack2;
#X obj 455 408 r decay2;
#X obj 541 408 r sustain2;
#X obj 637 408 r release2;
#X obj 77 468 tabosc4~ array1;
#X floatatom 236 393 4 0 0 0 - - - 0;
#X obj 225 576 vcf~;
#X floatatom 329 528 4 0 0 0 - - - 0;
#X obj 329 503 r q;
#X obj 286 471 adsr 0 0 0 0 0;
#X obj 305 428 / 69.23;
#X obj 236 418 mtof;
#X obj 236 443 sqrt;
#X obj 236 468 sqrt;
#X obj 215 361 r filter;
#X obj 237 521 *~;
#X obj 237 546 *~;
#X obj 286 496 +~ 1;
#X obj 236 493 *~;
#X text 107 250 ADSR for amplitude:;
#N canvas 0 258 703 380 otherstuff 0;
#X obj 289 86 loadbang;
#X obj 418 85 loadbang;
#N canvas 0 0 450 300 (subpatch) 0;
#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 coords 0 1 66 -1 200 140 1;
#X restore 62 81 graph;
#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 4;
#X connect 0 0 4 0;
#X connect 1 0 3 0;
#X restore 492 482 pd otherstuff;
#X msg 149 196 \; qlist read qlist2.txt;
#X obj 225 616 output~;
#X text 240 112 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., f 77;
#X text 392 338 ADSR for filter. Here \, it works 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., f 50;
#X text 323 17 ANALOG_STYLE SYNTH USING QLIST;
#X text 594 481 <= loadbangs and table;
#X text 86 41 <= start loop;
#X text 117 67 <= stop loop;
#X text 118 121 <= set tempo;
#X obj 30 338 adsr 0 0 0 0 0;
#X obj 613 14 declare -stdpath ./;
#X obj 577 264 delay;
#X text 309 202 reload qlist2.txt;
#X text 240 60 This is an analog-synth sound made using a wavetable oscillator and a [vcf~] object. Unlike the "floyd" example earlier \, we use a qlist object to do the sequencing. This can also be adapted to make a keyboard synth., f 77;
#X msg 397 584 line 0 \, auto;
#X text 645 578 click to open:, f 15;
#X obj 397 558 r text;
#X obj 642 602 text define -k seq2;
#A set note 36 \; 1000 note 34 \; 1000 note 33 \; 1000 note 31 \; 1000 text bang \;;
#X obj 397 623 text sequence seq2 -g;
#X text 603 645 updated for Pd version 0.52;
#X msg 353 583 stop;
#X msg 498 591 tempo \$1 permsec;
#X obj 498 541 r tempo;
#X floatatom 498 566 4 0 0 0 - - - 0;
#X text 631 525 You can also use the more modern [text] object as previsously mentioned., f 25;
#X obj 62 42 bng 19 250 50 0 empty empty empty 0 -10 0 12 #dfdfdf #000000 #000000;
#X connect 0 0 69 0;
#X connect 1 0 45 0;
#X connect 2 0 3 0;
#X connect 2 0 3 1;
#X connect 3 0 4 0;
#X connect 3 0 4 1;
#X connect 4 0 1 0;
#X connect 5 0 7 0;
#X connect 6 0 43 0;
#X connect 7 0 6 0;
#X connect 8 0 69 1;
#X connect 9 0 8 0;
#X connect 10 0 69 2;
#X connect 11 0 10 0;
#X connect 12 0 69 3;
#X connect 13 0 12 0;
#X connect 14 0 69 4;
#X connect 15 0 69 5;
#X connect 16 0 14 0;
#X connect 17 0 15 0;
#X connect 18 0 31 0;
#X connect 22 0 21 0;
#X connect 23 0 21 0;
#X connect 24 0 25 0;
#X connect 25 0 26 0;
#X connect 26 0 21 0;
#X connect 27 0 19 0;
#X connect 27 0 71 0;
#X connect 27 1 28 0;
#X connect 29 0 30 0;
#X connect 30 0 71 1;
#X connect 31 0 27 0;
#X connect 32 0 48 0;
#X connect 33 0 49 0;
#X connect 34 0 48 2;
#X connect 35 0 48 3;
#X connect 36 0 48 4;
#X connect 37 0 48 5;
#X connect 38 0 33 0;
#X connect 39 0 34 0;
#X connect 40 0 35 0;
#X connect 41 0 36 0;
#X connect 42 0 37 0;
#X connect 43 0 1 1;
#X connect 44 0 50 0;
#X connect 45 0 61 0;
#X connect 46 0 45 2;
#X connect 47 0 46 0;
#X connect 48 0 56 0;
#X connect 49 0 48 1;
#X connect 50 0 51 0;
#X connect 51 0 52 0;
#X connect 52 0 57 0;
#X connect 53 0 44 0;
#X connect 54 0 55 0;
#X connect 54 0 55 1;
#X connect 55 0 45 1;
#X connect 56 0 57 1;
#X connect 57 0 54 0;
#X connect 57 0 54 1;
#X connect 69 0 2 0;
#X connect 71 0 20 0;
#X connect 74 0 78 0;
#X connect 76 0 74 0;
#X connect 80 0 78 0;
#X connect 81 0 78 0;
#X connect 82 0 83 0;
#X connect 83 0 81 0;
#X connect 85 0 21 0;
