#N canvas 353 576 690 486 12; #N canvas 1071 294 1262 873 record 0; #X obj 260 51 inlet~; #X obj 318 51 inlet; #X obj 680 288 s swapBuffers; #X obj 260 437 tabwrite~ buffer0; #X obj 92 236 r swapBuffers; #X obj 138 266 * -1; #X obj 92 295 sel -1 1; #X msg 58 331 set buffer0; #X msg 157 331 set buffer1; #X obj 92 266 f 1; #X obj 543 47 inlet; #X obj 147 610 timer; #X obj 543 71 route clear record stop; #X msg 543 711 0; #X obj 553 747 s playback; #X obj 543 774 s \$0-state; #X obj 690 405 r \$0-state; #X obj 743 85 r \$0-state; #X obj 595 485 route 0 1; #X obj 595 433 list prepend 0; #X obj 648 115 list prepend 0; #X obj 179 585 r \$0-elaspedTime; #X obj 147 557 r \$0-resetTimer; #X obj 601 627 s \$0-resetTimer; #X obj 285 405 r \$0-startNewRecording; #X obj 526 801 s \$0-newOverdubFlag; #X msg 625 514 1; #X obj 625 569 s \$0-newOverdubFlag; #X obj 648 139 route 0 1; #X obj 689 260 s \$0-elaspedTime; #X obj 147 634 * 44.1; #X obj 147 689 s loopLengthInSamples; #X msg 648 320 1; #X obj 655 347 s playback; #X obj 644 373 s \$0-state; #X obj 318 75 t b b; #X obj 318 374 s \$0-resetTimer; #X obj 350 113 spigot; #X obj 372 142 s \$0-elaspedTime; #X floatatom 764 115 5 0 0 0 - - - 0; #X floatatom 409 114 5 0 0 0 - - - 0; #X obj 595 459 list trim; #X obj 389 83 r \$0-newOverdubFlag; #X obj 587 680 s \$0-newOverdubFlag; #X msg 587 653 0; #X text 859 31 state 0: new loop; #X text 859 49 state 1: overdub; #X obj 634 542 s \$0-overdubbing; #X obj 678 199 s \$0-overdubbing; #X msg 678 172 0; #X text 859 88 newOverdubFlag: 1 if there was an overdub during the previous loop; #X text 859 142 overdubbing: 1 if currently overdubbing; #X floatatom 402 243 5 0 0 0 - - - 0; #X obj 368 212 r \$0-overdubbing; #X obj 372 168 s swapBuffers; #X obj 350 242 f; #X obj 350 269 s \$0-newOverdubFlag; #X obj 648 225 t b b; #X obj 612 600 s \$0-startNewRecording; #X text 318 27 bang to sync recording; #X connect 0 0 3 0; #X connect 1 0 35 0; #X connect 4 0 9 0; #X connect 5 0 9 1; #X connect 6 0 7 0; #X connect 6 1 8 0; #X connect 7 0 3 0; #X connect 8 0 3 0; #X connect 9 0 5 0; #X connect 9 0 6 0; #X connect 10 0 12 0; #X connect 11 0 30 0; #X connect 12 0 13 0; #X connect 12 1 19 0; #X connect 12 2 20 0; #X connect 13 0 14 0; #X connect 13 0 15 0; #X connect 13 0 25 0; #X connect 16 0 19 1; #X connect 17 0 20 1; #X connect 17 0 39 0; #X connect 18 0 23 0; #X connect 18 0 44 0; #X connect 18 0 58 0; #X connect 18 1 26 0; #X connect 19 0 41 0; #X connect 20 0 28 0; #X connect 21 0 11 1; #X connect 22 0 11 0; #X connect 24 0 3 0; #X connect 26 0 27 0; #X connect 26 0 47 0; #X connect 28 0 57 0; #X connect 28 1 49 0; #X connect 30 0 31 0; #X connect 32 0 33 0; #X connect 32 0 34 0; #X connect 35 0 3 0; #X connect 35 0 36 0; #X connect 35 1 37 0; #X connect 37 0 38 0; #X connect 37 0 54 0; #X connect 37 0 55 0; #X connect 41 0 18 0; #X connect 42 0 37 1; #X connect 42 0 40 0; #X connect 44 0 43 0; #X connect 49 0 48 0; #X connect 53 0 52 0; #X connect 53 0 55 1; #X connect 55 0 56 0; #X connect 57 0 32 0; #X connect 57 1 29 0; #X connect 57 1 2 0; #X restore 227 414 pd record; #X obj 56 216 adc~; #X obj 56 303 *~; #X obj 229 150 hsl 128 15 -2 2 0 1 empty empty playback\ speed -2 -8 0 10 #fcfcfc #000000 #000000 9525 1; #X floatatom 239 174 5 0 0 0 - - - 0; #X obj 214 90 hradio 15 1 1 3 empty empty empty 0 -8 0 10 #fcfcfc #000000 #000000 2; #X obj 214 110 - 1; #N canvas 748 31 761 730 playback 0; #X obj 231 535 outlet~; #X obj 328 39 inlet; #X obj 562 306 outlet; #X obj 232 41 inlet; #X text 230 16 speed; #X obj 68 131 r swapBuffers; #X obj 374 303 min~; #X obj 374 402 cos~; #N canvas 1022 328 1257 657 tableIndexer 0; #X obj 258 363 rpole~; #X obj 601 58 inlet~; #X obj 162 56 inlet~; #X obj 600 162 *~; #X obj 122 554 outlet~; #X obj 804 51 block~ 1 1 1; #X text 159 30 speed; #X text 120 582 table index; #X obj 405 477 -~; #X obj 405 502 *~ 1e+23; #X obj 405 527 clip~ 0 1; #X obj 405 553 tabsend~ \$0-ovfl; #X obj 251 501 *~ -1e+23; #X obj 251 527 clip~ 0 1; #X obj 251 553 tabsend~ \$0-undrfl; #X obj 804 78 array define \$0-undrfl 1; #X obj 804 106 array define \$0-ovfl 1; #X obj 619 136 tabreceive~ \$0-undrfl; #X text 604 30 end; #X obj 386 138 -~ 1; #X obj 386 162 *~ -1; #X obj 385 59 tabreceive~ \$0-undrfl; #X obj 411 86 tabreceive~ \$0-ovfl; #X obj 386 114 max~; #X obj 242 261 *~; #X text 401 184 *; #X text 251 577 test if the next index is out of bounds; #X text 789 195 ** if the next index < start \, set it to the end; #X text 606 188 **; #X text 251 595 if so \, set the corresponding 1 sample table; #X text 789 154 * on every wrap \, clear the running total and zero the speed increment until the next start bang; #N canvas 839 774 519 328 SRflipflop 0; #X obj 77 63 inlet; #X obj 182 63 inlet~; #X text 77 42 bang to set; #X text 182 42 0 to reset; #X obj 129 133 rpole~ 1; #X msg 77 92 set 1; #X obj 129 166 outlet~; #X obj 28 169 snapshot~; #X obj 28 193 sel 0; #X obj 258 235 outlet; #X obj 343 53 block~ 1 1 1; #X text 252 257 bang on 0 to 1 transition; #X connect 0 0 5 0; #X connect 0 0 7 0; #X connect 1 0 4 1; #X connect 4 0 6 0; #X connect 4 0 7 0; #X connect 5 0 4 0; #X connect 7 0 8 0; #X connect 8 0 9 0; #X restore 266 207 pd SRflipflop; #X obj 266 56 inlet; #X text 260 29 trigger sweep; #X obj 601 551 outlet; #X text 600 576 bang when a new sweep is triggered; #X msg 134 260 set 0; #X connect 0 0 4 0; #X connect 0 0 8 0; #X connect 0 0 12 0; #X connect 1 0 8 1; #X connect 1 0 3 0; #X connect 2 0 24 0; #X connect 2 0 8 0; #X connect 2 0 12 0; #X connect 2 1 36 0; #X connect 3 0 0 0; #X connect 8 0 9 0; #X connect 9 0 10 0; #X connect 10 0 11 0; #X connect 12 0 13 0; #X connect 13 0 14 0; #X connect 17 0 3 1; #X connect 19 0 20 0; #X connect 20 0 0 1; #X connect 20 0 31 1; #X connect 21 0 23 0; #X connect 22 0 23 1; #X connect 23 0 19 0; #X connect 24 0 0 0; #X connect 31 0 24 1; #X connect 31 1 34 0; #X connect 32 0 31 0; #X connect 36 0 0 0; #X restore 232 183 pd tableIndexer; #X obj 374 377 -~ 0.25; #X obj 232 460 *~; #X obj 399 277 -~; #X obj 232 490 hip~ 5; #X obj 373 328 /~ 4000; #X obj 374 353 clip~ 0 0.25; #X obj 68 194 f -1; #X obj 114 194 * -1; #X obj 68 223 sel -1 1; #X msg 34 259 set buffer0; #X msg 133 259 set buffer1; #X obj 231 356 tabread4~ buffer1; #X text 328 14 play control 0/1; #X obj 261 84 bang~; #X obj 261 142 spigot 0, f 10; #X text 466 14 loopLengthInSamples; #X obj 470 39 inlet; #X obj 470 63 sig~; #X obj 261 112 spigot 0; #X text 563 329 bang @ start of sweep; #X text 420 403 fade loop beginnings and endings; #X connect 1 0 23 1; #X connect 3 0 8 0; #X connect 5 0 15 0; #X connect 5 0 8 0; #X connect 6 0 13 0; #X connect 7 0 10 1; #X connect 8 0 11 1; #X connect 8 0 20 0; #X connect 8 0 6 0; #X connect 8 1 2 0; #X connect 9 0 7 0; #X connect 10 0 12 0; #X connect 11 0 6 1; #X connect 12 0 0 0; #X connect 13 0 14 0; #X connect 14 0 9 0; #X connect 15 0 16 0; #X connect 15 0 17 0; #X connect 16 0 15 1; #X connect 17 0 18 0; #X connect 17 1 19 0; #X connect 18 0 20 0; #X connect 19 0 20 0; #X connect 20 0 10 0; #X connect 22 0 27 0; #X connect 23 0 8 1; #X connect 25 0 26 0; #X connect 25 0 27 1; #X connect 26 0 8 2; #X connect 26 0 11 0; #X connect 27 0 23 0; #X restore 226 260 pd playback; #X obj 181 331 dac~; #X obj 238 232 tgl 19 0 empty empty empty 0 -10 0 12 #fcfcfc #000000 #000000 0 1; #X obj 300 233 r loopLengthInSamples; #X obj 401 50 array define buffer0 1.323e+06; #X obj 401 79 array define buffer1 1.323e+06; #X text 403 22 30 second buffers; #X msg 214 46 2; #X obj 214 22 r swapBuffers; #X obj 306 289 bng 19 250 50 0 empty empty empty 0 -10 0 12 #fcfcfc #000000 #000000; #X obj 106 93 vsl 19 162 0.001 1 1 1 empty empty input\ vol 0 -9 0 12 #fcfcfc #000000 #000000 16100 1; #X floatatom 106 263 5 0 0 0 - - - 0; #X msg 320 326 clear; #X msg 326 351 record; #X msg 334 377 stop; #X obj 263 205 r playback; #X floatatom 320 260 10 0 0 0 - - - 0; #X text 372 325 prepare for new loop; #X text 384 351 start recording/overdubbing; #X text 384 377 stop recording/overdubbing; #X connect 1 0 2 0; #X connect 2 0 0 0; #X connect 3 0 4 0; #X connect 3 0 7 0; #X connect 5 0 6 0; #X connect 6 0 3 0; #X connect 7 0 0 0; #X connect 7 0 8 0; #X connect 7 0 8 1; #X connect 7 1 0 1; #X connect 7 1 16 0; #X connect 10 0 7 2; #X connect 10 0 23 0; #X connect 14 0 5 0; #X connect 15 0 14 0; #X connect 17 0 18 0; #X connect 18 0 2 1; #X connect 19 0 0 2; #X connect 20 0 0 2; #X connect 21 0 0 2; #X connect 22 0 9 0; #X connect 22 0 7 1;