#N canvas 421 53 690 600 12;
#X declare -stdpath ./;
#X obj 31 22 cnv 5 5 25 empty empty Using\ [text]\ to\ Sequence\ an\ Oscillator\ Bank 15 13 0 16 #dfdfdf #202020 0;
#X obj 433 371 qlist;
#X msg 517 319 read qlist.txt;
#X obj 517 274 loadbang;
#X text 527 298 reread file;
#X msg 433 229 rewind;
#X msg 501 229 next;
#X text 445 208 single step;
#X obj 208 336 r #;
#X obj 88 242 output~;
#X obj 523 21 declare -stdpath ./;
#X obj 88 193 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 459 502 click to open:;
#X obj 447 528 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 106 534 text sequence additive -g;
#X obj 208 363 print comments;
#X msg 106 425 1;
#X text 82 338 this is where comments go to:, f 15;
#X msg 140 425 5;
#X text 364 421 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 35;
#X msg 106 461 tempo \$1 permsec \, line 0 \, auto, f 17;
#X msg 305 202 tempo \$1 \, bang;
#X msg 305 171 1;
#X msg 340 171 5;
#X text 375 171 set tempo and start;
#X text 174 424 set tempo and start;
#X connect 2 0 1 0;
#X connect 3 0 2 0;
#X connect 5 0 1 0;
#X connect 6 0 1 0;
#X connect 8 0 16 0;
#X connect 11 0 9 0;
#X connect 17 0 21 0;
#X connect 19 0 21 0;
#X connect 21 0 15 0;
#X connect 22 0 1 0;
#X connect 23 0 22 0;
#X connect 24 0 22 0;
