#N struct 1560template float x float y array 1560arrayvals 1560arraytemplate ; #N struct 1560arraytemplate float x float y; #N struct 1560template-marker float pos; #N canvas 266 17 721 668 10; #N canvas 0 16 1001 677 1560data 0; #X scalar 1560template 0 0 \; 3 3 \; \;; #X coords 0 0 198 86 198 86 1; #X restore 4 18 pd \$0data; #N canvas 49 352 599 314 1560template 0; #X obj 17 51 struct \$0template float x float y array \$0arrayvals \$0arraytemplate; #X obj 17 86 outlet; #X obj 17 17 plot -x x(3:195)(3:195) -y y(3:83)(3:83) \$0arrayvals 333 1 0 0 0; #X connect 0 0 1 0; #X restore 236 36 pd \$0template; #N canvas 435 201 450 300 1560arraytemplate 0; #X obj 24 43 struct \$0arraytemplate float x float y; #X obj 24 87 filledpolygon 333 333 1 -2 -2 2 -2 2 2 -2 2 -2 -2; #X obj 24 65 print; #X connect 0 0 2 0; #X restore 236 13 pd \$0arraytemplate; #N canvas 55 191 881 464 initarray 0; #X obj 163 211 pointer; #X msg 133 47 bang; #X text 186 35 click here to re-initialize; #X obj 163 96 \$0; #X msg 163 188 traverse \$1 \, bang; #X obj 163 119 makefilename pd-%ddata; #X obj 35 251 append \$0template x; #X msg 35 219 0; #X obj 133 12 loadbang; #X obj 68 114 outlet; #X obj 163 140 t s s; #X msg 300 176 \; \$1 clear \;; #X obj 601 134 \$0; #X obj 601 178 t s s; #X msg 631 202 \; \$1 clear \;; #X obj 133 72 t b b b b; #X obj 601 157 makefilename pd-%ddata-marker; #X obj 601 262 pointer; #X msg 601 239 traverse \$1 \, bang; #X msg 410 254 0; #X obj 571 113 t b b; #X text 515 88 Initialise the marker; #X obj 410 286 append \$0template-marker pos; #X connect 0 0 6 1; #X connect 1 0 15 0; #X connect 3 0 5 0; #X connect 4 0 0 0; #X connect 5 0 10 0; #X connect 7 0 6 0; #X connect 8 0 1 0; #X connect 10 0 4 0; #X connect 10 1 11 0; #X connect 12 0 16 0; #X connect 13 0 18 0; #X connect 13 1 14 0; #X connect 15 0 9 0; #X connect 15 1 7 0; #X connect 15 2 3 0; #X connect 15 3 20 0; #X connect 16 0 13 0; #X connect 17 0 22 1; #X connect 18 0 17 0; #X connect 19 0 22 0; #X connect 20 0 19 0; #X connect 20 1 12 0; #X restore 415 174 pd initarray; #X obj 236 58 print; #X obj 415 316 pointer; #X obj 453 387 setsize \$0template \$0arrayvals; #X msg 415 293 traverse \$1 \, next; #X obj 415 249 \$0; #X obj 415 272 makefilename pd-%ddata; #X msg 415 198 bang; #X obj 415 225 delay 10; #X obj 9 248 inlet; #X obj 357 592 outlet~; #X obj 415 543 t p p; #X obj 453 363 1; #N canvas 188 19 774 666 envgen 0; #X obj 102 279 element \$0template \$0arrayvals; #X obj 102 322 get \$0arraytemplate x y; #X obj 102 580 f; #X obj 102 560 t b f; #X obj 102 372 - 3; #X obj 102 464 t f f; #X obj 102 514 -; #X obj 242 471 expr 1 - $f1; #X obj 131 183 getsize \$0template \$0arrayvals; #X obj 307 254 inlet; #X obj 102 646 outlet~; #X obj 131 161 pointer; #X msg 131 138 traverse \$1 \, next; #X obj 131 94 \$0; #X obj 131 117 makefilename pd-%ddata; #X obj 242 421 - 3; #X obj 357 366 set \$0arraytemplate x y; #X text 473 334 redraw; #X obj 102 300 t p p; #X obj 242 449 / 80; #X obj 102 392 / 192; #X obj 118 412 r \$0/length; #X obj 102 433 * 1; #X obj 102 624 vline~; #X obj 102 602 pack f f f; #X obj 131 204 until; #X obj 136 233 + 1; #X obj 102 233 f; #X msg 102 94 0; #X obj 258 495 r \$0/height; #X obj 242 516 * 1; #N canvas 448 209 450 300 1560markerdraw 0; #X obj 6 9 inlet; #X obj 6 102 pointer; #X msg 6 79 traverse \$1 \, next; #X obj 6 35 \$0; #X obj 6 58 makefilename pd-%ddata-marker; #X obj 6 144 get \$0template-marker pos; #X obj 6 169 set \$0template-marker pos; #X obj 6 123 t p p; #X connect 0 0 3 0; #X connect 1 0 7 0; #X connect 2 0 1 0; #X connect 3 0 4 0; #X connect 4 0 2 0; #X connect 5 0 6 0; #X connect 7 0 5 0; #X connect 7 1 6 1; #X restore 132 48 pd \$0markerdraw; #X obj 102 27 t b b; #N canvas 0 0 450 300 1560getpos 0; #X obj 52 104 pointer; #X msg 52 81 traverse \$1 \, next; #X obj 52 37 \$0; #X obj 52 60 makefilename pd-%ddata-marker; #X obj 52 125 get \$0template-marker pos; #X obj 52 14 inlet; #X obj 52 147 outlet; #X connect 0 0 4 0; #X connect 1 0 0 0; #X connect 2 0 3 0; #X connect 3 0 1 0; #X connect 4 0 6 0; #X connect 5 0 2 0; #X restore 412 506 pd \$0getpos; #X obj 412 464 r \$0/startend; #X obj 102 6 r \$0/go; #X obj 412 527 s \$0/start; #X text 411 441 Calculate where the section should start from; #X msg 156 446 0; #N canvas 150 277 660 333 1560filtermarker 0; #X obj 6 4 inlet; #X obj 6 279 outlet; #X obj 6 74 moses; #X obj 36 52 r \$0/start; #X obj 6 124 spigot; #X obj 60 165 -; #X obj 60 124 spigot; #X obj 396 277 outlet; #X obj 6 219 t f b; #X obj 97 75 r \$0/startend; #X obj 76 145 r \$0/start; #X obj 97 101 expr 1 - $f1; #X obj 460 8 inlet before; #X obj 396 256 f; #N canvas 208 0 779 669 find-marker 0; #X obj 7 7 inlet; #X obj 668 7 inlet; #X obj 643 642 outlet; #X obj 6 648 outlet; #X obj 42 160 f; #X obj 304 12 inlet; #X msg 304 33 0; #X obj 58 211 r \$0/start; #X obj 21 106 t f f b; #X obj 37 259 r \$0/start; #X obj 46 324 &&; #X obj 46 350 sel 1; #X obj 92 351 r \$0/start; #X obj 71 421 f; #X obj 631 81 t f f b; #X obj 642 127 f; #X obj 42 232 <; #X obj 21 281 >=; #X obj 59 491 t f b; #X obj 248 343 -; #X obj 492 247 -; #X obj 481 556 *; #X obj 494 581 +; #X obj 180 484 -; #X obj 42 182 t f f f; #X obj 21 126 t f f f; #X obj 228 505 /; #X obj 479 607 f; #X obj 83 446 t f f f; #X connect 0 0 8 0; #X connect 1 0 14 0; #X connect 4 0 24 0; #X connect 5 0 6 0; #X connect 6 0 4 1; #X connect 6 0 15 1; #X connect 7 0 16 1; #X connect 8 0 25 0; #X connect 8 1 4 1; #X connect 8 2 4 0; #X connect 9 0 17 1; #X connect 10 0 11 0; #X connect 11 0 13 0; #X connect 12 0 13 1; #X connect 13 0 28 0; #X connect 14 0 20 0; #X connect 14 1 15 1; #X connect 14 2 15 0; #X connect 15 0 20 1; #X connect 15 0 22 1; #X connect 16 0 10 1; #X connect 17 0 10 0; #X connect 18 0 3 0; #X connect 18 1 27 0; #X connect 19 0 26 1; #X connect 20 0 21 1; #X connect 21 0 22 0; #X connect 22 0 27 1; #X connect 23 0 26 0; #X connect 24 0 16 0; #X connect 24 1 23 1; #X connect 24 2 19 1; #X connect 25 0 17 0; #X connect 25 1 19 0; #X connect 26 0 21 0; #X connect 27 0 2 0; #X connect 28 0 18 0; #X connect 28 1 23 0; #X restore 262 80 pd find-marker; #X obj 275 13 inlet reset; #X obj 6 27 t f f; #X obj 438 48 t f f; #X obj 60 188 + 3; #X obj 217 156 spigot; #X obj 271 197 -; #X obj 271 156 spigot; #X obj 217 251 t f b; #X obj 308 107 r \$0/startend; #X obj 287 177 r \$0/start; #X obj 308 133 expr 1 - $f1; #X obj 271 220 + 3; #X obj 248 272 f; #X connect 0 0 16 0; #X connect 2 0 4 0; #X connect 2 1 6 0; #X connect 3 0 2 1; #X connect 4 0 8 0; #X connect 5 0 18 0; #X connect 6 0 5 0; #X connect 8 0 1 0; #X connect 8 1 13 0; #X connect 9 0 11 0; #X connect 9 0 4 1; #X connect 10 0 5 1; #X connect 11 0 6 1; #X connect 12 0 17 0; #X connect 13 0 7 0; #X connect 14 0 19 0; #X connect 14 0 21 0; #X connect 14 1 27 1; #X connect 15 0 14 1; #X connect 16 0 2 0; #X connect 16 1 14 0; #X connect 17 0 14 2; #X connect 17 1 13 1; #X connect 18 0 8 0; #X connect 19 0 22 0; #X connect 20 0 26 0; #X connect 21 0 20 0; #X connect 22 0 1 0; #X connect 22 1 27 0; #X connect 23 0 25 0; #X connect 23 0 19 1; #X connect 24 0 20 1; #X connect 25 0 21 1; #X connect 26 0 22 0; #X connect 27 0 7 0; #X restore 102 348 pd \$0filtermarker; #X msg 412 485 bang; #X obj 102 68 t b b b b b; #X obj 147 516 f; #X obj 132 485 t f f b; #X connect 0 0 18 0; #X connect 1 0 16 0; #X connect 1 0 39 0; #X connect 1 1 16 1; #X connect 1 1 39 2; #X connect 2 0 24 0; #X connect 3 0 2 0; #X connect 3 1 24 1; #X connect 4 0 20 0; #X connect 5 0 6 1; #X connect 5 1 43 0; #X connect 6 0 3 0; #X connect 7 0 30 0; #X connect 8 0 25 0; #X connect 9 0 0 1; #X connect 11 0 8 0; #X connect 12 0 11 0; #X connect 13 0 14 0; #X connect 14 0 12 0; #X connect 15 0 19 0; #X connect 18 0 1 0; #X connect 18 1 16 2; #X connect 19 0 7 0; #X connect 20 0 22 0; #X connect 21 0 22 1; #X connect 22 0 5 0; #X connect 23 0 10 0; #X connect 24 0 23 0; #X connect 25 0 27 0; #X connect 26 0 27 1; #X connect 27 0 26 0; #X connect 27 0 0 0; #X connect 28 0 27 1; #X connect 29 0 30 1; #X connect 30 0 2 1; #X connect 32 0 41 0; #X connect 32 1 31 0; #X connect 33 0 36 0; #X connect 34 0 40 0; #X connect 35 0 32 0; #X connect 38 0 6 1; #X connect 38 0 42 1; #X connect 39 0 4 0; #X connect 39 1 15 0; #X connect 40 0 33 0; #X connect 41 1 13 0; #X connect 41 2 28 0; #X connect 41 3 38 0; #X connect 41 4 39 1; #X connect 42 0 24 2; #X connect 43 0 6 0; #X connect 43 1 42 1; #X connect 43 2 42 0; #X restore 357 568 pd envgen; #X obj 306 490 set \$0arraytemplate x y; #X obj 462 462 element \$0template \$0arrayvals; #X msg 384 463 3; #X msg 306 464 3; #X obj 434 416 t b b b p; #X msg 462 440 0; #X obj 415 340 t p p b p; #N canvas 212 221 696 446 save 0; #X obj 57 11 r SSSAD_SAVE; #X obj 74 239 element \$0template \$0arrayvals; #X obj 74 260 get \$0arraytemplate x y; #X obj 74 217 f; #X obj 102 217 + 1; #X obj 74 286 list append; #X obj 74 194 until; #X msg 111 172 0; #X obj 53 333 list prepend; #X obj 146 333 t l; #X obj 30 362 list; #X obj 57 36 t b b b b; #X obj 279 217 inlet; #X obj 72 127 pointer; #X msg 72 104 traverse \$1 \, next; #X obj 72 60 \$0; #X obj 72 83 makefilename pd-%ddata; #X obj 72 148 getsize \$0template \$0arrayvals; #X obj 7 415 outlet; #X obj 7 394 sssad/sssad \$1/envelope; #X obj 410 223 sssad/sssad \$1/pos; #X obj 410 243 outlet; #X obj 531 202 list; #X obj 400 111 pointer; #X msg 400 88 traverse \$1 \, next; #X obj 400 44 \$0; #X obj 400 67 makefilename pd-%ddata-marker; #X obj 400 132 get \$0template-marker pos; #X obj 400 22 r SSSAD_SAVE; #X connect 0 0 11 0; #X connect 1 0 2 0; #X connect 2 0 5 0; #X connect 2 1 5 1; #X connect 3 0 4 0; #X connect 3 0 1 0; #X connect 4 0 3 1; #X connect 5 0 8 0; #X connect 6 0 3 0; #X connect 7 0 3 1; #X connect 8 0 9 0; #X connect 8 0 10 1; #X connect 9 0 8 1; #X connect 10 0 19 1; #X connect 11 0 10 0; #X connect 11 1 15 0; #X connect 11 2 7 0; #X connect 11 3 8 1; #X connect 12 0 1 1; #X connect 13 0 17 0; #X connect 14 0 13 0; #X connect 15 0 16 0; #X connect 16 0 14 0; #X connect 17 0 6 0; #X connect 19 0 18 0; #X connect 20 0 21 0; #X connect 22 0 20 1; #X connect 23 0 27 0; #X connect 24 0 23 0; #X connect 25 0 26 0; #X connect 26 0 24 0; #X connect 27 0 22 0; #X connect 28 0 25 0; #X restore 445 568 pd save; #N canvas 64 35 912 649 load 0; #X obj 21 6 inlet; #X obj 21 65 until; #X obj 21 103 list append; #X obj 120 148 bang; #X obj 21 148 list split 2; #X obj 21 229 list split 1; #X obj 361 235 pointer; #X obj 156 305 setsize \$0template \$0arrayvals; #X msg 361 212 traverse \$1 \, next; #X obj 361 168 \$0; #X obj 361 191 makefilename pd-%ddata; #X msg 172 126 0; #X obj 156 232 f; #X obj 185 232 + 1; #X obj 49 174 t l b; #X obj 21 32 t b l b b; #X obj 183 342 element \$0template \$0arrayvals; #X obj 27 389 set \$0arraytemplate x y; #X obj 156 258 t f f; #X obj 186 281 + 1; #X obj 629 10 inlet; #X obj 659 121 pointer; #X msg 659 98 traverse \$1 \, next; #X obj 659 54 \$0; #X obj 629 31 t f b; #X obj 659 77 makefilename pd-%ddata-marker; #X obj 629 168 set \$0template-marker pos; #X connect 0 0 15 0; #X connect 1 0 2 0; #X connect 2 0 4 0; #X connect 3 0 1 1; #X connect 4 0 14 0; #X connect 4 1 2 1; #X connect 4 2 3 0; #X connect 5 0 17 0; #X connect 5 1 17 1; #X connect 6 0 7 1; #X connect 6 0 16 1; #X connect 8 0 6 0; #X connect 9 0 10 0; #X connect 10 0 8 0; #X connect 11 0 12 1; #X connect 12 0 13 0; #X connect 12 0 18 0; #X connect 13 0 12 1; #X connect 14 0 5 0; #X connect 14 1 12 0; #X connect 15 0 1 0; #X connect 15 1 2 1; #X connect 15 2 11 0; #X connect 15 3 9 0; #X connect 16 0 17 2; #X connect 18 0 16 0; #X connect 18 1 19 0; #X connect 19 0 7 0; #X connect 20 0 24 0; #X connect 21 0 26 1; #X connect 22 0 21 0; #X connect 23 0 25 0; #X connect 24 0 26 0; #X connect 24 1 23 0; #X connect 25 0 22 0; #X restore 445 592 pd load; #X text 414 7 args: [name]; #X obj 157 2 nbx 5 14 1 99999 0 0 \$0/length \$1/length length -38 8 0 8 -260818 -1 -1 1 256; #X obj 416 63 sssad/auto \$0/length \$1/length; #N canvas 371 325 450 300 1560template-marker 0; #X obj 9 81 outlet; #X obj 9 59 struct \$0template-marker float pos; #X obj 9 38 drawpolygon 4095 1 pos(3:195)(3:195) 1 pos(3:195)(3:195) 86; #X obj 9 17 drawpolygon 4095 5 pos(3:195)(3:195) 1 pos(3:195)(3:195) 6; #X connect 1 0 0 0; #X restore 237 90 pd \$0template-marker; #X obj 237 111 print; #N canvas 0 0 450 300 1560data-marker 0; #X scalar 1560template-marker 0 \;; #X coords 0 0 198 86 198 86 1; #X restore 4 18 pd \$0data-marker; #X obj 5 19 cnv 15 196 84 empty empty empty 20 12 0 14 -260818 -66577 0; #X obj 9 278 unpack f f; #X text 6 188 This guy takes midi note pairs.; #X text 6 204 The output will be scaled by the volume.; #X obj 74 305 sel 0; #X obj 17 345 \$0; #X obj 127 371 pack f f; #X obj 127 329 t b f; #X obj 127 350 \$0; #X msg 127 391 \; \$1/height \$2 \; \$1/startend 1 \; \$1/go bang \; ; #X msg 17 368 \; \$1/startend 0 \; \$1/go bang \;; #X text 7 219 Note on plays up to the marker. Note off plays the rest. ; #X obj 502 568 r \$1/pos; #X connect 1 0 4 0; #X connect 3 0 10 0; #X connect 5 0 23 0; #X connect 7 0 5 0; #X connect 8 0 9 0; #X connect 9 0 7 0; #X connect 10 0 11 0; #X connect 11 0 8 0; #X connect 12 0 33 0; #X connect 14 0 16 0; #X connect 14 1 24 0; #X connect 15 0 6 0; #X connect 16 0 13 0; #X connect 18 0 17 2; #X connect 19 0 17 1; #X connect 20 0 17 0; #X connect 21 0 20 0; #X connect 21 1 19 0; #X connect 21 2 22 0; #X connect 21 3 18 1; #X connect 22 0 18 0; #X connect 23 0 14 0; #X connect 23 1 21 0; #X connect 23 2 15 0; #X connect 23 3 6 1; #X connect 24 0 25 0; #X connect 24 1 25 1; #X connect 29 0 30 0; #X connect 33 1 36 0; #X connect 36 0 37 0; #X connect 36 1 39 0; #X connect 37 0 42 0; #X connect 38 0 41 0; #X connect 39 0 40 0; #X connect 39 1 38 1; #X connect 40 0 38 0; #X connect 44 0 25 1; #X coords 0 -1 1 1 206 108 1 0 0;