#N canvas 328 19 745 613 10;
#X obj 22 229 r trigger;
#X obj 22 447 *~;
#X obj 22 340 *~ 0.01;
#X obj 22 375 *~;
#X obj 22 405 *~;
#X obj 69 369 r pitch;
#X obj 69 419 mtof;
#X floatatom 69 394 4 0 0 0 - - -, f 4;
#X floatatom 46 281 4 0 0 0 - - -, f 4;
#X obj 46 256 r level;
#X floatatom 120 281 4 0 0 0 - - -, f 4;
#X obj 120 256 r attack;
#X floatatom 205 281 4 0 0 0 - - -, f 4;
#X obj 205 256 r decay;
#X floatatom 280 281 4 0 0 0 - - -, f 4;
#X floatatom 374 281 4 0 0 0 - - -, f 4;
#X obj 280 256 r sustain;
#X obj 374 256 r release;
#X obj 499 158 r note;
#X msg 499 256 \; trigger 1;
#X obj 592 234 del;
#X msg 592 256 \; trigger 0;
#X obj 22 201 qlist;
#X obj 22 42 r qlist;
#X msg 43 69 bang;
#X msg 43 94 rewind;
#X obj 50 123 r tempo;
#X floatatom 50 148 4 0 0 0 - - -, f 4;
#X msg 50 173 tempo \$1;
#X obj 499 201 t b f;
#X obj 526 233 s pitch;
#X obj 607 185 r duration;
#X floatatom 607 210 4 0 0 0 - - -, f 4;
#X floatatom 499 181 4 0 0 0 - - -, f 4;
#X obj 278 329 r trigger;
#X floatatom 304 385 4 0 0 0 - - -, f 4;
#X floatatom 376 415 4 0 0 0 - - -, f 4;
#X floatatom 456 415 4 0 0 0 - - -, f 4;
#X floatatom 542 415 4 0 0 0 - - -, f 4;
#X floatatom 638 415 4 0 0 0 - - -, f 4;
#X obj 304 360 r level2;
#X obj 376 390 r attack2;
#X obj 456 390 r decay2;
#X obj 542 390 r sustain2;
#X obj 638 390 r release2;
#X obj 69 444 tabosc4~ array1;
#X floatatom 228 375 4 0 0 0 - - -, f 4;
#X obj 22 491 vcf~;
#X floatatom 129 497 4 0 0 0 - - -, f 4;
#X obj 129 472 r q;
#X obj 22 315 adsr 0 0 0 0 0;
#X obj 278 453 adsr 0 0 0 0 0;
#X obj 304 410 / 69.23;
#X obj 228 400 mtof;
#X obj 228 425 sqrt;
#X obj 228 450 sqrt;
#X obj 186 345 r filter;
#X obj 229 503 *~;
#X obj 229 528 *~;
#X obj 278 478 +~ 1;
#X obj 228 475 *~;
#X text 128 230 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 144 553 pd otherstuff;
#X text 95 68 <--start loop;
#X text 112 96 <--stop loop;
#X text 98 148 <--set tempo;
#X text 230 553 <--loadbangs and table;
#X msg 447 507 \; qlist read qlist2.txt;
#X text 441 483 click to reload qlist2.txt;
#X obj 22 519 output~;
#X text 201 39 This is an analog-synth sound made using a wavetable
oscillator and a "vcf~' object. Unkike the "floyd" example earlier
\, we use a qlist object to do the sequencing. This can also be adapted
to make a keyboard synth.;
#X text 199 105 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 370 315 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.;
#X obj 1 1 cnv 15 445 20 empty \$0-pddp.cnv.header analog_style_synth_using_qlist
20 10 1 18 -261139 -33289 0;
#X obj 407 2 pddp/pddplink http://puredata.info/dev/pddp -text pddp
;
#X obj 1 591 cnv 15 445 20 empty \$0-pddp.cnv.footer empty 20 12 0
14 -233017 -33289 0;
#N canvas 44 246 494 284 META 0;
#X text 12 125 WEBSITE http://crca.ucsd.edu/~msp/;
#X text 12 105 AUTHOR Miller Puckette;
#X text 12 85 LIBRARY PDDP;
#X text 12 5 GENRE tutorial;
#X text 12 45 LICENSE SIBSD;
#X text 12 145 HELP_PATCH_AUTHORS Updated for release 0.39. Jonathan
Wilkes revised the patch to conform to the PDDP template for Pd version
0.42.;
#X text 12 25 KEYWORDS signal;
#X text 12 65 DESCRIPTION analog style synth using qlist;
#X restore 392 593 pd META;
#N canvas 13 202 428 190 References 0;
#X obj 1 1 cnv 15 425 20 empty \$0-pddp.cnv.subheading empty 3 12 0
14 -261139 -33289 0;
#X text 7 2 analog synth with qlist- Related Help Documents;
#X text 19 37 links:;
#X restore 103 593 pd References;
#X obj 6 593 pddp/pddplink ../5.reference/pddp/help.pd -text help;
#X connect 0 0 50 0;
#X connect 1 0 47 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 45 0;
#X connect 7 0 6 0;
#X connect 8 0 50 1;
#X connect 9 0 8 0;
#X connect 10 0 50 2;
#X connect 11 0 10 0;
#X connect 12 0 50 3;
#X connect 13 0 12 0;
#X connect 14 0 50 4;
#X connect 15 0 50 5;
#X connect 16 0 14 0;
#X connect 17 0 15 0;
#X connect 18 0 33 0;
#X connect 20 0 21 0;
#X connect 23 0 22 0;
#X connect 24 0 22 0;
#X connect 25 0 22 0;
#X connect 26 0 27 0;
#X connect 27 0 28 0;
#X connect 28 0 22 0;
#X connect 29 0 20 0;
#X connect 29 0 19 0;
#X connect 29 1 30 0;
#X connect 31 0 32 0;
#X connect 32 0 20 1;
#X connect 33 0 29 0;
#X connect 34 0 51 0;
#X connect 35 0 52 0;
#X connect 36 0 51 2;
#X connect 37 0 51 3;
#X connect 38 0 51 4;
#X connect 39 0 51 5;
#X connect 40 0 35 0;
#X connect 41 0 36 0;
#X connect 42 0 37 0;
#X connect 43 0 38 0;
#X connect 44 0 39 0;
#X connect 45 0 1 1;
#X connect 46 0 53 0;
#X connect 47 0 69 0;
#X connect 47 0 69 1;
#X connect 48 0 47 2;
#X connect 49 0 48 0;
#X connect 50 0 2 0;
#X connect 51 0 59 0;
#X connect 52 0 51 1;
#X connect 53 0 54 0;
#X connect 54 0 55 0;
#X connect 55 0 60 0;
#X connect 56 0 46 0;
#X connect 57 0 58 0;
#X connect 57 0 58 1;
#X connect 58 0 47 1;
#X connect 59 0 60 1;
#X connect 60 0 57 0;
#X connect 60 0 57 1;
