#N canvas 519 89 539 284 10; #X obj 33 21 inlet~; #X obj 31 231 outlet~; #X obj 82 209 outlet~; #X obj 95 22 inlet~; #X obj 369 59 param.group; #X obj 423 11 loadbang; #X obj 423 35 dollarg; #X obj 343 11 inlet params; #X obj 32 179 mix.wet.stereo~ 1; #X obj 143 153 param.atom wet 127 0 127; #N canvas 376 248 795 617 fft-analysis 0; #X obj 94 511 *~; #X obj 55 511 *~; #X obj 413 356 *~; #X obj 372 356 *~; #X obj 372 379 +~; #X obj 54 183 *~; #X obj 54 158 inlet~; #X obj 54 206 rfft~; #X obj 54 560 *~; #X obj 141 245 *~; #X obj 372 333 rfft~; #X obj 54 535 rifft~; #X obj 54 583 outlet~; #X obj 107 245 *~; #X obj 107 268 +~; #X text 458 408 modulus; #X obj 107 420 *~; #X obj 107 398 clip~; #X obj 87 184 tabreceive~ \$0-hann; #X obj 599 53 loadbang; #X obj 148 346 r squelch; #X obj 147 369 expr 0.01*$f1*$f1; #X obj 107 294 +~ 1e-20; #X obj 108 480 *~ 0.00065; #X obj 87 560 tabreceive~ \$0-hann; #X obj 373 307 *~; #X obj 373 282 inlet~; #X obj 406 308 tabreceive~ \$0-hann; #X obj 107 321 q8_rsqrt~; #X obj 372 402 q8_sqrt~; #X text 458 425 of control; #X text 456 442 amplitude; #X text 196 248 reciprocal; #X text 199 267 modulus of; #X text 195 287 filter input; #X text 196 306 amplitude; #X text 115 159 filter input; #X text 438 282 control source; #X text 434 332 Fourier transform; #X text 28 17 Internal workings of the timbre stamping algorithm. First the "filter input" is treated as in the compressor patch \, multiplying each channel amplitude by one over its modulus (but limited by the "squelch" parameter.) It is then multiplied by the modulus of the channel amplitude for the control source (which is Fourier analyzed in parallel with the filter input.); #X text 145 422 multiply the two amplitude; #X text 143 439 factors (for compression; #X text 145 455 and to apply new timbre); #X obj 104 584 outlet~; #X obj 598 7 inlet; #X obj 598 29 switch~ 1024 4; #X msg 599 76 \; window-size 1024 \; squelch 30 \;; #X connect 0 0 11 1; #X connect 1 0 11 0; #X connect 2 0 4 1; #X connect 3 0 4 0; #X connect 4 0 29 0; #X connect 5 0 7 0; #X connect 6 0 5 0; #X connect 7 0 13 0; #X connect 7 0 13 1; #X connect 7 0 1 0; #X connect 7 1 9 0; #X connect 7 1 9 1; #X connect 7 1 0 0; #X connect 8 0 12 0; #X connect 8 0 43 0; #X connect 9 0 14 1; #X connect 10 0 3 0; #X connect 10 0 3 1; #X connect 10 1 2 0; #X connect 10 1 2 1; #X connect 11 0 8 0; #X connect 13 0 14 0; #X connect 14 0 22 0; #X connect 16 0 23 0; #X connect 17 0 16 0; #X connect 18 0 5 1; #X connect 19 0 46 0; #X connect 20 0 21 0; #X connect 21 0 17 2; #X connect 22 0 28 0; #X connect 23 0 0 1; #X connect 23 0 1 1; #X connect 24 0 8 1; #X connect 25 0 10 0; #X connect 26 0 25 0; #X connect 27 0 25 1; #X connect 28 0 17 0; #X connect 29 0 16 1; #X connect 44 0 45 0; #X restore 52 109 pd fft-analysis; #N canvas 0 110 565 454 hann-window 0; #N canvas 0 0 450 300 (subpatch) 0; #X array \$0-hann 1024 float 0; #X coords 0 1 1023 0 300 100 1; #X restore 82 311 graph; #X obj 378 165 osc~; #X obj 378 190 *~ -0.5; #X obj 378 214 +~ 0.5; #X obj 331 247 tabwrite~ \$0-hann; #X obj 37 88 r window-size; #X obj 38 173 /; #X obj 127 142 samplerate~; #X obj 38 251 s window-sec; #X obj 177 204 swap; #X obj 177 228 /; #X obj 177 252 s window-hz; #X obj 49 201 * 1000; #X obj 49 228 s window-msec; #X obj 38 115 t f b f; #X msg 173 92 resize \$1; #X obj 173 116 s \$0-hann; #X obj 330 105 r window-hz; #X msg 382 130 0; #X obj 330 131 t f b; #X text 15 8 calculate Hann window table (variable window size) and constants window-hz (fundamental frequency of analysis) \, window-sec and window-msec (analysis window size in seconds and msec).; #X connect 1 0 2 0; #X connect 2 0 3 0; #X connect 3 0 4 0; #X connect 5 0 14 0; #X connect 6 0 8 0; #X connect 6 0 12 0; #X connect 7 0 6 1; #X connect 7 0 9 1; #X connect 9 0 10 0; #X connect 9 1 10 1; #X connect 10 0 11 0; #X connect 12 0 13 0; #X connect 14 0 6 0; #X connect 14 0 9 0; #X connect 14 1 7 0; #X connect 14 2 15 0; #X connect 15 0 16 0; #X connect 17 0 19 0; #X connect 18 0 1 1; #X connect 19 0 1 0; #X connect 19 1 4 0; #X connect 19 1 18 0; #X restore 171 106 pd hann-window; #X connect 0 0 8 0; #X connect 0 0 10 0; #X connect 3 0 8 1; #X connect 3 0 10 1; #X connect 5 0 6 0; #X connect 6 0 4 1; #X connect 6 1 4 2; #X connect 7 0 4 0; #X connect 8 0 1 0; #X connect 8 1 2 0; #X connect 8 2 10 2; #X connect 9 0 8 4; #X connect 10 0 8 2; #X connect 10 1 8 3;