#N canvas 223 113 913 495 12;
#X floatatom 457 258 0 0 0;
#X floatatom 793 114 0 0 0;
#X floatatom 654 114 0 0 0;
#N canvas 249 280 600 398 loc&precess 0;
#X floatatom 218 312 0 0 0;
#X msg 369 239 set \$1;
#X obj 367 282 outlet;
#X obj 114 364 outlet;
#X obj 233 96 r location;
#X msg 113 321 set \$1;
#X obj 368 203 r speed;
#X obj 75 95 r see-location;
#X obj 92 139 t b f;
#X obj 113 292 f;
#X obj 73 173 int;
#X obj 73 206 sel 0;
#X msg 209 139 1;
#X msg 275 138 0;
#X obj 150 245 del 300;
#X connect 1 0 2 0;
#X connect 4 0 8 0;
#X connect 5 0 3 0;
#X connect 6 0 1 0;
#X connect 7 0 8 0;
#X connect 8 0 10 0;
#X connect 8 1 9 1;
#X connect 9 0 5 0;
#X connect 10 0 11 0;
#X connect 11 0 12 0;
#X connect 11 0 14 0;
#X connect 12 0 10 1;
#X connect 13 0 10 1;
#X connect 14 0 13 0;
#X connect 14 0 9 0;
#X restore 654 91 pd loc&precess;
#N canvas 0 0 600 400 setlocprecess 0;
#X obj 235 113 inlet;
#X obj 100 109 inlet;
#X obj 231 144 s speed;
#X obj 101 144 s location;
#X connect 0 0 2 0;
#X connect 1 0 3 0;
#X restore 654 138 pd setlocprecess;
#X obj 457 279 s transpo;
#X obj 457 216 r transpo;
#X msg 457 237 set \$1;
#X msg 673 387 \; location 0 \; speed 200;
#X text 200 8 PHASE VOCODER;
#X text 609 18 set location;
#X text 609 36 and stop;
#X text 609 54 precession;
#X text 785 53 precession;
#X text 785 71 speed in;
#X text 785 89 hundredths;
#X text 457 179 transposition;
#X text 457 197 in cents;
#X text 666 360 contraction;
#X text 784 360 expansion;
#X msg 776 387 \; location 0 \; speed 10;
#X text 30 349 100 maximum;
#X text 30 331 output meter;
#X floatatom 610 218 0 5 60;
#X text 645 218 <--set me to change length;
#N canvas 0 0 265 196 length 0;
#X obj 46 23 inlet;
#X obj 48 101 * 44100;
#X msg 84 125 \; array2 resize \$1;
#X obj 46 48 min 60;
#X obj 60 75 s output-length;
#X obj 46 159 s maxoutsize;
#X connect 0 0 3 0;
#X connect 1 0 2 0;
#X connect 1 0 5 0;
#X connect 3 0 1 0;
#X connect 3 0 4 0;
#X restore 610 239 pd length;
#N canvas 219 38 198 151 /SUBPATCH/ 0;
#X obj 77 118 outlet;
#X obj 77 72 loadbang;
#X msg 77 95 10;
#X connect 1 0 2 0;
#X connect 2 0 0 0;
#X restore 610 197 pd;
#X text 610 259 length in seconds of the output;
#X text 610 277 buffer... maximum 60;
#N canvas 42 0 1083 546 guts 0;
#X msg 24 129 bang;
#X obj 24 405 openpanel;
#X obj 139 30 inlet;
#X obj 450 385 dac~;
#X obj 450 329 *~;
#X obj 465 306 line~;
#X obj 465 283 r master-amp;
#X msg 728 129 bang;
#X obj 728 150 savepanel;
#X obj 219 164 spigot;
#X msg 206 102 0;
#X msg 238 102 1;
#X obj 503 444 outlet;
#X obj 292 251 tabwrite~ array2;
#X obj 449 246 +~;
#X obj 450 356 hip~ 7;
#X msg 446 97 bang;
#X obj 446 118 tabplay~ array2;
#X msg 728 175 write \$1 array2;
#X obj 728 200 soundfiler;
#X obj 505 386 env~ 16384;
#X obj 591 101 route normalized;
#X msg 591 284 write -normalize \$1 array2;
#X msg 591 242 bang;
#X obj 591 263 savepanel;
#X obj 591 308 soundfiler;
#X obj 24 450 soundfiler;
#X msg 24 428 read -resize -maxsize 1e+06 \$1 array1;
#X floatatom 24 473 0 0 0;
#X obj 680 345 loadbang;
#X msg 680 368 \; window-size 2048 \; transpo 0;
#N canvas 9 7 835 599 fft-analysis 0;
#X obj 267 304 *~;
#X obj 235 304 *~;
#X obj 235 326 -~;
#X obj 333 305 *~;
#X obj 302 305 *~;
#X obj 302 328 +~;
#X obj 348 131 *~;
#X obj 317 131 *~;
#X obj 288 131 *~;
#X obj 256 131 *~;
#X obj 256 153 +~;
#X obj 225 183 *~;
#X obj 88 570 *~;
#X obj 375 256 rfft~;
#X obj 396 55 rfft~;
#X obj 488 652 *~;
#X obj 702 295 r window-size;
#X obj 770 211 r sample-rate;
#X obj 624 239 f;
#X obj 617 53 r sample-rate;
#X obj 592 30 r window-size;
#X obj 615 100 t b f;
#X obj 592 124 /;
#X obj 519 652 *~;
#X obj 89 549 *~;
#X obj 106 525 rifft~;
#X obj 89 596 outlet~;
#X obj 639 457 print~;
#X msg 639 428 bang;
#X text 155 526 inverse real FFT;
#X obj 603 215 bang~;
#X obj 528 434 line~;
#X obj 592 146 * 1000;
#X text 645 139 window size (msec);
#X obj 617 78 * 4;
#X obj 647 162 r speed;
#X obj 726 164 r location;
#X obj 655 240 +;
#X obj 648 204 *;
#X msg 726 193 0;
#X obj 624 349 +;
#X obj 615 305 t f f;
#X msg 528 406 \$1 \, \$2 \$3;
#X obj 528 378 pack 0 0 0;
#X obj 770 234 / 1000;
#X obj 624 276 *;
#X text 654 276 reading location (samples);
#X obj 652 390 / 4;
#X text 684 395 hop size (samples);
#X obj 578 476 sig~;
#X obj 546 474 +~;
#X text 653 85 (overlap times parent SR);
#X text 653 71 local sample rate;
#X obj 23 52 tabreceive~ phase-real;
#X obj 194 183 *~;
#X obj 194 205 +~;
#X obj 194 231 rsqrt~;
#X obj 317 153 -~;
#X obj 237 261 *~;
#X obj 298 261 *~;
#X obj 203 52 tabreceive~ phase-imag;
#X obj 108 390 sig~;
#X obj 90 319 t b f;
#X msg 90 340 1;
#X obj 104 364 /;
#X obj 232 447 tabsend~ phase-real;
#X obj 262 418 tabsend~ phase-imag;
#X obj 107 136 sig~ 1.5e-20;
#X obj 647 184 * 0.01;
#X obj 708 217 s speed;
#X obj 479 256 s see-location;
#X floatatom 688 368 0 0 0;
#X obj 686 347 *;
#X obj 848 245 r transpo;
#X obj 848 264 * 0.01;
#X obj 849 285 + 69;
#X obj 851 307 mtof;
#X obj 851 327 / 440;
#X obj 705 324 t b f;
#X obj 90 297 r window-size;
#X floatatom 855 361 0 0 0;
#X obj 564 556 tabreceive~ hanning;
#X obj 549 500 tabread4~ array1;
#X obj 514 524 tabread4~ array1;
#X obj 612 608 r running;
#X obj 612 632 switch~ 2048 4;
#X connect 0 0 2 1;
#X connect 1 0 2 0;
#X connect 2 0 65 0;
#X connect 2 0 25 0;
#X connect 3 0 5 1;
#X connect 4 0 5 0;
#X connect 5 0 66 0;
#X connect 5 0 25 1;
#X connect 6 0 57 1;
#X connect 7 0 57 0;
#X connect 8 0 10 1;
#X connect 9 0 10 0;
#X connect 10 0 58 1;
#X connect 10 0 54 0;
#X connect 10 0 54 1;
#X connect 11 0 55 1;
#X connect 12 0 26 0;
#X connect 13 0 1 1;
#X connect 13 0 3 1;
#X connect 13 1 0 1;
#X connect 13 1 4 1;
#X connect 14 0 9 1;
#X connect 14 0 7 1;
#X connect 14 1 6 1;
#X connect 14 1 8 1;
#X connect 15 0 14 0;
#X connect 16 0 72 0;
#X connect 17 0 44 0;
#X connect 18 0 37 0;
#X connect 18 0 45 0;
#X connect 18 0 70 0;
#X connect 19 0 34 0;
#X connect 20 0 22 0;
#X connect 21 0 22 0;
#X connect 21 1 22 1;
#X connect 22 0 32 0;
#X connect 23 0 13 0;
#X connect 24 0 12 0;
#X connect 25 0 24 1;
#X connect 28 0 27 0;
#X connect 30 0 18 0;
#X connect 31 0 27 0;
#X connect 31 0 50 0;
#X connect 31 0 83 0;
#X connect 32 0 43 2;
#X connect 32 0 38 1;
#X connect 34 0 21 0;
#X connect 35 0 68 0;
#X connect 36 0 39 0;
#X connect 36 0 18 1;
#X connect 37 0 18 1;
#X connect 38 0 37 1;
#X connect 39 0 69 0;
#X connect 40 0 43 1;
#X connect 41 0 43 0;
#X connect 41 1 40 0;
#X connect 42 0 31 0;
#X connect 43 0 42 0;
#X connect 44 0 45 1;
#X connect 45 0 41 0;
#X connect 47 0 49 0;
#X connect 49 0 50 1;
#X connect 50 0 82 0;
#X connect 53 0 9 0;
#X connect 53 0 6 0;
#X connect 54 0 55 0;
#X connect 55 0 56 0;
#X connect 56 0 58 0;
#X connect 56 0 59 0;
#X connect 57 0 59 1;
#X connect 57 0 11 0;
#X connect 57 0 11 1;
#X connect 58 0 1 0;
#X connect 58 0 4 0;
#X connect 59 0 0 0;
#X connect 59 0 3 0;
#X connect 60 0 7 0;
#X connect 60 0 8 0;
#X connect 61 0 24 0;
#X connect 62 0 63 0;
#X connect 62 1 64 1;
#X connect 63 0 64 0;
#X connect 64 0 61 0;
#X connect 67 0 10 0;
#X connect 68 0 38 0;
#X connect 71 0 47 0;
#X connect 71 0 40 1;
#X connect 72 0 71 0;
#X connect 73 0 74 0;
#X connect 74 0 75 0;
#X connect 75 0 76 0;
#X connect 76 0 77 0;
#X connect 77 0 78 0;
#X connect 77 0 80 0;
#X connect 78 0 72 0;
#X connect 78 1 72 1;
#X connect 79 0 62 0;
#X connect 81 0 23 1;
#X connect 81 0 15 1;
#X connect 81 0 12 1;
#X connect 82 0 23 0;
#X connect 83 0 15 0;
#X connect 84 0 85 0;
#X restore 291 222 pd fft-analysis;
#X msg 203 187 bang;
#X obj 38 225 samplerate~;
#X obj 38 247 s sample-rate;
#N canvas 260 23 647 768 phase-tables 0;
#N canvas 0 0 450 300 graph2 0;
#X array phase-imag 4096 float 0;
#X coords 0 1 4096 -1 400 300 1;
#X restore 234 396 graph;
#N canvas 0 0 450 300 graph3 0;
#X array phase-real 4096 float 0;
#X coords 0 1 4096 -1 400 300 1;
#X restore 232 23 graph;
#X msg 229 769 \; phase-real resize 4096 \; phase-imag resize 4096
;
#X restore 681 423 pd phase-tables;
#N canvas 138 111 767 761 hanning-window 0;
#X obj 125 281 phasor~;
#X obj 125 319 cos~;
#X obj 31 448 tabwrite~ hanning;
#X obj 41 345 -~;
#X obj 38 298 sig~ 1;
#X msg 51 246 0;
#X text 193 19 CALCULATE HANNING;
#X text 193 37 WINDOW TABLE;
#N canvas 0 0 450 300 graph1 0;
#X array hanning 4096 float 0;
#X coords 0 1 4096 -1 400 300 1;
#X restore 375 384 graph;
#X obj 126 233 sig~;
#X text 239 202 sample rate / window size;
#X msg 31 196 bang;
#X obj 90 367 sig~ 0.5;
#X obj 67 409 *~;
#X obj 128 109 samplerate~;
#X obj 34 31 r window-size;
#X obj 34 72 t b f;
#X msg 375 746 \; hanning resize 4096;
#X obj 126 180 /;
#X connect 0 0 1 0;
#X connect 1 0 3 1;
#X connect 3 0 13 0;
#X connect 4 0 3 0;
#X connect 5 0 0 1;
#X connect 9 0 0 0;
#X connect 11 0 2 0;
#X connect 11 0 5 0;
#X connect 12 0 13 1;
#X connect 13 0 2 0;
#X connect 14 0 18 0;
#X connect 15 0 16 0;
#X connect 16 0 14 0;
#X connect 16 0 11 0;
#X connect 16 1 18 1;
#X connect 18 0 9 0;
#X restore 681 447 pd hanning-window;
#X obj 100 335 delay;
#X obj 160 332 + 100;
#X obj 139 51 route read run start hear save stop;
#X obj 895 245 timer;
#X obj 895 269 * 44.1;
#X obj 232 314 r maxoutsize;
#X obj 217 338 f;
#X msg 217 360 \; array2 resize \$1;
#X msg 100 358 \; action stop;
#X obj 186 30 r action;
#X obj 910 172 r running;
#X obj 894 195 f;
#X obj 894 219 sel 1;
#X obj 895 344 moses;
#X obj 946 345 r maxoutsize;
#X msg 895 366 \; array2 resize \$1;
#X msg 918 293 \; running 0;
#X msg 293 277 \; running 1;
#X obj 160 310 / 44.1;
#X msg 751 10 bang;
#X obj 277 92 r location;
#X obj 277 115 r speed;
#X obj 278 137 r transpo;
#X msg 43 283 \; pd dsp 1;
#X obj 503 414 int;
#X connect 0 0 1 0;
#X connect 1 0 27 0;
#X connect 2 0 39 0;
#X connect 4 0 15 0;
#X connect 5 0 4 1;
#X connect 6 0 5 0;
#X connect 7 0 8 0;
#X connect 8 0 18 0;
#X connect 9 0 10 0;
#X connect 9 0 32 0;
#X connect 10 0 9 1;
#X connect 11 0 9 1;
#X connect 14 0 4 0;
#X connect 15 0 3 0;
#X connect 15 0 3 1;
#X connect 15 0 20 0;
#X connect 16 0 17 0;
#X connect 17 0 14 1;
#X connect 18 0 19 0;
#X connect 20 0 61 0;
#X connect 21 0 23 0;
#X connect 21 1 7 0;
#X connect 22 0 25 0;
#X connect 23 0 24 0;
#X connect 24 0 22 0;
#X connect 26 0 28 0;
#X connect 27 0 26 0;
#X connect 29 0 30 0;
#X connect 31 0 13 0;
#X connect 31 0 14 0;
#X connect 32 0 33 0;
#X connect 32 0 37 0;
#X connect 32 0 40 0;
#X connect 32 0 43 0;
#X connect 32 0 13 0;
#X connect 32 0 54 0;
#X connect 32 0 60 0;
#X connect 33 0 34 0;
#X connect 37 0 45 0;
#X connect 38 0 37 1;
#X connect 39 0 0 0;
#X connect 39 1 10 0;
#X connect 39 1 32 0;
#X connect 39 2 11 0;
#X connect 39 3 16 0;
#X connect 39 4 21 0;
#X connect 39 5 56 0;
#X connect 40 0 41 0;
#X connect 41 0 53 0;
#X connect 41 0 50 0;
#X connect 42 0 43 1;
#X connect 42 0 55 0;
#X connect 43 0 44 0;
#X connect 46 0 39 0;
#X connect 47 0 48 1;
#X connect 48 0 49 0;
#X connect 49 0 40 1;
#X connect 50 0 52 0;
#X connect 51 0 50 1;
#X connect 55 0 38 0;
#X connect 56 0 48 0;
#X connect 57 0 9 0;
#X connect 58 0 9 0;
#X connect 59 0 9 0;
#X connect 61 0 12 0;
#X restore 30 290 pd guts;
#X msg 30 164 run the transformation;
#X msg 30 227 hear the output buffer again;
#X text 30 124 click below to:;
#X msg 30 248 save the output buffer;
#X floatatom 30 311 0 0 0;
#X msg 30 143 read an input file;
#X msg 30 269 save normalized to max amplitude;
#N canvas 213 187 495 352 input-sample 0;
#N canvas 0 0 450 300 graph1 0;
#X array array1 63024 float 0;
#X coords 0 1 63023 -1 400 300 1;
#X restore 55 22 graph;
#X text 146 379 INPUT SAMPLE;
#X restore 41 401 pd input-sample;
#N canvas 192 180 507 343 output-sample 0;
#N canvas 0 0 450 300 graph2 0;
#X array array2 2.646e+06 float 0;
#X coords 0 1 2.646e+06 -1 400 300 1;
#X restore 58 13 graph;
#X text 155 375 OUTPUT SAMPLE;
#X restore 41 426 pd output-sample;
#X floatatom 385 382 0 0 120;
#N canvas 194 37 397 591 output 0;
#X obj 64 196 t b;
#X obj 64 147 f;
#X obj 64 99 inlet;
#X text 68 78 mute;
#X obj 64 220 f;
#X msg 130 235 0;
#X msg 64 123 bang;
#X obj 64 172 moses 1;
#X obj 130 211 t b f;
#X obj 93 427 outlet;
#X msg 93 403 set \$1;
#X obj 180 158 moses 1;
#X obj 217 429 dbtorms;
#X obj 217 454 pack 0 100;
#X obj 180 133 r master-lvl;
#X obj 93 369 r master-lvl;
#X obj 80 276 s master-lvl;
#X obj 217 478 s master-amp;
#X obj 201 235 loadbang;
#X msg 201 260 \; master-lvl 90;
#X connect 0 0 4 0;
#X connect 1 0 7 0;
#X connect 2 0 6 0;
#X connect 4 0 16 0;
#X connect 5 0 16 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 11 1 4 1;
#X connect 12 0 13 0;
#X connect 13 0 17 0;
#X connect 14 0 1 1;
#X connect 14 0 11 0;
#X connect 15 0 10 0;
#X connect 15 0 12 0;
#X connect 18 0 19 0;
#X restore 385 361 pd output;
#X msg 385 340 mute;
#X obj 385 403 s master-lvl;
#X text 427 339 <-- mute button;
#X text 422 381 <--set me;
#X text 385 423 LINE OUT LEVEL in dB (100 norm);
#X text 14 25 This is a Fourier-based analysis/resynthesis tool.;
#X text 22 45 You can move forward or backward in the sample \, or
"freeze" at any point using the "precession" and "location" controls.
Transposition is in hundredths of a half-tone.;
#X msg 30 185 start transformation when I change controls;
#X msg 30 206 stop the transformation;
#X text 731 329 examples:;
#X msg 614 94 -40;
#X connect 0 0 5 0;
#X connect 1 0 4 1;
#X connect 2 0 4 0;
#X connect 3 0 2 0;
#X connect 3 1 1 0;
#X connect 6 0 7 0;
#X connect 7 0 0 0;
#X connect 23 0 25 0;
#X connect 26 0 23 0;
#X connect 29 0 34 0;
#X connect 30 0 29 0;
#X connect 31 0 29 0;
#X connect 33 0 29 0;
#X connect 35 0 29 0;
#X connect 36 0 29 0;
#X connect 39 0 42 0;
#X connect 40 0 39 0;
#X connect 41 0 40 0;
#X connect 48 0 29 0;
#X connect 49 0 29 0;
#X connect 51 0 2 0;
