#N canvas 533 85 595 677 12;
#X declare -stdpath ./;
#N canvas 456 42 579 692 16x 0;
#X obj 84 387 *~ 0.064;
#X obj 84 412 rpole~ 0.93538;
#X obj 84 439 *~ 0.00431;
#X obj 84 465 cpole~ 0.96559 0.05592;
#X obj 183 503 cpole~ 0.96559 -0.05592;
#X obj 183 530 *~ 0.125;
#X obj 183 557 rzero~ -1;
#X obj 183 583 rzero~ -1;
#X obj 182 611 rzero~ -1;
#X obj 83 133 phasor~;
#X obj 182 645 outlet~;
#X obj 101 201 wrap~;
#X obj 101 172 -~;
#X obj 101 246 *~;
#X obj 83 275 +~;
#X obj 169 267 phasor~;
#X obj 217 328 wrap~;
#X obj 217 304 -~;
#X obj 240 359 *~;
#X obj 169 359 +~;
#X obj 84 337 +~;
#X obj 347 298 block~ 1024 1 16;
#X obj 169 30 inlet;
#X obj 169 211 *~;
#X obj 169 239 +~;
#X obj 186 74 loadbang;
#X obj 186 128 unpack f f f f f f;
#X msg 186 100 0.5 -0.5 0.5 0.5 1 0.5;
#X text 350 99 osc-params;
#X connect 0 0 1 0;
#X connect 1 0 2 0;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 3 1 4 1;
#X connect 4 0 5 0;
#X connect 5 0 6 0;
#X connect 6 0 7 0;
#X connect 7 0 8 0;
#X connect 8 0 10 0;
#X connect 9 0 12 0;
#X connect 9 0 14 0;
#X connect 11 0 13 0;
#X connect 12 0 11 0;
#X connect 13 0 14 1;
#X connect 14 0 20 0;
#X connect 15 0 17 0;
#X connect 15 0 19 0;
#X connect 16 0 18 0;
#X connect 17 0 16 0;
#X connect 18 0 19 1;
#X connect 19 0 20 1;
#X connect 20 0 0 0;
#X connect 22 0 9 0;
#X connect 22 0 23 0;
#X connect 23 0 24 0;
#X connect 24 0 15 0;
#X connect 25 0 27 0;
#X connect 26 0 12 1;
#X connect 26 1 13 1;
#X connect 26 2 17 1;
#X connect 26 3 18 1;
#X connect 26 4 23 1;
#X connect 26 5 24 1;
#X connect 27 0 26 0;
#X restore 108 224 pd 16x;
#X obj 108 361 output~;
#X obj 188 196 *~;
#X obj 188 166 +~ 0.2;
#X obj 188 221 *~ 2000;
#X obj 175 326 *~;
#X obj 108 322 *~;
#X obj 108 186 mtof;
#X obj 68 66 r \$0-note;
#X obj 68 121 makenote 1;
#X obj 372 210 + 20;
#X obj 372 125 tgl 19 0 empty empty empty 0 -6 0 8 #dfdfdf #000000 #000000 0 1;
#X obj 372 299 s \$0-note;
#X obj 372 182 random 70;
#X floatatom 265 173 6 0 0 0 - - - 0;
#X floatatom 265 221 7 0 0 0 - - - 0;
#X obj 265 197 mtof;
#X obj 175 290 adsr 2 30 200 50 500;
#X obj 188 141 adsr 1 10 200 50 500;
#X obj 82 151 poly 1 1;
#X floatatom 432 125 6 0 0 0 - - - 0;
#X floatatom 439 218 5 0 0 0 - - - 0;
#X obj 68 92 unpack f f;
#X obj 386 72 declare -stdpath ./;
#X listbox 372 271 10 0 0 0 - - - 0;
#X text 448 267 picth and duration, f 9;
#X text 478 217 duration;
#X obj 175 108 tgl 19 0 empty empty empty 0 -10 0 12 #dfdfdf #000000 #000000 0 1;
#X obj 372 242 pack f 300;
#X obj 372 159 metro 500;
#X obj 38 17 cnv 5 5 25 empty empty The\ Classic\ Subtractive\ Synth\ Sound 15 13 0 16 #dfdfdf #202020 0;
#X obj 189 255 sig~ 3;
#X obj 108 286 bob~, f 7;
#X text 34 437 Now that we can make reasonably high-quality classic waveforms using upsampling \, we combine an upsampled oscillator with a [bob~] filter and [adsr] envelopre generators to control the filter resonant frequency and the amplitude to make the classic subtractive synthesis sound. Send an [s \$0-note] object a pitch/duration pair to play a note \, wihch is sent to [makenote] to generate note ons/offs and the [poly] object is used here to make it a simple polyphonic synth. The velocity is set in [makenote] to an amplitude of "1" (note that classic VC synths did not have velocity sensitive keyboards!), f 71;
#X text 34 575 You can add controls to change the parameters [adsr] and/or [bob~]'s "Q" parameter. The oscillators' waveforms and tuning relationship is controlled by other parameters set within the [pd 16x] subwindow., f 71;
#X connect 0 0 32 0;
#X connect 2 0 4 0;
#X connect 3 0 2 0;
#X connect 3 0 2 1;
#X connect 4 0 32 1;
#X connect 5 0 6 1;
#X connect 6 0 1 0;
#X connect 7 0 0 0;
#X connect 8 0 22 0;
#X connect 9 0 19 0;
#X connect 9 1 19 1;
#X connect 10 0 28 0;
#X connect 11 0 29 0;
#X connect 13 0 10 0;
#X connect 14 0 16 0;
#X connect 15 0 4 1;
#X connect 16 0 15 0;
#X connect 17 0 5 0;
#X connect 17 0 5 1;
#X connect 18 0 3 0;
#X connect 19 1 7 0;
#X connect 19 2 27 0;
#X connect 20 0 29 1;
#X connect 21 0 28 1;
#X connect 22 0 9 0;
#X connect 22 1 9 2;
#X connect 24 0 12 0;
#X connect 27 0 18 0;
#X connect 27 0 17 0;
#X connect 28 0 24 0;
#X connect 29 0 13 0;
#X connect 31 0 32 2;
#X connect 32 0 6 0;
