#N canvas 542 29 711 489 12;
#X floatatom 27 176 7 0 0 0 - - - 0;
#X obj 27 123 * 44100;
#X floatatom 27 93 4 0 0 0 - - - 0;
#X obj 27 241 osc~;
#X obj 21 33 fft~;
#X obj 71 34 ifft~;
#X text 131 32 - forward and inverse complex FFT;
#X obj 21 9 rfft~;
#X obj 71 10 rifft~;
#X text 131 8 - forward and inverse real FFT;
#X obj 27 266 rfft~;
#X text 495 457 updated for Pd version 0.33;
#X obj 24 314 rifft~;
#X obj 106 322 print~ real;
#X obj 119 297 print~ imaginary;
#X obj 24 408 print~ resynthesized;
#X text 300 324 There is no normalization \, so that an FFT followed by an IFFT has a gain of N., f 54;
#X text 300 235 The real FFT outputs N/2+1 real parts and N/2-1 imaginary parts. The other outputs are zero. At DC and at the Nyquist there is no imaginary part \, but the second through Nth output is as a real and imaginary pair \, which can be thought of as the cosine and sin component strengths., f 54;
#X text 118 208 <= bash phase;
#X obj 434 199 block~ 128;
#X obj 27 151 / 128;
#X obj 24 347 /~ 128;
#X text 300 102 The FFT objects do Fourier analyses and resyntheses of incoming real or complex signals. Complex signals are handled as pairs of signals (real and imaginary part.) The analysis size is one block. You can use the block~ or switch~ objects to control block size (128 in this example)., f 54;
#X text 300 360 See the FFT examples (section "I" of audio examples) to see how to use these in practice., f 54;
#X text 359 198 see also:;
#X text 69 85 frequency in bins, f 9;
#X text 84 165 frequency in Hz, f 9;
#X msg 170 143 \; pd dsp \$1;
#X obj 170 117 tgl 19 0 empty empty empty 17 7 0 10 #dfdfdf #000000 #000000 0 1;
#X text 193 117 DSP on/off;
#X msg 85 207 0.25;
#X msg 52 207 0;
#X obj 5 64 cnv 1 700 1 empty empty empty 8 12 0 13 #000000 #000000 0;
#N canvas 421 78 926 454 reference 0;
#X obj 9 39 cnv 5 430 5 empty empty INLET: 8 18 0 13 #202020 #000000 0;
#X obj 9 72 cnv 2 430 2 empty empty OUTLETS: 8 12 0 13 #202020 #000000 0;
#X obj 9 154 cnv 2 430 2 empty empty ARGUMENTS: 8 12 0 13 #202020 #000000 0;
#X obj 23 11 rfft~;
#X text 72 10 - forward real FFT;
#X text 179 163 NONE;
#X obj 9 95 cnv 1 430 1 empty empty 1st: 8 12 0 13 #9f9f9f #000000 0;
#X obj 9 124 cnv 1 430 1 empty empty 2nd: 8 12 0 13 #9f9f9f #000000 0;
#X obj 9 352 cnv 2 430 2 empty empty OUTLET: 8 12 0 13 #202020 #000000 0;
#X text 179 404 NONE;
#X obj 22 235 rifft~;
#X text 78 234 - inverse real FFT;
#X text 76 49 signal - time domain real signal to transform.;
#X text 76 368 signal - time domain real signal to transform.;
#X obj 483 79 fft~;
#X obj 533 80 ifft~;
#X text 583 78 - forward and inverse complex FFT;
#X text 638 300 NONE;
#X text 528 144 signal - real part of signal to transform.;
#X text 528 174 signal - imaginary part of signal to transform.;
#X text 528 235 signal - real part of transformed signal.;
#X text 528 263 signal - imaginary part of transformed signal.;
#X text 58 298 signal - real part of frequency domain signal.;
#X text 58 326 signal - imaginary part of frequency domain signal.;
#X obj 8 182 cnv 5 430 5 empty empty empty 8 18 0 13 #202020 #000000 0;
#X obj 9 262 cnv 5 430 5 empty empty INLET: 8 18 0 13 #202020 #000000 0;
#X obj 8 427 cnv 5 430 5 empty empty empty 8 18 0 13 #202020 #000000 0;
#X obj 468 108 cnv 5 430 5 empty empty INLETS: 8 18 0 13 #202020 #000000 0;
#X obj 467 323 cnv 5 430 5 empty empty empty 8 18 0 13 #202020 #000000 0;
#X obj 469 203 cnv 2 430 2 empty empty OUTLETS: 8 12 0 13 #202020 #000000 0;
#X obj 9 396 cnv 2 430 2 empty empty ARGUMENTS: 8 12 0 13 #202020 #000000 0;
#X obj 468 292 cnv 2 430 2 empty empty ARGUMENTS: 8 12 0 13 #202020 #000000 0;
#X text 61 101 signal - real part of frequency domain signal.;
#X text 61 129 signal - imaginary part of frequency domain signal.;
#X obj 9 291 cnv 1 430 1 empty empty 1st: 8 12 0 13 #9f9f9f #000000 0;
#X obj 9 320 cnv 1 430 1 empty empty 2nd: 8 12 0 13 #9f9f9f #000000 0;
#X obj 469 138 cnv 1 430 1 empty empty 1st: 8 12 0 13 #9f9f9f #000000 0;
#X obj 469 167 cnv 1 430 1 empty empty 2nd: 8 12 0 13 #9f9f9f #000000 0;
#X obj 468 228 cnv 1 430 1 empty empty 1st: 8 12 0 13 #9f9f9f #000000 0;
#X obj 468 257 cnv 1 430 1 empty empty 2nd: 8 12 0 13 #9f9f9f #000000 0;
#X restore 506 26 pd reference;
#X text 604 27 <= click;
#X obj 5 444 cnv 1 700 1 empty empty empty 8 12 0 13 #000000 #000000 0;
#X obj 106 260 bng 19 250 50 0 empty empty empty 17 7 0 10 #dfdfdf #000000 #000000;
#X text 130 261 <-- print analysis;
#X text 74 347 <-- renormalize;
#X obj 43 376 bng 19 250 50 0 empty empty empty 17 7 0 10 #dfdfdf #000000 #000000;
#X text 71 376 <-- print resynthesis;
#X connect 0 0 3 0;
#X connect 1 0 20 0;
#X connect 2 0 1 0;
#X connect 3 0 10 0;
#X connect 10 0 13 0;
#X connect 10 0 12 0;
#X connect 10 1 14 0;
#X connect 10 1 12 1;
#X connect 12 0 21 0;
#X connect 20 0 0 0;
#X connect 21 0 15 0;
#X connect 28 0 27 0;
#X connect 30 0 3 1;
#X connect 31 0 3 1;
#X connect 36 0 13 0;
#X connect 36 0 14 0;
#X connect 39 0 15 0;
