#N canvas 545 187 786 654 10; #X obj 325 556 dac~; #X obj 413 435 send~ feedback; #X obj 96 110 receive~ feedback; #X obj 96 221 *~; #X obj 111 136 vsl 20 45 0 1 0 1 empty empty empty 0 -9 0 10 -262144 -1 -1 3600 1; #X floatatom 111 194 5 0 0 0 - - -, f 5; #X text 59 90 feedback loop for more repeats; #X obj 325 522 *~; #X obj 340 472 hsl 128 15 0 1 0 1 empty empty OUTPUT -2 -8 0 10 -262144 -1 -1 5700 1; #X floatatom 340 497 5 0 0 0 - - -, f 5; #X obj 173 177 adc~; #X obj 325 401 tabread4~ bucketBrigade; #X text 366 270 <-- offset the index of the array by 1 so the 'read head' is at the end of the circular buffer; #X obj 173 274 ipoke~ bucketBrigade; #X obj 290 199 phasor~ 1; #X obj 325 275 +~ 1; #X obj 290 111 hsl 128 15 -10 10 0 0 empty empty speed -2 -8 0 10 -262144 -1 -1 6700 1; #X floatatom 290 133 10 0 0 0 - - -, f 10; #X obj 290 154 \$1 50; #X obj 290 176 line~; #X obj 172 226 *~; #X obj 218 139 vsl 15 128 0 1 0 1 empty empty In_volume 0 -9 0 10 -262144 -1 -1 3200 1; #X msg 164 40 const 0; #X obj 164 69 array define bucketBrigade 441000; #X obj 290 229 *~ 441000; #X text 489 0 tape length; #X obj 494 28 hsl 128 15 44100 882000 0 1 empty empty empty -2 -8 0 10 -262144 -1 -1 4800 1; #X obj 491 52 t f f; #X floatatom 523 85 8 0 0 0 - - -, f 8; #X obj 325 367 expr~ $v1 % $v2; #X obj 491 129 array size bucketBrigade; #X msg 287 25 0; #X text 320 25 stop; #X text 165 20 clear; #X connect 2 0 3 0; #X connect 3 0 13 0; #X connect 4 0 5 0; #X connect 5 0 3 1; #X connect 7 0 0 0; #X connect 7 0 0 1; #X connect 8 0 9 0; #X connect 9 0 7 1; #X connect 10 0 20 0; #X connect 11 0 1 0; #X connect 11 0 7 0; #X connect 14 0 24 0; #X connect 15 0 29 0; #X connect 16 0 17 0; #X connect 17 0 18 0; #X connect 18 0 19 0; #X connect 19 0 14 0; #X connect 20 0 13 0; #X connect 21 0 20 1; #X connect 22 0 23 0; #X connect 24 0 13 1; #X connect 24 0 15 0; #X connect 26 0 27 0; #X connect 27 0 30 0; #X connect 27 1 24 1; #X connect 27 1 28 0; #X connect 27 1 29 1; #X connect 29 0 11 0; #X connect 31 0 16 0;