#N canvas 100 38 719 544 12; #X floatatom 283 336 0 0 0 0 - - -; #X msg 569 149 bang; #X floatatom 197 329 0 0 0 0 - - -; #X floatatom 90 330 0 0 0 0 - - -; #N canvas 0 2 986 683 fft-analysis 0; #X obj 261 297 *~; #X obj 230 297 *~; #X obj 230 319 -~; #X obj 326 298 *~; #X obj 295 298 *~; #X obj 295 320 +~; #X obj 340 128 *~; #X obj 309 128 *~; #X obj 281 128 *~; #X obj 250 128 *~; #X obj 250 150 +~; #X obj 220 179 *~; #X obj 86 556 *~; #X obj 366 251 rfft~; #X obj 432 52 rfft~; #X obj 477 637 *~; #X obj 685 288 r window-size; #X obj 751 201 r sample-rate; #X obj 609 234 f; #X obj 603 52 r sample-rate; #X obj 578 29 r window-size; #X obj 601 98 t b f; #X obj 578 121 /; #X obj 507 637 *~; #X obj 87 536 *~; #X obj 103 513 rifft~; #X obj 87 582 outlet~; #X obj 625 446 print~; #X msg 624 418 bang; #X text 152 513 inverse real FFT; #X obj 589 210 bang~; #X obj 516 424 line~; #X obj 578 143 * 1000; #X text 630 136 window size (msec); #X obj 603 76 * 4; #X obj 632 159 r speed; #X obj 709 160 r location; #X obj 640 235 +; #X obj 633 200 *; #X msg 710 188 0; #X obj 609 341 +; #X obj 600 298 t f f; #X msg 516 396 \$1 \, \$2 \$3; #X obj 516 369 pack 0 0 0; #X obj 752 229 / 1000; #X obj 609 269 *; #X text 639 270 reading location (samples); #X obj 637 381 / 4; #X text 669 386 hop size (samples); #X obj 564 464 sig~; #X obj 534 463 +~; #X text 638 82 (overlap times parent SR); #X text 638 69 local sample rate; #X obj 23 51 tabreceive~ phase-real; #X obj 190 179 *~; #X obj 190 201 +~; #X obj 190 225 rsqrt~; #X obj 309 150 -~; #X obj 231 255 *~; #X obj 291 255 *~; #X obj 227 52 tabreceive~ phase-imag; #X obj 105 381 sig~; #X obj 88 311 t b f; #X msg 88 332 1; #X obj 102 355 /; #X obj 227 436 tabsend~ phase-real; #X obj 256 408 tabsend~ phase-imag; #X obj 632 180 * 0.01; #X obj 691 212 s speed; #X obj 468 251 s see-location; #X obj 598 618 block~ 2048 4; #X floatatom 672 360 0 0 0 0 - - -; #X obj 670 339 *; #X obj 829 234 r transpo; #X obj 829 256 * 0.01; #X obj 831 277 + 69; #X obj 832 298 mtof; #X obj 832 320 / 440; #X obj 689 316 t b f; #X obj 88 290 r window-size; #X floatatom 835 353 0 0 0 0 - - -; #X obj 551 543 tabreceive~ hanning; #X obj 536 488 tabread4~ sample; #X obj 502 513 tabread4~ sample; #X obj 116 126 sig~ 1e-15; #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 69 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 67 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 68 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 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 10 0; #X restore 43 402 pd fft-analysis; #X obj 43 488 dac~; #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 172 290 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 170 17 graph; #X msg 167 564 \; phase-real resize 4096 \; phase-imag resize 4096 ; #X restore 425 441 pd phase-tables; #X obj 43 428 hip~ 5; #X obj 43 458 *~; #N canvas 249 280 600 398 loc&precess 0; #X floatatom 160 229 0 0 0 0 - - -; #X msg 270 175 set \$1; #X obj 269 207 outlet; #X obj 83 267 outlet; #X obj 171 71 r location; #X msg 82 235 set \$1; #X obj 269 149 r speed; #X obj 55 70 r see-location; #X obj 67 102 t b f; #X obj 82 214 f; #X obj 54 127 int; #X obj 54 151 sel 0; #X msg 153 102 1; #X msg 201 101 0; #X obj 110 179 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 90 302 pd loc&precess; #N canvas 0 0 600 400 setlocprecess 0; #X obj 173 82 inlet; #X obj 73 80 inlet; #X obj 169 105 s speed; #X obj 74 105 s location; #X connect 0 0 2 0; #X connect 1 0 3 0; #X restore 90 353 pd setlocprecess; #X msg 47 313 0; #X obj 612 162 adc~; #X obj 283 361 s transpo; #X obj 283 285 r transpo; #X msg 283 311 set \$1; #X msg 423 268 \; location 0 \; speed 200; #N canvas 138 111 767 761 hanning-window 0; #X obj 92 206 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 180 0; #X text 141 13 CALCULATE HANNING; #X text 141 27 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 275 281 graph; #X obj 93 171 sig~; #X text 175 148 sample rate / window size; #X msg 23 144 bang; #X obj 66 269 sig~ 0.5; #X obj 49 300 *~; #X obj 94 80 samplerate~; #X obj 25 23 r window-size; #X obj 25 53 t b f; #X msg 275 547 \; hanning resize 4096; #X obj 93 132 /; #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 423 464 pd hanning-window; #X msg 31 172 \; window-size 2048 \; transpo 0 \; pd dsp 1; #X floatatom 587 68 0 0 0 0 - - -; #N canvas 194 37 397 591 output 0; #X obj 62 191 t b; #X obj 62 144 f; #X obj 62 96 inlet; #X text 67 76 mute; #X obj 62 215 f; #X msg 127 230 0; #X msg 62 120 bang; #X obj 62 167 moses 1; #X obj 127 207 t b f; #X obj 91 417 outlet; #X msg 91 393 set \$1; #X obj 175 154 moses 1; #X obj 212 419 dbtorms; #X obj 212 443 pack 0 100; #X obj 175 130 r master-lvl; #X obj 91 360 r master-lvl; #X obj 78 269 s master-lvl; #X obj 212 467 s master-amp; #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 restore 587 44 pd output; #X msg 587 20 mute; #X text 624 60 MASTER; #X text 623 74 LEVEL; #X obj 587 92 s master-lvl; #X text 41 153 click here first; #X text 261 3 PHASE VOCODER; #X obj 87 486 line~; #X obj 87 462 r master-amp; #X text 47 30 This is a Fourier-based analysis/resynthesis tool.; #X text 55 251 set location; #X text 54 265 and stop; #X text 54 279 precession; #X text 172 250 precession; #X text 171 266 speed in; #X text 171 280 hundredths; #X text 281 244 transposition; #X text 282 262 in cents; #X text 491 223 examples; #X text 428 248 contraction; #X text 542 247 expansion; #X msg 531 270 \; location 0 \; speed 10; #X obj 425 340 loadbang; #X obj 429 363 samplerate~; #X obj 425 385 s sample-rate; #N canvas 132 255 634 327 insample 0; #N canvas 0 0 450 300 graph1 0; #X array sample 155948 float 0; #X coords 0 1 155947 -1 400 150 1; #X restore 199 18 graph; #X obj 19 70 r read-sample; #X obj 19 95 unpack s f; #X obj 53 121 s insamprate; #X obj 19 171 soundfiler; #X msg 19 147 read -resize \$1 sample; #X obj 19 201 s insamplength; #X msg 357 197 \; sample resize 220500 \; insamplength 220500; #X connect 1 0 2 0; #X connect 2 0 5 0; #X connect 2 1 3 0; #X connect 4 0 6 0; #X connect 5 0 4 0; #X restore 425 415 pd insample; #X msg 196 146 \; read-sample ../sound/bell.aiff \; transpo 0; #X msg 196 197 \; read-sample ../sound/voice.wav \; transpo -530; #X text 46 99 The second soundfile read button sets the transposition to correct for the 32000 sample rate of the file.; #X text 47 50 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 obj 569 184 tabwrite~ sample; #X connect 0 0 13 0; #X connect 1 0 50 0; #X connect 2 0 10 1; #X connect 3 0 10 0; #X connect 4 0 7 0; #X connect 7 0 8 0; #X connect 8 0 5 0; #X connect 8 0 5 1; #X connect 9 0 3 0; #X connect 9 1 2 0; #X connect 11 0 3 0; #X connect 12 0 50 0; #X connect 14 0 15 0; #X connect 15 0 0 0; #X connect 19 0 24 0; #X connect 20 0 19 0; #X connect 21 0 20 0; #X connect 27 0 8 1; #X connect 28 0 27 0; #X connect 42 0 43 0; #X connect 43 0 44 0;