#N canvas 635 358 545 442 10; #N canvas 529 231 558 569 fft 0; #X obj 19 62 inlet~; #X obj 85 214 inlet; #X obj 19 92 rfft~; #X obj 19 125 *~; #X obj 50 125 *~; #X obj 19 155 sqrt~; #X obj 332 109 block~ 4096 1; #X obj 19 181 biquad~ 0 0 0 0 1; #X text 83 93 Fourier series; #X text 88 146 magnitude; #X text 86 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 62 signal to analyze; #X text 182 166 delay two samples; #X text 181 182 for better graphing; #X text 135 216 "bang" into this inlet to graph it; #X obj 85 288 tabwrite~ \$0-spectrum; #X obj 19 213 /~ 4096; #X obj 19 235 rmstodb~; #X connect 0 0 2 0; #X connect 1 0 16 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 7 0; #X connect 7 0 17 0; #X connect 17 0 18 0; #X connect 18 0 16 0; #X restore 48 377 pd fft; #N canvas 0 0 450 300 (subpatch) 0; #X array \$0-spectrum 2048 float 0; #X coords 0 100 2047 0 259 140 1; #X restore 134 130 graph; #X obj 108 182 bng 15 250 50 0 \$0-plot empty plot 0 -6 0 8 -262144 -1 -1; #X obj 107 215 tgl 15 0 \$0-auto empty auto 0 -6 0 8 -262144 -1 -1 1 1; #X obj 85 329 r \$0-plot; #X obj 137 350 r \$0-auto; #X obj 133 372 metro 500; #X obj 48 294 inlet~; #X obj 233 314 inlet; #X obj 233 336 b; #X obj 233 361 s \$0-plot; #X obj 48 323 *~ 1; #X connect 4 0 0 1; #X connect 5 0 6 0; #X connect 6 0 0 1; #X connect 7 0 11 0; #X connect 8 0 9 0; #X connect 9 0 10 0; #X connect 11 0 0 0; #X coords 0 -1 1 1 300 200 1 100 100;