From f18d063d9312c95e25294e0777bc135ee9a3fd8a Mon Sep 17 00:00:00 2001 From: Thomas O Fredericks Date: Sun, 25 Oct 2009 00:39:13 +0000 Subject: Adding mtl svn path=/trunk/abstractions/mtl/; revision=12667 --- vocoder~.pd | 154 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 154 insertions(+) create mode 100644 vocoder~.pd (limited to 'vocoder~.pd') diff --git a/vocoder~.pd b/vocoder~.pd new file mode 100644 index 0000000..ef38861 --- /dev/null +++ b/vocoder~.pd @@ -0,0 +1,154 @@ +#N canvas 0 57 1440 788 10; +#X obj 33 21 inlet~; +#X obj 31 231 outlet~; +#X obj 82 209 outlet~; +#X obj 95 22 inlet~; +#N canvas 380 223 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 msg 599 76 \; window-size 1024 \; squelch 30 \;; +#X obj 597 28 switch~ 1024 4; +#X obj 461 53 loadbang; +#X msg 469 86 1; +#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 44 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 46 0 47 0; +#X connect 47 0 45 0; +#X restore 52 109 pd fft-analysis; +#N canvas 1 142 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 4 0; +#X connect 3 0 4 1; +#X connect 4 0 1 0; +#X connect 4 1 2 0; -- cgit v1.2.1