#N canvas 524 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 text 592 585 updated for Pd version 0.39;
#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 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 text 272 331 output level;
#X text 255 427 for sum;
#X text 257 410 output level;
#X text 270 348 for difference;
#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 text 32 22 SPLITTING A SAWTOOTH WAVE INTO EVEN AND ODD HARMONICS;
#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 connect 0 0 3 0;
#X connect 2 0 0 0;
#X connect 2 0 13 0;
#X connect 2 0 14 0;
#X connect 2 0 23 0;
#X connect 3 0 13 1;
#X connect 3 0 14 1;
#X connect 10 0 2 0;
#X connect 13 0 8 0;
#X connect 13 0 22 0;
#X connect 14 0 9 1;
#X connect 14 0 21 0;
#X connect 28 0 20 0;
#X connect 28 0 21 0;
#X connect 28 0 22 0;
#X connect 28 0 23 0;
