#N canvas 143 17 993 674 12;
#X graph graph1 0 -1.02 44100 1.02 630 370 830 240;
#X array tabread4-out 44100 float 0;
#X pop;
#X msg 354 13 \; pd dsp 1;
#X msg 437 13 \; pd dsp 0;
#X text 379 51 ON;
#X text 457 51 OFF;
#X graph graph1 0 -1.02 44103 1.02 631 144 831 14;
#X array sample-table 44103 float 0;
#X pop;
#X obj 564 556 loadbang;
#X obj 92 318 tabwrite~ tabread4-out;
#X floatatom 90 396 0 0 0;
#N canvas 159 26 495 266 output 0;
#X obj 406 192 t b;
#X obj 406 132 f;
#X obj 406 72 inlet;
#X text 413 35 mute;
#X obj 406 222 f;
#X msg 510 214 0;
#X msg 406 102 bang;
#X obj 406 162 moses 1;
#X obj 510 184 t b f;
#X obj 476 140 moses 1;
#X obj 100 178 dbtorms;
#X obj 476 110 r master-lvl;
#X obj 100 50 r master-lvl;
#X obj 406 252 s master-lvl;
#X obj 26 217 inlet~;
#X obj 239 49 inlet;
#X text 239 22 level;
#X obj 239 120 s master-lvl;
#X msg 115 78 set \$1;
#X obj 115 107 outlet;
#X msg 257 77 \; pd dsp 1;
#X obj 100 233 line~;
#X obj 26 254 *~;
#X obj 26 289 dac~;
#X obj 100 205 pack 0 50;
#X text 24 190 audio;
#X text 112 132 show level;
#X connect 0 0 4 0;
#X connect 1 0 7 0;
#X connect 2 0 6 0;
#X connect 4 0 13 0;
#X connect 5 0 13 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 9 1 4 1;
#X connect 10 0 24 0;
#X connect 11 0 1 1;
#X connect 11 0 9 0;
#X connect 12 0 10 0;
#X connect 12 0 18 0;
#X connect 14 0 22 0;
#X connect 15 0 17 0;
#X connect 15 0 20 0;
#X connect 18 0 19 0;
#X connect 21 0 22 1;
#X connect 22 0 23 0;
#X connect 22 0 23 1;
#X connect 24 0 21 0;
#X restore 55 430 pd output;
#X msg 125 396 MUTE;
#X text 166 395 <-- output amplitude;
#X obj 55 361 hip~ 5;
#X obj 55 248 tabread4~ sample-table;
#X floatatom 55 60 0 0 0;
#X text 254 251 read from the table;
#X text 110 16 LOOPING SAMPLER;
#X text 104 60 <-- frequency (Hz.);
#X floatatom 83 121 0 0 0;
#X obj 83 154 * 441;
#X obj 55 181 *~ 0;
#X obj 55 211 +~ 1;
#X text 136 286 <-- click to display output;
#X obj 55 92 phasor~ 0;
#X msg 91 283 bang;
#X text 130 120 <-- chunk size (100ths of a second);
#X text 25 460 This is a looping sampler in which you specify the number
of loops per second (the frequency) and the size of the chunk to loop.
If the frequency is less than about 20 \, you will hear repetition
and the chunk size will sound like transposition. For frequencies above
50 or so \, you hear a tone whose timbre is controlled by the chunk
size (best kept below 5 or so.) Remember to use the "shift" key on
number boxes to make fine adjustments.;
#X obj 558 426 adc~ 1;
#X obj 558 455 hip~ 5;
#X obj 558 515 tabwrite~ sample-table;
#X msg 576 482 bang;
#X text 614 483 <-- click here to record your own sample;
#X text 674 561 v-- re-read the original sample;
#X text 23 597 In this patch you will frequently hear discontinuities
at the looping point. If you're working in a studio \, you can sometimes
find "good" loop points for samples. Another approach \, better for
live situations \, is shown in the next patch.;
#X text 101 180 <-- readjust phase for range 0 - (chunk size);
#X text 100 211 <-- add one to avoid beginning of table;
#X msg 564 584 read ../sound/voice.wav sample-table;
#X obj 564 609 soundfiler;
#X text 748 653 updated for Pd version 0.33;
#X text 629 153 ---- 44103 samples ----;
#X text 641 376 ---- 1 second ------;
#X connect 6 0 36 0;
#X connect 8 0 9 1;
#X connect 9 0 8 0;
#X connect 10 0 9 2;
#X connect 12 0 9 0;
#X connect 13 0 12 0;
#X connect 13 0 7 0;
#X connect 14 0 23 0;
#X connect 18 0 19 0;
#X connect 19 0 20 1;
#X connect 20 0 21 0;
#X connect 21 0 13 0;
#X connect 23 0 20 0;
#X connect 24 0 7 0;
#X connect 27 0 28 0;
#X connect 28 0 29 0;
#X connect 30 0 29 0;
#X connect 36 0 37 0;
