#N canvas 146 146 414 478 10; #N canvas 0 0 450 300 graph1 0; #X array signal 882 float 0; #X coords 0 1.02 882 -1.02 100 100 1; #X restore 178 153 graph; #N canvas 0 0 450 300 graph1 0; #X array spectrum 259 float 0; #X coords 0 1.01 258 -0.008 100 100 1; #X restore 291 152 graph; #N canvas 768 145 558 609 fft 0; #X obj 19 61 inlet~; #X obj 224 210 inlet; #X obj 29 92 rfft~; #X obj 29 125 *~; #X obj 60 125 *~; #X obj 29 155 sqrt~; #X obj 332 109 block~ 4096 1; #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 264 434 samplerate~; #X obj 251 255 metro 500; #X obj 251 232 inlet; #X text 301 232 toggle to graph repeatedly; #X text 278 210 bang to graph once; #X obj 29 205 /~ 4096; #X obj 264 409 bang~; #X obj 264 457 / 512; #X obj 264 483 s freq/2; #X msg 224 321 \; pd dsp 1; #X obj 424 173 tgl 18 1 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1; #X obj 250 291 tabwrite~ spectrum; #X obj 19 295 tabwrite~ signal; #X obj 19 256 *~; #X obj 69 382 hsl 128 15 0 1 0 0 empty empty empty -2 -6 0 8 -262144 -1 -1 6200 1; #X obj 80 426 *~; #X obj 130 552 hsl 128 15 0 12 0 0 empty empty empty -2 -6 0 8 -262144 -1 -1 8000 1; #X connect 0 0 2 0; #X connect 0 0 28 0; #X connect 1 0 24 0; #X connect 1 0 26 0; #X connect 1 0 27 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 20 0; #X connect 15 0 22 0; #X connect 16 0 26 0; #X connect 16 0 27 0; #X connect 17 0 16 0; #X connect 17 0 24 0; #X connect 20 0 30 0; #X connect 21 0 15 0; #X connect 22 0 23 0; #X connect 25 0 16 0; #X connect 28 0 27 0; #X connect 29 0 28 1; #X connect 30 0 26 0; #X connect 31 0 30 1; #X restore 77 229 pd fft; #X obj 5 -127 phasor~; #X obj 5 -64 -~ 0.25; #X obj 4 -40 cos~; #X obj 5 49 -~; #X obj 65 -65 -~ 0.25; #X obj 65 -40 cos~; #X obj 65 -87 -~; #X floatatom 247 17 5 0 300 2 distance - -; #X obj 247 37 / 100; #X obj 6 133 /~; #X obj 79 29 sig~ 1; #X obj 79 56 +~; #X obj 65 4 *~; #X floatatom 323 17 5 0 100 2 index - -; #X obj 323 36 / 100; #X obj 127 27 *~; #X obj 127 -30 sig~; #X obj 79 92 -~; #X obj 175 1 *~ 2; #X obj 191 -39 cos~; #X obj 175 50 *~; #X obj 130 -117 phasor~; #X obj 5 -175 sig~; #X obj 129 -138 *~; #X obj 145 -176 sig~; #X obj 6 209 *~ 0.25; #X obj 7 188 hip~ 1; #X obj 7 238 dac~; #X obj 77 208 r~ graphme; #X obj 17 158 s~ graphme; #X obj 247 58 s dist; #X obj 145 -197 r dist; #X obj 323 58 s index; #X obj 127 -51 r index; #X floatatom 5 -193 5 0 0 2 freq - -; #X connect 3 0 4 0; #X connect 3 0 9 0; #X connect 4 0 5 0; #X connect 5 0 6 0; #X connect 6 0 12 0; #X connect 7 0 8 0; #X connect 8 0 15 0; #X connect 9 0 7 0; #X connect 10 0 11 0; #X connect 11 0 33 0; #X connect 12 0 29 0; #X connect 12 0 32 0; #X connect 13 0 14 0; #X connect 14 0 20 0; #X connect 15 0 6 1; #X connect 16 0 17 0; #X connect 17 0 35 0; #X connect 18 0 14 1; #X connect 19 0 18 0; #X connect 19 0 18 1; #X connect 19 0 21 0; #X connect 19 0 15 1; #X connect 20 0 12 1; #X connect 21 0 23 0; #X connect 22 0 23 1; #X connect 23 0 20 1; #X connect 24 0 9 1; #X connect 24 0 22 0; #X connect 25 0 3 0; #X connect 25 0 26 0; #X connect 26 0 24 0; #X connect 27 0 26 1; #X connect 28 0 30 0; #X connect 28 0 30 1; #X connect 29 0 28 0; #X connect 31 0 2 0; #X connect 34 0 27 0; #X connect 36 0 19 0; #X connect 37 0 25 0;