#N canvas 490 29 705 606 12;
#X declare -stdpath ./;
#X obj 456 354 qlist;
#X msg 540 302 read qlist.txt;
#X obj 540 257 loadbang;
#X text 313 140 start;
#X text 550 281 reread file;
#X msg 456 212 rewind;
#X msg 524 212 next;
#X msg 305 164 tempo 1 \, bang;
#X text 82 20 USING QLIST TO SEQUENCE AN OSCILLATOR BANK;
#X text 468 191 single step;
#X obj 225 323 r #;
#X obj 83 227 output~;
#X obj 523 21 declare -stdpath ./;
#X obj 83 178 clone -s 1 osc-voice 8;
#X text 57 61 Here is an eight voice additive synthesis patch controlled by a [qlist]. Open a text editor on the file \, "qlist.txt" \, to see how the oscillators' amplitudes and frequencies are specified. The abstraction \, "osc-voice" is loaded 8 times inside [clone] and shows an effective way to make patches react to qlists but also to mousing., f 81;
#X text 428 572 updated for Pd version 0.52;
#X text 450 506 click to open:;
#X obj 438 532 text define -k additive;
#A set # This is a qlist for patch number 68 \, which demonstrates an oscillator bank. \; # comments start with a "#" which must be followed by a space. The comment is terminated by a semicolon like this: \; # first an arpeggio. You can group them in lines as you please. The 100s at the beginnings of lines are delay times. \; pit1 89 \; amp1 80 \; 100 pit2 72 \; amp2 80 \; 100 pit3 57 \; amp3 90 \; 100 pit4 84 \; amp4 78 \; 100 pit5 74 \; amp5 74 \; 100 pit6 73 \; amp6 74 \; 100 pit7 100 \; amp7 78 \; 100 pit8 37 \; amp8 95 \; # after a 600-msec rest \, gliss four of the oscillators to new frequencies. \; 600 pit1 70 1000 \; 300 pit8 40 1000 \; 300 pit4 89 1000 \; 300 pit7 95 1000 \; # a second later \, turn them off with decay time 1500 \; 1000 amp1 0 1500 \; amp2 0 1500 \; amp3 0 1500 \; amp4 0 1500 \; amp5 0 1500 \; amp6 0 1500 \; amp7 0 1500 \; amp8 0 1500 \; # and re-attack them.. \; 1000 amp1 85 5 \; amp2 85 5 \; amp3 85 5 \; amp4 90 5 \; amp5 85 5 \; amp6 85 5 \; amp7 90 5 \; amp8 85 5 \; # this time \, try varying decay times. \; 10 amp1 0 2000 \; amp2 0 2000 \; amp3 0 2000 \; amp4 0 500 \; amp5 0 1000 \; amp6 0 1000 \; amp7 0 500 \; amp8 0 4000 \;;
#X obj 127 560 text sequence additive -g;
#X obj 225 350 print comments;
#X msg 103 391 1;
#X msg 137 475 step;
#X msg 127 447 line 0;
#X text 179 446 <-- rewind;
#X text 175 476 <-- step through;
#X text 99 325 this is where comments go to:, f 15;
#X msg 411 164 tempo 5 \, bang;
#X msg 160 531 stop;
#X text 201 531 <-- stop;
#X msg 137 391 5;
#X msg 103 417 tempo \$1 permsec;
#X msg 153 503 line 0 \, auto;
#X text 250 500 <-- rewind and play;
#X text 278 517 automatically, f 15;
#X text 402 407 You can also use the more modern [text sequence] object instead which is more powerful. It can also save contents of the sequence with the patch., f 32;
#X connect 1 0 0 0;
#X connect 2 0 1 0;
#X connect 5 0 0 0;
#X connect 6 0 0 0;
#X connect 7 0 0 0;
#X connect 10 0 19 0;
#X connect 13 0 11 0;
#X connect 20 0 30 0;
#X connect 21 0 18 0;
#X connect 22 0 18 0;
#X connect 26 0 0 0;
#X connect 27 0 18 0;
#X connect 29 0 30 0;
#X connect 30 0 18 0;
#X connect 31 0 18 0;
