#N canvas 28 59 814 784 10;
#X text 60 564 frequency;
#X obj 92 336 phasor~;
#X obj 92 378 cos~;
#X obj 20 442 tabwrite~ array2;
#X obj 28 398 -~;
#X obj 26 358 sig~ 1;
#X msg 36 305 0;
#N canvas 278 14 864 830 fft-analysis 0;
#X obj 57 75 *~;
#X obj 98 191 *~;
#X graph graph1 0 -1 256 1 397 304 797 4;
#X array array1 256 float;
#X pop;
#X graph graph2 0 -1 256 1 397 631 797 331;
#X array array2 256 float;
#X pop;
#X obj 57 4 inlet~;
#X obj 57 192 *~;
#X obj 57 323 tabsend~ array1;
#X msg 442 673 \; array1 resize 256 \; array2 resize 256;
#X obj 76 48 tabreceive~ array2;
#X obj 57 136 rfft~;
#X obj 57 222 rifft~;
#X obj 80 283 outlet~;
#X obj 230 218 print~;
#X msg 229 188 bang;
#X obj 94 632 block~ 256 2;
#X obj 121 137 sig~ 0.001;
#X text 82 30 Hanning window;
#X text 59 111 forward real FFT;
#X text 74 243 inverse real FFT;
#X connect 0 0 9 0;
#X connect 1 0 10 1;
#X connect 4 0 0 0;
#X connect 5 0 10 0;
#X connect 8 0 0 1;
#X connect 9 0 5 0;
#X connect 9 0 12 0;
#X connect 9 1 1 0;
#X connect 10 0 11 0;
#X connect 10 0 6 0;
#X connect 13 0 12 0;
#X connect 15 0 5 1;
#X connect 15 0 1 1;
#X restore 150 676 pd fft-analysis;
#X obj 150 599 sig~;
#X obj 150 625 phasor~;
#X obj 150 651 cos~;
#X floatatom 150 573;
#X obj 151 771 dac~;
#X graph graph1 0 -1 256 1 409 600 809 300;
#X array array3 256 float;
#X pop;
#X obj 158 708 tabwrite~ array3;
#X msg 94 688 bang;
#X obj 150 518 * 44100;
#X obj 150 546 / 256;
#X floatatom 150 492;
#X obj 92 304 sig~ 172.266;
#X text 90 280 sample rate / 256;
#X text 17 178 CLICK HERE TO;
#X text 15 196 CALCULATE HANNING;
#X text 14 213 WINDOW TABLE;
#X msg 20 234 bang \; pd dsp 1;
#X text 58 484 frequency;
#X text 65 500 in bins;
#X text 67 580 in Hz.;
#X text 31 686 scope;
#X text 135 27 A patch to test the rfft~ and rifft~ modules. An incoming sine wave is Hanning windowed and transformed. The inverse transform is then output.;
#X text 134 74 The block size (256) and overlap (2) are set by the block~ object in the sub-patch. The output is automatically overlap-added by the outlet~ object.;
#X floatatom 691 80;
#N canvas 194 37 397 591 output 0;
#X obj 72 249 t b;
#X obj 72 173 f;
#X obj 73 89 inlet;
#X text 86 54 mute;
#X obj 72 280 f;
#X msg 149 292 0;
#X msg 72 125 bang;
#X obj 73 197 moses 1;
#X obj 149 263 t b f;
#X obj 109 543 outlet;
#X msg 108 503 set \$1;
#X obj 92 337 s master-amp;
#X obj 206 153 r master-amp;
#X obj 107 424 r master-amp;
#X obj 206 186 moses 1;
#X obj 249 494 dbtorms;
#X obj 251 520 pack 0 100;
#X obj 252 548 s master-out;
#X connect 0 0 4 0;
#X connect 1 0 7 0;
#X connect 2 0 6 0;
#X connect 4 0 11 0;
#X connect 5 0 11 0;
#X connect 6 0 1 0;
#X connect 7 0 0 0;
#X connect 7 1 8 0;
#X connect 8 0 5 0;
#X connect 10 0 9 0;
#X connect 12 0 1 1;
#X connect 12 0 14 0;
#X connect 13 0 10 0;
#X connect 13 0 15 0;
#X connect 14 1 4 1;
#X connect 15 0 16 0;
#X connect 16 0 17 0;
#X restore 691 52 pd output;
#X msg 691 24 mute;
#X text 734 84 AMPLITUDE;
#X obj 691 111 s master-amp;
#X obj 208 768 line~;
#X obj 151 741 *~;
#X text 135 128 You can close the sub-patch if table updates are interfering with your audio output.;
#X obj 208 741 r master-out;
#X connect 1 0 2 0;
#X connect 2 0 4 1;
#X connect 4 0 3 0;
#X connect 5 0 4 0;
#X connect 6 0 1 1;
#X connect 7 0 14 0;
#X connect 7 0 37 0;
#X connect 8 0 9 0;
#X connect 9 0 10 0;
#X connect 10 0 7 0;
#X connect 11 0 8 0;
#X connect 15 0 14 0;
#X connect 16 0 17 0;
#X connect 17 0 11 0;
#X connect 18 0 16 0;
#X connect 19 0 1 0;
#X connect 24 0 3 0;
#X connect 24 0 6 0;
#X connect 31 0 35 0;
#X connect 32 0 31 0;
#X connect 33 0 32 0;
#X connect 36 0 37 1;
#X connect 37 0 12 0;
#X connect 39 0 36 0;
