#N canvas 1097 30 1021 1006 12; #X obj 166 158 cos~; #X floatatom 167 113 10 0 0 0 - - -; #N canvas 0 50 450 250 (subpatch) 0; #X array phase 1024 float 2; #X coords 0 1 1024 -1 512 140 1 0 0; #X restore 416 54 graph; #X obj 167 135 phasor~; #N canvas 96 872 769 372 fftPhaseComparison 0; #X obj 44 57 inlet~; #X obj 235 57 inlet~; #X obj 69 170 tabsend~ imaginary0; #X obj 44 202 tabsend~ real0; #X obj 260 169 tabsend~ imaginary1; #X obj 235 201 tabsend~ real1; #X obj 45 131 fft~; #X obj 236 131 fft~; #X obj 452 56 inlet; #X obj 452 185 bang~; #X obj 452 206 s fftDone; #X obj 506 57 loadbang; #X msg 506 78 1; #X text 547 77 throw away the first start; #X obj 452 118 switch~ 1024 16; #X connect 0 0 6 0; #X connect 1 0 7 0; #X connect 6 0 3 0; #X connect 6 1 2 0; #X connect 7 0 5 0; #X connect 7 1 4 0; #X connect 8 0 14 0; #X connect 9 0 10 0; #X connect 11 0 12 0; #X connect 12 0 14 0; #X restore 166 292 pd fftPhaseComparison; #X floatatom 167 24 5 1 512 0 harmonic harmonic -; #X obj 213 25 loadbang; #X msg 213 46 44100; #X obj 167 91 *; #X obj 213 67 / 1024; #X obj 354 903 r harmonic; #X floatatom 259 889 10 0 0 0 - - -; #X obj 241 511 t f f f f; #X obj 345 557 tabread real0; #X obj 450 557 tabread imaginary0; #X obj 100 557 tabread real1; #X obj 205 557 tabread imaginary1; #X obj 450 578 * -1; #X obj 233 646 *; #X obj 273 646 *; #X obj 315 645 *; #X obj 356 645 *; #X obj 326 680 -; #X obj 245 681 +; #X text 273 682 b; #X obj 259 747 /; #X text 294 819 quadrant correction; #X obj 259 769 expr atan($f1); #X obj 380 758 expr if($f1 < 0 \, acos(-1) \, 0); #X obj 380 780 expr if($f2 < 0 \, -$f1 \, $f1); #X obj 259 818 +; #X floatatom 259 843 10 0 0 0 omega - -; #X obj 380 734 swap; #X obj 259 866 expr $f1/acos(-1); #X obj 416 205 array define real0 1024; #X obj 416 229 array define imaginary0 1024; #X obj 416 252 array define real1 1024; #X obj 416 275 array define imaginary1 1024; #X obj 207 436 f; #X obj 259 436 + 1; #X obj 259 929 tabwrite phase; #X text 185 327 graph phase response; #X obj 277 463 s harmonic; #X obj 305 436 mod 1024; #X text 441 606 multiply filtered vector by input vector complex conjugate to normalize angle using input vector; #X obj 284 163 r startFFT; #X obj 218 410 spigot; #X obj 218 354 r fftDone; #X obj 241 488 f; #X obj 166 328 bng 15 250 50 0 empty empty empty 17 7 0 10 -257985 -1 -1; #X obj 123 467 s startFFT; #X obj 285 407 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X msg 284 184 1; #X msg 314 237 0; #X obj 314 216 r stopFFT; #X obj 321 403 s stopFFT; #X obj 218 375 t b b b; #X obj 141 444 delay 2; #X obj 186 188 hilbert~; #X obj 185 261 *~; #X obj 149 261 *~; #X msg 705 211 \; phase const 0; #X obj 256 261 *~; #X obj 220 261 *~; #X obj 50 76 hradio 15 1 1 3 empty empty empty 0 -8 0 10 -257985 -1 -1 0; #X obj 50 197 unpack f f f f; #X obj 50 96 sel 0 1 2; #X msg 50 118 1 0 1 0; #X msg 70 139 1 0 0 1; #X msg 92 160 0 1 0 1; #X text 357 682 a (as in z = a + bi); #X text 121 749 compute the angle; #X connect 0 0 58 0; #X connect 0 0 60 0; #X connect 1 0 3 0; #X connect 3 0 0 0; #X connect 5 0 8 0; #X connect 6 0 7 0; #X connect 7 0 9 0; #X connect 8 0 1 0; #X connect 9 0 8 1; #X connect 10 0 40 1; #X connect 11 0 40 0; #X connect 12 0 15 0; #X connect 12 1 16 0; #X connect 12 2 13 0; #X connect 12 3 14 0; #X connect 13 0 20 1; #X connect 13 0 19 1; #X connect 14 0 17 0; #X connect 15 0 20 0; #X connect 15 0 18 0; #X connect 16 0 21 0; #X connect 16 0 19 0; #X connect 17 0 21 1; #X connect 17 0 18 1; #X connect 18 0 23 0; #X connect 19 0 23 1; #X connect 20 0 22 0; #X connect 21 0 22 1; #X connect 22 0 32 1; #X connect 22 0 25 1; #X connect 23 0 32 0; #X connect 23 0 25 0; #X connect 25 0 27 0; #X connect 27 0 30 0; #X connect 28 0 29 0; #X connect 29 0 30 1; #X connect 30 0 31 0; #X connect 31 0 33 0; #X connect 32 0 28 0; #X connect 32 1 29 1; #X connect 33 0 11 0; #X connect 38 0 39 0; #X connect 39 0 42 0; #X connect 39 0 43 0; #X connect 39 0 48 1; #X connect 43 0 38 1; #X connect 43 0 46 1; #X connect 45 0 52 0; #X connect 46 0 38 0; #X connect 46 0 57 0; #X connect 47 0 56 0; #X connect 48 0 12 0; #X connect 49 0 38 0; #X connect 49 0 57 0; #X connect 52 0 4 2; #X connect 53 0 4 2; #X connect 54 0 53 0; #X connect 56 0 46 0; #X connect 56 1 48 0; #X connect 56 1 51 0; #X connect 56 2 55 0; #X connect 57 0 50 0; #X connect 58 0 59 0; #X connect 58 0 63 0; #X connect 58 1 62 0; #X connect 59 0 4 0; #X connect 60 0 4 0; #X connect 62 0 4 1; #X connect 63 0 4 1; #X connect 64 0 66 0; #X connect 65 0 60 1; #X connect 65 1 59 1; #X connect 65 2 63 1; #X connect 65 3 62 1; #X connect 66 0 67 0; #X connect 66 1 68 0; #X connect 66 2 69 0; #X connect 67 0 65 0; #X connect 68 0 65 0; #X connect 69 0 65 0;