#N canvas 352 42 785 787 10; #X obj 8 174 soundfiler; #X msg 8 152 read -resize \$1 \$2; #X obj 8 30 openpanel; #X obj 80 81 \$0; #X msg 80 102 symbol \$1.sample; #X obj 8 124 list append; #X obj 8 50 t a b; #X obj 340 97 hsl 300 15 0 1 0 0 empty empty start 4 8 0 10 -24198 -1 -1 8400 1; #X obj 340 120 hsl 300 15 0 1 0 0 empty empty end 4 8 0 10 -24198 -1 -1 10500 1; #X obj 8 196 s \$0.samplelength; #X obj 315 32 r \$0.samplelength; #X obj 315 54 t b a; #X obj 298 80 *; #X obj 356 141 r \$0.samplelength; #X obj 356 163 t b a; #X obj 337 184 *; #X obj 298 239 pack f f; #X obj 337 206 t b a; #X obj 275 266 list; #X obj 188 223 r \$0.startloop; #X obj 8 7 bng 15 250 50 0 empty empty load_sample 17 7 0 10 -24198 -1 -1; #X obj 305 313 -; #X obj 305 334 abs; #N canvas 174 228 242 210 samples2ms 0; #X obj 62 40 inlet; #X obj 62 148 outlet; #X obj 128 36 loadbang; #X obj 128 57 samplerate~; #X obj 128 83 / 1000; #X obj 62 111 /; #X connect 0 0 5 0; #X connect 2 0 3 0; #X connect 3 0 4 0; #X connect 4 0 5 1; #X connect 5 0 1 0; #X restore 305 356 pd samples2ms; #X obj 275 402 list append; #X msg 275 569 \$1 \, \$2 \$3; #X obj 275 630 vline~; #X obj 274 654 tabread4~ \$0.sample; #X obj 275 545 t a a; #X obj 488 653 del; #X msg 488 601 \$3; #X text 535 625 <-prevents loops; #X obj 488 674 s \$0.startloop; #X obj 13 236 bng 15 250 50 0 empty empty loop_start 17 7 0 10 -24198 -1 -1; #X obj 14 303 bng 15 250 50 0 empty empty loop_stop 17 7 0 10 -24198 -1 -1; #X obj 13 258 s \$0.startloop; #X obj 400 515 r \$0.stoploop; #X msg 400 540 stop; #X obj 14 325 s \$0.stoploop; #X obj 40 709 osc~ 60; #X obj 18 758 tabwrite~ \$0.sample; #X obj 275 290 t a a; #X obj 420 300 hsl 128 15 0.1 10 1 0 empty empty speed 4 8 0 10 -24198 -1 -1 5650 1; #X floatatom 448 315 5 0 0 0 - - -; #X msg 417 279 1; #X msg 417 332 1 \$1; #X obj 417 352 /; #X obj 275 449 t a a; #X obj 275 424 list append; #N canvas 382 90 135 162 apply_speed 0; #X obj 5 13 inlet; #X obj 5 103 outlet; #X obj 5 36 unpack f f f f; #X obj 5 81 pack f f f; #X obj 67 59 *; #X connect 0 0 2 0; #X connect 2 0 3 0; #X connect 2 1 3 1; #X connect 2 2 4 0; #X connect 2 3 4 1; #X connect 3 0 1 0; #X connect 4 0 3 2; #X restore 275 514 pd apply_speed; #N canvas 864 36 455 527 find_ramp_value 0; #X obj 41 34 inlet; #X obj 41 489 outlet; #X msg 226 128 \$4; #X obj 91 302 *; #N canvas 174 228 238 206 ms2samples 0; #X obj 62 40 inlet; #X obj 62 148 outlet; #X obj 128 36 loadbang; #X obj 128 57 samplerate~; #X obj 128 83 / 1000; #X obj 62 111 *; #X connect 0 0 5 0; #X connect 2 0 3 0; #X connect 3 0 4 0; #X connect 4 0 5 1; #X connect 5 0 1 0; #X restore 91 326 pd ms2samples; #X msg 41 86 \$1; #X obj 41 363 +; #X obj 41 452 -; #X obj 41 430 tabread4 \$0.sample; #X obj 74 398 tabread4 \$0.sample; #X msg 226 198 1 \$1; #X obj 226 220 /; #X obj 226 150 t f b; #X obj 226 175 f; #X obj 41 117 t f b; #X obj 41 142 f; #X text 182 435 <- last sample of previous cycle; #X msg 74 373 \$1; #X text 212 399 <- first sample of current cycle; #X obj 41 59 t a a a b b a a; #X obj 124 126 list split 2; #X obj 124 148 -; #X obj 124 191 abs; #X obj 124 170 t a a; #X obj 124 213 /; #X obj 124 234 * -1; #X obj 91 271 *; #N canvas 0 0 826 380 timer_hack 0; #X obj 280 214 timer; #X obj 210 10 inlet; #X obj 280 186 t b b; #X obj 46 319 outlet; #X text 362 46 the problem:; #X text 359 74 if the loop-player is stopped \, the [timer] still happily measures time \, which means \, that we get totally wrong positions for last sample of previous cycle. that is why we need a hack to store the time at stopping the loop player \, which is used for generating the ramp as soon as the player is started again.; #X obj 90 11 r \$0.stoploop; #X obj 90 237 f; #X obj 210 144 t b b; #X obj 210 249 f; #X obj 90 162 t b b; #X obj 46 266 f; #X obj 90 39 t b b; #X obj 247 83 0; #X obj 100 80 1; #X obj 46 124 t b b; #X obj 129 79 0; #X obj 220 83 1; #X obj 210 105 spigot; #X obj 46 103 spigot 1; #X connect 0 0 9 1; #X connect 0 0 7 1; #X connect 1 0 18 0; #X connect 1 0 19 0; #X connect 2 0 0 0; #X connect 2 1 0 1; #X connect 6 0 12 0; #X connect 7 0 11 1; #X connect 8 0 9 0; #X connect 8 1 2 0; #X connect 9 0 3 0; #X connect 10 0 7 0; #X connect 10 1 2 0; #X connect 11 0 3 0; #X connect 12 0 10 0; #X connect 12 1 14 0; #X connect 12 1 13 0; #X connect 13 0 18 1; #X connect 14 0 19 1; #X connect 15 0 11 0; #X connect 15 1 16 0; #X connect 15 1 17 0; #X connect 15 1 2 0; #X connect 16 0 19 1; #X connect 17 0 18 1; #X connect 18 0 8 0; #X connect 19 0 15 0; #X restore 91 93 pd timer_hack; #X connect 0 0 19 0; #X connect 2 0 12 0; #X connect 3 0 4 0; #X connect 4 0 6 1; #X connect 5 0 14 0; #X connect 6 0 8 0; #X connect 7 0 1 0; #X connect 8 0 7 0; #X connect 9 0 7 1; #X connect 10 0 11 0; #X connect 11 0 3 1; #X connect 12 0 13 1; #X connect 12 1 13 0; #X connect 13 0 10 0; #X connect 14 0 15 1; #X connect 14 1 15 0; #X connect 15 0 6 0; #X connect 17 0 9 0; #X connect 19 0 5 0; #X connect 19 2 17 0; #X connect 19 3 27 0; #X connect 19 5 20 0; #X connect 19 6 2 0; #X connect 20 0 21 0; #X connect 21 0 23 0; #X connect 22 0 24 0; #X connect 23 0 22 0; #X connect 23 1 24 1; #X connect 24 0 25 0; #X connect 25 0 26 1; #X connect 26 0 3 0; #X connect 27 0 26 0; #X restore 551 492 pd find_ramp_value; #X msg 551 518 \$1 \, 0 20; #X obj 551 543 vline~; #X obj 398 705 +~; #X obj 551 470 spigot; #X obj 588 448 tgl 15 0 empty empty smoothing_on/off 17 7 0 10 -24198 -1 -1 1 1; #X obj 417 255 loadbang; #X obj 588 423 loadbang; #X msg 252 147 1; #X obj 252 126 loadbang; #X obj 17 385 table \$0.sample 44100; #X obj 18 628 loadbang; #X msg 68 658 44100; #X obj 68 683 s \$0.samplelength; #X text 21 603 load 60 Hz sine wave as testsample; #X obj 41 732 *~ 0.5; #X obj 488 625 max 1; #X obj 398 758 dac~ 1 2; #X connect 0 0 9 0; #X connect 1 0 0 0; #X connect 2 0 6 0; #X connect 3 0 4 0; #X connect 4 0 5 1; #X connect 5 0 1 0; #X connect 6 0 5 0; #X connect 6 1 3 0; #X connect 7 0 12 0; #X connect 8 0 15 0; #X connect 10 0 11 0; #X connect 11 0 12 0; #X connect 11 1 12 1; #X connect 12 0 16 0; #X connect 13 0 14 0; #X connect 14 0 15 0; #X connect 14 1 15 1; #X connect 15 0 17 0; #X connect 16 0 18 1; #X connect 17 0 16 0; #X connect 17 1 16 1; #X connect 18 0 41 0; #X connect 19 0 18 0; #X connect 20 0 2 0; #X connect 21 0 22 0; #X connect 22 0 23 0; #X connect 23 0 24 1; #X connect 24 0 48 0; #X connect 25 0 26 0; #X connect 26 0 27 0; #X connect 27 0 53 0; #X connect 28 0 25 0; #X connect 28 1 30 0; #X connect 29 0 32 0; #X connect 30 0 66 0; #X connect 33 0 35 0; #X connect 34 0 38 0; #X connect 36 0 37 0; #X connect 37 0 29 0; #X connect 37 0 26 0; #X connect 39 0 65 0; #X connect 41 0 24 0; #X connect 41 1 21 0; #X connect 42 0 43 0; #X connect 42 0 45 0; #X connect 44 0 42 0; #X connect 45 0 46 0; #X connect 46 0 48 1; #X connect 47 0 49 0; #X connect 47 1 54 0; #X connect 48 0 47 0; #X connect 49 0 28 0; #X connect 50 0 51 0; #X connect 51 0 52 0; #X connect 52 0 53 1; #X connect 53 0 67 0; #X connect 53 0 67 1; #X connect 54 0 50 0; #X connect 55 0 54 1; #X connect 56 0 44 0; #X connect 57 0 55 0; #X connect 58 0 8 0; #X connect 59 0 58 0; #X connect 61 0 62 0; #X connect 61 0 40 0; #X connect 62 0 63 0; #X connect 65 0 40 0; #X connect 66 0 29 0;