#N canvas 353 576 690 486 12; #N canvas 1037 69 1262 776 record 0; #X obj 260 51 inlet~; #X obj 318 51 inlet; #X obj 680 258 s swapBuffers; #X obj 260 437 tabwrite~ buffer0; #X obj 69 236 r swapBuffers; #X obj 115 266 * -1; #X obj 69 295 sel -1 1; #X msg 35 331 set buffer0; #X msg 134 331 set buffer1; #X obj 69 266 f 1; #X obj 543 47 inlet; #X obj 147 610 timer; #X obj 543 71 route clear record stop; #X msg 543 609 0; #X obj 553 645 s playback; #X obj 543 672 s \$0-state; #X obj 690 375 r \$0-state; #X obj 743 85 r \$0-state; #X obj 595 430 route 0 1; #X obj 595 403 list prepend 0; #X obj 648 115 list prepend 0; #X obj 147 554 r \$0-resetTimer; #X obj 595 575 s \$0-resetTimer; #X obj 285 405 r \$0-startNewRecording; #X obj 526 699 s \$0-newOverdubFlag; #X msg 625 459 1; #X obj 625 514 s \$0-newOverdubFlag; #X obj 648 141 route 0 1; #X obj 147 638 * 44.1; #X obj 147 666 s loopLengthInSamples; #X msg 648 286 1; #X obj 655 313 s playback; #X obj 644 339 s \$0-state; #X obj 318 75 t b b; #X obj 318 374 s \$0-resetTimer; #X obj 350 113 spigot; #X floatatom 764 115 5 0 0 0 - - - 0; #X floatatom 409 114 5 0 0 0 - - - 0; #X obj 389 83 r \$0-newOverdubFlag; #X text 859 31 state 0: new loop; #X text 859 49 state 1: overdub; #X obj 634 487 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 209 5 0 0 0 - - - 0; #X obj 368 178 r \$0-overdubbing; #X obj 368 145 s swapBuffers; #X obj 350 208 f; #X obj 350 235 s \$0-newOverdubFlag; #X obj 648 232 t b b; #X obj 606 548 s \$0-startNewRecording; #X text 318 27 bang to sync recording; #X obj 179 580 r swapBuffers; #X text 258 28 loop; #X obj 201 52 inlet~; #X text 198 28 input; #X obj 184 181 *~; #X obj 108 81 r \$0-unmute; #X obj 453 345 s \$0-unmute; #X msg 471 307 1; #X msg 508 307 0; #X obj 108 132 line~; #X msg 108 107 \$1 10; #X obj 502 725 s \$0-overdubbing; #X connect 0 0 3 0; #X connect 1 0 33 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 28 0; #X connect 12 0 13 0; #X connect 12 1 19 0; #X connect 12 1 61 0; #X connect 12 2 20 0; #X connect 12 2 62 0; #X connect 13 0 14 0; #X connect 13 0 15 0; #X connect 13 0 24 0; #X connect 13 0 65 0; #X connect 16 0 19 1; #X connect 17 0 20 1; #X connect 17 0 36 0; #X connect 18 0 22 0; #X connect 18 0 52 0; #X connect 18 1 25 0; #X connect 19 0 18 0; #X connect 20 0 27 0; #X connect 21 0 11 0; #X connect 23 0 3 0; #X connect 25 0 26 0; #X connect 25 0 41 0; #X connect 27 0 51 0; #X connect 27 1 43 0; #X connect 28 0 29 0; #X connect 30 0 31 0; #X connect 30 0 32 0; #X connect 33 0 3 0; #X connect 33 0 34 0; #X connect 33 1 35 0; #X connect 35 0 48 0; #X connect 35 0 49 0; #X connect 38 0 35 1; #X connect 38 0 37 0; #X connect 43 0 42 0; #X connect 47 0 46 0; #X connect 47 0 49 1; #X connect 49 0 50 0; #X connect 51 0 30 0; #X connect 51 1 2 0; #X connect 54 0 11 1; #X connect 56 0 58 1; #X connect 58 0 3 0; #X connect 59 0 64 0; #X connect 61 0 60 0; #X connect 62 0 60 0; #X connect 63 0 58 0; #X connect 64 0 63 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 282 34 761 614 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 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 obj 470 92 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 obj 470 37 r loopLengthInSamples; #X floatatom 484 64 10 0 0 0 - - - 0; #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 25 0; #X connect 23 0 8 1; #X connect 24 0 8 2; #X connect 24 0 11 0; #X connect 25 0 23 0; #X connect 28 0 29 0; #X connect 28 0 25 1; #X connect 28 0 24 0; #X restore 226 241 pd playback; #X obj 181 331 dac~; #X obj 314 241 tgl 19 0 empty empty empty 0 -10 0 12 #fcfcfc #000000 #000000 0 1; #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 314 270 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 300 210 r playback; #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 1; #X connect 7 0 8 0; #X connect 7 0 8 1; #X connect 7 1 0 2; #X connect 7 1 15 0; #X connect 13 0 5 0; #X connect 14 0 13 0; #X connect 16 0 17 0; #X connect 17 0 2 1; #X connect 18 0 0 3; #X connect 19 0 0 3; #X connect 20 0 0 3; #X connect 21 0 9 0; #X connect 21 0 7 1;