#N canvas 524 38 842 658 12;
#X declare -stdpath ./;
#X obj 250 166 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 231 96 -~ 0.5;
#X obj 250 194 -~ 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 156 395 output~;
#X obj 174 310 output~;
#X obj 231 68 phasor~ 100;
#X text 285 97 remove DC bias;
#X text 318 69 original sawtooth;
#X obj 156 224 +~;
#X obj 232 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 247 331 output level;
#X text 227 427 for sum;
#X text 229 410 output level;
#X text 245 348 for difference;
#X msg 390 188 \; pd dsp 1;
#X obj 359 268 tabwrite~ \$0-difference;
#X obj 345 296 tabwrite~ \$0-sum;
#X obj 381 231 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 368 157 <= click to graph;
#X text 47 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 158 bng 17 250 50 0 empty empty empty 0 -6 0 8 #dfdfdf #000000
#000000;
#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 29 0 20 0;
#X connect 29 0 21 0;
#X connect 29 0 22 0;
#X connect 29 0 23 0;
