#N canvas 0 55 1366 689 10; #X obj 329 174 r loopsize; #X obj 53 -12 s \$0-stopr; #X obj 145 -11 s \$0-start; #X obj 53 -33 r looperctrl; #X obj 147 -32 r att; #X obj 206 630 poke~ \$0-looperleft; #X obj 206 346 tabread~ \$0-looperleft; #N canvas 756 298 381 325 limiter-for-two-channels 0; #X obj 24 22 inlet~; #X obj 121 21 loadbang; #X obj 24 60 z~ 64; #X obj 24 169 *~; #X obj 24 200 outlet~; #X obj 121 113 zexy/limiter~; #X msg 154 62 limit 100; #X connect 0 0 2 0; #X connect 0 0 5 0; #X connect 2 0 3 0; #X connect 3 0 4 0; #X connect 5 0 3 1; #X restore 206 497 pd limiter-for-two-channels; #X obj 13 195 table \$0-looperleft 2.82e+06; #X obj 207 413 *~; #X obj 15 293 hsl 128 25 0 1 0 1 \$0-feedback \$0-feedbackctrl feedback 20 12 0 10 -228856 -260097 -1 12700 0; #X obj 16 333 hsl 128 25 0 1 0 1 \$0-outlevel \$0-outlevelin outlevel 20 12 0 10 -228856 -260097 -1 12700 1; #X obj 36 397 bng 50 250 50 0 empty empty empty 17 7 0 10 -228856 -260097 -1; #N canvas 507 427 187 154 feedbacklevel 0; #X obj 27 81 line~; #X obj 27 109 outlet~; #X msg 27 57 \$1 500; #X text 25 131 feedback level; #X obj 95 109 outlet; #X obj 29 26 r \$0-feedback; #X connect 0 0 1 0; #X connect 2 0 0 0; #X connect 5 0 2 0; #X connect 5 0 4 0; #X restore 221 372 pd feedbacklevel; #X floatatom 314 411 5 0 0 0 - - -; #N canvas 242 208 1024 716 outlevel 0; #X obj 27 101 line~; #X obj 27 129 outlet~; #X msg 27 77 \$1 500; #X obj 82 78 outlet; #X obj 27 24 r \$0-outlevel; #X text 25 151 output level; #X obj 112 25 r \$0-mute; #X obj 131 78 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X obj 27 51 f; #X connect 0 0 1 0; #X connect 2 0 0 0; #X connect 4 0 8 0; #X connect 6 0 8 0; #X connect 8 0 2 0; #X connect 8 0 3 0; #X connect 8 0 7 0; #X restore 238 539 pd outlevel; #X floatatom 301 561 5 0 0 0 - - -; #X obj 48 484 s \$0-looperleft; #X msg 36 459 const 0; #X text 88 414 clear loop; #X obj 216 467 hip~ 5; #N canvas 577 175 391 247 more-info 0; #X text 14 204 This patch uses [count~] and [poke~] from cyclone \, [limiter~] from zexy.; #X text 16 72 With feedback setting at max \, it is a looper. With lower feedback settings \, the loop content will fade away.; #X text 15 115 The read index is one sample ahead of the write index \, and wrapped within the loop size.; #X text 14 17 Elementary looping delay with sound on sound. A similar thing can be done with [delwrite~] and [delread~] or [vd~] \, but [delwrite~] lacks the option to clear the delay buffer.; #X text 16 153 Loop size could be up to 2^23-1 samples theoretically. Beyond that size \, indexing will loose the required precision.; #X obj 325 217 mux~; #X restore 13 168 pd more-info; #X obj 127 65 r \$0-start; #X obj 23 63 r clear; #X obj 22 101 s \$0-clear; #X msg 127 87 1; #X obj 127 108 s \$0-mute; #X obj 216 442 inlet~ left; #X obj 223 576 *~; #X obj 260 175 r~ vline; #X obj 71 62 r pgm; #X obj 23 83 spigot; #X obj 90 80 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1 ; #X obj 7 64 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1 ; #X obj 219 601 outlet~ left; #X obj 36 373 r clear; #X msg 228 -11 resize \$1; #X obj 237 9 s \$0-looperleft; #X obj 425 503 s \$0-feedbackctrl; #X obj 425 445 inlet feedback; #X floatatom 368 460 5 0 0 0 - - -; #X obj 425 468 / 100; #X obj 565 452 inlet clear; #X obj 440 544 outlet feedback; #X floatatom 416 411 5 0 0 0 - - -; #X obj 303 113 knob 32 32 0 0.7 0 0 empty empty empty 0 -8 0 8 -4034 -4034 -1 0 1; #X obj 755 291 inlet vol; #N canvas 0 0 450 300 (subpatch) 0; #X array \$0-viewer 100 float 0; #X coords 0 -1 99 1 60 40 1; #X restore 337 103 graph; #X obj 463 632 tabwrite~ \$0-viewer; #X obj 467 586 loadbang; #X obj 465 610 metro 50; #X obj 527 281 count~ 0 3e+06; #N canvas 34 319 385 285 readindex 0; #X obj 96 112 /; #X msg 96 85 1; #X obj 16 129 *~ 1; #X obj 16 154 wrap~; #X obj 96 61 t b f; #X obj 16 182 *~ 1; #X obj 16 13 inlet~; #X obj 16 212 outlet~; #X text 15 236 read pointer is one sample ahead of write pointer \, but must be wrapped around loop length; #X obj 96 37 int; #X obj 16 69 +~ 1; #X obj 96 13 r loopsize; #X floatatom 151 44 15 0 0 0 - - -; #X connect 0 0 2 1; #X connect 1 0 0 0; #X connect 2 0 3 0; #X connect 3 0 5 0; #X connect 4 0 1 0; #X connect 4 1 0 1; #X connect 5 0 7 0; #X connect 6 0 10 0; #X connect 9 0 4 0; #X connect 9 0 5 1; #X connect 10 0 2 0; #X connect 11 0 9 0; #X connect 11 0 12 0; #X restore 207 262 pd readindex; #X obj 411 167 r loopbang; #X floatatom 439 230 15 0 0 0 - - -; #X obj 425 198 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X obj 436 574 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X obj 305 221 count~; #X msg 382 265 0; #X connect 0 0 54 0; #X connect 0 0 57 1; #X connect 3 0 1 0; #X connect 4 0 2 0; #X connect 6 0 9 0; #X connect 7 0 28 0; #X connect 7 0 5 0; #X connect 9 0 7 0; #X connect 12 0 18 0; #X connect 13 0 9 1; #X connect 13 1 14 0; #X connect 15 0 28 1; #X connect 15 1 16 0; #X connect 18 0 17 0; #X connect 20 0 7 0; #X connect 22 0 25 0; #X connect 23 0 31 0; #X connect 23 0 33 0; #X connect 25 0 26 0; #X connect 27 0 20 0; #X connect 28 0 34 0; #X connect 29 0 52 0; #X connect 29 0 5 1; #X connect 30 0 31 1; #X connect 30 0 32 0; #X connect 31 0 24 0; #X connect 35 0 12 0; #X connect 39 0 40 0; #X connect 39 0 41 0; #X connect 41 0 38 0; #X connect 41 0 43 0; #X connect 42 0 12 0; #X connect 44 0 41 0; #X connect 46 0 45 0; #X connect 49 0 50 0; #X connect 50 0 48 0; #X connect 52 0 6 0; #X connect 53 0 55 0; #X connect 55 0 58 0; #X connect 56 0 50 0; #X connect 58 0 57 0; #X coords 0 722 1 721 100 50 2 300 100;