#N canvas 123 36 683 718 12;
#X obj 6 529 hip~ 5;
#X floatatom 8 47 4 0 100 0 - - -;
#X obj 7 476 *~;
#X floatatom 7 123 0 0 200 0 - - -;
#X obj 7 378 +~;
#X obj 6 330 samphold~;
#X obj 7 354 *~;
#X obj 172 385 r~ phase;
#X obj 357 210 s~ phase;
#X obj 94 331 r~ phase;
#X obj 42 355 r~ phase;
#X obj 8 90 s chunk-size;
#X floatatom 357 42 0 0 0 0 - - -;
#X text 124 82 chunk size;
#X text 121 96 in seconds;
#X obj 369 79 r chunk-size;
#X obj 369 104 t b f;
#X obj 172 409 -~ 0.5;
#X obj 172 433 *~ 0.5;
#X obj 172 456 cos~;
#X obj 7 560 output~;
#X text 417 698 updated for Pd version 0.37;
#X obj 357 184 phasor~;
#N canvas 30 567 660 275 table 0;
#N canvas 0 0 450 300 graph1 0;
#X array table23 44103 float 0;
#X coords 0 1.02 44100 -1.02 200 130 1;
#X restore 442 61 graph;
#X text 444 195 --- 44103 samples ---;
#X obj 41 148 loadbang;
#X obj 45 44 adc~ 1;
#X obj 45 69 hip~ 5;
#X msg 60 91 bang;
#X obj 41 202 soundfiler;
#X text 101 91 <-- record;
#X text 134 155 v-- re-read original table;
#X obj 45 118 tabwrite~ table23;
#X msg 41 175 read ../sound/voice.wav table23;
#X connect 2 0 10 0;
#X connect 3 0 4 0;
#X connect 4 0 9 0;
#X connect 5 0 9 0;
#X connect 10 0 6 0;
#X restore 558 460 pd table;
#X obj 7 263 s~ read-pt;
#X obj 45 378 r~ read-pt;
#X obj 444 203 +~ 0.5;
#X obj 445 229 wrap~;
#X obj 445 254 s~ phase2;
#X obj 6 505 +~;
#X text 391 43 <-- transposition \, halftones/10;
#X obj 8 67 * 0.001;
#X obj 7 215 phasor~;
#X obj 7 402 *~ 44100;
#X obj 7 452 tabread4~ table23;
#X obj 6 305 r chunk-size;
#X obj 6 428 +~ 1;
#X floatatom 365 161 5 0 0 0 - - -;
#X obj 15 169 s precession;
#X obj 482 103 t b f;
#X obj 482 78 r precession;
#X obj 7 146 * 0.01;
#X obj 258 485 *~;
#X obj 258 387 +~;
#X obj 257 339 samphold~;
#X obj 258 363 *~;
#X obj 423 418 -~ 0.5;
#X obj 423 442 *~ 0.5;
#X obj 423 465 cos~;
#X obj 296 387 r~ read-pt;
#X obj 258 411 *~ 44100;
#X obj 258 461 tabread4~ table23;
#X obj 257 314 r chunk-size;
#X obj 257 437 +~ 1;
#X obj 345 340 r~ phase2;
#X obj 293 364 r~ phase2;
#X obj 423 394 r~ phase2;
#X text 37 123 <-- precession \, percent;
#X obj 8 3 loadbang;
#X text 158 3 TIME COMPRESSION/EXPANSION BY LOOPED SAMPLING;
#X text 111 529 Here \, rather than ask you to push the read pointer
back and forth in the sample \, we use a phasor~. This makes it possible
to avoid the samphold~ on the read pointer (r~ read-pt) \, since \,
knowing the precession \, we can correct for it in computing the frequency
of the original phasor~ at right.;
#X text 111 626 We've changed the control for "chunk size" to milliseconds
for added convenience \, and delayed multiplying sample location by
the sample rate (44100) until the last moment \, so that calculations
using "read-pt" and "chunk size" can be in the same units (seconds.)
;
#X msg 8 25 25;
#X floatatom 139 192 4 0 900 0 - - -;
#X obj 139 212 * 0.001;
#X msg 139 170 900;
#X text 48 47 <-- chunk size (msec);
#X obj 357 136 expr (pow(2 \, $f1/120)-$f3)/$f2;
#X obj 139 237 t b f;
#X obj 139 146 loadbang;
#X text 182 188 <-- loop length;
#X text 223 203 (msec);
#X obj 7 239 *~;
#X obj 7 191 /;
#X connect 0 0 20 0;
#X connect 0 0 20 1;
#X connect 1 0 31 0;
#X connect 2 0 29 0;
#X connect 3 0 41 0;
#X connect 4 0 33 0;
#X connect 5 0 6 0;
#X connect 6 0 4 0;
#X connect 7 0 17 0;
#X connect 9 0 5 1;
#X connect 10 0 6 1;
#X connect 12 0 67 0;
#X connect 15 0 16 0;
#X connect 16 0 67 0;
#X connect 16 1 67 1;
#X connect 17 0 18 0;
#X connect 18 0 19 0;
#X connect 19 0 2 1;
#X connect 22 0 8 0;
#X connect 22 0 26 0;
#X connect 25 0 4 1;
#X connect 26 0 27 0;
#X connect 27 0 28 0;
#X connect 29 0 0 0;
#X connect 31 0 11 0;
#X connect 32 0 72 0;
#X connect 33 0 36 0;
#X connect 34 0 2 0;
#X connect 35 0 5 0;
#X connect 36 0 34 0;
#X connect 39 0 67 0;
#X connect 39 1 67 2;
#X connect 40 0 39 0;
#X connect 41 0 38 0;
#X connect 41 0 73 0;
#X connect 42 0 29 1;
#X connect 43 0 50 0;
#X connect 44 0 45 0;
#X connect 45 0 43 0;
#X connect 46 0 47 0;
#X connect 47 0 48 0;
#X connect 48 0 42 1;
#X connect 49 0 43 1;
#X connect 50 0 53 0;
#X connect 51 0 42 0;
#X connect 52 0 44 0;
#X connect 53 0 51 0;
#X connect 54 0 44 1;
#X connect 55 0 45 1;
#X connect 56 0 46 0;
#X connect 58 0 62 0;
#X connect 62 0 1 0;
#X connect 63 0 64 0;
#X connect 64 0 68 0;
#X connect 64 0 72 1;
#X connect 65 0 63 0;
#X connect 67 0 22 0;
#X connect 67 0 37 0;
#X connect 68 0 73 0;
#X connect 68 1 73 1;
#X connect 69 0 65 0;
#X connect 72 0 24 0;
#X connect 73 0 32 0;
