#N canvas 24 0 884 580 12; #X obj 279 320 sig~; #X obj 187 375 *~; #X floatatom 279 274 0 0 0; #X floatatom 183 273 0 0 0; #X obj 183 319 sig~; #X text 10 246 frequency; #N canvas 45 63 925 609 fft-analysis 0; #X obj 241 228 + 1; #X msg 313 322 0; #X obj 127 190 *~; #X obj 38 69 *~; #X obj 37 38 *~; #X obj 72 436 *~; #X graph graph1 0 0 1024 1 476 244 876 44; #X array fftout 1024 float 0; #X pop; #X obj 37 4 inlet~; #X obj 37 436 *~; #X obj 94 271 tabsend~ fftout; #X obj 76 38 tabreceive~ hanning; #X obj 38 116 rfft~; #X obj 37 461 rifft~; #X obj 37 517 outlet~; #X text 88 21 Hanning window; #X text 31 94 forward real FFT; #X text 52 479 inverse real FFT; #X obj 36 555 block~ 1024 2; #X obj 72 69 sig~ 0.03125; #X graph graph1 0 0 1024 1 476 554 876 354; #X array mask 1024 float 0; #X pop; #X obj 94 190 *~; #X obj 94 214 +~; #X floatatom 241 253 0 0 0; #X msg 247 105 0; #X obj 175 184 float; #X obj 226 184 + 1; #X obj 175 123 bang~; #X obj 175 148 spigot; #X floatatom 303 86 0 0 0; #X obj 101 314 tabreceive~ mask; #X obj 241 277 t b b f; #X obj 266 322 /; #X msg 266 298 1; #X obj 78 344 -~; #X obj 266 358 sig~; #X obj 313 298 sel 0; #X obj 247 388 *~; #X obj 212 419 +~; #X obj 227 446 tabsend~ mask; #X floatatom 313 358 0 0 0; #X obj 175 209 t f f; #X text 100 231 power is square; #X text 100 245 modulus of FFT; #X obj 303 36 loadbang; #X obj 298 181 <; #X msg 253 36 bang; #X text 237 11 click to make an average; #X obj 91 408 sig~ 0.03125; #X text 574 249 power spectrum of this window; #X text 338 70 Set the number; #X text 340 85 of frames to; #X text 342 101 average; #X text 593 573 average power spectrum; #X text 272 253 current frame; #X text 284 378 weight of new; #X text 275 391 frame in moving; #X text 304 404 average; #X msg 303 61 100; #X connect 0 0 22 0; #X connect 1 0 34 0; #X connect 1 0 39 0; #X connect 2 0 21 1; #X connect 3 0 11 0; #X connect 4 0 3 0; #X connect 5 0 12 1; #X connect 7 0 4 0; #X connect 8 0 12 0; #X connect 10 0 4 1; #X connect 11 0 8 0; #X connect 11 0 20 0; #X connect 11 0 20 1; #X connect 11 1 5 0; #X connect 11 1 2 0; #X connect 11 1 2 1; #X connect 12 0 13 0; #X connect 18 0 3 1; #X connect 20 0 21 0; #X connect 21 0 9 0; #X connect 21 0 33 0; #X connect 22 0 30 0; #X connect 23 0 24 1; #X connect 23 0 44 0; #X connect 24 0 40 0; #X connect 24 0 25 0; #X connect 25 0 24 1; #X connect 26 0 27 0; #X connect 27 0 24 0; #X connect 28 0 44 1; #X connect 29 0 33 1; #X connect 29 0 37 1; #X connect 30 1 32 0; #X connect 30 2 31 1; #X connect 31 0 34 0; #X connect 31 0 39 0; #X connect 32 0 31 0; #X connect 33 0 36 0; #X connect 34 0 36 1; #X connect 35 0 1 0; #X connect 36 0 37 0; #X connect 37 0 38 0; #X connect 40 0 44 0; #X connect 40 1 0 0; #X connect 43 0 57 0; #X connect 44 0 27 1; #X connect 44 0 35 0; #X connect 45 0 23 0; #X connect 47 0 8 1; #X connect 47 0 5 1; #X connect 57 0 28 0; #X restore 99 412 pd fft-analysis; #X obj 99 275 sig~; #X obj 99 297 phasor~; #X obj 99 319 cos~; #X floatatom 99 253 0 0 0; #X graph graph1 0 -1 1024 1 431 525 687 325; #X array scope 1024 float 0; #X pop; #X obj 105 439 tabwrite~ scope; #X msg 49 418 bang; #X obj 99 230 / 256; #X floatatom 98 165 0 0 0; #X text 10 155 frequency; #X text 21 175 in bins; #X text 16 259 in Hz.; #X text 42 398 scope; #N canvas 84 23 767 580 hanning-window 0; #X obj 92 198 phasor~; #X obj 92 234 cos~; #X obj 23 328 tabwrite~ hanning; #X obj 30 252 -~; #X obj 28 218 sig~ 1; #X msg 37 171 0; #X text 48 59 CALCULATE HANNING; #X text 45 71 WINDOW TABLE; #X graph graph1 0 -1 1024 1 290 509 690 209; #X array hanning 1024 float 0; #X pop; #X msg 290 521 \; hanning resize 1024; #X obj 114 145 / 1024; #X obj 114 168 sig~; #X text 175 148 sample rate / window size; #X msg 23 94 bang; #X obj 66 269 sig~ 0.5; #X obj 49 300 *~; #X obj 22 38 loadbang; #X obj 113 117 samplerate~; #X connect 0 0 1 0; #X connect 1 0 3 1; #X connect 3 0 15 0; #X connect 4 0 3 0; #X connect 5 0 0 1; #X connect 10 0 11 0; #X connect 11 0 0 0; #X connect 13 0 2 0; #X connect 13 0 5 0; #X connect 13 0 17 0; #X connect 14 0 15 1; #X connect 15 0 2 0; #X connect 16 0 13 0; #X connect 17 0 10 0; #X restore 328 203 pd hanning-window; #X obj 99 346 *~; #X text 177 250 oscillator; #X obj 166 349 noise~; #X text 278 249 noise; #X obj 99 374 +~; #X text 214 232 amplitudes; #X msg 26 84 \; pd dsp 1; #X obj 98 207 *; #X obj 135 181 loadbang; #X obj 135 205 samplerate~; #X text 22 51 CLICK HERE; #X floatatom 673 67 0 0 0; #N canvas 194 37 397 591 output 0; #X obj 61 212 t b; #X obj 61 147 f; #X obj 62 76 inlet; #X text 73 46 mute; #X obj 61 238 f; #X msg 127 248 0; #X msg 61 106 bang; #X obj 62 167 moses 1; #X obj 127 224 t b f; #X obj 93 462 outlet; #X msg 92 428 set \$1; #X obj 78 286 s master-amp; #X obj 175 130 r master-amp; #X obj 91 360 r master-amp; #X obj 175 158 moses 1; #X obj 212 420 dbtorms; #X obj 213 442 pack 0 100; #X obj 214 466 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 673 43 pd output; #X msg 673 19 mute; #X text 710 70 AMPLITUDE; #X obj 673 93 s master-amp; #X text 241 9 NOISE FLOOR MEASUREMENT; #X text 149 31 This patch shows how you can average the RMS spectra of many windows of an incoming "noise floor" signal to estimate its spectrum. We'll use this in the "denoiser" patch \, next.; #X text 30 65 TO START; #X obj 99 515 dac~; #X obj 132 467 r master-out; #X text 148 100 The controls below let you send a mixture of a sine wave and white noise. The analysis is done in a subwindow.; #X obj 132 490 line~; #X obj 99 490 *~; #X obj 183 295 dbtorms; #X obj 279 297 dbtorms; #X connect 0 0 1 1; #X connect 1 0 25 1; #X connect 2 0 46 0; #X connect 3 0 45 0; #X connect 4 0 21 1; #X connect 6 0 12 0; #X connect 6 0 44 0; #X connect 7 0 8 0; #X connect 8 0 9 0; #X connect 9 0 21 0; #X connect 10 0 7 0; #X connect 13 0 12 0; #X connect 14 0 10 0; #X connect 15 0 28 0; #X connect 21 0 25 0; #X connect 23 0 1 0; #X connect 25 0 6 0; #X connect 28 0 14 0; #X connect 29 0 30 0; #X connect 30 0 28 1; #X connect 32 0 36 0; #X connect 33 0 32 0; #X connect 34 0 33 0; #X connect 41 0 43 0; #X connect 43 0 44 1; #X connect 44 0 40 0; #X connect 44 0 40 1; #X connect 45 0 4 0; #X connect 46 0 0 0;