#N canvas 406 56 531 683 10;
#X obj 21 538 hip~ 5;
#X floatatom 22 86 4 0 100 0 - - -, f 4;
#X obj 22 485 *~;
#X floatatom 22 155 0 0 200 0 - - -;
#X obj 22 395 +~;
#X obj 22 351 samphold~;
#X obj 22 373 *~;
#X obj 157 399 r~ phase;
#X obj 297 218 s~ phase;
#X obj 99 351 r~ phase;
#X obj 54 373 r~ phase;
#X obj 22 128 s chunk-size;
#X floatatom 297 62 0 0 0 0 - - -;
#X text 108 120 chunk size;
#X text 108 133 in seconds;
#X obj 309 90 r chunk-size;
#X obj 309 112 t b f;
#X obj 157 421 -~ 0.5;
#X obj 157 443 *~ 0.5;
#X obj 157 465 cos~;
#X obj 22 569 output~;
#X obj 297 192 phasor~;
#N canvas 30 567 660 275 table 0;
#N canvas 0 0 450 300 (subpatch) 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 253 288 pd table;
#X obj 22 293 s~ read-pt;
#X obj 54 395 r~ read-pt;
#X obj 384 216 +~ 0.5;
#X obj 385 237 wrap~;
#X obj 385 259 s~ phase2;
#X obj 21 514 +~;
#X text 331 63 <-- transposition \, halftones/10;
#X obj 22 106 * 0.001;
#X obj 22 247 phasor~;
#X obj 22 417 *~ 44100;
#X obj 22 461 tabread4~ table23;
#X obj 22 329 r chunk-size;
#X obj 22 439 +~ 1;
#X floatatom 305 169 5 0 0 0 - - -, f 5;
#X obj 30 201 s precession;
#X obj 422 111 t b f;
#X obj 422 89 r precession;
#X obj 22 178 * 0.01;
#X obj 253 485 *~;
#X obj 253 395 +~;
#X obj 253 351 samphold~;
#X obj 253 373 *~;
#X obj 388 421 -~ 0.5;
#X obj 388 443 *~ 0.5;
#X obj 388 465 cos~;
#X obj 285 395 r~ read-pt;
#X obj 253 417 *~ 44100;
#X obj 253 461 tabread4~ table23;
#X obj 253 329 r chunk-size;
#X obj 253 439 +~ 1;
#X obj 331 351 r~ phase2;
#X obj 285 373 r~ phase2;
#X obj 388 399 r~ phase2;
#X text 52 155 <-- precession \, percent;
#X obj 22 42 loadbang;
#X text 116 514 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 117 590 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 22 64 25;
#X floatatom 154 222 4 0 900 0 - - -, f 4;
#X obj 154 242 * 0.001;
#X msg 154 200 900;
#X text 54 86 <-- chunk size (msec);
#X obj 297 144 expr (pow(2 \, $f1/120)-$f3)/$f2;
#X obj 154 267 t b f;
#X obj 154 178 loadbang;
#X text 187 222 <-- loop length;
#X text 228 237 (msec);
#X obj 22 271 *~;
#X obj 22 223 /;
#X obj 1 1 cnv 15 445 20 empty \$0-pddp.cnv.header time_compression/expansion...
20 10 1 18 -261139 -33289 0;
#X obj 407 2 pddp/pddplink http://puredata.info/dev/pddp -text pddp
;
#X text 158 23 ...by looped sampling;
#X obj 1 662 cnv 15 445 20 empty \$0-pddp.cnv.footer empty 20 12 0
14 -233017 -33289 0;
#N canvas 44 246 494 284 META 0;
#X text 12 125 WEBSITE http://crca.ucsd.edu/~msp/;
#X text 12 105 AUTHOR Miller Puckette;
#X text 12 85 LIBRARY PDDP;
#X text 12 5 GENRE tutorial;
#X text 12 45 LICENSE SIBSD;
#X text 12 145 HELP_PATCH_AUTHORS Updated for release 0.37. Jonathan
Wilkes revised the patch to conform to the PDDP template for Pd version
0.42.;
#X text 12 25 KEYWORDS signal array;
#X text 12 65 DESCRIPTION time compression and expansion;
#X restore 392 664 pd META;
#N canvas 13 202 428 190 References 0;
#X obj 1 1 cnv 15 425 20 empty \$0-pddp.cnv.subheading empty 3 12 0
14 -261139 -33289 0;
#X text 7 2 time compression/expansion- Related Help Documents;
#X text 19 37 links:;
#X restore 103 664 pd References;
#X obj 6 664 pddp/pddplink ../5.reference/pddp/help.pd -text help;
#X connect 0 0 20 0;
#X connect 0 0 20 1;
#X connect 1 0 30 0;
#X connect 2 0 28 0;
#X connect 3 0 40 0;
#X connect 4 0 32 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 65 0;
#X connect 15 0 16 0;
#X connect 16 0 65 0;
#X connect 16 1 65 1;
#X connect 17 0 18 0;
#X connect 18 0 19 0;
#X connect 19 0 2 1;
#X connect 21 0 8 0;
#X connect 21 0 25 0;
#X connect 24 0 4 1;
#X connect 25 0 26 0;
#X connect 26 0 27 0;
#X connect 28 0 0 0;
#X connect 30 0 11 0;
#X connect 31 0 70 0;
#X connect 32 0 35 0;
#X connect 33 0 2 0;
#X connect 34 0 5 0;
#X connect 35 0 33 0;
#X connect 38 0 65 0;
#X connect 38 1 65 2;
#X connect 39 0 38 0;
#X connect 40 0 37 0;
#X connect 40 0 71 0;
#X connect 41 0 28 1;
#X connect 42 0 49 0;
#X connect 43 0 44 0;
#X connect 44 0 42 0;
#X connect 45 0 46 0;
#X connect 46 0 47 0;
#X connect 47 0 41 1;
#X connect 48 0 42 1;
#X connect 49 0 52 0;
#X connect 50 0 41 0;
#X connect 51 0 43 0;
#X connect 52 0 50 0;
#X connect 53 0 43 1;
#X connect 54 0 44 1;
#X connect 55 0 45 0;
#X connect 57 0 60 0;
#X connect 60 0 1 0;
#X connect 61 0 62 0;
#X connect 62 0 66 0;
#X connect 62 0 70 1;
#X connect 63 0 61 0;
#X connect 65 0 21 0;
#X connect 65 0 36 0;
#X connect 66 0 71 0;
#X connect 66 1 71 1;
#X connect 67 0 63 0;
#X connect 70 0 23 0;
#X connect 71 0 31 0;
