#N canvas 417 38 842 658 12;
#X declare -stdpath ./;
#X obj 280 168 wrap~;
#N canvas 0 0 450 300 (subpatch) 0;
#X array \$0-phasor 882 float 0;
#X coords 0 1.02 882 -1.02 200 130 1;
#X restore 575 90 graph;
#X obj 262 96 -~ 0.5;
#X obj 280 196 -~ 0.5;
#N canvas 0 0 450 300 (subpatch) 0;
#X array \$0-sum 882 float 0;
#X coords 0 1.02 882 -1.02 200 130 1;
#X restore 575 247 graph;
#N canvas 0 0 450 300 (subpatch) 0;
#X array \$0-difference 882 float 0;
#X coords 0 1.02 882 -1.02 200 130 1;
#X restore 575 411 graph;
#X text 591 551 ---- 0.02 seconds ----;
#X obj 136 395 output~;
#X obj 159 310 output~;
#X obj 262 68 phasor~ 100;
#X text 316 97 remove DC bias;
#X text 349 69 original sawtooth;
#X obj 136 224 +~;
#X obj 262 224 -~;
#X msg 390 172 \; pd dsp 1;
#X obj 359 252 tabwrite~ \$0-difference;
#X obj 345 280 tabwrite~ \$0-sum;
#X obj 381 215 tabwrite~ \$0-phasor;
#X text 38 550 This is a classic technique for gaining separate control over the even and odd harmonics in a synthetic sound. It can also be used conceptually to understand the harmonic content of a square wave in terms of that of a sawtooth \, or vice versa., f 66;
#X text 27 198 180 degree out of phase sawtooth form the sum and difference, f 13;
#X obj 664 35 declare -stdpath ./;
#X obj 345 139 bng 19 250 50 0 empty empty empty 0 -6 0 8 #dfdfdf #000000 #000000;
#X text 368 138 <-- click to graph;
#X text 257 410 output level for sum, f 12;
#X text 272 331 output level for difference, f 14;
#X text 38 484 This patch splits a sawtooth wave into its even and odd harmonics. The [wrap~] object is used to make the phased copy. Adding and subtracting this to and from the original gives the results shown and heard. (Listen to the two outputs separately \, then together.), f 66;
#X obj 48 17 cnv 5 5 25 empty empty Splitting\ a\ Sawtooth\ Wave\ into\ Even\ &\ Odd\ Harmonics 15 13 0 16 #dfdfdf #202020 0;
#X connect 0 0 3 0;
#X connect 2 0 0 0;
#X connect 2 0 12 0;
#X connect 2 0 13 0;
#X connect 2 0 17 0;
#X connect 3 0 12 1;
#X connect 3 0 13 1;
#X connect 9 0 2 0;
#X connect 12 0 7 0;
#X connect 12 0 16 0;
#X connect 13 0 8 1;
#X connect 13 0 15 0;
#X connect 21 0 14 0;
#X connect 21 0 15 0;
#X connect 21 0 16 0;
#X connect 21 0 17 0;
