#N canvas 30 3 1187 724 10; #N canvas 743 16 558 705 fft 0; #X obj 19 61 inlet~; #X obj 195 217 inlet; #X obj 29 92 rfft~; #X obj 29 125 *~; #X obj 60 125 *~; #X obj 29 155 sqrt~; #X obj 29 181 biquad~ 0 0 0 0 1; #X text 93 93 Fourier series; #X text 98 146 magnitude; #X text 96 131 calculate; #X text 21 3 This subpatch computes the spectrum of the incoming signal with a (rectangular windowed) FFT. FFTs aren't properly introduced until much later.; #X text 83 61 signal to analyze; #X text 193 164 delay two samples; #X text 191 182 for better graphing; #X obj 19 459 samplerate~; #X obj 19 436 bng 18 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X floatatom 19 506 5 0 0 0 - - -; #X obj 19 482 / 256; #X obj 19 412 loadbang; #X obj 75 528 s fundamental; #X text -2 359 At load time \, calculate a good choice of fundamental frequency for showing spectra: the 16th bin in a 4096-point spectrum \, so SR*16/4096 or SR/256.; #X obj 231 236 inlet; #X text 284 234 toggle to graph repeatedly; #X text 262 212 bang to graph once; #X obj 19 528 t b f; #X msg 19 551 \; cm 6; #X text 25 585 set carrier multiplier after fundamental; #X obj 29 205 /~ 4096; #X msg 209 322 \; pd dsp 1; #X obj 332 109 block~ 4096 1; #X obj 231 298 tabwrite~ \$0-spectrum; #X obj 19 330 tabwrite~ \$0-signal; #X obj 103 223 *~ 20; #X obj 204 83 env~; #X floatatom 253 90 5 0 0 0 - - -; #X obj 231 259 del 1; #X obj 286 259 t b; #X obj 249 471 log~; #X obj 249 492 *~ 0.1; #X obj 319 472 *~; #X obj 344 533 *~; #X msg 335 443 1; #X msg 362 442 0; #X obj 335 414 select 0 1; #X msg 392 441 1; #X msg 422 442 0; #X obj 335 393 r \$0-lin/log; #X obj 249 515 +~ 1; #X connect 0 0 2 0; #X connect 0 0 31 0; #X connect 0 0 33 0; #X connect 1 0 28 0; #X connect 1 0 30 0; #X connect 1 0 31 0; #X connect 2 0 3 0; #X connect 2 0 3 1; #X connect 2 1 4 0; #X connect 2 1 4 1; #X connect 3 0 5 0; #X connect 4 0 5 0; #X connect 5 0 6 0; #X connect 6 0 27 0; #X connect 14 0 17 0; #X connect 15 0 14 0; #X connect 16 0 24 0; #X connect 17 0 16 0; #X connect 18 0 15 0; #X connect 21 0 28 0; #X connect 21 0 35 0; #X connect 24 0 25 0; #X connect 24 1 19 0; #X connect 27 0 32 0; #X connect 27 0 37 0; #X connect 32 0 39 0; #X connect 33 0 34 0; #X connect 35 0 30 0; #X connect 35 0 31 0; #X connect 35 0 36 0; #X connect 36 0 35 0; #X connect 37 0 38 0; #X connect 38 0 47 0; #X connect 39 0 30 0; #X connect 39 0 40 0; #X connect 40 0 30 0; #X connect 41 0 39 1; #X connect 42 0 40 1; #X connect 43 0 41 0; #X connect 43 0 42 0; #X connect 43 1 44 0; #X connect 43 1 45 0; #X connect 44 0 40 1; #X connect 45 0 39 1; #X connect 46 0 43 0; #X connect 47 0 40 0; #X restore 59 -22 pd fft; #X obj 29 -163 bng 18 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #N canvas 0 0 450 300 (subpatch) 0; #X array \$0-signal 882 float 0; #X coords 0 1.02 881 -1.02 200 80 1; #X restore 219 -339 graph; #N canvas 0 0 450 300 (subpatch) 0; #X array \$0-spectrum 259 float 0; #X coords 0 0.51 258 -0.008 259 130 1; #X restore 244 -93 graph; #X text 221 -258 ---- 0.02 seconds ----; #X text 337 -81 SPECTRUM; #X obj 61 -208 adc~; #N canvas 818 11 475 368 autocompress 0; #X obj 46 51 env~; #X obj 43 283 line~; #X obj 27 309 *~; #X obj 27 331 outlet~; #X obj 28 28 inlet~; #X obj -103 273 delread~ \$0-del 16; #X obj -109 45 delwrite~ \$0-del 24; #X msg 14 144 0; #X floatatom 131 239 5 0 0 0 - - -; #X obj 128 324 env~; #X obj 135 183 -; #X floatatom 168 238 5 0 0 0 - - -; #X obj 46 94 t f f f; #X obj 109 137 t f f; #X floatatom 87 240 5 0 0 0 - - -; #X floatatom 128 344 5 0 0 0 - - -; #X msg 43 262 \$1 5; #X obj 86 200 +; #X obj -103 293 *~ 0.0005; #X msg 135 162 80 \$1; #X obj 46 118 moses 10; #X connect 0 0 12 0; #X connect 0 0 8 0; #X connect 1 0 2 1; #X connect 2 0 3 0; #X connect 2 0 9 0; #X connect 4 0 0 0; #X connect 4 0 6 0; #X connect 5 0 18 0; #X connect 7 0 16 0; #X connect 9 0 15 0; #X connect 10 0 11 0; #X connect 10 0 17 1; #X connect 12 0 20 0; #X connect 13 0 17 0; #X connect 13 1 19 0; #X connect 16 0 1 0; #X connect 17 0 14 0; #X connect 17 0 16 0; #X connect 18 0 2 0; #X connect 19 0 10 0; #X connect 20 0 7 0; #X connect 20 1 13 0; #X restore 61 -154 pd autocompress; #X obj 60 -57 *~ 1; #X obj 60 -108 hip~ 10; #X obj 105 -20 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 1 1; #X obj 62 -174 *~ 10; #X floatatom 107 -213 5 0 0 0 - - -; #X obj 60 -82 *~ 0.3; #X obj 129 -180 env~; #X floatatom 130 -132 5 0 0 0 - - -; #X connect 1 0 0 1; #X connect 6 0 14 0; #X connect 6 0 11 0; #X connect 7 0 9 0; #X connect 8 0 0 0; #X connect 9 0 13 0; #X connect 10 0 0 2; #X connect 11 0 7 0; #X connect 12 0 11 1; #X connect 13 0 8 0; #X connect 14 0 15 0;