#N canvas 370 56 804 767 12;
#X declare -stdpath ./;
#N canvas 0 0 450 300 (subpatch) 0;
#X array table19 44103 float 2;
#X coords 0 1.02 44103 -1.02 200 130 1;
#X restore 536 252 graph;
#X obj 435 399 adc~ 1;
#N canvas 0 0 450 300 (subpatch) 0;
#X array graph19 22050 float 0;
#X coords 0 44100 22049 0 200 130 1 0 0;
#X restore 536 65 graph;
#X obj 270 367 line~;
#X floatatom 270 291 8 0 0 0 - - - 0;
#X obj 437 527 loadbang;
#X text 516 531 v-- re-read the original sample;
#X obj 437 582 soundfiler;
#X text 550 392 ---- 44103 samples ---;
#X obj 435 479 tabwrite~ table19;
#X msg 437 558 read ../sound/voice.wav table19;
#X text 184 648 You should hear some doppler shift as you change the read point. To see why \, click on "graph table index" and quickly start changing the read point--- you should see entertaining pictures in "table-index". The next patch shows how to prevent this if you wish to.;
#X text 480 434 <-- record;
#X obj 270 341 pack f 100;
#X obj 457 435 bng 19 250 50 0 empty empty empty 17 7 0 10 #dfdfdf #000000 #000000;
#X obj 71 17 cnv 5 5 25 empty empty Sliding\ Loops 15 13 0 16 #dfdfdf #202020 0;
#X floatatom 115 187 6 0 0 2 Hz \$0-freq - 0;
#X obj 180 320 +~ 1;
#X obj 115 296 -~ 0.5;
#X obj 115 429 cos~;
#X obj 115 462 *~;
#X obj 115 214 phasor~;
#X obj 115 321 *~ 0.5;
#X obj 115 551 output~;
#X obj 180 295 *~;
#X obj 198 268 * 44.1;
#X obj 239 404 bng 19 250 50 0 empty empty empty 17 7 0 10 #dfdfdf #000000 #000000;
#X text 262 403 <-- graph once;
#X obj 266 431 tgl 19 0 empty empty empty 0 -10 0 12 #dfdfdf #000000 #000000 0 1;
#X text 290 430 <-- graph repeatedly, f 10;
#N canvas 146 130 450 300 graph 0;
#X obj 256 73 inlet;
#X obj 192 73 inlet;
#X obj 122 73 inlet~;
#X obj 256 137 metro 550;
#X obj 192 203 tabwrite~ graph19;
#X connect 0 0 3 0;
#X connect 1 0 4 0;
#X connect 2 0 4 0;
#X connect 3 0 4 0;
#X restore 213 464 pd graph;
#X obj 201 214 hsl 162 19 0 1000 0 0 empty \$0-size chunk\ size\ (ms) -2 -10 0 12 #dfdfdf #000000 #000000 0 1;
#X obj 180 357 +~;
#X obj 180 500 tabread4~ table19;
#X obj 273 263 hsl 162 19 -250 1000 0 0 empty \$0-read-point read\ point\ (ms) -2 -10 0 12 #dfdfdf #000000 #000000 0 1;
#X obj 270 317 * 44.1;
#N canvas 611 300 300 325 init 0;
#X text 57 23 This subpatch initializes the patch and loads values in number boxes., f 26;
#X obj 79 94 loadbang;
#X obj 79 149 f \$0;
#X msg 79 173 \; \$1-freq 5 \; \$1-read-point 0 \; \$1-size 250;
#X obj 79 121 bng 19 250 50 0 empty empty empty 0 -10 0 12 #dfdfdf #000000 #000000;
#X obj 79 264 declare -stdpath ./;
#X connect 1 0 4 0;
#X connect 2 0 3 0;
#X connect 4 0 2 0;
#X restore 389 312 pd init;
#X text 560 198 ----- 0.5 second -----;
#X text 742 184 0;
#X text 742 56 44100;
#X text 42 69 In this patch we can loop in any "window" of the input sample. The "read point" gives the starting point of the window and "chunk" is its size (both in milliseconds). Try \, for example \, frequency 4 \, chunk size 250 \, and vary the read point from -250 to 1000 \, listening to the result.;
#X floatatom 198 241 8 0 0 0 - - - 0;
#X connect 1 0 9 0;
#X connect 3 0 32 1;
#X connect 4 0 35 0;
#X connect 5 0 10 0;
#X connect 10 0 7 0;
#X connect 13 0 3 0;
#X connect 14 0 9 0;
#X connect 16 0 21 0;
#X connect 17 0 32 0;
#X connect 18 0 22 0;
#X connect 19 0 20 0;
#X connect 20 0 23 0;
#X connect 21 0 24 0;
#X connect 21 0 18 0;
#X connect 22 0 19 0;
#X connect 24 0 17 0;
#X connect 25 0 24 1;
#X connect 26 0 30 1;
#X connect 28 0 30 2;
#X connect 31 0 41 0;
#X connect 32 0 33 0;
#X connect 32 0 30 0;
#X connect 33 0 20 1;
#X connect 34 0 4 0;
#X connect 35 0 13 0;
#X connect 41 0 25 0;
