#N canvas 0 99 801 561 10; #X msg 536 105 clear; #X obj 206 22 loadbang; #X obj 206 45 \$0; #X obj 185 21 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #N canvas 103 103 401 394 create_horizgrid 0; #X obj 16 86 t a b; #X obj 16 109 until; #X obj 16 132 f; #X msg 54 110 0; #X obj 67 150 + 1; #X obj 16 62 f; #X obj 49 62 r \$0.pitchrange; #N canvas 0 99 387 189 x 0; #X obj 18 12 inlet; #X obj 18 97 +; #X obj 33 70 r \$0.canvasleftmargin; #X msg 18 46 0; #X obj 18 120 outlet; #X connect 0 0 3 0; #X connect 1 0 4 0; #X connect 2 0 1 1; #X connect 3 0 1 0; #X restore 16 260 pd x; #N canvas 0 99 405 280 y 0; #X obj 42 123 * 14; #X obj 42 199 +; #X obj 57 173 r \$0.canvastopmargin; #X obj 63 96 r \$0.stepvisheight; #X obj 42 35 inlet; #X obj 42 239 outlet; #X connect 0 0 1 0; #X connect 1 0 5 0; #X connect 2 0 1 1; #X connect 3 0 0 1; #X connect 4 0 0 0; #X restore 53 213 pd y; #N canvas 0 99 418 249 w 0; #X obj 16 17 inlet; #X obj 16 194 outlet; #X obj 16 103 f; #X obj 31 127 r \$0.stepviswidth; #X obj 16 155 *; #X obj 16 45 b; #X obj 31 77 r \$0.stepsperpage; #X connect 0 0 5 0; #X connect 2 0 4 0; #X connect 3 0 4 1; #X connect 4 0 1 0; #X connect 5 0 2 0; #X connect 6 0 2 1; #X restore 91 263 pd w; #N canvas 0 99 395 171 h 0; #X obj 23 14 inlet; #X obj 23 37 b; #X obj 23 110 f; #X obj 23 133 outlet; #X obj 38 65 r \$0.stepvisheight; #X obj 38 88 - 1; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 2 0 3 0; #X connect 4 0 5 0; #X connect 5 0 2 1; #X restore 135 265 pd h; #X obj 16 156 t a a; #N canvas 540 354 407 307 c 0; #X obj 20 106 mod 12; #X obj 20 130 sel 0 2 4 5 7 9 11; #X obj 125 152 b; #X obj 20 180 f 887; #X obj 125 227 f 777; #X obj 64 179 r \$0.stepkeycolor1; #X obj 132 202 r \$0.stepkeycolor2; #X obj 20 241 t a; #X obj 20 7 inlet; #X obj 20 268 outlet; #X obj 119 36 r \$0.pitchoffset; #X obj 20 30 pack f f; #X msg 20 53 \$2 \$1; #X obj 20 76 -; #X connect 0 0 1 0; #X connect 1 0 3 0; #X connect 1 1 3 0; #X connect 1 2 3 0; #X connect 1 3 3 0; #X connect 1 4 3 0; #X connect 1 5 3 0; #X connect 1 6 3 0; #X connect 1 7 2 0; #X connect 2 0 4 0; #X connect 3 0 7 0; #X connect 4 0 7 0; #X connect 5 0 3 1; #X connect 6 0 4 1; #X connect 7 0 9 0; #X connect 8 0 11 0; #X connect 10 0 11 1; #X connect 11 0 12 0; #X connect 12 0 13 0; #X connect 13 0 0 0; #X restore 171 264 pd c; #X obj 16 324 list prepend \$0; #X obj 16 10 inlet; #X obj 16 35 b; #X obj 16 373 outlet; #X text 123 325 x y w h c note notevis; #N canvas 0 99 450 300 note/notevis 0; #X obj 24 29 inlet; #X obj 24 237 outlet; #X obj 102 234 outlet; #X obj 24 59 unpack f f; #N canvas 0 99 405 189 y->pitch 0; #X obj 13 14 inlet; #X obj 13 37 t b a; #X obj 13 114 list append; #X obj 13 137 outlet; #X obj 40 63 s \$0.convert.y->pitch.get; #X obj 40 85 r \$0.convert.y->pitch; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 1 1 4 0; #X connect 2 0 3 0; #X connect 5 0 2 1; #X restore 24 106 pd y->pitch; #X obj 102 167 mod 12; #X obj 102 190 == 0; #X obj 24 152 div 12; #X msg 24 199 symbol C\$1; #X obj 24 129 t a a; #X obj 24 175 - 1; #X connect 0 0 3 0; #X connect 3 0 4 0; #X connect 4 0 9 0; #X connect 5 0 6 0; #X connect 6 0 2 0; #X connect 7 0 10 0; #X connect 8 0 1 0; #X connect 9 0 7 0; #X connect 9 1 5 0; #X connect 10 0 8 0; #X restore 210 265 pd note/notevis; #X obj 16 301 pack f f f f f s f, f 39; #X msg 16 348 scalar \$1.horizgrid \$2 \$3 \$4 \$5 \$6 \$7 \$8; #X obj 53 236 t a a; #X obj 16 185 t a a a a a, f 25; #X connect 0 0 1 0; #X connect 0 1 3 0; #X connect 1 0 2 0; #X connect 2 0 11 0; #X connect 3 0 2 1; #X connect 4 0 2 1; #X connect 5 0 0 0; #X connect 6 0 5 1; #X connect 7 0 19 0; #X connect 8 0 21 0; #X connect 9 0 19 2; #X connect 10 0 19 3; #X connect 11 0 22 0; #X connect 11 1 4 0; #X connect 12 0 19 4; #X connect 13 0 20 0; #X connect 14 0 15 0; #X connect 15 0 5 0; #X connect 18 0 19 5; #X connect 18 1 19 6; #X connect 19 0 13 0; #X connect 20 0 16 0; #X connect 21 0 19 1; #X connect 21 1 18 0; #X connect 22 0 7 0; #X connect 22 1 8 0; #X connect 22 2 9 0; #X connect 22 3 10 0; #X connect 22 4 12 0; #X restore 506 158 pd create_horizgrid; #N canvas 54 126 618 459 horizgrid-template 0; #X obj 19 18 filledpolygon c c 1 0 0 0 h w h w 0; #X obj 20 80 s \$0.horizgrid.send; #X obj 22 126 route change; #X obj 22 149 t p p, f 20; #X obj 79 357 - 1; #X obj 22 195 t b b, f 10; #X obj 22 103 r \$0.horizgrid.send; #X obj 22 388 set \$0.horizgrid w h; #X obj 79 335 f; #X obj 22 322 - 1; #X obj 22 299 *; #X obj 22 252 f; #X obj 22 170 get \$0.horizgrid w; #X obj 37 276 r \$0.stepviswidth; #X obj 94 310 r \$0.stepvisheight; #X obj 37 224 r \$0.stepsperpage; #X obj 20 44 struct \$0.horizgrid float x float y float w float h float c symbol note float notevis; #X obj 237 97 drawsymbol -v notevis note -23 2 0; #X connect 2 0 3 0; #X connect 3 0 12 0; #X connect 3 1 7 2; #X connect 4 0 7 1; #X connect 5 0 11 0; #X connect 5 1 8 0; #X connect 6 0 2 0; #X connect 8 0 4 0; #X connect 9 0 7 0; #X connect 10 0 9 0; #X connect 11 0 10 0; #X connect 12 0 5 0; #X connect 13 0 10 1; #X connect 14 0 8 1; #X connect 15 0 11 1; #X connect 16 0 1 0; #X restore 644 158 pd horizgrid-template; #N canvas 60 99 426 427 vertgrid-template 0; #X obj 19 18 filledpolygon 0 0 1 0 0 0 h w h w 0; #X obj 19 42 struct \$0.vertgrid float x float y float w float h; #X obj 19 66 s \$0.vertgrid.send; #X obj 92 310 r \$0.stepvisheight; #X obj 77 286 f; #X obj 77 335 *; #X obj 92 261 r \$0.pitchrange; #X obj 22 103 r \$0.vertgrid.send; #X obj 22 126 route change; #X obj 22 170 get \$0.vertgrid w; #X obj 22 149 t p p, f 19; #X obj 77 358 - 1; #X obj 22 388 set \$0.vertgrid w h; #X obj 37 223 r \$0.stepviswidth; #X obj 22 269 f; #X obj 37 246 - 1; #X obj 22 195 t b b, f 10; #X connect 1 0 2 0; #X connect 3 0 5 1; #X connect 4 0 5 0; #X connect 5 0 11 0; #X connect 6 0 4 1; #X connect 7 0 8 0; #X connect 8 0 10 0; #X connect 9 0 16 0; #X connect 10 0 9 0; #X connect 10 1 12 2; #X connect 11 0 12 1; #X connect 13 0 15 0; #X connect 14 0 12 0; #X connect 15 0 14 1; #X connect 16 0 14 0; #X connect 16 1 4 0; #X restore 644 130 pd vertgrid-template; #N canvas 113 111 401 394 create_vertgrid 0; #X obj 16 86 t a b; #X obj 16 109 until; #X obj 16 132 f; #X msg 54 110 0; #X obj 67 150 + 1; #X obj 16 62 f; #N canvas 0 99 401 215 x 0; #X obj 18 12 inlet; #X obj 18 147 +; #X obj 33 120 r \$0.canvasleftmargin; #X obj 18 170 outlet; #X obj 18 75 *; #X obj 33 42 r \$0.stepviswidth; #X connect 0 0 4 0; #X connect 1 0 3 0; #X connect 2 0 1 1; #X connect 4 0 1 0; #X connect 5 0 4 1; #X restore 16 233 pd x; #N canvas 0 99 405 280 y 0; #X obj 42 199 +; #X obj 57 173 r \$0.canvastopmargin; #X obj 42 35 inlet; #X obj 42 239 outlet; #X msg 42 90 0; #X connect 0 0 3 0; #X connect 1 0 0 1; #X connect 2 0 4 0; #X connect 4 0 0 0; #X restore 55 234 pd y; #N canvas 0 99 418 249 w 0; #X obj 16 17 inlet; #X obj 16 194 outlet; #X obj 31 90 r \$0.stepviswidth; #X obj 16 45 b; #X obj 16 155 f; #X obj 31 113 - 1; #X connect 0 0 3 0; #X connect 2 0 5 0; #X connect 3 0 4 0; #X connect 4 0 1 0; #X connect 5 0 4 1; #X restore 92 234 pd w; #N canvas 0 99 398 252 h 0; #X obj 23 14 inlet; #X obj 23 37 b; #X obj 23 193 outlet; #X obj 38 115 r \$0.stepvisheight; #X obj 23 91 f; #X obj 23 140 *; #X obj 38 66 r \$0.pitchrange; #X obj 23 163 - 1; #X connect 0 0 1 0; #X connect 1 0 4 0; #X connect 3 0 5 1; #X connect 4 0 5 0; #X connect 5 0 7 0; #X connect 6 0 4 1; #X connect 7 0 2 0; #X restore 135 235 pd h; #X obj 16 156 t a a; #X obj 16 294 list prepend \$0; #X obj 16 10 inlet; #X obj 16 35 b; #X obj 16 343 outlet; #X text 229 320 x y w h; #X obj 16 271 pack f f f f; #X obj 16 185 t a a a a; #X msg 16 320 scalar \$1.vertgrid \$2 \$3 \$4 \$5; #X obj 46 60 r \$0.stepsperpage; #X connect 0 0 1 0; #X connect 0 1 3 0; #X connect 1 0 2 0; #X connect 2 0 10 0; #X connect 3 0 2 1; #X connect 4 0 2 1; #X connect 5 0 0 0; #X connect 6 0 16 0; #X connect 7 0 16 1; #X connect 8 0 16 2; #X connect 9 0 16 3; #X connect 10 0 17 0; #X connect 10 1 4 0; #X connect 11 0 18 0; #X connect 12 0 13 0; #X connect 13 0 5 0; #X connect 16 0 11 0; #X connect 17 0 6 0; #X connect 17 1 7 0; #X connect 17 2 8 0; #X connect 17 3 9 0; #X connect 18 0 14 0; #X connect 19 0 5 1; #X restore 521 130 pd create_vertgrid; #N canvas 107 99 446 109 vertline-template 0; #X obj 18 20 drawpolygon c 1 0 0 0 h; #X obj 19 79 s \$0.vertline.send; #X obj 19 42 struct \$0.vertline float x float y float h float c float n float nvis; #X obj 165 20 drawnumber -v nvis n -3 -12 c; #X connect 2 0 1 0; #X restore 644 186 pd vertline-template; #N canvas 23 99 400 432 create_vertline 0; #X obj 16 116 t a b; #X obj 16 139 until; #X obj 16 162 f; #X msg 54 140 0; #X obj 67 180 + 1; #X obj 16 62 f; #N canvas 0 99 401 215 x 0; #X obj 18 12 inlet; #X obj 18 147 +; #X obj 33 120 r \$0.canvasleftmargin; #X obj 18 170 outlet; #X obj 18 75 *; #X obj 33 42 r \$0.stepviswidth; #X connect 0 0 4 0; #X connect 1 0 3 0; #X connect 2 0 1 1; #X connect 4 0 1 0; #X connect 5 0 4 1; #X restore 16 263 pd x; #N canvas 0 99 405 280 y 0; #X obj 42 199 +; #X obj 57 173 r \$0.canvastopmargin; #X obj 42 35 inlet; #X obj 42 239 outlet; #X msg 42 90 0; #X connect 0 0 3 0; #X connect 1 0 0 1; #X connect 2 0 4 0; #X connect 4 0 0 0; #X restore 55 264 pd y; #X obj 16 186 t a a; #X obj 16 324 list prepend \$0; #X obj 16 10 inlet; #X obj 16 35 b; #X obj 16 373 outlet; #N canvas 0 99 398 252 h 0; #X obj 23 14 inlet; #X obj 23 37 b; #X obj 23 163 outlet; #X obj 38 115 r \$0.stepvisheight; #X obj 23 91 f; #X obj 23 140 *; #X obj 38 66 r \$0.pitchrange; #X connect 0 0 1 0; #X connect 1 0 4 0; #X connect 3 0 5 1; #X connect 4 0 5 0; #X connect 5 0 2 0; #X connect 6 0 4 1; #X restore 96 266 pd h; #N canvas 0 132 290 428 c 0; #X obj 16 17 inlet; #X obj 16 366 outlet; #X obj 79 136 r \$0.griddivision; #X obj 95 163 r \$0.gridsubdivision; #X obj 79 214 *; #X obj 16 201 mod; #X obj 16 238 sel 0; #X obj 58 245 r \$0.gridsubdivision; #X obj 43 272 mod; #X obj 43 301 sel 0; #X msg 70 328 888; #X msg 16 329 0; #X obj 95 186 t b a; #X msg 43 328 666; #X obj 63 53 r \$0.page; #X obj 91 78 r \$0.stepsperpage; #X obj 63 78 *; #X obj 16 72 +; #X connect 0 0 17 0; #X connect 2 0 4 0; #X connect 3 0 12 0; #X connect 4 0 5 1; #X connect 5 0 6 0; #X connect 6 0 11 0; #X connect 6 1 8 0; #X connect 7 0 8 1; #X connect 8 0 9 0; #X connect 9 0 13 0; #X connect 9 1 10 0; #X connect 10 0 1 0; #X connect 11 0 1 0; #X connect 12 0 4 0; #X connect 12 1 4 1; #X connect 13 0 1 0; #X connect 14 0 16 0; #X connect 15 0 16 1; #X connect 16 0 17 1; #X connect 17 0 5 0; #X restore 133 267 pd c; #X obj 16 89 + 1; #X text 46 89 one more for end line; #X obj 16 215 t a a a a a; #N canvas 0 99 429 434 n 0; #X obj 20 26 inlet; #X obj 20 345 outlet; #X obj 124 116 r \$0.griddivision; #X obj 140 143 r \$0.gridsubdivision; #X obj 124 194 *; #X obj 140 166 t b a; #X obj 20 241 div; #X obj 20 189 t a a; #X obj 109 277 mod; #X obj 109 305 == 0; #X obj 109 348 outlet; #X obj 20 264 + 1; #X obj 67 53 r \$0.page; #X obj 95 78 r \$0.stepsperpage; #X obj 67 78 *; #X obj 20 72 +; #X obj 79 246 sel; #X msg 76 285 0; #X obj 67 125 +; #X connect 0 0 15 0; #X connect 2 0 4 0; #X connect 3 0 5 0; #X connect 4 0 6 1; #X connect 4 0 8 1; #X connect 5 0 4 0; #X connect 5 1 4 1; #X connect 6 0 11 0; #X connect 7 0 6 0; #X connect 7 1 16 0; #X connect 8 0 9 0; #X connect 9 0 10 0; #X connect 11 0 1 0; #X connect 12 0 14 0; #X connect 13 0 14 1; #X connect 13 0 18 1; #X connect 14 0 15 1; #X connect 14 0 18 0; #X connect 15 0 7 0; #X connect 16 0 17 0; #X connect 16 1 8 0; #X connect 17 0 10 0; #X connect 18 0 16 1; #X restore 170 267 pd n nvis; #X text 249 349 x y h c n nvis; #X msg 16 350 scalar \$1.vertline \$2 \$3 \$4 \$5 \$6 \$7; #X obj 46 60 r \$0.stepsperpage; #X obj 16 301 pack f f f f f f, f 34; #X connect 0 0 1 0; #X connect 0 1 3 0; #X connect 1 0 2 0; #X connect 2 0 8 0; #X connect 3 0 2 1; #X connect 4 0 2 1; #X connect 5 0 15 0; #X connect 6 0 22 0; #X connect 7 0 22 1; #X connect 8 0 17 0; #X connect 8 1 4 0; #X connect 9 0 20 0; #X connect 10 0 11 0; #X connect 11 0 5 0; #X connect 13 0 22 2; #X connect 14 0 22 3; #X connect 15 0 0 0; #X connect 17 0 6 0; #X connect 17 1 7 0; #X connect 17 2 13 0; #X connect 17 3 14 0; #X connect 17 4 18 0; #X connect 18 0 22 4; #X connect 18 1 22 5; #X connect 20 0 12 0; #X connect 21 0 5 1; #X connect 22 0 9 0; #X restore 491 186 pd create_vertline; #N canvas 35 99 741 470 note-template 0; #X obj 121 282 min 127; #X obj 51 166 route click change; #X obj 121 307 t a a; #X obj 32 141 t a a a; #X obj 32 429 s \$0.note.send; #X obj 51 189 t p p, f 48; #X obj 51 235 t a b, f 40; #X obj 288 380 f; #X obj 303 332 r \$0.stepvisheight; #X obj 303 355 - 1; #X obj 270 259 r \$0.stepviswidth; #X obj 241 259 div; #X obj 241 333 *; #N canvas 320 203 446 363 clr.* 0; #X obj 28 62 t a a a; #X obj 28 112 div 100; #X obj 78 113 mod 100; #X obj 78 136 div 10; #X obj 128 112 mod 10; #X obj 28 165 *; #X obj 28 188 int; #X obj 78 165 *; #X obj 78 188 int; #X obj 128 165 *; #X obj 128 188 int; #X obj 230 103 inlet; #X obj 28 212 min 9; #X obj 78 212 min 9; #X obj 128 212 min 9; #X obj 28 235 * 100; #X obj 78 235 * 10; #X obj 128 235 * 1; #X obj 28 262 +; #X obj 28 285 +; #X obj 28 311 outlet; #X obj 28 24 inlet; #X connect 0 0 1 0; #X connect 0 1 2 0; #X connect 0 2 4 0; #X connect 1 0 5 0; #X connect 2 0 3 0; #X connect 3 0 7 0; #X connect 4 0 9 0; #X connect 5 0 6 0; #X connect 6 0 12 0; #X connect 7 0 8 0; #X connect 8 0 13 0; #X connect 9 0 10 0; #X connect 10 0 14 0; #X connect 11 0 9 1; #X connect 11 0 7 1; #X connect 11 0 5 1; #X connect 12 0 15 0; #X connect 13 0 16 0; #X connect 14 0 17 0; #X connect 15 0 18 0; #X connect 16 0 18 1; #X connect 17 0 19 1; #X connect 18 0 19 0; #X connect 19 0 20 0; #X connect 21 0 0 0; #X restore 64 364 pd clr.*; #X obj 121 356 / 113; #X obj 469 34 r \$0.default.show; #X obj 469 183 == 1; #X text 596 36 show note properties:; #X text 609 53 0 = none; #X text 609 68 1 = velocity; #X text 609 83 2 = gid; #X obj 478 260 hradio 20 1 0 3 empty empty empty 0 -8 0 10 -262144 -1 -1 0; #X obj 478 291 s \$0.default.show; #N canvas 149 210 387 235 range 0; #X obj 33 104 min; #X obj 86 64 r \$0.gidcolorlist; #X obj 86 87 list length; #X obj 86 110 - 1; #X obj 33 22 inlet; #X obj 33 45 max 0; #X obj 33 127 outlet; #X connect 0 0 6 0; #X connect 1 0 2 0; #X connect 2 0 3 0; #X connect 3 0 0 1; #X connect 4 0 5 0; #X connect 5 0 0 0; #X restore 51 274 pd range; #X obj 51 297 t a a; #X obj 241 284 min; #X obj 241 307 max 1; #X obj 274 283 r \$0.stepsperpage; #X obj 508 84 == 3; #X obj 121 259 max 1; #X obj 469 57 t a a a; #X obj 488 133 == 2; #X obj 51 212 get \$0.note gid vel dur w, f 32; #X obj 51 406 set \$0.note gid c vel dur w h, f 48; #X obj 178 302 max 1; #N canvas 83 99 410 208 gid->gclr 0; #X obj 13 14 inlet; #X obj 13 37 t b a; #X obj 13 114 list append; #X obj 13 137 outlet; #X obj 40 63 s \$0.convert.gid->gclr.get; #X obj 40 86 r \$0.convert.gid->gclr; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 1 1 4 0; #X connect 2 0 3 0; #X connect 5 0 2 1; #X restore 64 331 pd gid->gclr; #X obj 32 54 filledpolygon -v vis c mrk 1 0 0 0 h w h w 0; #X obj 32 104 struct \$0.note float x float y float w float h float id float gid float vel float dur float c float vis float mrk; #X obj 508 111 drawnumber gid 3 1 999; #X obj 469 210 drawnumber vel 3 1 999; #X obj 488 160 drawnumber dur 3 1 999; #X connect 0 0 2 0; #X connect 1 0 5 0; #X connect 1 1 5 0; #X connect 2 0 14 0; #X connect 2 1 33 2; #X connect 3 0 4 0; #X connect 3 1 1 0; #X connect 5 0 32 0; #X connect 5 1 33 6; #X connect 6 0 23 0; #X connect 6 1 7 0; #X connect 7 0 33 5; #X connect 8 0 9 0; #X connect 9 0 7 1; #X connect 10 0 11 1; #X connect 10 0 12 1; #X connect 11 0 25 0; #X connect 12 0 33 4; #X connect 13 0 33 1; #X connect 14 0 13 1; #X connect 15 0 30 0; #X connect 16 0 39 0; #X connect 21 0 22 0; #X connect 23 0 24 0; #X connect 24 0 33 0; #X connect 24 1 35 0; #X connect 25 0 26 0; #X connect 26 0 12 0; #X connect 27 0 25 1; #X connect 28 0 38 0; #X connect 29 0 0 0; #X connect 30 0 16 0; #X connect 30 1 31 0; #X connect 30 2 28 0; #X connect 31 0 40 0; #X connect 32 0 6 0; #X connect 32 1 29 0; #X connect 32 2 34 0; #X connect 32 3 11 0; #X connect 34 0 33 3; #X connect 35 0 13 0; #X connect 37 0 3 0; #X restore 644 101 pd note-template; #X msg 490 351 const 0; #N canvas 162 155 643 410 create_guis 0; #X obj 222 28 inlet; #X obj 350 355 outlet; #X obj 16 346 list store; #X msg 16 320 get \$1 1; #X obj 16 371 s \$0.gid2lr.set; #X obj 16 292 r \$0.gid2lr.get; #X obj 80 318 r \$0.gidcolorlist; #N canvas 633 422 439 518 create.gid.buttons 0; #X obj 60 316 r \$0.canvasleftmargin; #X obj 28 120 f; #X obj 28 143 t a a; #X obj 28 417 list prepend \$0; #X msg 70 95 0; #X obj 81 126 + 1; #X obj 28 340 +; #X obj 109 41 r \$0.gidcolorlist; #X obj 109 64 list length; #X obj 28 65 t a b; #X obj 28 39 f; #X obj 28 91 until; #X text 49 391 x clr hl gid; #X obj 28 468 outlet; #X obj 28 12 inlet; #X obj 28 170 t a a b a; #X obj 28 317 * 16; #X obj 60 339 + 251; #N canvas 83 99 410 208 gid->gclr 0; #X obj 13 14 inlet; #X obj 13 37 t b a; #X obj 13 114 list append; #X obj 13 137 outlet; #X obj 40 63 s \$0.convert.gid->gclr.get; #X obj 40 86 r \$0.convert.gid->gclr; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 1 1 4 0; #X connect 2 0 3 0; #X connect 5 0 2 1; #X restore 45 205 pd gid->gclr; #N canvas 320 203 446 363 clr.* 0; #X obj 28 62 t a a a; #X obj 28 112 div 100; #X obj 78 113 mod 100; #X obj 78 136 div 10; #X obj 128 112 mod 10; #X obj 28 165 *; #X obj 28 188 int; #X obj 78 165 *; #X obj 78 188 int; #X obj 128 165 *; #X obj 128 188 int; #X obj 230 103 inlet; #X obj 28 212 min 9; #X obj 78 212 min 9; #X obj 128 212 min 9; #X obj 28 235 * 100; #X obj 78 235 * 10; #X obj 128 235 * 1; #X obj 28 262 +; #X obj 28 285 +; #X obj 28 311 outlet; #X obj 28 24 inlet; #X connect 0 0 1 0; #X connect 0 1 2 0; #X connect 0 2 4 0; #X connect 1 0 5 0; #X connect 2 0 3 0; #X connect 3 0 7 0; #X connect 4 0 9 0; #X connect 5 0 6 0; #X connect 6 0 12 0; #X connect 7 0 8 0; #X connect 8 0 13 0; #X connect 9 0 10 0; #X connect 10 0 14 0; #X connect 11 0 9 1; #X connect 11 0 7 1; #X connect 11 0 5 1; #X connect 12 0 15 0; #X connect 13 0 16 0; #X connect 14 0 17 0; #X connect 15 0 18 0; #X connect 16 0 18 1; #X connect 17 0 19 1; #X connect 18 0 19 0; #X connect 19 0 20 0; #X connect 21 0 0 0; #X restore 45 236 pd clr.*; #X obj 28 370 pack f f f, f 23; #X msg 28 445 scalar \$1.gid.button \$2 20 \$3 \$4; #X msg 140 204 0.4; #X connect 0 0 17 0; #X connect 1 0 2 0; #X connect 2 0 15 0; #X connect 2 1 5 0; #X connect 3 0 21 0; #X connect 4 0 1 1; #X connect 5 0 1 1; #X connect 6 0 20 0; #X connect 7 0 8 0; #X connect 8 0 10 1; #X connect 9 0 11 0; #X connect 9 1 4 0; #X connect 10 0 9 0; #X connect 11 0 1 0; #X connect 14 0 10 0; #X connect 15 0 16 0; #X connect 15 1 18 0; #X connect 15 2 22 0; #X connect 15 3 20 2; #X connect 16 0 6 0; #X connect 17 0 6 1; #X connect 18 0 19 0; #X connect 19 0 20 1; #X connect 20 0 3 0; #X connect 21 0 13 0; #X connect 22 0 19 1; #X restore 343 110 pd create.gid.buttons; #N canvas 0 99 450 300 create.vel.number 0; #X obj 24 21 inlet; #X obj 24 201 outlet; #X obj 68 23 r \$0.canvasleftmargin; #X obj 24 90 f; #X obj 69 96 r \$0.default.vel; #X obj 24 125 pack f f; #X obj 24 149 list prepend \$0; #X msg 24 172 scalar \$1.vel \$2 20 \$3; #X obj 68 46 + 85; #X connect 0 0 3 0; #X connect 2 0 8 0; #X connect 3 0 5 0; #X connect 4 0 5 1; #X connect 5 0 6 0; #X connect 6 0 7 0; #X connect 7 0 1 0; #X connect 8 0 3 1; #X restore 330 139 pd create.vel.number; #N canvas 0 99 450 300 create.dur.number 0; #X obj 24 21 inlet; #X obj 24 216 outlet; #X obj 68 23 r \$0.canvasleftmargin; #X obj 24 90 f; #X obj 24 125 pack f f; #X obj 24 149 list prepend \$0; #X obj 69 96 r \$0.default.dur; #X msg 24 172 scalar \$1.dur \$2 20 \$3; #X obj 68 46 + 168; #X connect 0 0 3 0; #X connect 2 0 8 0; #X connect 3 0 4 0; #X connect 4 0 5 0; #X connect 5 0 7 0; #X connect 6 0 4 1; #X connect 7 0 1 0; #X connect 8 0 3 1; #X restore 316 166 pd create.dur.number; #N canvas 0 99 390 589 create.show.selector 0; #X obj 7 7 inlet; #X obj 8 523 outlet; #X obj 8 462 list prepend \$0; #X obj 7 61 f; #X text 46 84 offset from left border; #X obj 44 64 r \$0.canvasleftmargin; #X obj 7 30 b; #X obj 27 173 +; #X obj 8 123 t a a b; #X msg 48 151 31; #X obj 27 200 t a a b; #X obj 74 241 +; #X msg 89 218 55; #X msg 8 490 scalar \$1.show.selector \$2 20 \$3 555 \$4 \$5; #X msg 8 416 \$1 \$2 0 none \, \$3 \$4 1 velocity \, \$5 \$6 2 duration \, \$7 \$8 3 gid; #X obj 74 264 t a a b; #X obj 8 389 pack f f f f f f f f; #X obj 108 320 +; #X obj 110 343 t a b; #X msg 142 298 55; #X msg 140 365 37; #X obj 8 84 + 357; #X connect 0 0 6 0; #X connect 2 0 13 0; #X connect 3 0 21 0; #X connect 5 0 3 1; #X connect 6 0 3 0; #X connect 7 0 10 0; #X connect 8 0 16 0; #X connect 8 1 7 0; #X connect 8 2 9 0; #X connect 9 0 7 1; #X connect 9 0 16 1; #X connect 10 0 16 2; #X connect 10 1 11 0; #X connect 10 2 12 0; #X connect 11 0 15 0; #X connect 12 0 11 1; #X connect 12 0 16 3; #X connect 13 0 1 0; #X connect 14 0 2 0; #X connect 15 0 16 4; #X connect 15 1 17 0; #X connect 15 2 19 0; #X connect 16 0 14 0; #X connect 17 0 18 0; #X connect 18 0 16 6; #X connect 18 1 20 0; #X connect 19 0 16 5; #X connect 19 0 17 1; #X connect 20 0 16 7; #X connect 21 0 8 0; #X restore 289 214 pd create.show.selector; #N canvas 164 241 550 482 gid.state 0; #X obj 12 76 route click; #X obj 63 145 pointer; #X obj 12 52 r \$0.gid.button.send; #N canvas 347 99 390 345 init.pointer 0; #X obj 17 79 until; #X msg 17 102 next; #X obj 17 138 pointer \$0.gid.button; #X obj 17 188 get \$0.gid.button gid; #X obj 17 51 t b b; #X obj 17 14 inlet; #X obj 17 219 sel 0; #X obj 63 219 r \$0.default.gid; #X obj 17 294 outlet; #X obj 17 242 t b b, f 23; #X obj 17 161 t p p; #X obj 17 265 pointer; #X obj 68 54 symbol \$1; #X msg 68 80 traverse \$1; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 2 0 10 0; #X connect 2 2 0 1; #X connect 3 0 6 0; #X connect 4 0 0 0; #X connect 4 1 12 0; #X connect 5 0 4 0; #X connect 6 0 9 0; #X connect 7 0 6 1; #X connect 9 0 11 0; #X connect 9 1 0 1; #X connect 10 0 3 0; #X connect 10 1 11 1; #X connect 11 0 8 0; #X connect 12 0 13 0; #X connect 13 0 2 0; #X restore 181 93 pd init.pointer; #X obj 181 66 inlet; #X obj 63 168 t p p; #X obj 63 205 get \$0.gid.button gid; #X obj 63 340 set \$0.gid.button clr; #N canvas 83 99 410 208 gid->gclr 0; #X obj 13 14 inlet; #X obj 13 37 t b a; #X obj 13 114 list append; #X obj 13 137 outlet; #X obj 40 63 s \$0.convert.gid->gclr.get; #X obj 40 86 r \$0.convert.gid->gclr; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 1 1 4 0; #X connect 2 0 3 0; #X connect 5 0 2 1; #X restore 63 264 pd gid->gclr; #N canvas 320 203 446 363 clr.* 0; #X obj 28 62 t a a a; #X obj 28 112 div 100; #X obj 78 113 mod 100; #X obj 78 136 div 10; #X obj 128 112 mod 10; #X obj 28 165 *; #X obj 28 188 int; #X obj 78 165 *; #X obj 78 188 int; #X obj 128 165 *; #X obj 128 188 int; #X obj 230 103 inlet; #X obj 28 212 min 9; #X obj 78 212 min 9; #X obj 128 212 min 9; #X obj 28 235 * 100; #X obj 78 235 * 10; #X obj 128 235 * 1; #X obj 28 262 +; #X obj 28 285 +; #X obj 28 311 outlet; #X obj 28 24 inlet; #X connect 0 0 1 0; #X connect 0 1 2 0; #X connect 0 2 4 0; #X connect 1 0 5 0; #X connect 2 0 3 0; #X connect 3 0 7 0; #X connect 4 0 9 0; #X connect 5 0 6 0; #X connect 6 0 12 0; #X connect 7 0 8 0; #X connect 8 0 13 0; #X connect 9 0 10 0; #X connect 10 0 14 0; #X connect 11 0 9 1; #X connect 11 0 7 1; #X connect 11 0 5 1; #X connect 12 0 15 0; #X connect 13 0 16 0; #X connect 14 0 17 0; #X connect 15 0 18 0; #X connect 16 0 18 1; #X connect 17 0 19 1; #X connect 18 0 19 0; #X connect 19 0 20 0; #X connect 21 0 0 0; #X restore 63 295 pd clr.*; #X obj 63 237 t a b; #X obj 12 417 set \$0.gid.button clr; #X obj 12 364 get \$0.gid.button gid; #N canvas 83 99 410 208 gid->gclr 0; #X obj 13 14 inlet; #X obj 13 37 t b a; #X obj 13 114 list append; #X obj 13 137 outlet; #X obj 40 63 s \$0.convert.gid->gclr.get; #X obj 40 86 r \$0.convert.gid->gclr; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 1 1 4 0; #X connect 2 0 3 0; #X connect 5 0 2 1; #X restore 12 391 pd gid->gclr; #X obj 12 99 t p p p b; #X obj 181 116 t p p p; #X msg 158 263 0.4; #X connect 0 0 14 0; #X connect 1 0 5 0; #X connect 2 0 0 0; #X connect 3 0 15 0; #X connect 4 0 3 0; #X connect 5 0 6 0; #X connect 5 1 7 1; #X connect 6 0 10 0; #X connect 8 0 9 0; #X connect 9 0 7 0; #X connect 10 0 8 0; #X connect 10 1 16 0; #X connect 12 0 13 0; #X connect 13 0 11 0; #X connect 14 0 12 0; #X connect 14 1 11 1; #X connect 14 2 1 1; #X connect 14 3 1 0; #X connect 15 0 1 1; #X connect 15 1 12 0; #X connect 15 2 11 1; #X connect 16 0 9 1; #X restore 55 135 pd gid.state; #N canvas 109 99 450 300 show.selector.state 0; #X obj 12 76 route click; #X obj 12 99 t b p p b; #X obj 63 145 pointer; #X obj 63 168 t b p; #N canvas 246 399 398 338 init.pointer 0; #X obj 17 79 until; #X msg 17 102 next; #X obj 17 51 t b b; #X obj 17 14 inlet; #X obj 17 217 sel 0; #X obj 17 290 outlet; #X obj 17 138 pointer \$0.show.selector; #X obj 17 188 get \$0.show.selector id; #X obj 58 215 r \$0.default.show; #X obj 17 161 t p p; #X obj 17 240 t b b, f 21; #X obj 17 263 pointer; #X obj 68 54 symbol \$1; #X msg 68 80 traverse \$1; #X connect 0 0 1 0; #X connect 1 0 6 0; #X connect 2 0 0 0; #X connect 2 1 12 0; #X connect 3 0 2 0; #X connect 4 0 10 0; #X connect 6 0 9 0; #X connect 6 2 0 1; #X connect 7 0 4 0; #X connect 8 0 4 1; #X connect 9 0 7 0; #X connect 9 1 11 1; #X connect 10 0 11 0; #X connect 10 1 0 1; #X connect 11 0 5 0; #X connect 12 0 13 0; #X connect 13 0 6 0; #X restore 191 97 pd init.pointer; #X obj 191 69 inlet; #X obj 12 52 r \$0.show.selector.send; #X msg 63 197 555; #X msg 12 195 0; #X obj 12 249 set \$0.show.selector hilite; #X obj 191 120 t p b p; #X connect 0 0 1 0; #X connect 1 0 8 0; #X connect 1 1 9 1; #X connect 1 2 2 1; #X connect 1 3 2 0; #X connect 2 0 3 0; #X connect 3 0 7 0; #X connect 3 1 9 1; #X connect 4 0 10 0; #X connect 5 0 4 0; #X connect 6 0 0 0; #X connect 7 0 9 0; #X connect 8 0 9 0; #X connect 10 0 2 1; #X connect 10 1 8 0; #X connect 10 2 9 1; #X restore 53 169 pd show.selector.state; #N canvas 250 344 403 392 create.cursor 0; #X obj 45 194 r \$0.canvastopmargin; #X obj 22 96 f; #X obj 22 26 inlet; #X obj 22 303 list prepend \$0; #X obj 22 354 outlet; #N canvas 0 99 398 252 h 0; #X obj 23 14 inlet; #X obj 23 37 b; #X obj 23 163 outlet; #X obj 38 115 r \$0.stepvisheight; #X obj 23 91 f; #X obj 23 140 *; #X obj 38 66 r \$0.pitchrange; #X connect 0 0 1 0; #X connect 1 0 4 0; #X connect 3 0 5 1; #X connect 4 0 5 0; #X connect 5 0 2 0; #X connect 6 0 4 1; #X restore 68 219 pd h; #X obj 22 49 t b b; #X obj 22 272 pack f f f 1; #X obj 37 73 r \$0.canvasleftmargin; #X msg 22 331 scalar \$1.cursor \$2 \$3 \$4 \$5; #X obj 91 248 r \$0.cursor.show; #X obj 60 150 *; #X obj 96 153 r \$0.stepviswidth; #X obj 60 118 r \$0.cursor.pos; #X obj 22 148 +; #X connect 0 0 7 1; #X connect 1 0 14 0; #X connect 2 0 6 0; #X connect 3 0 9 0; #X connect 5 0 7 2; #X connect 6 0 1 0; #X connect 6 1 5 0; #X connect 7 0 3 0; #X connect 8 0 1 1; #X connect 9 0 4 0; #X connect 10 0 7 3; #X connect 11 0 14 1; #X connect 12 0 11 1; #X connect 13 0 11 0; #X connect 14 0 7 0; #X restore 276 235 pd create.cursor; #N canvas 357 99 501 367 cursor.state 0; #X obj 258 107 until; #X msg 258 130 next; #X obj 258 79 t b b; #X obj 258 42 inlet; #X obj 258 166 pointer \$0.cursor; #X obj 258 189 t p b; #X obj 171 238 set \$0.cursor x; #X obj 44 238 set \$0.cursor vis; #X obj 82 92 *; #X obj 118 95 r \$0.stepviswidth; #X obj 82 117 +; #X obj 118 119 r \$0.canvasleftmargin; #X obj 309 82 symbol \$1; #X msg 309 108 traverse \$1; #X obj 82 60 r \$0.cursor.pos; #X obj 44 210 r \$0.cursor.show; #X connect 0 0 1 0; #X connect 1 0 4 0; #X connect 2 0 0 0; #X connect 2 1 12 0; #X connect 3 0 2 0; #X connect 4 0 5 0; #X connect 4 2 0 1; #X connect 5 0 6 1; #X connect 5 0 7 1; #X connect 5 1 0 1; #X connect 8 0 10 0; #X connect 9 0 8 1; #X connect 10 0 6 0; #X connect 11 0 10 1; #X connect 12 0 13 0; #X connect 13 0 4 0; #X connect 14 0 8 0; #X connect 15 0 7 0; #X restore 52 204 pd cursor.state; #N canvas 0 99 652 395 create.mode.button 0; #X obj 24 21 inlet; #X obj 24 336 outlet; #X obj 57 162 r \$0.canvasleftmargin; #X obj 24 289 list prepend \$0; #X obj 24 161 +; #X msg 24 312 scalar \$1.mode.button \$2 \$3 \$4 \$5 \$6; #X obj 105 19 r \$0.edit.modes; #X obj 105 42 route velocity duration gid; #X obj 24 44 f; #X obj 24 80 pack f f f; #X msg 24 116 85 72 velocity \$1 \, 168 72 duration \$2 \, 251 95 gid \$3; #X obj 24 139 unpack f f s f; #X obj 24 242 pack f f s f; #X msg 24 268 \$1 11 \$2 \$4 \$3; #X obj 96 187 sel 0 1; #X msg 96 210 666; #X msg 132 211 900; #X connect 0 0 8 0; #X connect 2 0 4 1; #X connect 3 0 5 0; #X connect 4 0 12 0; #X connect 5 0 1 0; #X connect 6 0 7 0; #X connect 7 0 8 1; #X connect 7 1 9 1; #X connect 7 2 9 2; #X connect 8 0 9 0; #X connect 9 0 10 0; #X connect 10 0 11 0; #X connect 11 0 4 0; #X connect 11 1 12 1; #X connect 11 2 12 2; #X connect 11 3 14 0; #X connect 12 0 13 0; #X connect 13 0 3 0; #X connect 14 0 15 0; #X connect 14 1 16 0; #X connect 15 0 12 3; #X connect 16 0 12 3; #X restore 303 189 pd create.mode.button; #N canvas 83 122 487 422 create.pager 0; #X obj 34 317 list prepend \$0; #X obj 34 368 outlet; #X obj 34 17 inlet; #X msg 34 345 scalar \$1.pager \$2 \$3 \$4 \$5 \$6 \$7; #X text 47 288 x y c dir num nvis; #X obj 34 140 t a a; #X msg 110 116 \$1; #X obj 110 139 + 40; #X obj 34 175 list append; #X obj 34 47 f; #X obj 68 49 r \$0.canvasleftmargin; #X obj 34 70 + 10; #X msg 34 117 \$1 20; #X obj 328 98 != 1; #X msg 358 159 444; #X msg 328 160 666; #X obj 328 131 sel 0 1; #X obj 260 33 r \$0.page; #X msg 34 255 \$1 \$2 \$5 0 \$4 1 \, \$3 \$2 444 24 0 0; #X obj 34 221 list append 666; #X obj 34 198 list append 1; #X obj 260 56 + 1; #X connect 0 0 3 0; #X connect 2 0 9 0; #X connect 3 0 1 0; #X connect 5 0 8 0; #X connect 5 1 6 0; #X connect 6 0 7 0; #X connect 7 0 8 1; #X connect 8 0 20 0; #X connect 9 0 11 0; #X connect 10 0 9 1; #X connect 11 0 12 0; #X connect 12 0 5 0; #X connect 13 0 16 0; #X connect 14 0 19 1; #X connect 15 0 19 1; #X connect 16 0 15 0; #X connect 16 1 14 0; #X connect 17 0 21 0; #X connect 18 0 0 0; #X connect 19 0 18 0; #X connect 20 0 19 0; #X connect 21 0 13 0; #X connect 21 0 20 1; #X restore 262 261 pd create.pager; #N canvas 301 211 450 300 create.guibar 0; #X obj 8 14 inlet; #X obj 8 235 outlet; #X obj 241 109 r \$0.stepviswidth; #X obj 287 134 r \$0.stepsperpage; #X obj 287 157 t b a; #X obj 241 189 *; #X obj 48 58 r \$0.canvasleftmargin; #X obj 8 58 f; #X obj 8 139 pack f 11 f; #X obj 8 162 list prepend \$0; #X msg 8 185 scalar \$1.guibar \$2 \$3 \$4; #X connect 0 0 7 0; #X connect 2 0 5 0; #X connect 3 0 4 0; #X connect 4 0 5 0; #X connect 4 1 5 1; #X connect 5 0 8 2; #X connect 6 0 7 1; #X connect 7 0 8 0; #X connect 8 0 9 0; #X connect 9 0 10 0; #X connect 10 0 1 0; #X restore 357 83 pd create.guibar; #N canvas 83 122 577 328 create.scroller 0; #X obj 34 256 outlet; #X obj 34 17 inlet; #X obj 34 47 f; #X obj 68 49 r \$0.canvasleftmargin; #X obj 34 179 list append \$0; #X obj 34 70 - 20; #X obj 349 21 r \$0.pitchdownshift; #X obj 218 24 r \$0.pitchupshift; #X obj 34 105 pack f f f, f 52; #X obj 218 47 sel 0; #X msg 218 73 666; #X msg 249 74 444; #X obj 349 47 sel 0; #X msg 349 73 666; #X msg 380 74 444; #X msg 34 135 \$1 22 \$2 -10 \, \$1 25 \$3 10; #X msg 34 214 scalar \$5.scroller \$1 \$2 \$3 \$4; #X connect 1 0 2 0; #X connect 2 0 5 0; #X connect 3 0 2 1; #X connect 4 0 16 0; #X connect 5 0 8 0; #X connect 6 0 12 0; #X connect 7 0 9 0; #X connect 8 0 15 0; #X connect 9 0 10 0; #X connect 9 1 11 0; #X connect 10 0 8 1; #X connect 11 0 8 1; #X connect 12 0 13 0; #X connect 12 1 14 0; #X connect 13 0 8 2; #X connect 14 0 8 2; #X connect 15 0 4 0; #X connect 16 0 0 0; #X restore 249 288 pd create.scroller; #N canvas 105 269 547 312 create.keyboard.toggle 0; #X obj 7 7 inlet; #X obj 7 255 outlet; #X obj 7 164 list prepend \$0; #X obj 7 101 f; #X text 46 126 offset from left border; #X obj 44 104 r \$0.canvasleftmargin; #X obj 7 127 + 545; #X msg 273 151 0; #X msg 334 152 0; #X obj 225 112 t b b; #X obj 273 112 t b b; #X msg 374 153 666; #X msg 225 147 777; #X obj 225 20 r \$0.keyboard.enable; #X obj 225 83 sel 1 0; #X obj 225 189 pack f f; #X obj 7 187 list append; #X msg 7 222 scalar \$1.keyboard.toggle \$2 20 keyboard \$3 \$4; #X obj 225 53 f; #X obj 7 30 t b b; #X connect 0 0 19 0; #X connect 2 0 16 0; #X connect 3 0 6 0; #X connect 5 0 3 1; #X connect 6 0 2 0; #X connect 7 0 15 0; #X connect 8 0 15 1; #X connect 9 0 12 0; #X connect 9 1 8 0; #X connect 10 0 7 0; #X connect 10 1 11 0; #X connect 11 0 15 1; #X connect 12 0 15 0; #X connect 13 0 18 0; #X connect 14 0 9 0; #X connect 14 1 10 0; #X connect 15 0 16 1; #X connect 16 0 17 0; #X connect 17 0 1 0; #X connect 18 0 14 0; #X connect 19 0 3 0; #X connect 19 1 18 0; #X restore 235 312 pd create.keyboard.toggle; #X obj 222 57 t b b b b b b b b b b b; #X connect 0 0 20 0; #X connect 2 0 4 0; #X connect 3 0 2 0; #X connect 5 0 3 0; #X connect 6 0 2 1; #X connect 7 0 1 0; #X connect 8 0 1 0; #X connect 9 0 1 0; #X connect 10 0 1 0; #X connect 13 0 1 0; #X connect 15 0 1 0; #X connect 16 0 1 0; #X connect 17 0 1 0; #X connect 18 0 1 0; #X connect 19 0 1 0; #X connect 20 0 11 0; #X connect 20 0 12 0; #X connect 20 0 14 0; #X connect 20 1 19 0; #X connect 20 2 18 0; #X connect 20 3 16 0; #X connect 20 4 13 0; #X connect 20 5 10 0; #X connect 20 6 15 0; #X connect 20 7 9 0; #X connect 20 8 8 0; #X connect 20 9 7 0; #X connect 20 10 17 0; #X restore 476 215 pd create_guis; #N canvas 0 99 799 292 gui-templates 0; #N canvas 0 99 408 150 gid.button-template 0; #X obj 16 99 s \$0.gid.button.send; #X obj 17 26 filledpolygon clr clr 1 0 0 0 15 15 15 15 0; #X obj 16 60 struct \$0.gid.button float x float y float clr float gid; #X connect 2 0 0 0; #X restore 8 62 pd gid.button-template; #N canvas 195 247 417 284 vel-template 0; #X obj 14 260 s \$0.vel.send; #X obj 99 168 max 0; #X obj 99 191 min 127; #X obj 14 65 struct \$0.vel float x float y float value; #X obj 14 88 t a a; #X obj 99 144 get \$0.vel value; #X obj 99 99 route change; #X obj 99 122 t p p; #X obj 99 216 set \$0.vel value; #X obj 13 39 filledpolygon 886 886 1 0 0 0 15 72 15 72 0; #X obj 14 11 drawnumber value 0 2 0 velocity=; #X connect 1 0 2 0; #X connect 2 0 8 0; #X connect 3 0 4 0; #X connect 4 0 0 0; #X connect 4 1 6 0; #X connect 5 0 1 0; #X connect 6 0 7 0; #X connect 7 0 5 0; #X connect 7 1 8 1; #X restore 8 40 pd vel-template; #N canvas 0 99 414 335 dur-template 0; #X obj 14 75 struct \$0.dur float x float y float value; #X obj 99 201 min 127; #X obj 14 98 t a a; #X obj 99 109 route change; #X obj 99 132 t p p; #X obj 99 154 get \$0.dur value; #X obj 99 226 set \$0.dur value; #X obj 14 270 s \$0.dur.send; #X obj 99 178 max 1; #X obj 13 39 filledpolygon 886 886 1 0 0 0 15 72 15 72 0; #X obj 14 11 drawnumber value 0 2 0 duration=; #X obj 155 199 r \$0.stepsperpage; #X connect 0 0 2 0; #X connect 1 0 6 0; #X connect 2 0 7 0; #X connect 2 1 3 0; #X connect 3 0 4 0; #X connect 4 0 5 0; #X connect 4 1 6 1; #X connect 5 0 8 0; #X connect 8 0 1 0; #X connect 11 0 1 1; #X restore 8 18 pd dur-template; #N canvas 469 142 450 300 show.selector-template 0; #X obj 22 149 s \$0.show.selector.send; #X obj 22 108 struct \$0.show.selector float x float y float w float hilite float id symbol label; #X obj 21 25 filledpolygon 666 666 1 0 0 0 15 w 15 w 0; #X obj 22 53 drawsymbol label 2 1 hilite; #X connect 1 0 0 0; #X restore 8 106 pd show.selector-template; #X obj 464 59 route click; #X obj 464 107 s \$0.default.gid; #X obj 333 35 r \$0.vel.send; #X obj 333 81 get \$0.vel value; #X obj 333 106 s \$0.default.vel; #X obj 333 58 route change; #X obj 209 55 route change; #X obj 209 32 r \$0.dur.send; #X obj 209 78 get \$0.dur value; #X obj 209 103 s \$0.default.dur; #X obj 464 36 r \$0.gid.button.send; #X obj 464 82 get \$0.gid.button gid; #X obj 612 60 route click; #X obj 612 37 r \$0.show.selector.send; #X obj 612 83 get \$0.show.selector id; #X obj 612 108 s \$0.default.show; #N canvas 489 158 450 300 cursor-template 0; #X obj 22 149 s \$0.cursor.send; #X obj 22 108 struct \$0.cursor float x float y float h float vis; #X obj 18 20 drawpolygon -v vis 900 2 0 0 0 h; #X connect 1 0 0 0; #X restore 8 150 pd cursor-template; #N canvas 0 99 474 168 mode.button-template 0; #X obj 16 99 s \$0.mode.button.send; #X obj 17 26 filledpolygon c c 1 0 0 0 8 w 8 w 0; #X obj 16 60 struct \$0.mode.button float x float y float w float c symbol param; #X connect 2 0 0 0; #X restore 8 84 pd mode.button-template; #N canvas 330 412 405 373 pager-template 0; #X obj 15 41 filledpolygon c c 1 dir 7 12 14 12 0; #X obj 21 285 s \$0.pager.send; #X obj 21 117 struct \$0.pager float x float y float c float dir float num float nvis; #X obj 19 66 drawnumber -v nvis num 30 2 0; #X obj 165 164 route change; #X obj 165 187 t p p; #X obj 21 185 t a a; #X obj 165 209 get \$0.pager num; #X obj 165 233 max 1; #X obj 165 281 set \$0.pager num; #X connect 2 0 6 0; #X connect 4 0 5 0; #X connect 5 0 7 0; #X connect 5 1 9 1; #X connect 6 0 1 0; #X connect 6 1 4 0; #X connect 7 0 8 0; #X connect 8 0 9 0; #X restore 8 172 pd pager-template; #N canvas 305 215 450 300 guibar-template 0; #X obj 21 180 s \$0.guibar.send; #X obj 21 117 struct \$0.guibar float x float y float w; #X obj 17 39 filledpolygon 777 777 1 0 0 w 0 w 24 0 24; #X connect 1 0 0 0; #X restore 8 216 pd guibar-template; #N canvas 330 412 397 197 scroller-template 0; #X obj 17 95 s \$0.scroller.send; #X obj 17 61 struct \$0.scroller float x float y float c float dir ; #X obj 17 26 filledpolygon c c 1 0 0 14 0 7 dir; #X connect 1 0 0 0; #X restore 8 194 pd scroller-template; #N canvas 469 142 450 300 keyboard.toggle-template 0; #X obj 22 108 struct \$0.keyboard.toggle float x float y symbol label float hilite float ihilite; #X obj 24 20 filledpolygon ihilite ihilite 1 0 0 0 15 55 15 55 0; #X obj 22 45 drawsymbol label 3 1 hilite; #X obj 22 149 s \$0.keyboard.toggle.send; #X connect 0 0 3 0; #X restore 8 128 pd keyboard.toggle-template; #X connect 4 0 15 0; #X connect 6 0 9 0; #X connect 7 0 8 0; #X connect 9 0 7 0; #X connect 10 0 12 0; #X connect 11 0 10 0; #X connect 12 0 13 0; #X connect 14 0 4 0; #X connect 15 0 5 0; #X connect 16 0 18 0; #X connect 17 0 16 0; #X connect 18 0 19 0; #X restore 644 215 pd gui-templates; #X obj 347 344 r \$0.global.send; #X obj 339 452 s \$0.global.receive; #X obj 105 477 text define \$0.sequence; #N canvas 136 170 766 345 sequencer 0; #N canvas 0 278 505 346 note.create 0; #X obj 24 39 route note; #X obj 24 62 route create; #X obj 69 228 +; #X obj 69 287 s \$0.sequencer.event.add.pre; #X obj 251 243 s \$0.sequencer.event.add.post; #X obj 69 254 pack f f 0 f; #X obj 111 58 r \$0.create.id; #X obj 24 16 r \$0.seq.receive; #X obj 24 85 list prepend -1; #X obj 24 138 route -1; #X msg 69 205 \$2 \$5; #X msg 113 202 \$3; #X msg 251 217 \$2 \$3 \$4 \$1; #X obj 69 160 t a a a a; #X msg 146 202 \$1; #X obj 189 99 r \$0.sequencer.create.notes; #X obj 211 44 route note; #X obj 211 21 r \$0.seq.receive; #X obj 211 67 route restore; #X connect 0 0 1 0; #X connect 1 0 8 0; #X connect 2 0 5 0; #X connect 5 0 3 0; #X connect 6 0 8 1; #X connect 7 0 0 0; #X connect 8 0 9 0; #X connect 9 1 13 0; #X connect 10 0 2 0; #X connect 11 0 5 1; #X connect 12 0 4 0; #X connect 13 0 10 0; #X connect 13 1 11 0; #X connect 13 2 14 0; #X connect 13 3 12 0; #X connect 14 0 5 3; #X connect 15 0 9 0; #X connect 16 0 18 0; #X connect 17 0 16 0; #X connect 18 0 9 0; #X restore 13 19 pd note.create; #N canvas 140 99 478 389 note.delete 0; #X obj 24 39 route note; #X obj 24 62 route delete; #X obj 69 313 s \$0.sequencer.event.remove; #X obj 24 143 route -1; #X obj 24 85 b; #X obj 24 108 f; #X obj 88 213 tabread \$0.velocity; #X obj 88 236 pack f f; #X msg 69 275 0 \$1, f 5; #X text 151 235 note-on (vel \, id); #X text 111 276 note-off (vel \, id); #X obj 69 170 t a a a; #X obj 56 110 r \$0.delete.id; #X obj 24 16 r \$0.seq.receive; #X connect 0 0 1 0; #X connect 1 0 4 0; #X connect 3 1 11 0; #X connect 4 0 5 0; #X connect 5 0 3 0; #X connect 6 0 7 0; #X connect 7 0 2 0; #X connect 8 0 2 0; #X connect 11 0 8 0; #X connect 11 1 6 0; #X connect 11 2 7 1; #X connect 12 0 5 1; #X connect 13 0 0 0; #X restore 13 42 pd note.delete; #N canvas 0 99 784 430 note.change.duration 0; #X obj 24 39 route note; #X obj 24 109 t a a; #X obj 24 62 route change; #X obj 24 85 route duration; #X msg 131 231 \$2; #X obj 258 331 s \$0.sequencer.event.remove; #X obj 69 332 s \$0.sequencer.event.add.pre; #X obj 69 304 pack f f 0 f; #X msg 258 269 0 \$1; #X obj 231 233 t a a; #X obj 24 16 r \$0.seq.receive; #X msg 231 161 \$1; #X msg 24 143 \$1; #N canvas 83 99 398 214 id->step|pitch 0; #X obj 13 14 inlet; #X obj 13 37 t b a; #X obj 13 114 list append; #X obj 13 137 outlet; #X obj 40 63 s \$0.convert.id->step|pitch.get; #X obj 40 86 r \$0.convert.id->step|pitch; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 1 1 4 0; #X connect 2 0 3 0; #X connect 5 0 2 1; #X restore 24 170 pd id->step|pitch; #X obj 69 227 unpack; #X obj 69 255 +; #X obj 24 193 route -1; #X connect 0 0 2 0; #X connect 1 0 12 0; #X connect 1 1 11 0; #X connect 1 1 4 0; #X connect 2 0 3 0; #X connect 3 0 1 0; #X connect 4 0 15 1; #X connect 7 0 6 0; #X connect 8 0 5 0; #X connect 9 0 7 3; #X connect 9 1 8 0; #X connect 10 0 0 0; #X connect 11 0 9 0; #X connect 12 0 13 0; #X connect 13 0 16 0; #X connect 14 0 15 0; #X connect 14 1 7 1; #X connect 15 0 7 0; #X connect 16 1 14 0; #X restore 13 66 pd note.change.duration; #N canvas 604 608 577 279 event.add 0; #X obj 16 37 t a a; #X msg 71 59 \$1; #X obj 71 107 sel -1; #X msg 71 132 1e+09; #X obj 16 158 text insert \$0.sequence; #X obj 71 84 text search \$0.sequence > 0; #X obj 16 11 r \$0.sequencer.event.add.post; #X obj 256 37 t a a; #X msg 311 59 \$1; #X obj 311 127 sel -1; #X msg 311 152 1e+09; #X obj 256 184 text insert \$0.sequence; #X obj 256 11 r \$0.sequencer.event.add.pre; #X obj 311 104 text search \$0.sequence > 0; #X obj 311 82 - 1; #X connect 0 0 4 0; #X connect 0 1 1 0; #X connect 1 0 5 0; #X connect 2 0 3 0; #X connect 2 1 4 1; #X connect 3 0 4 1; #X connect 5 0 2 0; #X connect 6 0 0 0; #X connect 7 0 11 0; #X connect 7 1 8 0; #X connect 8 0 14 0; #X connect 9 0 10 0; #X connect 9 1 11 1; #X connect 10 0 11 1; #X connect 12 0 7 0; #X connect 13 0 9 0; #X connect 14 0 13 0; #X restore 15 152 pd event.add; #N canvas 594 963 356 230 event.remove 0; #X obj 47 110 text delete \$0.sequence; #X obj 14 11 r \$0.sequencer.event.remove; #X obj 14 80 sel -1; #X obj 14 143 list append; #X obj 14 34 t a a; #X obj 14 189 s error; #X msg 14 166 sequencer: note (id=\$2) not found for deletion; #X obj 14 57 text search \$0.sequence 2 3; #X text 186 55 remove by velocity and id; #X connect 1 0 4 0; #X connect 2 0 3 0; #X connect 2 1 0 0; #X connect 3 0 6 0; #X connect 4 0 7 0; #X connect 4 1 3 1; #X connect 6 0 5 0; #X connect 7 0 2 0; #X restore 15 175 pd event.remove; #X msg 17 230 -1; #X obj 17 253 text delete \$0.sequence; #N canvas 0 99 572 389 note.change.velocity 0; #X obj 24 39 route note; #X obj 24 62 route change; #X obj 24 85 route velocity; #X obj 24 108 t a a; #X obj 69 316 text set \$0.sequence; #X msg 147 284 2; #X obj 24 209 route -1; #X obj 212 247 b; #X obj 24 158 t a a; #X obj 212 272 list append; #X obj 212 319 s error; #X obj 69 282 f; #X obj 69 252 t b a b, f 13; #X obj 24 16 r \$0.seq.receive; #X msg 84 152 \$2; #X msg 24 135 \$1; #X obj 24 186 text search \$0.sequence 3; #X msg 212 296 sequence: note change velocity: note not found (id=\$1) ; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 2 0 3 0; #X connect 3 0 15 0; #X connect 3 1 14 0; #X connect 5 0 4 2; #X connect 6 0 7 0; #X connect 6 1 12 0; #X connect 7 0 9 0; #X connect 8 0 16 0; #X connect 8 1 9 1; #X connect 9 0 17 0; #X connect 11 0 4 0; #X connect 12 0 11 0; #X connect 12 1 4 1; #X connect 12 2 5 0; #X connect 13 0 0 0; #X connect 14 0 11 1; #X connect 15 0 8 0; #X connect 16 0 6 0; #X connect 17 0 10 0; #X restore 13 88 pd note.change.velocity; #N canvas 0 297 334 470 play.notes.by.index 0; #X obj 18 77 text search \$0.sequence 0; #X obj 96 100 text search \$0.sequence > 0; #X obj 18 52 t a a; #X obj 18 98 sel -1; #X obj 51 174 pack f f; #X obj 51 200 t a a; #X obj 51 248 -; #X obj 51 271 until; #X obj 51 297 f; #X obj 51 320 t a a; #X obj 112 302 + 1; #X obj 90 344 loadbang; #X msg 90 370 1; #X obj 51 397 text get \$0.sequence; #X obj 96 123 sel -1; #X msg 51 225 \$2 \$1; #X msg 120 240 \$1; #X obj 96 147 text size \$0.sequence; #X obj 18 17 inlet; #X obj 51 426 outlet; #X msg 129 368 3; #X connect 0 0 3 0; #X connect 1 0 14 0; #X connect 2 0 0 0; #X connect 2 1 1 0; #X connect 3 1 4 0; #X connect 4 0 5 0; #X connect 5 0 15 0; #X connect 5 1 16 0; #X connect 6 0 7 0; #X connect 7 0 8 0; #X connect 8 0 9 0; #X connect 9 0 13 0; #X connect 9 1 10 0; #X connect 10 0 8 1; #X connect 11 0 12 0; #X connect 11 0 20 0; #X connect 12 0 13 1; #X connect 13 0 19 0; #X connect 14 0 17 0; #X connect 14 1 4 1; #X connect 15 0 6 0; #X connect 16 0 8 1; #X connect 17 0 4 1; #X connect 18 0 2 0; #X connect 20 0 13 2; #X restore 248 87 pd play.notes.by.index; #X obj 248 36 inlet; #X obj 248 309 outlet; #N canvas 0 157 416 332 cursor 0; #X obj 23 15 inlet; #X obj 23 117 moses 0; #X obj 62 149 moses 0; #X obj 62 172 t b a; #X msg 62 216 1; #X msg 23 216 0; #X obj 23 254 change -1; #X obj 23 277 s \$0.cursor.show; #X obj 129 277 s \$0.cursor.pos; #X obj 174 15 r \$0.stepsperpage; #X obj 107 15 r \$0.page; #X obj 174 38 t b a a; #X obj 107 70 *; #X obj 23 92 -; #X obj 23 67 f; #X obj 35 43 r \$0.redraw; #X connect 0 0 14 0; #X connect 1 0 5 0; #X connect 1 1 2 0; #X connect 2 0 3 0; #X connect 2 1 5 0; #X connect 3 0 4 0; #X connect 3 1 8 0; #X connect 4 0 6 0; #X connect 5 0 6 0; #X connect 6 0 7 0; #X connect 9 0 11 0; #X connect 10 0 12 0; #X connect 11 0 12 0; #X connect 11 1 12 1; #X connect 11 2 2 1; #X connect 12 0 13 1; #X connect 13 0 1 0; #X connect 14 0 13 0; #X connect 15 0 14 0; #X restore 401 91 pd cursor; #N canvas 258 224 446 426 bag 0; #X obj 35 33 inlet; #X obj 205 34 inlet; #X obj 35 387 outlet; #X obj 35 56 t a a; #N canvas 112 142 450 300 detect.leap 0; #X obj 36 19 inlet; #X obj 36 60 t a a; #X obj 37 88 -; #X obj 37 111 sel 1; #X obj 64 136 b; #X obj 64 172 outlet; #X connect 0 0 1 0; #X connect 1 0 2 1; #X connect 1 1 2 0; #X connect 2 0 3 0; #X connect 3 1 4 0; #X connect 4 0 5 0; #X restore 205 111 pd detect.leap; #X text 82 37 pitch vel id; #X obj 113 189 bag; #X msg 113 112 \$3 \$2; #X msg 205 160 flush; #X obj 113 311 pack f f f; #X obj 113 254 tabread \$0.pitch; #X obj 113 228 t a b a, f 12; #X msg 141 282 0; #X connect 0 0 3 0; #X connect 1 0 4 0; #X connect 3 0 2 0; #X connect 3 1 7 0; #X connect 4 0 8 0; #X connect 6 0 11 0; #X connect 7 0 6 0; #X connect 8 0 6 0; #X connect 9 0 2 0; #X connect 10 0 9 0; #X connect 11 0 10 0; #X connect 11 1 12 0; #X connect 11 2 9 2; #X connect 12 0 9 1; #X restore 248 161 pd bag; #N canvas 483 327 358 592 mute.deleted.note 0; #X obj 24 39 route note; #X obj 24 62 route delete; #X obj 24 85 b; #X obj 24 108 f; #X obj 24 143 route -1; #X obj 50 110 r \$0.delete.id; #X obj 24 16 r \$0.seq.receive; #X obj 25 272 inlet; #X obj 25 488 outlet; #X obj 25 295 t a a; #X msg 73 324 \$3 \$2; #X obj 73 347 unpack f f; #X obj 130 371 > 0; #X obj 73 394 pack f f; #X obj 74 448 table \$0.playing.notes 1000; #X obj 73 417 s \$0.playing.notes; #X obj 132 141 t a a; #X obj 132 164 tabread \$0.playing.notes; #X obj 132 186 sel 1; #X obj 132 209 f; #X obj 132 234 t a b a; #X obj 132 283 tabread \$0.pitch; #X obj 132 306 pack f f f; #X msg 151 258 0; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 2 0 3 0; #X connect 3 0 4 0; #X connect 4 1 16 0; #X connect 5 0 3 1; #X connect 6 0 0 0; #X connect 7 0 9 0; #X connect 9 0 8 0; #X connect 9 1 10 0; #X connect 10 0 11 0; #X connect 11 0 13 0; #X connect 11 1 12 0; #X connect 12 0 13 1; #X connect 13 0 15 0; #X connect 16 0 17 0; #X connect 16 1 19 1; #X connect 17 0 18 0; #X connect 18 0 19 0; #X connect 19 0 20 0; #X connect 20 0 21 0; #X connect 20 1 23 0; #X connect 20 2 22 2; #X connect 21 0 22 0; #X connect 22 0 9 0; #X connect 23 0 22 1; #X restore 248 130 pd mute.deleted.note; #X obj 17 207 r \$0.clear; #N canvas 447 99 474 322 note.change.pos 0; #X obj 24 39 route note; #X obj 24 62 route change; #X obj 255 277 s \$0.sequencer.event.remove; #X obj 24 16 r \$0.seq.receive; #X msg 255 149 \$1; #X obj 24 85 route pos; #X obj 255 172 t a a; #X obj 282 198 tabread \$0.velocity; #X obj 255 227 pack f f; #X msg 255 251 \$2 \$1 \, 0 \$1; #X obj 24 109 t a a a; #X obj 43 136 t a a; #X obj 69 162 tabread \$0.duration; #X obj 43 186 tabread \$0.velocity; #X obj 43 214 pack f f; #X obj 24 248 list append; #X obj 24 275 s \$0.sequencer.create.notes; #X connect 0 0 1 0; #X connect 1 0 5 0; #X connect 3 0 0 0; #X connect 4 0 6 0; #X connect 5 0 10 0; #X connect 6 0 8 0; #X connect 6 1 7 0; #X connect 7 0 8 1; #X connect 8 0 9 0; #X connect 9 0 2 0; #X connect 10 0 15 0; #X connect 10 1 11 0; #X connect 10 2 4 0; #X connect 11 0 13 0; #X connect 11 1 12 0; #X connect 12 0 14 1; #X connect 13 0 14 0; #X connect 14 0 15 1; #X connect 15 0 16 0; #X restore 13 109 pd note.change.pos; #N canvas 494 237 410 372 lookup.note.off 0; #X obj 19 73 inlet; #X obj 19 334 outlet; #X msg 19 96 \$2 \$1 \$3; #X obj 19 119 route 0, f 30; #X msg 19 142 \$2; #X text 76 95 vel pitch id; #X text 47 142 id; #X msg 19 218 \$1 0; #X text 52 218 pitch vel; #X text 19 19 make sure the correct note is turned off in cases where the note was being moved while playing.; #X obj 19 241 list append; #X msg 196 222 \$2 \$1 \$3; #X text 264 222 pitch vel id; #X obj 19 165 t a a, f 11; #X text 97 244 pitch vel id; #X obj 226 89 table \$0.current.pitch 1000; #X obj 196 146 t a a; #X msg 223 172 \$3 \$2; #X obj 223 195 s \$0.current.pitch; #X obj 19 195 tabread \$0.current.pitch; #X connect 0 0 2 0; #X connect 2 0 3 0; #X connect 3 0 4 0; #X connect 3 1 16 0; #X connect 4 0 13 0; #X connect 7 0 10 0; #X connect 10 0 1 0; #X connect 11 0 1 0; #X connect 13 0 19 0; #X connect 13 1 10 1; #X connect 16 0 11 0; #X connect 16 1 17 0; #X connect 17 0 18 0; #X connect 19 0 7 0; #X restore 248 188 pd lookup.note.off; #N canvas 0 165 355 202 append.gid 0; #X obj 37 37 inlet; #X obj 37 150 outlet; #X obj 37 60 unpack f f f; #X obj 37 119 pack f f f; #X obj 106 86 tabread \$0.gid; #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 3 0 1 0; #X connect 4 0 3 2; #X restore 248 214 pd append.gid; #X text 259 108 pitch vel id; #X obj 248 63 t a a a, f 26; #X connect 5 0 6 0; #X connect 8 0 13 0; #X connect 9 0 19 0; #X connect 12 0 16 0; #X connect 13 0 12 0; #X connect 14 0 5 0; #X connect 16 0 17 0; #X connect 17 0 10 0; #X connect 19 0 8 0; #X connect 19 1 12 1; #X connect 19 2 11 0; #X restore 19 477 pd sequencer; #X obj 339 508 outlet; #X obj 339 317 inlet; #X obj 19 508 outlet; #X obj 19 445 inlet; #X obj 476 244 s \$1; #X obj 461 49 r \$0.redraw; #N canvas 294 116 433 523 redraw.notes 0; #X obj 11 15 inlet; #X msg 11 41 1000; #X obj 11 87 until; #X obj 11 110 f; #X obj 62 119 + 1; #X obj 11 64 t a b; #X msg 62 87 0; #X obj 38 218 tabread \$0.active; #X obj 11 240 spigot; #X obj 26 376 tabread \$0.step; #X obj 41 356 tabread \$0.pitch; #X obj 56 336 tabread \$0.velocity; #X obj 71 316 tabread \$0.duration; #X obj 86 296 tabread \$0.gid; #X text 58 241 <- only active notes; #X obj 11 268 t a a a a a a; #X obj 11 402 pack f f f f f f; #X text 133 404 id step pitch vel dur gid; #X obj 11 439 s \$0.redraw.notes; #X text 11 463 see [pd note.create] (process events); #X obj 11 133 t a a; #X obj 11 194 t a a; #X obj 30 167 r \$0.note.redraw; #X connect 0 0 1 0; #X connect 1 0 5 0; #X connect 2 0 3 0; #X connect 3 0 20 0; #X connect 4 0 3 1; #X connect 5 0 2 0; #X connect 5 1 6 0; #X connect 6 0 3 1; #X connect 7 0 8 1; #X connect 8 0 15 0; #X connect 9 0 16 1; #X connect 10 0 16 2; #X connect 11 0 16 3; #X connect 12 0 16 4; #X connect 13 0 16 5; #X connect 15 0 16 0; #X connect 15 1 9 0; #X connect 15 2 10 0; #X connect 15 3 11 0; #X connect 15 4 12 0; #X connect 15 5 13 0; #X connect 16 0 18 0; #X connect 20 0 21 0; #X connect 20 1 4 0; #X connect 21 0 8 0; #X connect 21 1 7 0; #X connect 22 0 21 0; #X restore 461 267 pd redraw.notes; #X obj 565 306 array define \$0.active 1000; #X obj 565 328 array define \$0.step 1000; #X obj 565 351 array define \$0.pitch 1000; #X obj 565 374 array define \$0.duration 1000; #X obj 565 397 array define \$0.velocity 1000; #X obj 565 420 array define \$0.gid 1000; #N canvas 0 99 627 453 converters 0; #N canvas 83 99 403 258 x->step 0; #X obj 17 52 -; #X obj 45 52 r \$0.canvasleftmargin; #X obj 17 78 /; #X obj 45 76 r \$0.stepviswidth; #X obj 17 29 r \$0.convert.x->step.get; #X obj 17 191 s \$0.convert.x->step; #X obj 64 127 r \$0.page; #X obj 92 152 r \$0.stepsperpage; #X obj 64 152 *; #X obj 17 146 +; #X connect 0 0 2 0; #X connect 1 0 0 1; #X connect 2 0 9 0; #X connect 3 0 2 1; #X connect 4 0 0 0; #X connect 6 0 8 0; #X connect 7 0 8 1; #X connect 8 0 9 1; #X connect 9 0 5 0; #X restore 15 18 pd x->step; #N canvas 33 99 407 230 y->pitch 0; #X obj 15 46 -; #X obj 15 70 /; #X obj 43 46 r \$0.canvastopmargin; #X obj 43 70 r \$0.stepvisheight; #X obj 15 157 -; #X obj 15 17 r \$0.convert.y->pitch.get; #X obj 15 186 s \$0.convert.y->pitch; #X obj 99 104 r \$0.pitchoffset; #X obj 15 103 list prepend; #X msg 15 134 \$1 \$2; #X connect 0 0 1 0; #X connect 1 0 8 0; #X connect 2 0 0 1; #X connect 3 0 1 1; #X connect 4 0 6 0; #X connect 5 0 0 0; #X connect 7 0 8 1; #X connect 8 0 9 0; #X connect 9 0 4 0; #X restore 15 48 pd y->pitch; #N canvas 0 99 405 189 x->step 0; #X obj 40 63 s \$0.convert.x->step.get; #X obj 40 85 r \$0.convert.x->step; #X obj 13 14 inlet; #X obj 13 37 t b a; #X obj 13 114 list append; #X obj 13 137 outlet; #X connect 1 0 4 1; #X connect 2 0 3 0; #X connect 3 0 4 0; #X connect 3 1 0 0; #X connect 4 0 5 0; #X restore 135 18 pd x->step; #N canvas 0 99 405 189 y->pitch 0; #X obj 13 14 inlet; #X obj 13 37 t b a; #X obj 13 114 list append; #X obj 13 137 outlet; #X obj 40 63 s \$0.convert.y->pitch.get; #X obj 40 85 r \$0.convert.y->pitch; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 1 1 4 0; #X connect 2 0 3 0; #X connect 5 0 2 1; #X restore 135 48 pd y->pitch; #N canvas 83 99 403 258 step->x 0; #X obj 51 117 r \$0.stepviswidth; #X obj 17 118 *; #X obj 17 151 +; #X obj 50 151 r \$0.canvasleftmargin; #X obj 17 29 r \$0.convert.step->x.get; #X obj 17 186 s \$0.convert.step->x; #X obj 64 57 r \$0.page; #X obj 92 82 r \$0.stepsperpage; #X obj 64 82 *; #X obj 17 76 -; #X connect 0 0 1 1; #X connect 1 0 2 0; #X connect 2 0 5 0; #X connect 3 0 2 1; #X connect 4 0 9 0; #X connect 6 0 8 0; #X connect 7 0 8 1; #X connect 8 0 9 1; #X connect 9 0 1 0; #X restore 285 18 pd step->x; #N canvas 63 99 403 210 pitch->y 0; #X obj 15 129 *; #X obj 15 162 +; #X obj 49 128 r \$0.stepvisheight; #X obj 48 162 r \$0.canvastopmargin; #X obj 15 101 -; #X obj 15 17 r \$0.convert.pitch->y.get; #X obj 15 192 s \$0.convert.pitch->y; #X obj 99 45 r \$0.pitchoffset; #X obj 15 44 list prepend; #X msg 15 76 \$1 \$2; #X connect 0 0 1 0; #X connect 1 0 6 0; #X connect 2 0 0 1; #X connect 3 0 1 1; #X connect 4 0 0 0; #X connect 5 0 8 0; #X connect 7 0 8 1; #X connect 8 0 9 0; #X connect 9 0 4 0; #X restore 285 48 pd pitch->y; #N canvas 0 99 405 189 step->x 0; #X obj 13 14 inlet; #X obj 13 37 t b a; #X obj 13 114 list append; #X obj 13 137 outlet; #X obj 40 63 s \$0.convert.step->x.get; #X obj 40 85 r \$0.convert.step->x; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 1 1 4 0; #X connect 2 0 3 0; #X connect 5 0 2 1; #X restore 415 18 pd step->x; #N canvas 0 99 405 189 pitch->y 0; #X obj 13 14 inlet; #X obj 13 37 t b a; #X obj 13 114 list append; #X obj 13 137 outlet; #X obj 40 63 s \$0.convert.pitch->y.get; #X obj 40 85 r \$0.convert.pitch->y; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 1 1 4 0; #X connect 2 0 3 0; #X connect 5 0 2 1; #X restore 415 48 pd pitch->y; #N canvas 72 99 483 612 step|pitch->id 0; #X obj 135 313 tabread \$0.step; #X msg 135 94 1000; #X obj 135 140 until; #X obj 135 163 f; #X obj 135 117 t a b; #X msg 186 140 0; #X obj 135 339 sel 0; #X obj 135 364 f; #X obj 135 409 tabread \$0.pitch; #X obj 135 387 t a a; #X obj 135 432 sel 0; #X obj 135 480 f; #X obj 135 455 t b b; #X obj 275 349 b; #X obj 135 71 t b a a; #X msg 227 173 \$1; #X msg 269 177 \$2; #X obj 135 186 t a a a; #X obj 192 175 + 1; #X obj 135 289 t a a; #X obj 135 262 f; #X obj 135 213 tabread \$0.active; #X obj 135 239 sel 1; #X text 249 241 consider only 'active' notes; #X obj 38 20 r \$0.convert.step|pitch->id.get; #X obj 38 43 t b a b, f 33; #X obj 38 566 s \$0.convert.step|pitch->id; #X obj 38 527 f; #X msg 233 494 -1; #X text 262 492 -1: no such note; #X connect 0 0 6 0; #X connect 1 0 4 0; #X connect 2 0 3 0; #X connect 3 0 17 0; #X connect 4 0 2 0; #X connect 4 1 5 0; #X connect 5 0 3 1; #X connect 6 0 7 0; #X connect 7 0 9 0; #X connect 8 0 10 0; #X connect 9 0 8 0; #X connect 9 1 11 1; #X connect 10 0 12 0; #X connect 11 0 27 1; #X connect 12 0 11 0; #X connect 12 1 13 0; #X connect 13 0 2 1; #X connect 14 0 1 0; #X connect 14 1 15 0; #X connect 14 2 16 0; #X connect 15 0 6 1; #X connect 16 0 10 1; #X connect 17 0 21 0; #X connect 17 1 20 1; #X connect 17 2 18 0; #X connect 18 0 3 1; #X connect 19 0 0 0; #X connect 19 1 7 1; #X connect 20 0 19 0; #X connect 21 0 22 0; #X connect 22 0 20 0; #X connect 24 0 25 0; #X connect 25 0 27 0; #X connect 25 1 14 0; #X connect 25 2 28 0; #X connect 27 0 26 0; #X connect 28 0 27 1; #X restore 15 108 pd step|pitch->id; #N canvas 80 99 410 208 step|pitch->id 0; #X obj 40 63 s \$0.convert.step|pitch->id.get; #X obj 40 86 r \$0.convert.step|pitch->id; #X obj 13 14 inlet; #X obj 13 37 t b a; #X obj 13 114 list append; #X obj 13 137 outlet; #X connect 1 0 4 1; #X connect 2 0 3 0; #X connect 3 0 4 0; #X connect 3 1 0 0; #X connect 4 0 5 0; #X restore 135 108 pd step|pitch->id; #N canvas 73 99 403 345 id->step|pitch 0; #X obj 17 29 r \$0.convert.id->step|pitch.get; #X obj 17 302 s \$0.convert.id->step|pitch; #X obj 34 79 tabread \$0.active; #X obj 34 102 sel 1; #X obj 34 126 f; #X obj 17 52 t b a a b; #X obj 34 149 t a a; #X obj 34 194 tabread \$0.step; #X obj 61 173 tabread \$0.pitch; #X obj 34 234 pack f f; #X obj 17 275 list append; #X msg 137 238 -1 0; #X connect 0 0 5 0; #X connect 2 0 3 0; #X connect 3 0 4 0; #X connect 4 0 6 0; #X connect 5 0 10 0; #X connect 5 1 2 0; #X connect 5 2 4 1; #X connect 5 3 11 0; #X connect 6 0 7 0; #X connect 6 1 8 0; #X connect 7 0 9 0; #X connect 8 0 9 1; #X connect 9 0 10 1; #X connect 10 0 1 0; #X connect 11 0 10 1; #X restore 285 108 pd id->step|pitch; #N canvas 83 99 398 214 id->step|pitch 0; #X obj 13 14 inlet; #X obj 13 37 t b a; #X obj 13 114 list append; #X obj 13 137 outlet; #X obj 40 63 s \$0.convert.id->step|pitch.get; #X obj 40 86 r \$0.convert.id->step|pitch; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 1 1 4 0; #X connect 2 0 3 0; #X connect 5 0 2 1; #X restore 415 108 pd id->step|pitch; #N canvas 73 99 434 455 id->pointer 0; #X msg 125 330 -1; #X obj 38 169 pointer \$0.note; #X obj 38 107 until; #X msg 38 130 next; #X obj 38 192 t p p; #X obj 88 111 symbol \$1; #X msg 88 136 traverse \$1; #X obj 38 248 get \$0.note id; #X obj 38 273 select; #X obj 184 187 t a; #X obj 38 329 pointer; #X obj 38 78 t b b a; #X obj 38 20 r \$0.convert.id->pointer.get; #X obj 38 376 s \$0.convert.id->pointer; #X obj 125 202 t b b; #X text 156 331 -1: no such scalar; #X obj 38 296 t b b, f 23; #X connect 0 0 13 0; #X connect 1 0 4 0; #X connect 1 2 14 0; #X connect 2 0 3 0; #X connect 3 0 1 0; #X connect 4 0 7 0; #X connect 4 1 10 1; #X connect 5 0 6 0; #X connect 6 0 1 0; #X connect 7 0 8 0; #X connect 8 0 16 0; #X connect 9 0 8 1; #X connect 10 0 13 0; #X connect 11 0 2 0; #X connect 11 1 5 0; #X connect 11 2 9 0; #X connect 12 0 11 0; #X connect 14 0 0 0; #X connect 14 1 2 1; #X connect 16 0 10 0; #X connect 16 1 2 1; #X restore 15 138 pd id->pointer; #N canvas 83 99 410 208 id->pointer 0; #X obj 13 14 inlet; #X obj 13 37 t b a; #X obj 13 114 list append; #X obj 13 137 outlet; #X obj 40 63 s \$0.convert.id->pointer.get; #X obj 40 86 r \$0.convert.id->pointer; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 1 1 4 0; #X connect 2 0 3 0; #X connect 5 0 2 1; #X restore 135 138 pd id->pointer; #N canvas 83 99 403 345 pointer->id 0; #X obj 17 29 r \$0.convert.pointer->id.get; #X obj 17 302 s \$0.convert.pointer->id; #X obj 17 90 get \$0.note id; #X connect 0 0 2 0; #X connect 2 0 1 0; #X restore 285 138 pd pointer->id; #N canvas 83 99 398 214 pointer->id 0; #X obj 13 14 inlet; #X obj 13 37 t b a; #X obj 13 114 list append; #X obj 13 137 outlet; #X obj 40 63 s \$0.convert.pointer->id.get; #X obj 40 86 r \$0.convert.pointer->id; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 1 1 4 0; #X connect 2 0 3 0; #X connect 5 0 2 1; #X restore 415 138 pd pointer->id; #N canvas 83 99 403 210 w->duration 0; #X obj 15 78 /; #X obj 44 78 r \$0.stepviswidth; #X obj 15 17 r \$0.convert.w->duration.get; #X obj 15 147 s \$0.convert.w->duration; #X connect 0 0 3 0; #X connect 1 0 0 1; #X connect 2 0 0 0; #X restore 15 78 pd w->duration; #N canvas 0 99 405 189 w->duration 0; #X obj 13 14 inlet; #X obj 13 37 t b a; #X obj 13 114 list append; #X obj 13 137 outlet; #X obj 40 85 r \$0.convert.w->duration; #X obj 40 63 s \$0.convert.w->duration.get; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 1 1 5 0; #X connect 2 0 3 0; #X connect 4 0 2 1; #X restore 135 78 pd w->duration; #N canvas 83 99 403 210 duration->w 0; #X obj 47 78 r \$0.stepviswidth; #X obj 15 77 *; #X obj 15 17 r \$0.convert.duration->w.get; #X obj 15 157 s \$0.convert.duration->w; #X connect 0 0 1 1; #X connect 1 0 3 0; #X connect 2 0 1 0; #X restore 285 78 pd duration->w; #N canvas 0 99 405 189 duration->w 0; #X obj 13 14 inlet; #X obj 13 37 t b a; #X obj 13 114 list append; #X obj 13 137 outlet; #X obj 40 63 s \$0.convert.duration->w.get; #X obj 40 85 r \$0.convert.duration->w; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 1 1 4 0; #X connect 2 0 3 0; #X connect 5 0 2 1; #X restore 415 78 pd duration->w; #N canvas 83 99 403 254 gid->gclr 0; #X obj 38 20 r \$0.convert.gid->gclr.get; #X obj 77 189 s \$0.convert.gid->gclr; #X obj 77 118 list store; #X msg 77 72 get \$1 1; #X obj 134 92 r \$0.gidcolorlist; #X msg 134 142 -1; #X obj 38 49 moses 0; #X connect 0 0 6 0; #X connect 2 0 1 0; #X connect 2 1 5 0; #X connect 3 0 2 0; #X connect 4 0 2 1; #X connect 5 0 1 0; #X connect 6 0 5 0; #X connect 6 1 3 0; #X restore 15 168 pd gid->gclr; #N canvas 83 99 410 208 gid->gclr 0; #X obj 13 14 inlet; #X obj 13 37 t b a; #X obj 13 114 list append; #X obj 13 137 outlet; #X obj 40 63 s \$0.convert.gid->gclr.get; #X obj 40 86 r \$0.convert.gid->gclr; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 1 1 4 0; #X connect 2 0 3 0; #X connect 5 0 2 1; #X restore 135 168 pd gid->gclr; #N canvas 139 426 690 398 pitchoffset.calculations 0; #X obj 7 147 s \$0.pitchoffset; #X obj 7 5 r \$0.pitchrange; #X obj 7 50 div 2; #X obj 7 73 - 1; #X obj 7 96 + 60; #X obj 7 28 t a a, f 41; #X obj 219 153 pack f f; #X obj 250 99 - 1; #X msg 219 176 \$1 \$2; #X obj 219 199 -; #X obj 219 222 t a a; #X text 264 222 <- lower boundary; #X obj 219 324 s \$0.pitchdownshift; #X obj 219 248 min 12; #X obj 143 102 r \$0.pitchoffset; #X obj 219 271 max 0; #X msg 143 177 127 \$1; #X obj 143 200 -; #X obj 143 223 min 12; #X obj 143 246 max 0; #X obj 143 362 s \$0.pitchupshift; #X obj 219 294 * -1; #X obj 143 125 t a a a; #X obj 339 359 s \$0.pitchupperboundary; #X obj 338 296 s \$0.pitchlowerboundary; #X connect 1 0 5 0; #X connect 2 0 3 0; #X connect 3 0 4 0; #X connect 4 0 0 0; #X connect 5 0 2 0; #X connect 5 1 7 0; #X connect 6 0 8 0; #X connect 7 0 6 1; #X connect 8 0 9 0; #X connect 9 0 10 0; #X connect 10 0 13 0; #X connect 10 1 24 0; #X connect 13 0 15 0; #X connect 14 0 22 0; #X connect 15 0 21 0; #X connect 16 0 17 0; #X connect 17 0 18 0; #X connect 18 0 19 0; #X connect 19 0 20 0; #X connect 21 0 12 0; #X connect 22 0 16 0; #X connect 22 1 23 0; #X connect 22 2 6 0; #X restore 14 327 pd pitchoffset.calculations; #N canvas 709 677 363 270 page.boundaries 0; #X obj 10 11 r \$0.page; #X obj 25 40 r \$0.stepsperpage; #X obj 10 99 *; #X obj 25 63 t a a; #X obj 52 93 - 1; #X obj 10 209 s \$0.pageleftboundary; #X obj 37 175 s \$0.pagerightboundary; #X obj 10 122 t a a; #X obj 37 148 +; #X connect 0 0 2 0; #X connect 1 0 3 0; #X connect 2 0 7 0; #X connect 3 0 2 1; #X connect 3 1 4 0; #X connect 4 0 8 1; #X connect 7 0 5 0; #X connect 7 1 8 0; #X connect 8 0 6 0; #X restore 14 351 pd page.boundaries; #X obj 279 333 r \$0.pageleftboundary; #X floatatom 279 356 5 0 0 0 - - -; #X obj 482 337 r \$0.pagerightboundary; #X floatatom 482 360 5 0 0 0 - - -; #X obj 394 242 r \$0.pitchupperboundary; #X floatatom 394 265 5 0 0 0 - - -; #X obj 396 408 r \$0.pitchlowerboundary; #X floatatom 396 431 5 0 0 0 - - -; #N canvas 163 377 542 421 id->visible.length 0; #X text 13 18 In order for long notes not to ovelap page boundaries \, we calculate the visible length; #X obj 357 183 r \$0.pagerightboundary; #X obj 200 214 r \$0.pageleftboundary; #X obj 31 284 -; #X obj 155 241 pack f f; #X obj 155 289 -; #X msg 155 264 \$2 \$1; #X obj 155 312 max 0; #X obj 323 341 r \$0.stepsperpage; #X obj 31 180 t a a a, f 42; #X obj 357 206 + 1; #X obj 280 270 pack f f; #X obj 280 318 -; #X msg 280 293 \$2 \$1; #X obj 280 341 min; #X obj 31 321 min; #X obj 31 352 s \$0.convert.id->visible.length; #X obj 31 65 r \$0.convert.id->visible.length.get; #X obj 31 88 t a a; #X obj 31 131 tabread \$0.step; #X obj 61 111 tabread \$0.duration; #X obj 31 154 pack f f; #X msg 31 212 \$2; #X msg 155 211 \$1; #X msg 280 245 \$1; #X connect 1 0 10 0; #X connect 2 0 4 1; #X connect 3 0 15 0; #X connect 4 0 6 0; #X connect 5 0 7 0; #X connect 6 0 5 0; #X connect 7 0 3 1; #X connect 8 0 14 1; #X connect 9 0 22 0; #X connect 9 1 23 0; #X connect 9 2 24 0; #X connect 10 0 11 1; #X connect 11 0 13 0; #X connect 12 0 14 0; #X connect 13 0 12 0; #X connect 14 0 15 1; #X connect 15 0 16 0; #X connect 17 0 18 0; #X connect 18 0 19 0; #X connect 18 1 20 0; #X connect 19 0 21 0; #X connect 20 0 21 1; #X connect 21 0 9 0; #X connect 22 0 3 0; #X connect 23 0 4 0; #X connect 24 0 11 0; #X restore 15 257 pd id->visible.length; #N canvas 83 99 410 208 id->visible.length 0; #X obj 13 14 inlet; #X obj 13 37 t b a; #X obj 13 114 list append; #X obj 13 137 outlet; #X obj 76 88 r \$0.convert.id->visible.length; #X obj 76 66 s \$0.convert.id->visible.length.get; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 1 1 5 0; #X connect 2 0 3 0; #X connect 4 0 2 1; #X restore 153 256 pd id->visible.length; #N canvas 338 430 386 262 pitch->isvisible 0; #X obj 25 91 moses; #X obj 52 124 moses; #X msg 52 155 1; #X msg 25 155 0; #X obj 52 47 r \$0.pitchlowerboundary; #X obj 79 73 r \$0.pitchupperboundary; #X obj 79 96 + 1; #X obj 25 18 r \$0.convert.pitch->isvisible.get; #X obj 25 197 s \$0.convert.pitch->isvisible; #X connect 0 0 3 0; #X connect 0 1 1 0; #X connect 1 0 2 0; #X connect 1 1 3 0; #X connect 2 0 8 0; #X connect 3 0 8 0; #X connect 4 0 0 1; #X connect 5 0 6 0; #X connect 6 0 1 1; #X connect 7 0 0 0; #X restore 14 234 pd pitch->isvisible; #N canvas 338 463 350 193 pitch->isvisible 0; #X obj 13 14 inlet; #X obj 13 37 t b a; #X obj 13 114 list append; #X obj 13 137 outlet; #X obj 76 63 s \$0.convert.pitch->isvisible.get; #X obj 76 85 r \$0.convert.pitch->isvisible; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 1 1 4 0; #X connect 2 0 3 0; #X connect 5 0 2 1; #X restore 153 234 pd pitch->isvisible; #N canvas 338 430 402 356 id->step|isvisible 0; #X obj 9 153 max 0; #X obj 36 120 r \$0.pageleftboundary; #X obj 127 196 r \$0.pagerightboundary; #X obj 231 145 r \$0.pageleftboundary; #X obj 216 117 +; #X obj 216 173 >; #X obj 112 225 <=; #X obj 9 17 r \$0.convert.id->step|isvisble.get; #X obj 9 313 s \$0.convert.id->step|isvisble; #X obj 9 40 t a a, f 37; #X obj 9 65 tabread \$0.step; #X obj 231 71 tabread \$0.duration; #X obj 9 88 t a a a, f 35; #X obj 9 282 pack f f; #X text 85 283 step isvisible; #X obj 112 258 &&; #X connect 0 0 13 0; #X connect 1 0 0 1; #X connect 2 0 6 1; #X connect 3 0 5 1; #X connect 4 0 5 0; #X connect 5 0 15 1; #X connect 6 0 15 0; #X connect 7 0 9 0; #X connect 9 0 10 0; #X connect 9 1 11 0; #X connect 10 0 12 0; #X connect 11 0 4 1; #X connect 12 0 0 0; #X connect 12 1 6 0; #X connect 12 2 4 0; #X connect 13 0 8 0; #X connect 15 0 13 1; #X restore 14 212 pd id->step|isvisible; #N canvas 338 628 349 170 id->step|isvisible 0; #X obj 13 14 inlet; #X obj 13 37 t b a; #X obj 13 114 list append; #X obj 13 137 outlet; #X obj 76 67 s \$0.convert.id->step|isvisble.get; #X obj 76 87 r \$0.convert.id->step|isvisble; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 1 1 4 0; #X connect 2 0 3 0; #X connect 5 0 2 1; #X restore 153 212 pd id->step|isvisible; #X connect 24 0 25 0; #X connect 26 0 27 0; #X connect 28 0 29 0; #X connect 30 0 31 0; #X restore 19 95 pd converters; #N canvas 342 165 401 476 inspector 0; #X obj 42 89 t a a a a a a; #X obj 117 113 tabread \$0.active; #X obj 102 158 tabread \$0.step; #X obj 87 205 tabread \$0.pitch; #X obj 72 252 tabread \$0.duration; #X obj 57 299 tabread \$0.velocity; #X obj 42 349 tabread \$0.gid; #X msg 42 372 gid \$1; #X msg 57 322 velocity \$1; #X msg 72 275 duration \$1; #X msg 87 228 pitch \$1; #X msg 117 136 active \$1; #X obj 42 59 t a a, f 30; #X obj 117 435 print NOTE; #X floatatom 42 19 5 0 0 0 - - -; #X msg 219 290 -- ID \$1 ------------; #X msg 102 181 step \$1; #X connect 0 0 6 0; #X connect 0 1 5 0; #X connect 0 2 4 0; #X connect 0 3 3 0; #X connect 0 4 2 0; #X connect 0 5 1 0; #X connect 1 0 11 0; #X connect 2 0 16 0; #X connect 3 0 10 0; #X connect 4 0 9 0; #X connect 5 0 8 0; #X connect 6 0 7 0; #X connect 7 0 13 0; #X connect 8 0 13 0; #X connect 9 0 13 0; #X connect 10 0 13 0; #X connect 11 0 13 0; #X connect 12 0 0 0; #X connect 12 1 15 0; #X connect 14 0 12 0; #X connect 15 0 13 0; #X connect 16 0 13 0; #X restore 19 275 pd inspector; #N canvas 0 99 393 172 errors 0; #X obj 15 14 r error; #X obj 15 37 print ERROR:; #X connect 0 0 1 0; #X restore 19 305 pd errors; #X obj 339 374 t a a a; #X obj 358 429 s \$0.seq.receive; #N canvas 0 99 495 291 parse.config.commands 0; #X obj 10 221 s; #X obj 10 18 r \$0.global.receive; #X obj 10 64 list split 1; #X obj 10 106 list prepend \$0; #X msg 10 129 symbol \$1.\$2; #X obj 10 189 list append; #X obj 10 152 t b a; #X obj 239 180 s \$0.page; #X obj 212 101 max 1; #X obj 111 75 b; #X obj 111 178 s \$0.redraw; #X obj 212 124 t b a; #X obj 239 155 - 1; #X obj 10 41 route set redraw page clear, f 68; #X obj 313 80 b; #X obj 313 103 s \$0.clear; #X connect 1 0 13 0; #X connect 2 0 3 0; #X connect 2 1 5 1; #X connect 3 0 4 0; #X connect 4 0 6 0; #X connect 5 0 0 0; #X connect 6 0 5 0; #X connect 6 1 0 1; #X connect 8 0 11 0; #X connect 9 0 10 0; #X connect 11 0 10 0; #X connect 11 1 12 0; #X connect 12 0 7 0; #X connect 13 0 2 0; #X connect 13 1 9 0; #X connect 13 2 8 0; #X connect 13 3 14 0; #X connect 14 0 15 0; #X restore 19 65 pd parse.config.commands; #X obj 490 318 r \$0.clear; #X obj 461 78 t b b b b b b; #N canvas 0 99 430 292 generate.events 0; #N canvas 0 99 401 500 note.change.duration 0; #X obj 14 19 r \$0.note.send; #X obj 14 325 change -1; #X obj 227 179 t a a; #X obj 254 205 tabread \$0.duration; #X msg 254 230 set \$1; #X obj 14 376 list prepend; #X obj 14 404 list prepend note change duration; #X obj 14 427 list trim; #X obj 14 455 s \$0.global.send; #X obj 14 42 route change click, f 21; #N canvas 83 99 398 214 pointer->id 0; #X obj 13 14 inlet; #X obj 13 37 t b a; #X obj 13 114 list append; #X obj 13 137 outlet; #X obj 40 63 s \$0.convert.pointer->id.get; #X obj 40 86 r \$0.convert.pointer->id; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 1 1 4 0; #X connect 2 0 3 0; #X connect 5 0 2 1; #X restore 227 125 pd pointer->id; #N canvas 0 99 405 189 w->duration 0; #X obj 13 14 inlet; #X obj 13 37 t b a; #X obj 13 114 list append; #X obj 13 137 outlet; #X obj 40 85 r \$0.convert.w->duration; #X obj 40 63 s \$0.convert.w->duration.get; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 1 1 5 0; #X connect 2 0 3 0; #X connect 4 0 2 1; #X restore 59 232 pd w->duration; #X obj 59 205 -; #X obj 125 75 t p p; #X obj 125 103 get \$0.note w; #X obj 59 277 +; #X obj 59 162 change -1; #X msg 139 134 set \$1; #X obj 14 104 get \$0.note dur w; #X connect 0 0 9 0; #X connect 1 0 5 0; #X connect 2 0 5 1; #X connect 2 1 3 0; #X connect 3 0 4 0; #X connect 3 0 15 1; #X connect 4 0 1 0; #X connect 5 0 6 0; #X connect 6 0 7 0; #X connect 7 0 8 0; #X connect 9 0 18 0; #X connect 9 1 13 0; #X connect 10 0 2 0; #X connect 11 0 15 0; #X connect 12 0 11 0; #X connect 13 0 14 0; #X connect 13 1 10 0; #X connect 14 0 12 1; #X connect 14 0 17 0; #X connect 15 0 1 0; #X connect 16 0 12 0; #X connect 17 0 16 0; #X connect 18 0 1 0; #X connect 18 1 16 0; #X restore 16 67 pd note.change.duration; #N canvas 94 99 688 603 note.create/delete 0; #X obj 29 275 del 0; #X obj 29 302 f; #X msg 68 275 1; #X msg 254 191 0; #X obj 29 328 sel 1; #N canvas 0 99 483 432 detect_double_click 0; #X obj 91 101 -; #X obj 90 76 t a a; #X obj 19 23 inlet; #X text 109 21 this detects two clicks on the same scalar within a certain period.; #X obj 19 75 t b b; #X obj 19 99 del 300; #X msg 19 122 0; #X msg 52 123 1; #X obj 19 48 t b a; #X obj 91 166 spigot 0; #X obj 91 203 outlet; #X obj 91 126 sel 0; #X connect 0 0 11 0; #X connect 1 0 0 1; #X connect 1 1 0 0; #X connect 2 0 8 0; #X connect 4 0 5 0; #X connect 4 1 7 0; #X connect 5 0 6 0; #X connect 6 0 9 1; #X connect 7 0 9 1; #X connect 8 0 4 0; #X connect 8 1 1 0; #X connect 9 0 10 0; #X connect 11 0 9 0; #X restore 281 355 pd detect_double_click; #X obj 254 109 unpack s p f; #X obj 254 132 sel click; #X obj 254 154 t b b; #X obj 281 178 pointer; #X obj 29 14 r \$0.horizgrid.send; #X obj 29 77 route click; #X obj 29 100 get \$0.horizgrid y; #X obj 74 145 route click; #X obj 74 122 r \$0.vertgrid.send; #X obj 29 193 pack f f; #X obj 74 168 get \$0.vertgrid x; #X obj 29 242 t b b a; #X obj 29 355 list append; #X msg 29 216 \$2 \$1; #X obj 254 79 r \$0.note.send; #X text 103 358 x y; #X obj 281 401 f; #X text 72 467 step pitch; #N canvas 0 223 318 251 append.vel.dur.gid 0; #X obj 12 18 inlet; #X obj 12 199 outlet; #X obj 95 55 r \$0.default.vel; #X obj 95 85 r \$0.default.dur; #X obj 95 115 r \$0.default.gid; #X obj 12 73 list append; #X obj 12 103 list append; #X obj 12 133 list append; #X connect 0 0 5 0; #X connect 2 0 5 1; #X connect 3 0 6 1; #X connect 4 0 7 1; #X connect 5 0 6 0; #X connect 6 0 7 0; #X connect 7 0 1 0; #X restore 29 484 pd append.vel.dur.gid; #X text 33 503 step pitch vel dur gid; #X obj 29 519 list prepend note create; #X obj 29 542 list trim; #X obj 29 565 s \$0.global.send; #X obj 281 378 b; #X obj 281 332 t a a; #X obj 281 499 s \$0.global.send; #N canvas 0 99 405 189 x->step 0; #X obj 40 63 s \$0.convert.x->step.get; #X obj 40 85 r \$0.convert.x->step; #X obj 13 14 inlet; #X obj 13 37 t b a; #X obj 13 114 list append; #X obj 13 137 outlet; #X connect 1 0 4 1; #X connect 2 0 3 0; #X connect 3 0 4 0; #X connect 3 1 0 0; #X connect 4 0 5 0; #X restore 29 402 pd x->step; #N canvas 0 99 405 189 y->pitch 0; #X obj 13 14 inlet; #X obj 13 37 t b a; #X obj 13 114 list append; #X obj 13 137 outlet; #X obj 40 63 s \$0.convert.y->pitch.get; #X obj 40 85 r \$0.convert.y->pitch; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 1 1 4 0; #X connect 2 0 3 0; #X connect 5 0 2 1; #X restore 104 402 pd y->pitch; #X obj 29 378 unpack f f, f 13; #X obj 29 432 pack f f, f 13; #N canvas 83 99 398 214 pointer->id 0; #X obj 13 14 inlet; #X obj 13 37 t b a; #X obj 13 114 list append; #X obj 13 137 outlet; #X obj 40 63 s \$0.convert.pointer->id.get; #X obj 40 86 r \$0.convert.pointer->id; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 1 1 4 0; #X connect 2 0 3 0; #X connect 5 0 2 1; #X restore 281 203 pd pointer->id; #X obj 29 47 spigot 1; #X obj 107 61 == 0; #X obj 281 229 list prepend 0; #X text 254 28 Shift+click deletes a note (like double-click); #X obj 107 38 r \$0.mod.key; #X obj 430 102 r \$0.mod.key; #X obj 465 196 r \$0.delete.on.click; #X msg 281 436 note delete \$1; #X obj 486 150 r \$0.toggle.selection; #X obj 430 125 t a a; #X obj 430 195 ==; #X obj 457 148 ==; #X obj 457 171 * 2; #X obj 281 302 route 0 1 2, f 24; #X obj 430 218 +; #X msg 476 397 note toggle \$1; #X obj 476 420 s \$0.global.receive; #X connect 0 0 1 0; #X connect 1 0 4 0; #X connect 2 0 1 1; #X connect 3 0 1 1; #X connect 4 0 18 0; #X connect 5 0 29 0; #X connect 6 0 7 0; #X connect 6 1 9 1; #X connect 7 0 8 0; #X connect 8 0 3 0; #X connect 8 1 9 0; #X connect 9 0 36 0; #X connect 10 0 37 0; #X connect 11 0 12 0; #X connect 12 0 15 0; #X connect 13 0 16 0; #X connect 14 0 13 0; #X connect 15 0 19 0; #X connect 16 0 15 1; #X connect 17 0 0 0; #X connect 17 1 2 0; #X connect 17 2 18 1; #X connect 18 0 34 0; #X connect 19 0 17 0; #X connect 20 0 6 0; #X connect 22 0 44 0; #X connect 24 0 26 0; #X connect 26 0 27 0; #X connect 27 0 28 0; #X connect 29 0 22 0; #X connect 30 0 5 0; #X connect 30 1 22 1; #X connect 32 0 35 0; #X connect 33 0 35 1; #X connect 34 0 32 0; #X connect 34 1 33 0; #X connect 35 0 24 0; #X connect 36 0 39 0; #X connect 37 0 11 0; #X connect 38 0 37 1; #X connect 39 0 50 0; #X connect 41 0 38 0; #X connect 42 0 46 0; #X connect 43 0 47 1; #X connect 44 0 31 0; #X connect 45 0 48 1; #X connect 46 0 47 0; #X connect 46 1 48 0; #X connect 47 0 51 0; #X connect 48 0 49 0; #X connect 49 0 51 1; #X connect 50 0 30 0; #X connect 50 1 44 0; #X connect 50 2 52 0; #X connect 51 0 39 1; #X connect 52 0 53 0; #X restore 16 42 pd note.create/delete; #N canvas 0 99 406 517 note.change.velocity 0; #X obj 14 19 r \$0.note.send; #X obj 14 42 route change; #X obj 14 226 change -1; #X obj 120 144 t a a; #X msg 147 195 set \$1; #X obj 14 356 list prepend; #X obj 14 407 list trim; #X obj 14 435 s \$0.global.send; #X obj 120 118 change -1; #X obj 14 65 get \$0.note vel id; #X obj 147 170 tabread \$0.velocity; #X obj 14 384 list prepend note change velocity; #X connect 0 0 1 0; #X connect 1 0 9 0; #X connect 2 0 5 0; #X connect 3 0 5 1; #X connect 3 1 10 0; #X connect 4 0 2 0; #X connect 5 0 11 0; #X connect 6 0 7 0; #X connect 8 0 3 0; #X connect 9 0 2 0; #X connect 9 1 8 0; #X connect 10 0 4 0; #X connect 11 0 6 0; #X restore 16 92 pd note.change.velocity; #N canvas 0 99 406 517 note.change.gid 0; #X obj 14 19 r \$0.note.send; #X obj 14 42 route change; #X obj 14 226 change -1; #X obj 119 144 t a a; #X msg 146 195 set \$1; #X obj 14 356 list prepend; #X obj 14 407 list trim; #X obj 14 435 s \$0.global.send; #X obj 119 118 change -1; #X obj 146 170 tabread \$0.gid; #X obj 14 384 list prepend note change gid; #X obj 14 65 get \$0.note gid id; #X connect 0 0 1 0; #X connect 1 0 11 0; #X connect 2 0 5 0; #X connect 3 0 5 1; #X connect 3 1 9 0; #X connect 4 0 2 0; #X connect 5 0 10 0; #X connect 6 0 7 0; #X connect 8 0 3 0; #X connect 9 0 4 0; #X connect 10 0 6 0; #X connect 11 0 2 0; #X connect 11 1 8 0; #X restore 16 116 pd note.change.gid; #N canvas 0 99 570 525 note.edit.modes 0; #X obj 14 19 r \$0.note.send; #X obj 14 435 s \$0.global.send; #X obj 14 42 route click; #X obj 14 65 get \$0.note id; #N canvas 36 115 405 333 gid 0; #X obj 40 173 tabread \$0.gid; #X obj 29 120 r \$0.default.gid; #X obj 14 143 f; #X obj 14 203 sel; #X obj 14 96 spigot 0; #X obj 14 52 t b a; #X obj 14 22 inlet; #X obj 14 262 outlet; #X obj 59 71 route gid; #X msg 14 231 gid \$1; #X obj 59 48 r \$0.edit.modes; #X connect 0 0 3 1; #X connect 1 0 2 1; #X connect 2 0 3 0; #X connect 3 1 9 0; #X connect 4 0 2 0; #X connect 5 0 4 0; #X connect 5 1 0 0; #X connect 6 0 5 0; #X connect 8 0 4 1; #X connect 9 0 7 0; #X connect 10 0 8 0; #X restore 14 179 pd gid; #N canvas 36 115 406 316 dur 0; #X obj 14 143 f; #X obj 14 203 sel; #X obj 59 48 r \$0.edit.modes; #X obj 14 96 spigot 0; #X obj 14 52 t b a; #X obj 14 22 inlet; #X obj 59 71 route duration; #X obj 29 120 r \$0.default.dur; #X obj 40 173 tabread \$0.duration; #X obj 14 262 outlet; #X msg 14 231 duration \$1; #X connect 0 0 1 0; #X connect 1 1 10 0; #X connect 2 0 6 0; #X connect 3 0 0 0; #X connect 4 0 3 0; #X connect 4 1 8 0; #X connect 5 0 4 0; #X connect 6 0 3 1; #X connect 7 0 0 1; #X connect 8 0 1 1; #X connect 10 0 9 0; #X restore 65 179 pd dur; #N canvas 36 115 407 294 vel 0; #X obj 14 143 f; #X obj 14 203 sel; #X obj 59 48 r \$0.edit.modes; #X obj 14 96 spigot 0; #X obj 14 52 t b a; #X obj 14 22 inlet; #X obj 59 71 route velocity; #X obj 40 172 tabread \$0.velocity; #X obj 14 262 outlet; #X msg 14 231 velocity \$1; #X obj 29 120 r \$0.default.vel; #X connect 0 0 1 0; #X connect 1 1 9 0; #X connect 2 0 6 0; #X connect 3 0 0 0; #X connect 4 0 3 0; #X connect 4 1 7 0; #X connect 5 0 4 0; #X connect 6 0 3 1; #X connect 7 0 1 1; #X connect 9 0 8 0; #X connect 10 0 0 1; #X restore 116 179 pd vel; #X obj 14 228 list split 1; #X obj 14 280 list prepend note change; #X obj 14 303 list append; #X obj 14 326 list append; #X obj 14 349 list trim; #X obj 14 114 t a a a a, f 26; #X connect 0 0 2 0; #X connect 2 0 3 0; #X connect 3 0 12 0; #X connect 4 0 7 0; #X connect 5 0 7 0; #X connect 6 0 7 0; #X connect 7 0 8 0; #X connect 7 1 10 1; #X connect 8 0 9 0; #X connect 9 0 10 0; #X connect 10 0 11 0; #X connect 11 0 1 0; #X connect 12 0 4 0; #X connect 12 1 5 0; #X connect 12 2 6 0; #X connect 12 3 9 1; #X restore 16 141 pd note.edit.modes; #N canvas 436 166 414 708 note.select 0; #X obj 19 64 r \$0.horizgrid.send; #X obj 19 127 route click; #X obj 19 150 get \$0.horizgrid y; #X obj 64 235 route click; #X obj 64 212 r \$0.vertgrid.send; #X obj 19 283 pack f f; #X obj 64 258 get \$0.vertgrid x; #X msg 19 306 \$2 \$1; #N canvas 0 99 405 189 x->step 0; #X obj 40 63 s \$0.convert.x->step.get; #X obj 40 85 r \$0.convert.x->step; #X obj 13 14 inlet; #X obj 13 37 t b a; #X obj 13 114 list append; #X obj 13 137 outlet; #X connect 1 0 4 1; #X connect 2 0 3 0; #X connect 3 0 4 0; #X connect 3 1 0 0; #X connect 4 0 5 0; #X restore 19 352 pd x->step; #N canvas 0 99 405 189 y->pitch 0; #X obj 13 14 inlet; #X obj 13 37 t b a; #X obj 13 114 list append; #X obj 13 137 outlet; #X obj 40 63 s \$0.convert.y->pitch.get; #X obj 40 85 r \$0.convert.y->pitch; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 1 1 4 0; #X connect 2 0 3 0; #X connect 5 0 2 1; #X restore 94 352 pd y->pitch; #X obj 19 328 unpack f f, f 13; #X obj 19 382 pack f f, f 13; #X obj 19 97 spigot 1; #X obj 97 88 r \$0.mod.key; #X obj 161 383 r \$0.mod.key; #X obj 161 406 == 2; #X obj 161 429 change -1; #X obj 19 405 spigot; #X obj 161 455 sel 0; #X obj 19 428 t b a; #X obj 19 464 f; #X obj 19 487 t a a; #X obj 66 480 + 1; #X msg 161 478 0; #X obj 19 516 list append; #X obj 19 545 route 1 0; #X obj 69 577 unpack; #X obj 19 616 pack f f f f; #X obj 19 662 s \$0.global.receive; #X msg 19 639 note select \$3 \$4 \$1 \$2; #X text 142 664 <- we use the selection only locally; #X text 182 639 [step \, pitch] \, [step \, pitch]; #X text 23 9 A selection range is defined by drawing a virtual rectangle by clicking on two coordinates on the grid with Mod-key pressed.; #X obj 141 111 r \$0.select.range; #X obj 97 111 == 1; #X obj 205 406 r \$0.select.range; #N canvas 0 99 397 249 filter.click.on.notes 0; #X obj 37 37 inlet; #X obj 37 210 outlet; #X obj 203 29 r \$0.note.send; #X obj 203 52 route click; #X obj 203 75 b; #X obj 37 60 t b a b, f 16; #X obj 37 105 del 0; #X obj 37 128 f; #X obj 37 151 sel 1; #X msg 203 98 0; #X msg 130 92 1; #X obj 37 174 f, f 8; #X connect 0 0 5 0; #X connect 2 0 3 0; #X connect 3 0 4 0; #X connect 4 0 9 0; #X connect 5 0 6 0; #X connect 5 1 11 1; #X connect 5 2 10 0; #X connect 6 0 7 0; #X connect 7 0 8 0; #X connect 8 0 11 0; #X connect 9 0 7 1; #X connect 10 0 7 1; #X connect 11 0 1 0; #X restore 19 173 pd filter.click.on.notes; #X connect 0 0 12 0; #X connect 1 0 2 0; #X connect 2 0 36 0; #X connect 3 0 6 0; #X connect 4 0 3 0; #X connect 5 0 7 0; #X connect 6 0 5 1; #X connect 7 0 10 0; #X connect 8 0 11 0; #X connect 9 0 11 1; #X connect 10 0 8 0; #X connect 10 1 9 0; #X connect 11 0 17 0; #X connect 12 0 1 0; #X connect 13 0 34 0; #X connect 14 0 15 0; #X connect 15 0 16 0; #X connect 16 0 17 1; #X connect 16 0 18 0; #X connect 17 0 19 0; #X connect 18 0 23 0; #X connect 19 0 20 0; #X connect 19 1 24 1; #X connect 20 0 21 0; #X connect 21 0 24 0; #X connect 21 1 22 0; #X connect 22 0 20 1; #X connect 23 0 20 1; #X connect 24 0 25 0; #X connect 25 0 27 0; #X connect 25 1 26 0; #X connect 26 0 27 2; #X connect 26 1 27 3; #X connect 27 0 29 0; #X connect 29 0 28 0; #X connect 33 0 34 1; #X connect 34 0 12 1; #X connect 35 0 15 1; #X connect 36 0 5 0; #X restore 16 191 pd note.select; #X text 15 17 GENERATE EVENTS; #N canvas 336 294 405 188 note.unselect 0; #X obj 25 133 s \$0.global.receive; #X text 148 135 <- we use the selection only locally; #X msg 25 110 note unselect; #X obj 25 76 r \$0.unselect.selection; #X connect 2 0 0 0; #X connect 3 0 2 0; #X restore 16 216 pd note.unselect; #N canvas 269 598 348 183 delete.selection 0; #X obj 11 27 r \$0.delete.selection; #N canvas 371 289 445 257 get.selection 0; #X obj 20 7 inlet; #X obj 20 182 outlet; #X obj 20 55 array max \$0.marked; #X obj 20 32 b; #X obj 20 78 sel 1; #N canvas 0 99 430 197 count.to.1000 0; #X obj 10 19 inlet; #X msg 10 68 1000; #X obj 10 91 until; #X obj 10 46 t b b; #X msg 50 78 0; #X obj 10 114 f; #X obj 90 134 + 1; #X obj 10 137 t a a; #X obj 10 160 outlet; #X connect 0 0 3 0; #X connect 1 0 2 0; #X connect 2 0 5 0; #X connect 3 0 1 0; #X connect 3 1 4 0; #X connect 4 0 5 1; #X connect 5 0 7 0; #X connect 6 0 5 1; #X connect 7 0 8 0; #X connect 7 1 6 0; #X restore 20 103 pd count.to.1000; #N canvas 0 99 408 213 filter.active 0; #X obj 23 28 inlet; #X obj 23 101 pack f f; #X obj 23 124 route 1; #X obj 23 55 t a a; #X obj 23 78 tabread \$0.active; #X obj 23 147 outlet; #X connect 0 0 3 0; #X connect 1 0 2 0; #X connect 2 0 5 0; #X connect 3 0 4 0; #X connect 3 1 1 1; #X connect 4 0 1 0; #X restore 20 130 pd filter.active; #N canvas 0 99 401 218 filter.marked 0; #X obj 16 12 inlet; #X obj 16 70 tabread \$0.marked; #X obj 16 93 pack f f; #X obj 16 117 route 1; #X obj 16 47 t a a; #X obj 16 160 outlet; #X connect 0 0 4 0; #X connect 1 0 2 0; #X connect 2 0 3 0; #X connect 3 0 5 0; #X connect 4 0 1 0; #X connect 4 1 2 1; #X restore 20 154 pd filter.marked; #X text 153 56 are there marked notes at all?; #X connect 0 0 3 0; #X connect 2 0 4 0; #X connect 3 0 2 0; #X connect 4 0 5 0; #X connect 5 0 6 0; #X connect 6 0 7 0; #X connect 7 0 1 0; #X restore 11 53 pd get.selection; #X msg 11 108 note delete \$1; #X obj 11 131 s \$0.global.send; #X msg 183 66 \$1 0; #X obj 183 89 s \$0.marked; #X obj 11 76 t a a; #X connect 0 0 1 0; #X connect 1 0 6 0; #X connect 2 0 3 0; #X connect 4 0 5 0; #X connect 6 0 2 0; #X connect 6 1 4 0; #X restore 243 40 pd delete.selection; #X text 244 17 KEY COMMANDS; #N canvas 234 180 599 558 move.selection 0; #X obj 17 19 r \$0.move.up.selection; #X obj 51 41 r \$0.move.down.selection; #X obj 88 66 r \$0.move.left.selection; #X obj 125 88 r \$0.move.right.selection; #X obj 359 67 r \$0.griddivision; #X obj 385 90 r \$0.gridsubdivision; #X obj 385 113 t b a; #X obj 359 138 *; #X msg 17 42 0 1; #X msg 51 64 0 -1; #X msg 88 89 -1 0; #X msg 125 111 1 0; #X obj 344 166 f; #X obj 308 19 r \$0.mod.key; #X obj 340 42 r \$0.move.notes.bar; #X obj 308 141 sel 0 1; #X msg 308 164 1; #X obj 48 141 unpack f f; #X obj 48 175 *; #X obj 308 193 t a; #X obj 445 163 r \$0.move.notes.octave; #X obj 411 139 r \$0.mod.key; #X obj 411 210 sel 0 1; #X msg 411 233 1; #X msg 442 233 12; #X obj 411 260 t a; #X obj 105 203 *; #X obj 48 233 pack f f; #X obj 48 256 t b a; #X obj 89 410 tabread \$0.step; #X obj 130 366 tabread \$0.pitch; #X obj 89 433 +; #X obj 130 389 +; #X obj 106 285 unpack; #X obj 48 466 pack f f f, f 14; #X msg 48 489 note change pos \$1 \$2 \$3; #X obj 48 512 s \$0.global.send; #X obj 411 162 &; #X obj 308 42 &; #X obj 308 68 > 0; #X obj 411 187 > 0; #X obj 353 339 r \$0.copy.and.move; #X obj 325 316 r \$0.mod.key; #X obj 325 339 &; #X obj 325 365 > 0; #X obj 48 337 t a a a a, f 21; #X obj 292 394 spigot; #N canvas 0 99 418 242 get.note.params 0; #X obj 24 141 tabread \$0.step; #X obj 39 121 tabread \$0.pitch; #X obj 55 101 tabread \$0.velocity; #X obj 71 81 tabread \$0.duration; #X obj 87 61 tabread \$0.gid; #X obj 24 167 pack f f f f f; #X obj 24 33 t a a a a a; #X obj 24 10 inlet; #X obj 24 190 outlet; #X connect 0 0 5 0; #X connect 1 0 5 1; #X connect 2 0 5 2; #X connect 3 0 5 3; #X connect 4 0 5 4; #X connect 5 0 8 0; #X connect 6 0 0 0; #X connect 6 1 1 0; #X connect 6 2 2 0; #X connect 6 3 3 0; #X connect 6 4 4 0; #X connect 7 0 6 0; #X restore 292 421 pd get.note.params; #X obj 292 444 list prepend note create; #X obj 292 467 list trim; #X obj 292 490 s \$0.global.send; #N canvas 371 289 445 257 get.selection 0; #X obj 20 7 inlet; #X obj 20 182 outlet; #X obj 20 55 array max \$0.marked; #X obj 20 32 b; #X obj 20 78 sel 1; #N canvas 0 99 430 197 count.to.1000 0; #X obj 10 19 inlet; #X msg 10 68 1000; #X obj 10 91 until; #X obj 10 46 t b b; #X msg 50 78 0; #X obj 10 114 f; #X obj 90 134 + 1; #X obj 10 137 t a a; #X obj 10 160 outlet; #X connect 0 0 3 0; #X connect 1 0 2 0; #X connect 2 0 5 0; #X connect 3 0 1 0; #X connect 3 1 4 0; #X connect 4 0 5 1; #X connect 5 0 7 0; #X connect 6 0 5 1; #X connect 7 0 8 0; #X connect 7 1 6 0; #X restore 20 103 pd count.to.1000; #N canvas 0 99 408 213 filter.active 0; #X obj 23 28 inlet; #X obj 23 101 pack f f; #X obj 23 124 route 1; #X obj 23 55 t a a; #X obj 23 78 tabread \$0.active; #X obj 23 147 outlet; #X connect 0 0 3 0; #X connect 1 0 2 0; #X connect 2 0 5 0; #X connect 3 0 4 0; #X connect 3 1 1 1; #X connect 4 0 1 0; #X restore 20 130 pd filter.active; #N canvas 0 99 401 218 filter.marked 0; #X obj 16 12 inlet; #X obj 16 70 tabread \$0.marked; #X obj 16 93 pack f f; #X obj 16 117 route 1; #X obj 16 47 t a a; #X obj 16 160 outlet; #X connect 0 0 4 0; #X connect 1 0 2 0; #X connect 2 0 3 0; #X connect 3 0 5 0; #X connect 4 0 1 0; #X connect 4 1 2 1; #X restore 20 154 pd filter.marked; #X text 153 56 are there marked notes at all?; #X connect 0 0 3 0; #X connect 2 0 4 0; #X connect 3 0 2 0; #X connect 4 0 5 0; #X connect 5 0 6 0; #X connect 6 0 7 0; #X connect 7 0 1 0; #X restore 48 306 pd get.selection; #X connect 0 0 8 0; #X connect 1 0 9 0; #X connect 2 0 10 0; #X connect 3 0 11 0; #X connect 4 0 7 0; #X connect 5 0 6 0; #X connect 6 0 7 0; #X connect 6 1 7 1; #X connect 7 0 12 1; #X connect 8 0 17 0; #X connect 9 0 17 0; #X connect 10 0 17 0; #X connect 11 0 17 0; #X connect 12 0 19 0; #X connect 13 0 38 0; #X connect 14 0 38 1; #X connect 15 0 16 0; #X connect 15 1 12 0; #X connect 16 0 19 0; #X connect 17 0 18 0; #X connect 17 1 26 0; #X connect 18 0 27 0; #X connect 19 0 18 1; #X connect 20 0 37 1; #X connect 21 0 37 0; #X connect 22 0 23 0; #X connect 22 1 24 0; #X connect 23 0 25 0; #X connect 24 0 25 0; #X connect 25 0 26 1; #X connect 26 0 27 1; #X connect 27 0 28 0; #X connect 28 0 51 0; #X connect 28 1 33 0; #X connect 29 0 31 0; #X connect 30 0 32 0; #X connect 31 0 34 1; #X connect 32 0 34 2; #X connect 33 0 31 1; #X connect 33 1 32 1; #X connect 34 0 35 0; #X connect 35 0 36 0; #X connect 37 0 40 0; #X connect 38 0 39 0; #X connect 39 0 15 0; #X connect 40 0 22 0; #X connect 41 0 43 1; #X connect 42 0 43 0; #X connect 43 0 44 0; #X connect 44 0 46 1; #X connect 45 0 34 0; #X connect 45 1 29 0; #X connect 45 2 30 0; #X connect 45 3 46 0; #X connect 46 0 47 0; #X connect 47 0 48 0; #X connect 48 0 49 0; #X connect 49 0 50 0; #X connect 51 0 45 0; #X restore 244 65 pd move.selection; #N canvas 0 99 624 313 note.edit.modes.selection 0; #X obj 31 31 r \$0.default.gid; #X obj 76 77 route gid; #X obj 76 54 r \$0.edit.modes; #X obj 224 54 r \$0.edit.modes; #X obj 180 31 r \$0.default.vel; #X obj 224 77 route velocity; #X obj 388 53 r \$0.edit.modes; #X obj 340 31 r \$0.default.dur; #X obj 388 76 route duration; #X obj 340 54 spigot; #X obj 180 54 spigot; #X obj 31 54 spigot; #N canvas 371 289 445 257 get.selection 0; #X obj 20 7 inlet; #X obj 20 182 outlet; #X obj 20 55 array max \$0.marked; #X obj 20 32 b; #X obj 20 78 sel 1; #N canvas 0 99 430 197 count.to.1000 0; #X obj 10 19 inlet; #X msg 10 68 1000; #X obj 10 91 until; #X obj 10 46 t b b; #X msg 50 78 0; #X obj 10 114 f; #X obj 90 134 + 1; #X obj 10 137 t a a; #X obj 10 160 outlet; #X connect 0 0 3 0; #X connect 1 0 2 0; #X connect 2 0 5 0; #X connect 3 0 1 0; #X connect 3 1 4 0; #X connect 4 0 5 1; #X connect 5 0 7 0; #X connect 6 0 5 1; #X connect 7 0 8 0; #X connect 7 1 6 0; #X restore 20 103 pd count.to.1000; #N canvas 0 99 408 213 filter.active 0; #X obj 23 28 inlet; #X obj 23 101 pack f f; #X obj 23 124 route 1; #X obj 23 55 t a a; #X obj 23 78 tabread \$0.active; #X obj 23 147 outlet; #X connect 0 0 3 0; #X connect 1 0 2 0; #X connect 2 0 5 0; #X connect 3 0 4 0; #X connect 3 1 1 1; #X connect 4 0 1 0; #X restore 20 130 pd filter.active; #N canvas 0 99 401 218 filter.marked 0; #X obj 16 12 inlet; #X obj 16 70 tabread \$0.marked; #X obj 16 93 pack f f; #X obj 16 117 route 1; #X obj 16 47 t a a; #X obj 16 160 outlet; #X connect 0 0 4 0; #X connect 1 0 2 0; #X connect 2 0 3 0; #X connect 3 0 5 0; #X connect 4 0 1 0; #X connect 4 1 2 1; #X restore 20 154 pd filter.marked; #X text 153 56 are there marked notes at all?; #X connect 0 0 3 0; #X connect 2 0 4 0; #X connect 3 0 2 0; #X connect 4 0 5 0; #X connect 5 0 6 0; #X connect 6 0 7 0; #X connect 7 0 1 0; #X restore 31 194 pd get.selection; #X msg 31 122 gid \$1; #X msg 180 122 velocity \$1; #X msg 340 122 duration \$1; #X obj 31 164 t b a; #X obj 31 217 list prepend; #X msg 31 240 note change \$1 \$3 \$2; #X obj 31 101 change -1; #X obj 180 101 change -1; #X obj 340 101 change -1; #X obj 31 271 s \$0.global.send; #X connect 0 0 11 0; #X connect 1 0 11 1; #X connect 2 0 1 0; #X connect 3 0 5 0; #X connect 4 0 10 0; #X connect 5 0 10 1; #X connect 6 0 8 0; #X connect 7 0 9 0; #X connect 8 0 9 1; #X connect 9 0 21 0; #X connect 10 0 20 0; #X connect 11 0 19 0; #X connect 12 0 17 0; #X connect 13 0 16 0; #X connect 14 0 16 0; #X connect 15 0 16 0; #X connect 16 0 12 0; #X connect 16 1 17 1; #X connect 17 0 18 0; #X connect 18 0 22 0; #X connect 19 0 13 0; #X connect 20 0 14 0; #X connect 21 0 15 0; #X restore 16 166 pd note.edit.modes.selection; #X restore 19 155 pd generate.events; #N canvas 0 99 378 327 process.events 0; #N canvas 59 156 654 539 note.create 0; #X obj 6 8 r \$0.global.receive; #X obj 6 31 route note; #X obj 6 54 route create; #X text 95 56 step pitch vel dur gid; #X obj 33 152 s \$0.active; #X obj 110 152 s \$0.step; #X obj 173 152 s \$0.pitch; #X obj 331 152 s \$0.duration; #X obj 242 152 s \$0.velocity; #X obj 422 152 s \$0.gid; #X msg 33 127 \$1 1; #X obj 6 100 t a a; #X msg 110 127 \$1 \$2; #X msg 173 127 \$1 \$3; #X msg 242 127 \$1 \$4; #X msg 331 127 \$1 \$5; #X msg 422 127 \$1 \$6; #X obj 6 419 list prepend scalar \$0.note; #X obj 6 442 list trim; #N canvas 51 152 524 298 w 0; #X obj 7 21 inlet; #X obj 7 140 outlet; #N canvas 0 99 405 189 duration->w 0; #X obj 13 14 inlet; #X obj 13 37 t b a; #X obj 13 114 list append; #X obj 13 137 outlet; #X obj 40 63 s \$0.convert.duration->w.get; #X obj 40 85 r \$0.convert.duration->w; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 1 1 4 0; #X connect 2 0 3 0; #X connect 5 0 2 1; #X restore 7 112 pd duration->w; #N canvas 83 99 410 208 id->visible.length 0; #X obj 13 14 inlet; #X obj 13 37 t b a; #X obj 13 114 list append; #X obj 13 137 outlet; #X obj 76 88 r \$0.convert.id->visible.length; #X obj 76 66 s \$0.convert.id->visible.length.get; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 1 1 5 0; #X connect 2 0 3 0; #X connect 4 0 2 1; #X restore 7 75 pd id->visible.length; #X msg 7 44 \$1; #X text 42 49 for the length limitation we need the id; #X connect 0 0 4 0; #X connect 2 0 1 0; #X connect 3 0 2 0; #X connect 4 0 3 0; #X restore 86 251 pd w; #N canvas 6 99 432 235 h 0; #X obj 7 21 inlet; #X obj 7 159 outlet; #X obj 42 79 r \$0.stepvisheight; #X obj 42 102 - 1; #X obj 7 88 f; #X obj 7 44 b; #X connect 0 0 5 0; #X connect 2 0 3 0; #X connect 3 0 4 1; #X connect 4 0 1 0; #X connect 5 0 4 0; #X restore 126 251 pd h; #N canvas 16 99 410 257 id 0; #X obj 7 21 inlet; #X obj 7 211 outlet; #X msg 7 93 \$1; #X connect 0 0 2 0; #X connect 2 0 1 0; #X restore 166 251 pd id; #N canvas 125 91 416 204 gid 0; #X obj 7 21 inlet; #X obj 7 137 outlet; #X msg 7 72 \$6; #X connect 0 0 2 0; #X connect 2 0 1 0; #X restore 207 251 pd gid; #N canvas 15 91 396 215 vel 0; #X obj 20 21 inlet; #X obj 20 162 outlet; #X msg 20 76 \$4; #X connect 0 0 2 0; #X connect 2 0 1 0; #X restore 257 251 pd vel; #N canvas 16 91 427 356 c 0; #X obj 7 21 inlet; #X obj 7 262 outlet; #N canvas 320 203 446 363 clr.* 0; #X obj 28 62 t a a a; #X obj 28 112 div 100; #X obj 78 113 mod 100; #X obj 78 136 div 10; #X obj 128 112 mod 10; #X obj 28 165 *; #X obj 28 188 int; #X obj 78 165 *; #X obj 78 188 int; #X obj 128 165 *; #X obj 128 188 int; #X obj 230 103 inlet; #X obj 28 212 min 9; #X obj 78 212 min 9; #X obj 128 212 min 9; #X obj 28 235 * 100; #X obj 78 235 * 10; #X obj 128 235 * 1; #X obj 28 262 +; #X obj 28 285 +; #X obj 28 311 outlet; #X obj 28 24 inlet; #X connect 0 0 1 0; #X connect 0 1 2 0; #X connect 0 2 4 0; #X connect 1 0 5 0; #X connect 2 0 3 0; #X connect 3 0 7 0; #X connect 4 0 9 0; #X connect 5 0 6 0; #X connect 6 0 12 0; #X connect 7 0 8 0; #X connect 8 0 13 0; #X connect 9 0 10 0; #X connect 10 0 14 0; #X connect 11 0 9 1; #X connect 11 0 7 1; #X connect 11 0 5 1; #X connect 12 0 15 0; #X connect 13 0 16 0; #X connect 14 0 17 0; #X connect 15 0 18 0; #X connect 16 0 18 1; #X connect 17 0 19 1; #X connect 18 0 19 0; #X connect 19 0 20 0; #X connect 21 0 0 0; #X restore 7 221 pd clr.*; #X obj 109 120 / 113; #X obj 7 44 t a a; #X msg 7 82 \$6; #X msg 109 94 \$4; #N canvas 73 91 410 208 gid->gclr 0; #X obj 13 14 inlet; #X obj 13 37 t b a; #X obj 13 114 list append; #X obj 13 137 outlet; #X obj 40 63 s \$0.convert.gid->gclr.get; #X obj 40 86 r \$0.convert.gid->gclr; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 1 1 4 0; #X connect 2 0 3 0; #X connect 5 0 2 1; #X restore 7 117 pd gid->gclr; #X connect 0 0 4 0; #X connect 2 0 1 0; #X connect 3 0 2 1; #X connect 4 0 5 0; #X connect 4 1 6 0; #X connect 5 0 7 0; #X connect 6 0 3 0; #X connect 7 0 2 0; #X restore 346 251 pd c; #N canvas 16 91 414 215 vis 0; #X obj 7 21 inlet; #X obj 7 126 outlet; #X msg 7 74 1; #X obj 7 44 b; #X connect 0 0 3 0; #X connect 2 0 1 0; #X connect 3 0 2 0; #X restore 378 251 pd vis; #N canvas 10 276 283 216 x 0; #X obj 7 21 inlet; #X obj 7 172 outlet; #N canvas 0 99 405 189 step->x 0; #X obj 13 14 inlet; #X obj 13 37 t b a; #X obj 13 114 list append; #X obj 13 137 outlet; #X obj 40 63 s \$0.convert.step->x.get; #X obj 40 85 r \$0.convert.step->x; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 1 1 4 0; #X connect 2 0 3 0; #X connect 5 0 2 1; #X restore 7 132 pd step->x; #N canvas 338 529 349 170 id->isvisible|step 0; #X obj 13 14 inlet; #X obj 13 37 t b a; #X obj 13 114 list append; #X obj 13 137 outlet; #X obj 76 67 s \$0.convert.id->step|isvisble.get; #X obj 76 87 r \$0.convert.id->step|isvisble; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 1 1 4 0; #X connect 2 0 3 0; #X connect 5 0 2 1; #X restore 7 76 pd id->isvisible|step; #X msg 7 47 \$1; #X obj 7 99 unpack f f; #X obj 80 172 outlet; #X connect 0 0 4 0; #X connect 2 0 1 0; #X connect 3 0 5 0; #X connect 4 0 3 0; #X connect 5 0 2 0; #X connect 5 1 6 0; #X restore 6 251 pd x; #N canvas 28 275 432 235 y 0; #X obj 7 21 inlet; #X obj 7 169 outlet; #N canvas 0 99 405 189 pitch->y 0; #X obj 13 14 inlet; #X obj 13 37 t b a; #X obj 13 114 list append; #X obj 13 137 outlet; #X obj 40 63 s \$0.convert.pitch->y.get; #X obj 40 85 r \$0.convert.pitch->y; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 1 1 4 0; #X connect 2 0 3 0; #X connect 5 0 2 1; #X restore 7 132 pd pitch->y; #X msg 7 57 \$3; #X obj 138 172 outlet; #X obj 7 80 t a a; #N canvas 338 496 350 193 pitch->isvisible 0; #X obj 13 14 inlet; #X obj 13 37 t b a; #X obj 13 114 list append; #X obj 13 137 outlet; #X obj 76 63 s \$0.convert.pitch->isvisible.get; #X obj 76 85 r \$0.convert.pitch->isvisible; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 1 1 4 0; #X connect 2 0 3 0; #X connect 5 0 2 1; #X restore 138 101 pd pitch->isvisible; #X connect 0 0 3 0; #X connect 2 0 1 0; #X connect 3 0 5 0; #X connect 5 0 2 0; #X connect 5 1 6 0; #X connect 6 0 4 0; #X restore 46 251 pd y; #X obj 6 473 s \$1; #X obj 32 178 r \$0.redraw.notes; #N canvas 15 91 396 215 dur 0; #X obj 20 21 inlet; #X obj 20 162 outlet; #X msg 20 76 \$5; #X connect 0 0 2 0; #X connect 2 0 1 0; #X restore 302 251 pd dur; #X obj 89 76 r \$0.create.id; #X obj 6 77 list prepend; #X obj 6 212 t a a a a a a a a a a a, f 70; #X obj 6 355 pack f f f f f f f f f f f, f 69; #N canvas 16 99 414 215 mrk 0; #X obj 7 21 inlet; #X obj 7 160 outlet; #X msg 7 44 \$1; #X obj 7 67 tabread \$0.marked; #X obj 7 90 sel 0 1; #X msg 7 113 444; #X msg 35 112 808; #X connect 0 0 2 0; #X connect 2 0 3 0; #X connect 3 0 4 0; #X connect 4 0 5 0; #X connect 4 1 6 0; #X connect 5 0 1 0; #X connect 6 0 1 0; #X restore 423 251 pd mrk; #X text 20 389 x y w h id gid vel dur c vis mrk; #X obj 482 152 s \$0.marked; #X msg 482 127 \$1 0; #X obj 6 306 spigot 1; #X obj 79 293 t b a; #X text 118 304 do not draw out-of-boundary notes; #X obj 70 319 &&; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 2 0 32 0; #X connect 10 0 4 0; #X connect 11 0 33 0; #X connect 11 1 10 0; #X connect 11 1 12 0; #X connect 11 1 13 0; #X connect 11 1 14 0; #X connect 11 1 15 0; #X connect 11 1 16 0; #X connect 11 1 38 0; #X connect 12 0 5 0; #X connect 13 0 6 0; #X connect 14 0 8 0; #X connect 15 0 7 0; #X connect 16 0 9 0; #X connect 17 0 18 0; #X connect 18 0 28 0; #X connect 19 0 34 2; #X connect 20 0 34 3; #X connect 21 0 34 4; #X connect 22 0 34 5; #X connect 23 0 34 6; #X connect 24 0 34 8; #X connect 25 0 34 9; #X connect 26 0 39 0; #X connect 26 1 42 0; #X connect 27 0 34 1; #X connect 27 1 40 0; #X connect 29 0 33 0; #X connect 30 0 34 7; #X connect 31 0 32 1; #X connect 32 0 11 0; #X connect 33 0 26 0; #X connect 33 1 27 0; #X connect 33 2 19 0; #X connect 33 3 20 0; #X connect 33 4 21 0; #X connect 33 5 22 0; #X connect 33 6 23 0; #X connect 33 7 30 0; #X connect 33 8 24 0; #X connect 33 9 25 0; #X connect 33 10 35 0; #X connect 34 0 17 0; #X connect 35 0 34 10; #X connect 38 0 37 0; #X connect 39 0 34 0; #X connect 40 0 42 0; #X connect 40 1 42 1; #X connect 42 0 39 1; #X restore 19 18 pd note.create; #N canvas 202 212 325 576 note.delete 0; #X obj 6 8 r \$0.global.receive; #X obj 6 31 route note; #X obj 6 54 route delete; #X obj 78 511 s \$0.active; #X msg 51 463 \$1 0; #X obj 78 327 f; #N canvas 73 91 410 208 id->pointer 0; #X obj 13 14 inlet; #X obj 13 37 t b a; #X obj 13 114 list append; #X obj 13 137 outlet; #X obj 40 63 s \$0.convert.id->pointer.get; #X obj 40 86 r \$0.convert.id->pointer; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 1 1 4 0; #X connect 2 0 3 0; #X connect 5 0 2 1; #X restore 78 354 pd id->pointer; #X obj 6 152 route -1; #X obj 6 175 b; #X msg 6 229 note delete: no such note (\$1 \$2); #X obj 6 256 s error; #X obj 6 198 list append; #X obj 51 303 t a a; #X obj 78 377 route -1; #X obj 123 448 set \$0.note x y id vis, f 26; #X obj 123 399 t b b b b p, f 26; #X msg 199 422 -1; #X msg 237 424 0; #X obj 6 77 t b a; #X obj 6 107 f; #X obj 37 108 r \$0.delete.id; #X obj 100 281 r \$0.note.hide; #X msg 123 422 0; #X msg 161 423 0; #X obj 51 486 t a a; #X obj 51 534 s \$0.marked; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 2 0 18 0; #X connect 4 0 24 0; #X connect 5 0 6 0; #X connect 6 0 13 0; #X connect 7 0 8 0; #X connect 7 1 12 0; #X connect 8 0 11 0; #X connect 9 0 10 0; #X connect 11 0 9 0; #X connect 12 0 4 0; #X connect 12 1 5 0; #X connect 13 1 15 0; #X connect 15 0 22 0; #X connect 15 1 23 0; #X connect 15 2 16 0; #X connect 15 3 17 0; #X connect 15 4 14 4; #X connect 16 0 14 2; #X connect 17 0 14 3; #X connect 18 0 19 0; #X connect 18 1 11 1; #X connect 19 0 7 0; #X connect 20 0 19 1; #X connect 21 0 5 0; #X connect 22 0 14 0; #X connect 23 0 14 1; #X connect 24 0 25 0; #X connect 24 1 3 0; #X restore 19 41 pd note.delete; #N canvas 0 473 333 520 note.change.duration 0; #X obj 6 8 r \$0.global.receive; #X obj 6 31 route note; #X obj 6 54 route change; #X obj 6 77 route duration; #X obj 141 185 pack f f; #X obj 141 209 s \$0.duration; #N canvas 83 99 410 208 id->pointer 0; #X obj 13 14 inlet; #X obj 13 37 t b a; #X obj 13 114 list append; #X obj 13 137 outlet; #X obj 40 63 s \$0.convert.id->pointer.get; #X obj 40 86 r \$0.convert.id->pointer; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 1 1 4 0; #X connect 2 0 3 0; #X connect 5 0 2 1; #X restore 6 171 pd id->pointer; #N canvas 0 99 405 189 duration->w 0; #X obj 13 14 inlet; #X obj 13 37 t b a; #X obj 13 114 list append; #X obj 13 137 outlet; #X obj 40 63 s \$0.convert.duration->w.get; #X obj 40 85 r \$0.convert.duration->w; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 1 1 4 0; #X connect 2 0 3 0; #X connect 5 0 2 1; #X restore 51 336 pd duration->w; #X obj 6 194 route -1; #X obj 51 369 set \$0.note w dur; #N canvas 731 305 337 209 only.active 0; #X obj 20 71 tabread \$0.active; #X obj 20 94 sel 1; #X obj 20 117 f; #X obj 20 47 t a a; #X obj 20 18 inlet; #X obj 20 146 outlet; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 2 0 5 0; #X connect 3 0 0 0; #X connect 3 1 2 1; #X connect 4 0 3 0; #X restore 141 160 pd only.active; #N canvas 83 99 410 208 id->visible.length 0; #X obj 13 14 inlet; #X obj 13 37 t b a; #X obj 13 114 list append; #X obj 13 137 outlet; #X obj 76 88 r \$0.convert.id->visible.length; #X obj 76 66 s \$0.convert.id->visible.length.get; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 1 1 5 0; #X connect 2 0 3 0; #X connect 4 0 2 1; #X restore 51 303 pd id->visible.length; #X obj 51 220 t b p; #X obj 51 243 list append; #X obj 51 266 unpack f f; #X obj 141 135 unpack, f 8; #X msg 6 144 \$1; #X obj 6 106 t a a a, f 23; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 2 0 3 0; #X connect 3 0 17 0; #X connect 4 0 5 0; #X connect 6 0 8 0; #X connect 7 0 9 0; #X connect 8 1 12 0; #X connect 10 0 4 0; #X connect 11 0 7 0; #X connect 12 0 13 0; #X connect 12 1 9 2; #X connect 13 0 14 0; #X connect 14 0 11 0; #X connect 14 1 9 1; #X connect 15 0 10 0; #X connect 15 1 4 1; #X connect 16 0 6 0; #X connect 17 0 16 0; #X connect 17 1 13 1; #X connect 17 2 15 0; #X restore 19 64 pd note.change.duration; #N canvas 103 414 357 536 note.change.velocity 0; #X obj 6 8 r \$0.global.receive; #X obj 6 31 route note; #X obj 6 54 route change; #X obj 6 250 pack f f; #X obj 6 77 route velocity; #X obj 6 282 s \$0.velocity; #N canvas 320 203 446 363 clr.* 0; #X obj 28 62 t a a a; #X obj 28 112 div 100; #X obj 78 113 mod 100; #X obj 78 136 div 10; #X obj 128 112 mod 10; #X obj 28 165 *; #X obj 28 188 int; #X obj 78 165 *; #X obj 78 188 int; #X obj 128 165 *; #X obj 128 188 int; #X obj 230 103 inlet; #X obj 28 212 min 9; #X obj 78 212 min 9; #X obj 128 212 min 9; #X obj 28 235 * 100; #X obj 78 235 * 10; #X obj 128 235 * 1; #X obj 28 262 +; #X obj 28 285 +; #X obj 28 311 outlet; #X obj 28 24 inlet; #X connect 0 0 1 0; #X connect 0 1 2 0; #X connect 0 2 4 0; #X connect 1 0 5 0; #X connect 2 0 3 0; #X connect 3 0 7 0; #X connect 4 0 9 0; #X connect 5 0 6 0; #X connect 6 0 12 0; #X connect 7 0 8 0; #X connect 8 0 13 0; #X connect 9 0 10 0; #X connect 10 0 14 0; #X connect 11 0 9 1; #X connect 11 0 7 1; #X connect 11 0 5 1; #X connect 12 0 15 0; #X connect 13 0 16 0; #X connect 14 0 17 0; #X connect 15 0 18 0; #X connect 16 0 18 1; #X connect 17 0 19 1; #X connect 18 0 19 0; #X connect 19 0 20 0; #X connect 21 0 0 0; #X restore 223 444 pd clr.*; #X obj 269 383 / 113; #X obj 168 483 set \$0.note vel c, f 19; #X obj 6 185 t a a, f 20; #X obj 223 355 get \$0.note gid; #N canvas 83 99 410 208 id->pointer 0; #X obj 13 14 inlet; #X obj 13 37 t b a; #X obj 13 114 list append; #X obj 13 137 outlet; #X obj 40 63 s \$0.convert.id->pointer.get; #X obj 40 86 r \$0.convert.id->pointer; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 1 1 4 0; #X connect 2 0 3 0; #X connect 5 0 2 1; #X restore 123 216 pd id->pointer; #N canvas 83 99 410 208 gid->gclr 0; #X obj 13 14 inlet; #X obj 13 37 t b a; #X obj 13 114 list append; #X obj 13 137 outlet; #X obj 40 63 s \$0.convert.gid->gclr.get; #X obj 40 86 r \$0.convert.gid->gclr; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 1 1 4 0; #X connect 2 0 3 0; #X connect 5 0 2 1; #X restore 223 412 pd gid->gclr; #X obj 6 100 t a a, f 21; #X text 156 124 velocity; #X obj 123 239 route -1; #X obj 168 353 f; #X obj 242 250 t a a; #X obj 168 310 t b p p, f 19; #X msg 129 124 \$2; #X msg 6 125 \$1; #N canvas 731 338 337 209 only.active 0; #X obj 20 71 tabread \$0.active; #X obj 20 94 sel 1; #X obj 20 117 f; #X obj 20 47 t a a; #X obj 20 18 inlet; #X obj 20 146 outlet; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 2 0 5 0; #X connect 3 0 0 0; #X connect 3 1 2 1; #X connect 4 0 3 0; #X restore 6 156 pd only.active; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 2 0 4 0; #X connect 3 0 5 0; #X connect 4 0 13 0; #X connect 6 0 8 1; #X connect 7 0 6 1; #X connect 9 0 3 0; #X connect 9 1 11 0; #X connect 10 0 12 0; #X connect 11 0 15 0; #X connect 12 0 6 0; #X connect 13 0 20 0; #X connect 13 1 19 0; #X connect 15 1 18 0; #X connect 16 0 8 0; #X connect 17 0 16 1; #X connect 17 1 7 0; #X connect 18 0 16 0; #X connect 18 1 10 0; #X connect 18 2 8 2; #X connect 19 0 3 1; #X connect 19 0 17 0; #X connect 20 0 21 0; #X connect 21 0 9 0; #X restore 19 87 pd note.change.velocity; #N canvas 202 301 290 524 note.change.gid 0; #X obj 6 8 r \$0.global.receive; #X obj 6 31 route note; #X obj 6 54 route change; #X obj 6 77 route gid; #X obj 6 100 t a a, f 21; #N canvas 320 203 446 363 clr.* 0; #X obj 28 62 t a a a; #X obj 28 112 div 100; #X obj 78 113 mod 100; #X obj 78 136 div 10; #X obj 128 112 mod 10; #X obj 28 165 *; #X obj 28 188 int; #X obj 78 165 *; #X obj 78 188 int; #X obj 128 165 *; #X obj 128 188 int; #X obj 230 103 inlet; #X obj 28 212 min 9; #X obj 78 212 min 9; #X obj 128 212 min 9; #X obj 28 235 * 100; #X obj 78 235 * 10; #X obj 128 235 * 1; #X obj 28 262 +; #X obj 28 285 +; #X obj 28 311 outlet; #X obj 28 24 inlet; #X connect 0 0 1 0; #X connect 0 1 2 0; #X connect 0 2 4 0; #X connect 1 0 5 0; #X connect 2 0 3 0; #X connect 3 0 7 0; #X connect 4 0 9 0; #X connect 5 0 6 0; #X connect 6 0 12 0; #X connect 7 0 8 0; #X connect 8 0 13 0; #X connect 9 0 10 0; #X connect 10 0 14 0; #X connect 11 0 9 1; #X connect 11 0 7 1; #X connect 11 0 5 1; #X connect 12 0 15 0; #X connect 13 0 16 0; #X connect 14 0 17 0; #X connect 15 0 18 0; #X connect 16 0 18 1; #X connect 17 0 19 1; #X connect 18 0 19 0; #X connect 19 0 20 0; #X connect 21 0 0 0; #X restore 154 437 pd clr.*; #X obj 182 371 / 113; #N canvas 83 99 410 208 id->pointer 0; #X obj 13 14 inlet; #X obj 13 37 t b a; #X obj 13 114 list append; #X obj 13 137 outlet; #X obj 40 63 s \$0.convert.id->pointer.get; #X obj 40 86 r \$0.convert.id->pointer; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 1 1 4 0; #X connect 2 0 3 0; #X connect 5 0 2 1; #X restore 82 226 pd id->pointer; #N canvas 83 99 410 208 gid->gclr 0; #X obj 13 14 inlet; #X obj 13 37 t b a; #X obj 13 114 list append; #X obj 13 137 outlet; #X obj 40 63 s \$0.convert.gid->gclr.get; #X obj 40 86 r \$0.convert.gid->gclr; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 1 1 4 0; #X connect 2 0 3 0; #X connect 5 0 2 1; #X restore 154 405 pd gid->gclr; #X obj 82 249 route -1; #X obj 127 351 f; #X obj 127 308 t b p p, f 19; #X obj 6 223 pack f f; #X obj 6 185 t a a; #X obj 6 250 s \$0.gid; #X obj 182 343 get \$0.note vel; #X obj 127 481 set \$0.note gid c, f 19; #X obj 127 374 t a a; #X msg 6 129 \$1; #X msg 129 128 \$2; #N canvas 731 338 337 209 only.active 0; #X obj 20 71 tabread \$0.active; #X obj 20 94 sel 1; #X obj 20 117 f; #X obj 20 47 t a a; #X obj 20 18 inlet; #X obj 20 146 outlet; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 2 0 5 0; #X connect 3 0 0 0; #X connect 3 1 2 1; #X connect 4 0 3 0; #X restore 6 156 pd only.active; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 2 0 3 0; #X connect 3 0 4 0; #X connect 4 0 18 0; #X connect 4 1 19 0; #X connect 5 0 16 1; #X connect 6 0 5 1; #X connect 7 0 9 0; #X connect 8 0 5 0; #X connect 9 1 11 0; #X connect 10 0 17 0; #X connect 11 0 10 0; #X connect 11 1 15 0; #X connect 11 2 16 2; #X connect 12 0 14 0; #X connect 13 0 12 0; #X connect 13 1 7 0; #X connect 15 0 6 0; #X connect 17 0 16 0; #X connect 17 1 8 0; #X connect 18 0 20 0; #X connect 19 0 12 1; #X connect 19 0 10 1; #X connect 20 0 13 0; #X restore 19 110 pd note.change.gid; #N canvas 144 266 347 307 note.select 0; #N canvas 73 99 380 620 get.selected.ids 0; #X obj 39 309 tabread \$0.step; #X msg 39 90 1000; #X obj 39 136 until; #X obj 39 159 f; #X obj 39 113 t a b; #X msg 90 136 0; #X obj 66 404 f; #X obj 66 449 tabread \$0.pitch; #X obj 66 427 t a a; #X obj 93 545 f; #X obj 39 182 t a a a; #X obj 96 171 + 1; #X obj 39 285 t a a; #X obj 39 258 f; #X obj 39 210 tabread \$0.active; #X obj 39 235 sel 1; #X text 98 235 consider only 'active' notes; #X obj 39 20 inlet; #X obj 93 579 outlet; #X obj 39 67 t b a a, f 31; #X msg 130 92 \$1 \$3; #X obj 39 333 moses; #X obj 66 358 moses; #X obj 130 285 unpack; #X obj 163 312 + 1; #X obj 66 381 b; #X obj 66 473 moses; #X obj 93 498 moses; #X obj 222 407 unpack; #X obj 255 434 + 1; #X obj 93 521 b; #X msg 222 267 \$2 \$4; #X obj 222 290 t a a; #X obj 222 312 >; #X obj 222 335 list append; #X obj 222 358 route 0 1; #X msg 247 379 \$2 \$1; #X obj 130 114 t a a; #X obj 130 136 >; #X obj 130 159 list append; #X obj 130 182 route 0 1; #X msg 155 203 \$2 \$1; #X connect 0 0 21 0; #X connect 1 0 4 0; #X connect 2 0 3 0; #X connect 3 0 10 0; #X connect 4 0 2 0; #X connect 4 1 5 0; #X connect 5 0 3 1; #X connect 6 0 8 0; #X connect 7 0 26 0; #X connect 8 0 7 0; #X connect 8 1 9 1; #X connect 9 0 18 0; #X connect 10 0 14 0; #X connect 10 1 13 1; #X connect 10 2 11 0; #X connect 11 0 3 1; #X connect 12 0 0 0; #X connect 12 1 6 1; #X connect 13 0 12 0; #X connect 14 0 15 0; #X connect 15 0 13 0; #X connect 17 0 19 0; #X connect 19 0 1 0; #X connect 19 1 20 0; #X connect 19 2 31 0; #X connect 20 0 37 0; #X connect 21 1 22 0; #X connect 22 0 25 0; #X connect 23 0 21 1; #X connect 23 1 24 0; #X connect 24 0 22 1; #X connect 25 0 6 0; #X connect 26 1 27 0; #X connect 27 0 30 0; #X connect 28 0 26 1; #X connect 28 1 29 0; #X connect 29 0 27 1; #X connect 30 0 9 0; #X connect 31 0 32 0; #X connect 32 0 33 0; #X connect 32 1 34 1; #X connect 33 0 34 0; #X connect 34 0 35 0; #X connect 35 0 28 0; #X connect 35 1 36 0; #X connect 36 0 28 0; #X connect 37 0 38 0; #X connect 37 1 39 1; #X connect 38 0 39 0; #X connect 39 0 40 0; #X connect 40 0 23 0; #X connect 40 1 41 0; #X connect 41 0 23 0; #X restore 36 165 pd get.selected.ids; #X obj 17 21 r \$0.global.receive; #X obj 17 44 route note; #X obj 17 67 route select; #X obj 36 219 s \$0.marked; #X msg 36 193 \$1 1; #X obj 17 273 s \$0.redraw; #X msg 56 117 const 0; #X obj 56 140 s \$0.marked; #X obj 17 90 t b a b; #X obj 17 243 del 0; #X connect 0 0 5 0; #X connect 1 0 2 0; #X connect 2 0 3 0; #X connect 3 0 9 0; #X connect 5 0 4 0; #X connect 7 0 8 0; #X connect 9 0 10 0; #X connect 9 1 0 0; #X connect 10 0 6 0; #X restore 19 156 pd note.select; #N canvas 1 99 452 346 dump 0; #X obj 15 20 r \$0.global.receive; #X obj 15 43 route dump; #X msg 318 100 clear; #N canvas 0 99 451 362 configure 0; #X obj 15 7 inlet; #X obj 314 68 r \$0.stepviswidth; #X obj 288 67 f; #X msg 288 90 stepviswidth \$1; #X obj 242 117 f; #X obj 268 118 r \$0.stepvisheight; #X msg 242 140 stepvisheight \$1; #X obj 197 167 f; #X obj 223 168 r \$0.stepsperpage; #X msg 197 190 stepsperpage \$1; #X obj 151 67 f; #X obj 177 68 r \$0.pitchrange; #X msg 151 90 pitchrange \$1; #X obj 106 117 f; #X obj 60 167 f; #X obj 132 118 r \$0.gridsubdivision; #X msg 106 140 gridsubdivision \$1; #X obj 86 168 r \$0.griddivision; #X msg 60 190 griddivision \$1; #X obj 15 41 t b b b b b b b, f 46; #X obj 82 268 list prepend set; #X obj 82 291 list trim; #X obj 29 331 outlet; #X connect 0 0 19 0; #X connect 1 0 2 1; #X connect 2 0 3 0; #X connect 3 0 20 0; #X connect 4 0 6 0; #X connect 5 0 4 1; #X connect 6 0 20 0; #X connect 7 0 9 0; #X connect 8 0 7 1; #X connect 9 0 20 0; #X connect 10 0 12 0; #X connect 11 0 10 1; #X connect 12 0 20 0; #X connect 13 0 16 0; #X connect 14 0 18 0; #X connect 15 0 13 1; #X connect 16 0 20 0; #X connect 17 0 14 1; #X connect 18 0 20 0; #X connect 19 1 14 0; #X connect 19 2 13 0; #X connect 19 3 10 0; #X connect 19 4 7 0; #X connect 19 5 4 0; #X connect 19 6 2 0; #X connect 20 0 21 0; #X connect 21 0 22 0; #X restore 242 99 pd configure; #N canvas 0 99 454 465 restore 0; #X obj 19 16 inlet; #X obj 19 433 outlet; #X obj 19 94 until; #X msg 19 68 1000; #X obj 19 117 f; #X obj 19 42 t b b; #X msg 74 93 0; #X obj 109 128 + 1; #X obj 19 164 tabread \$0.active; #X obj 19 140 t a a a; #X obj 19 187 sel 1; #X obj 19 210 f; #X obj 74 354 tabread \$0.step; #X obj 130 331 tabread \$0.pitch; #X obj 298 267 tabread \$0.gid; #X obj 186 310 tabread \$0.velocity; #X obj 242 288 tabread \$0.duration; #X obj 19 242 t a a a a a a, f 47; #X obj 19 379 pack f f f f f f, f 47; #X msg 19 402 note restore \$1 \$2 \$3 \$4 \$5 \$6; #X text 213 401 id step pitch velocity duration gid; #X connect 0 0 5 0; #X connect 2 0 4 0; #X connect 3 0 2 0; #X connect 4 0 9 0; #X connect 5 0 3 0; #X connect 5 1 6 0; #X connect 6 0 4 1; #X connect 7 0 4 1; #X connect 8 0 10 0; #X connect 9 0 8 0; #X connect 9 1 11 1; #X connect 9 2 7 0; #X connect 10 0 11 0; #X connect 11 0 17 0; #X connect 12 0 18 1; #X connect 13 0 18 2; #X connect 14 0 18 5; #X connect 15 0 18 3; #X connect 16 0 18 4; #X connect 17 0 18 0; #X connect 17 1 12 0; #X connect 17 2 13 0; #X connect 17 3 15 0; #X connect 17 4 16 0; #X connect 17 5 14 0; #X connect 18 0 19 0; #X connect 19 0 1 0; #X restore 166 99 pd restore; #X obj 135 171 list trim; #N canvas 0 99 472 349 msg 0; #X obj 11 24 inlet; #X obj 8 306 outlet; #X msg 95 69; #X connect 0 0 2 0; #X connect 2 0 1 0; #X restore 15 256 pd msg; #X obj 135 148 list prepend add2; #X obj 135 194 t b a; #X msg 135 217 addcomma; #X obj 15 170 t b b; #X msg 15 196 set; #X obj 15 66 t b b b b b, f 51; #X msg 90 99 page 1; #X obj 15 292 s \$0.global.send.out; #X connect 0 0 1 0; #X connect 1 0 12 0; #X connect 2 0 7 0; #X connect 3 0 7 0; #X connect 4 0 7 0; #X connect 5 0 8 0; #X connect 6 0 14 0; #X connect 7 0 5 0; #X connect 8 0 9 0; #X connect 8 1 6 0; #X connect 9 0 6 0; #X connect 10 0 11 0; #X connect 10 1 6 0; #X connect 11 0 6 0; #X connect 12 0 10 0; #X connect 12 1 13 0; #X connect 12 2 4 0; #X connect 12 3 3 0; #X connect 12 4 2 0; #X connect 13 0 7 0; #X restore 19 248 pd dump; #N canvas 0 289 454 423 note.unselect 0; #X obj 17 21 r \$0.global.receive; #X obj 17 44 route note; #X obj 17 233 s \$0.redraw; #X msg 36 155 const 0; #X obj 36 178 s \$0.marked; #X obj 17 203 del 0; #X obj 17 67 route unselect; #N canvas 371 289 393 275 get.active 0; #X obj 20 7 inlet; #X msg 20 64 1000; #X obj 20 87 until; #X obj 20 30 t b b; #X msg 75 62 0; #X obj 20 110 f; #X obj 100 119 + 1; #X obj 20 229 outlet; #X obj 20 179 pack f f; #X obj 20 133 t a a a; #X obj 20 202 route 1; #X obj 20 156 tabread \$0.active; #X connect 0 0 3 0; #X connect 1 0 2 0; #X connect 2 0 5 0; #X connect 3 0 1 0; #X connect 3 1 4 0; #X connect 4 0 5 1; #X connect 5 0 9 0; #X connect 6 0 5 1; #X connect 8 0 10 0; #X connect 9 0 11 0; #X connect 9 1 8 1; #X connect 9 2 6 0; #X connect 10 0 7 0; #X connect 11 0 8 0; #X restore 171 39 pd get.active; #X obj 17 90 t b b b; #X obj 171 68 t a a a, f 26; #X obj 171 199 tabread \$0.step; #X obj 247 96 tabread \$0.pitch; #X obj 171 222 < 0; #X obj 247 119 t a a; #X obj 247 150 < 0; #X obj 274 150 > 127; #X obj 247 173 |; #X obj 171 245 |; #X text 164 15 Delete out-of-boundary notes when unselecting; #X obj 171 275 pack f f, f 26; #X obj 171 298 route 1; #X obj 171 352 s \$0.global.send; #X msg 171 326 note delete \$1; #X connect 0 0 1 0; #X connect 1 0 6 0; #X connect 3 0 4 0; #X connect 5 0 2 0; #X connect 6 0 8 0; #X connect 7 0 9 0; #X connect 8 0 5 0; #X connect 8 1 3 0; #X connect 8 2 7 0; #X connect 9 0 10 0; #X connect 9 1 11 0; #X connect 9 2 19 1; #X connect 10 0 12 0; #X connect 11 0 13 0; #X connect 12 0 17 0; #X connect 13 0 14 0; #X connect 13 1 15 0; #X connect 14 0 16 0; #X connect 15 0 16 1; #X connect 16 0 17 1; #X connect 17 0 19 0; #X connect 19 0 20 0; #X connect 20 0 22 0; #X connect 22 0 21 0; #X restore 19 179 pd note.unselect; #N canvas 32 193 648 531 note.change.pos 0; #X obj 6 8 r \$0.global.receive; #X obj 6 31 route note; #N canvas 83 99 410 208 id->pointer 0; #X obj 13 14 inlet; #X obj 13 37 t b a; #X obj 13 114 list append; #X obj 13 137 outlet; #X obj 40 63 s \$0.convert.id->pointer.get; #X obj 40 86 r \$0.convert.id->pointer; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 1 1 4 0; #X connect 2 0 3 0; #X connect 5 0 2 1; #X restore 381 178 pd id->pointer; #X obj 381 201 route -1; #X obj 426 227 t b p, f 17; #X obj 173 24 t a a; #X obj 173 123 s \$0.step; #X obj 200 75 s \$0.pitch; #X msg 173 99 \$1 \$2; #X msg 200 49 \$1 \$3; #N canvas 0 99 405 189 step->x 0; #X obj 13 14 inlet; #X obj 13 37 t b a; #X obj 13 114 list append; #X obj 13 137 outlet; #X obj 40 63 s \$0.convert.step->x.get; #X obj 40 85 r \$0.convert.step->x; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 1 1 4 0; #X connect 2 0 3 0; #X connect 5 0 2 1; #X restore 426 377 pd step->x; #N canvas 0 99 405 189 pitch->y 0; #X obj 13 14 inlet; #X obj 13 37 t b a; #X obj 13 114 list append; #X obj 13 137 outlet; #X obj 40 63 s \$0.convert.pitch->y.get; #X obj 40 85 r \$0.convert.pitch->y; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 1 1 4 0; #X connect 2 0 3 0; #X connect 5 0 2 1; #X restore 459 354 pd pitch->y; #X obj 426 250 list append; #X obj 6 54 route change; #X obj 6 77 route pos; #X msg 426 354 \$1; #X msg 459 329 \$2; #N canvas 83 99 410 208 id->visible.length 0; #X obj 13 14 inlet; #X obj 13 37 t b a; #X obj 13 114 list append; #X obj 13 137 outlet; #X obj 76 88 r \$0.convert.id->visible.length; #X obj 76 66 s \$0.convert.id->visible.length.get; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 1 1 5 0; #X connect 2 0 3 0; #X connect 4 0 2 1; #X restore 129 243 pd id->visible.length; #N canvas 338 463 350 193 pitch->isvisible 0; #X obj 13 14 inlet; #X obj 13 37 t b a; #X obj 13 114 list append; #X obj 13 137 outlet; #X obj 76 63 s \$0.convert.pitch->isvisible.get; #X obj 76 85 r \$0.convert.pitch->isvisible; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 1 1 4 0; #X connect 2 0 3 0; #X connect 5 0 2 1; #X restore 67 276 pd pitch->isvisible; #X obj 6 168 t a a; #X msg 6 216 \$1; #X msg 67 220 \$3; #X msg 129 219 \$1; #X obj 67 243 t a a; #X obj 6 324 unpack f f; #N canvas 338 628 349 170 id->step|isvisible 0; #X obj 13 14 inlet; #X obj 13 37 t b a; #X obj 13 114 list append; #X obj 13 137 outlet; #X obj 76 67 s \$0.convert.id->step|isvisble.get; #X obj 76 87 r \$0.convert.id->step|isvisble; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 1 1 4 0; #X connect 2 0 3 0; #X connect 5 0 2 1; #X restore 6 299 pd id->step|isvisible; #X obj 6 446 route 0 1; #X obj 381 98 t a a; #X obj 6 193 t a a a a, f 31; #X obj 6 397 pack f f f f f, f 28; #X msg 6 420 \$2 \$1 \$3 \$4 \$5; #X text 99 421 vis step pitch length id; #X text 179 397 step vis pitch length id; #X msg 189 220 \$1; #X msg 381 121 \$4; #X text 419 96 step pitch length id; #X obj 426 417 set \$0.note x y w; #N canvas 0 99 405 189 duration->w 0; #X obj 13 14 inlet; #X obj 13 37 t b a; #X obj 13 114 list append; #X obj 13 137 outlet; #X obj 40 63 s \$0.convert.duration->w.get; #X obj 40 85 r \$0.convert.duration->w; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 1 1 4 0; #X connect 2 0 3 0; #X connect 5 0 2 1; #X restore 492 326 pd duration->w; #X obj 426 273 t a a a, f 11; #X msg 492 300 \$3; #X obj 6 498 s \$0.note.hide; #X msg 6 472 \$4; #X text 94 496 -> see [pd note.delete]; #X obj 339 257 b; #X obj 381 144 t a a; #X obj 339 280 f; #X obj 339 445 s \$0.note.redraw; #X text 344 462 -> see [pd redraw.notes] in top window; #X obj 63 348 &&; #X obj 6 100 unpack f f f; #N canvas 731 338 337 209 only.active 0; #X obj 20 71 tabread \$0.active; #X obj 20 94 sel 1; #X obj 20 117 f; #X obj 20 47 t a a; #X obj 20 18 inlet; #X obj 20 146 outlet; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 2 0 5 0; #X connect 3 0 0 0; #X connect 3 1 2 1; #X connect 4 0 3 0; #X restore 6 123 pd only.active; #X obj 6 146 pack f f f; #X connect 0 0 1 0; #X connect 1 0 13 0; #X connect 2 0 3 0; #X connect 3 0 43 0; #X connect 3 1 4 0; #X connect 4 0 12 0; #X connect 4 1 36 3; #X connect 5 0 8 0; #X connect 5 1 9 0; #X connect 8 0 6 0; #X connect 9 0 7 0; #X connect 10 0 36 0; #X connect 11 0 36 1; #X connect 12 0 38 0; #X connect 13 0 14 0; #X connect 14 0 49 0; #X connect 15 0 10 0; #X connect 16 0 11 0; #X connect 17 0 29 3; #X connect 18 0 48 1; #X connect 19 0 28 0; #X connect 19 1 5 0; #X connect 20 0 25 0; #X connect 21 0 23 0; #X connect 22 0 17 0; #X connect 23 0 18 0; #X connect 23 1 29 2; #X connect 24 0 29 0; #X connect 24 1 48 0; #X connect 25 0 24 0; #X connect 26 0 41 0; #X connect 26 1 27 0; #X connect 27 0 34 0; #X connect 27 1 12 1; #X connect 28 0 20 0; #X connect 28 1 21 0; #X connect 28 2 22 0; #X connect 28 3 33 0; #X connect 29 0 30 0; #X connect 30 0 26 0; #X connect 33 0 29 4; #X connect 34 0 44 0; #X connect 37 0 36 2; #X connect 38 0 15 0; #X connect 38 1 16 0; #X connect 38 2 39 0; #X connect 39 0 37 0; #X connect 41 0 40 0; #X connect 43 0 45 0; #X connect 44 0 2 0; #X connect 44 1 45 1; #X connect 45 0 46 0; #X connect 48 0 29 1; #X connect 49 0 50 0; #X connect 49 1 51 1; #X connect 49 2 51 2; #X connect 50 0 51 0; #X connect 51 0 19 0; #X restore 19 133 pd note.change.pos; #N canvas 0 289 415 385 note.toggle 0; #X obj 17 21 r \$0.global.receive; #X obj 17 44 route note; #X obj 17 67 route toggle; #N canvas 83 99 410 208 id->pointer 0; #X obj 13 14 inlet; #X obj 13 37 t b a; #X obj 13 114 list append; #X obj 13 137 outlet; #X obj 40 63 s \$0.convert.id->pointer.get; #X obj 40 86 r \$0.convert.id->pointer; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 1 1 4 0; #X connect 2 0 3 0; #X connect 5 0 2 1; #X restore 17 119 pd id->pointer; #X obj 17 142 route -1; #X obj 218 10 t a a; #X obj 245 33 tabread \$0.marked; #X obj 245 56 == 0; #X obj 218 105 s \$0.marked; #X obj 218 82 pack f f; #X obj 180 181 sel 0 1; #X msg 180 208 444; #X msg 199 209 808; #X obj 180 155 tabread \$0.marked; #X obj 17 93 t a a a; #X obj 62 321 set \$0.note mrk, f 19; #X obj 62 257 t b p, f 19; #X obj 62 295 f; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 2 0 14 0; #X connect 3 0 4 0; #X connect 4 1 16 0; #X connect 5 0 9 0; #X connect 5 1 6 0; #X connect 6 0 7 0; #X connect 7 0 9 1; #X connect 9 0 8 0; #X connect 10 0 11 0; #X connect 10 1 12 0; #X connect 11 0 17 1; #X connect 12 0 17 1; #X connect 13 0 10 0; #X connect 14 0 3 0; #X connect 14 1 13 0; #X connect 14 2 5 0; #X connect 16 0 17 0; #X connect 16 1 15 1; #X connect 17 0 15 0; #X restore 19 202 pd note.toggle; #N canvas 59 156 561 207 note.restore 0; #X obj 6 8 r \$0.global.receive; #X obj 6 31 route note; #X obj 6 152 s \$0.active; #X obj 83 152 s \$0.step; #X obj 146 152 s \$0.pitch; #X obj 304 152 s \$0.duration; #X obj 215 152 s \$0.velocity; #X obj 395 152 s \$0.gid; #X msg 6 127 \$1 1; #X msg 83 127 \$1 \$2; #X msg 146 127 \$1 \$3; #X msg 215 127 \$1 \$4; #X msg 304 127 \$1 \$5; #X msg 395 127 \$1 \$6; #X obj 453 152 s \$0.marked; #X msg 453 127 \$1 0; #X obj 6 54 route restore; #X obj 6 77 t a a a a a a a, f 75; #X text 95 56 id step pitch vel dur gid; #X connect 0 0 1 0; #X connect 1 0 16 0; #X connect 8 0 2 0; #X connect 9 0 3 0; #X connect 10 0 4 0; #X connect 11 0 6 0; #X connect 12 0 5 0; #X connect 13 0 7 0; #X connect 15 0 14 0; #X connect 16 0 17 0; #X connect 17 0 8 0; #X connect 17 1 9 0; #X connect 17 2 10 0; #X connect 17 3 11 0; #X connect 17 4 12 0; #X connect 17 5 13 0; #X connect 17 6 15 0; #X restore 19 225 pd note.restore; #X restore 19 185 pd process.events; #X obj 565 443 array define \$0.marked 1000; #X text 659 519 2019 \, Roman Haefeli; #N canvas 0 99 450 300 manage.id 0; #X obj 13 22 inlet; #N canvas 0 99 391 254 prepend.id 0; #X obj 32 66 array min \$0.active; #X obj 32 89 sel 0; #X obj 32 123 f; #X obj 32 13 inlet; #X obj 32 190 outlet; #X obj 94 176 s error; #X msg 94 152 note create: note buffer full!; #X obj 59 123 t b b; #X msg 59 146 -1; #X obj 32 36 b; #X connect 0 0 1 0; #X connect 0 1 2 1; #X connect 1 0 2 0; #X connect 1 1 7 0; #X connect 2 0 4 0; #X connect 3 0 9 0; #X connect 6 0 5 0; #X connect 7 0 8 0; #X connect 7 1 6 0; #X connect 8 0 4 0; #X connect 9 0 0 0; #X restore 13 200 pd prepend.id; #X obj 13 223 s \$0.create.id; #X obj 13 45 route note; #X obj 13 73 route create delete; #X obj 110 223 s \$0.delete.id; #N canvas 731 404 337 209 only.active 0; #X obj 20 71 tabread \$0.active; #X obj 20 94 sel 1; #X obj 20 117 f; #X obj 20 47 t a a; #X obj 20 18 inlet; #X obj 20 146 outlet; #X msg 49 118 -1; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 1 1 6 0; #X connect 2 0 5 0; #X connect 3 0 0 0; #X connect 3 1 2 1; #X connect 4 0 3 0; #X connect 6 0 5 0; #X restore 110 142 pd only.active; #X connect 0 0 3 0; #X connect 1 0 2 0; #X connect 3 0 4 0; #X connect 4 0 1 0; #X connect 4 1 6 0; #X connect 6 0 5 0; #X restore 378 404 pd manage.id; #X msg 206 69 \; \$1.stepsperpage 64 \; \$1.page 0 \; \$1.pitchrange 48 \; \$1.stepviswidth 15 \; \$1.stepvisheight 14 \; \$1.canvastopmargin 53 \; \$1.canvasleftmargin 30 \; \$1.stepkeycolor1 887 \; \$1.stepkeycolor2 777 \; \$1.griddivision 4 \; \$1.gridsubdivision 4 \; \$1.gidcolorlist 800 840 80 68 408 808 \; \$1.default.vel 64 \; \$1.default.gid 0 \; \$1.default.dur 4 \; \$1.default.show 0 \; \$1.redraw bang \;; #N canvas 25 99 968 522 key.commands 0; #N canvas 0 99 397 411 mod.keys 0; #X obj 25 15 keyname; #X obj 25 37 pack f s; #X msg 25 59 \$2 \$1; #X obj 25 159 ||; #X obj 80 133 t b a; #X obj 25 284 change -1; #X obj 25 307 s \$0.mod.key; #X obj 136 152 ||; #X obj 136 175 << 1; #X obj 25 228 +; #X obj 136 198 t b a; #X text 44 341 Modifier key bitmask:; #X text 43 378 --x- Ctrl; #X text 44 361 ---x Shift; #X obj 25 107 route Shift_L Shift_R Control_L Control_R Alt_L; #X obj 248 201 t b a; #X obj 25 258 +; #X obj 248 178 << 2; #X text 43 395 -x-- Alt_l; #X connect 0 0 1 0; #X connect 0 1 1 1; #X connect 1 0 2 0; #X connect 2 0 14 0; #X connect 3 0 9 0; #X connect 4 0 3 0; #X connect 4 1 3 1; #X connect 5 0 6 0; #X connect 7 0 8 0; #X connect 8 0 10 0; #X connect 9 0 16 0; #X connect 10 0 9 0; #X connect 10 1 9 1; #X connect 14 0 3 0; #X connect 14 1 4 0; #X connect 14 2 7 0; #X connect 14 3 17 0; #X connect 15 0 16 0; #X connect 15 1 16 1; #X connect 16 0 5 0; #X connect 17 0 15 0; #X restore 26 25 pd mod.keys; #X obj 218 207 r \$0.mod.key; #X floatatom 218 230 5 0 0 0 - - -; #X obj 24 83 loadbang; #X obj 24 106 \$0; #X text 216 297 1: Shift; #X obj 219 31 keyname; #X obj 219 54 pack f s; #X obj 219 77 route 1; #X obj 219 100 symbol; #X symbolatom 260 153 10 0 0 0 - - -; #X obj 219 153 t a a; #X text 23 62 Mod-Key Config:; #X obj 477 85 s \$0.unselect.selection; #X obj 219 177 s \$0.keyname; #X obj 477 61 select Escape; #X obj 348 80 r \$0.keyname; #X text 218 265 MOD KEY TABLE; #X text 218 279 -------------; #X text 475 18 KEY COMMANDS; #X obj 477 135 s \$0.delete.selection; #X obj 477 160 select Up; #X obj 477 111 select Delete; #X obj 477 210 select Down; #X obj 477 234 s \$0.move.down.selection; #X obj 477 184 s \$0.move.up.selection; #X text 475 30 ------------; #X obj 477 260 select Left; #X obj 477 284 s \$0.move.left.selection; #X obj 477 310 select Right; #X obj 477 334 s \$0.move.right.selection; #X obj 24 336 r \$0.delete.on.click; #X obj 24 359 r \$0.select.range; #X obj 24 381 r \$0.move.notes.octave; #X obj 24 402 r \$0.move.notes.bar; #X obj 57 109 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X obj 25 445 r \$0.toggle.selection; #X obj 25 424 r \$0.copy.and.move; #X obj 25 467 r \$0.scroll.by.arrow.keys; #X text 216 317 2: Ctrl_L; #X text 216 352 4: Ctrl_R; #X text 216 335 3: Ctrl_L+Shift; #X obj 707 116 r \$0.scroll.by.arrow.keys; #X obj 692 91 r \$0.mod.key; #X obj 644 68 r \$0.keyname; #X obj 717 235 s \$0.page.left; #X obj 754 214 s \$0.page.right; #X obj 680 256 s \$0.scroll.down; #X obj 644 276 s \$0.scroll.up; #X obj 644 133 spigot; #X obj 692 149 ==; #X obj 644 180 select Up Down Left Right; #X msg 24 129 \; \$1.delete.on.click 2 \; \$1.select.range 1 \; \$1.move.notes.octave 1 \; \$1.move.notes.bar 1 \; \$1.copy.and.move 2 \; \$1.toggle.selection 1 \; \$1.scroll.by.arrow.keys 4 \;; #X obj 271 125 r \$0.keyboard.enable; #X obj 219 126 spigot; #X connect 1 0 2 0; #X connect 3 0 4 0; #X connect 4 0 52 0; #X connect 6 0 7 0; #X connect 6 1 7 1; #X connect 7 0 8 0; #X connect 8 0 9 0; #X connect 9 0 54 0; #X connect 11 0 14 0; #X connect 11 1 10 0; #X connect 15 0 13 0; #X connect 16 0 15 0; #X connect 16 0 21 0; #X connect 16 0 22 0; #X connect 16 0 23 0; #X connect 16 0 27 0; #X connect 16 0 29 0; #X connect 21 0 25 0; #X connect 22 0 20 0; #X connect 23 0 24 0; #X connect 27 0 28 0; #X connect 29 0 30 0; #X connect 35 0 4 0; #X connect 42 0 50 1; #X connect 43 0 50 0; #X connect 44 0 49 0; #X connect 49 0 51 0; #X connect 50 0 49 1; #X connect 51 0 48 0; #X connect 51 1 47 0; #X connect 51 2 45 0; #X connect 51 3 46 0; #X connect 53 0 54 1; #X connect 54 0 11 0; #X restore 19 125 pd key.commands; #N canvas 105 145 487 123 interaction.logic 0; #N canvas 199 504 810 268 mode.button.logic 0; #X obj 23 17 r \$0.mode.button.send; #X msg 99 186 900; #X msg 130 187 666; #X obj 99 159 sel 666 900; #X obj 23 63 t p p, f 26; #X obj 23 88 get \$0.mode.button w c; #X obj 23 217 set \$0.mode.button w c, f 26; #X obj 23 148 f; #X obj 75 121 b; #X obj 23 40 route click change; #X obj 243 17 r \$0.mode.button.send; #X obj 243 40 route click; #X obj 243 63 get \$0.mode.button c param; #X obj 243 86 sel 666 900; #X msg 243 109 1; #X msg 274 109 0; #X obj 243 152 list prepend; #X obj 243 198 s \$0.edit.modes; #X obj 243 175 list trim; #X connect 0 0 9 0; #X connect 1 0 6 1; #X connect 2 0 6 1; #X connect 3 0 1 0; #X connect 3 1 2 0; #X connect 4 0 5 0; #X connect 4 1 6 2; #X connect 5 0 7 0; #X connect 5 1 3 0; #X connect 7 0 6 0; #X connect 8 0 7 0; #X connect 9 0 4 0; #X connect 9 1 8 0; #X connect 10 0 11 0; #X connect 11 0 12 0; #X connect 12 0 13 0; #X connect 12 1 16 1; #X connect 13 0 14 0; #X connect 13 1 15 0; #X connect 14 0 16 0; #X connect 15 0 16 0; #X connect 16 0 18 0; #X connect 18 0 17 0; #X restore 3 13 pd mode.button.logic; #N canvas 100 265 539 437 pager.logic 0; #X obj 24 24 r \$0.pager.send; #X msg 196 96 -1; #X msg 298 75 1; #X obj 196 144 f 1; #X obj 196 173 +; #X obj 196 196 t a a; #X obj 196 119 t b a; #X obj 24 110 get \$0.pager dir; #X obj 24 47 route click change; #X obj 76 76 get \$0.pager num; #X obj 311 119 != 1; #X obj 24 133 sel 0 24; #X obj 196 66 spigot 1; #X obj 223 369 s \$0.page; #X obj 196 342 t b a; #X obj 196 391 s \$0.redraw; #X obj 196 219 - 1; #X obj 196 261 t b a; #X obj 196 284 del 0; #X obj 196 307 f; #X text 261 289 <- decoupler (does this work at all?); #X obj 303 179 r \$0.page; #X obj 303 202 + 1; #X obj 46 160 s \$0.page.right; #X obj 24 188 s \$0.page.left; #X obj 298 19 r \$0.page.right; #X obj 196 18 r \$0.page.left; #X connect 0 0 8 0; #X connect 1 0 6 0; #X connect 2 0 6 0; #X connect 3 0 4 0; #X connect 4 0 5 0; #X connect 5 0 16 0; #X connect 5 1 10 0; #X connect 6 0 3 0; #X connect 6 1 4 1; #X connect 7 0 11 0; #X connect 8 0 7 0; #X connect 8 1 9 0; #X connect 10 0 12 1; #X connect 11 0 24 0; #X connect 11 1 23 0; #X connect 12 0 1 0; #X connect 14 0 15 0; #X connect 14 1 13 0; #X connect 16 0 17 0; #X connect 17 0 18 0; #X connect 17 1 19 1; #X connect 18 0 19 0; #X connect 19 0 14 0; #X connect 21 0 22 0; #X connect 22 0 3 1; #X connect 25 0 2 0; #X connect 26 0 12 0; #X restore 3 35 pd pager.logic; #N canvas 100 265 682 317 scroller.logic 0; #X obj 24 47 route click change; #X obj 24 110 get \$0.scroller dir; #X obj 24 133 sel -10 10; #X obj 24 242 s \$0.scroll.up; #X obj 52 221 s \$0.scroll.down; #X obj 52 160 del 0; #X obj 24 186 del 0; #X obj 24 24 r \$0.scroller.send; #X obj 413 277 s \$0.pitchoffset; #X obj 363 123 r \$0.pitchdownshift; #X obj 334 122 f; #X obj 520 119 r \$0.pitchupshift; #X obj 490 120 f; #X obj 385 168 r \$0.pitchoffset; #X obj 334 200 +; #X obj 490 204 +; #X obj 307 76 t b b; #X obj 463 87 t b b; #X obj 257 121 s \$0.redraw; #X obj 307 39 r \$0.scroll.down; #X obj 463 46 r \$0.scroll.up; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 2 0 6 0; #X connect 2 1 5 0; #X connect 5 0 4 0; #X connect 6 0 3 0; #X connect 7 0 0 0; #X connect 9 0 10 1; #X connect 10 0 14 0; #X connect 11 0 12 1; #X connect 12 0 15 0; #X connect 13 0 14 1; #X connect 13 0 15 1; #X connect 14 0 8 0; #X connect 15 0 8 0; #X connect 16 0 18 0; #X connect 16 1 10 0; #X connect 17 0 18 0; #X connect 17 1 12 0; #X connect 19 0 16 0; #X connect 20 0 17 0; #X restore 3 56 pd scroller.logic; #N canvas 139 395 502 472 keyboard.toggle.logic 0; #X obj 50 52 r \$0.keyboard.toggle.send; #X obj 50 75 route click; #X obj 50 98 t b p, f 37; #X obj 50 408 set \$0.keyboard.toggle hilite ihilite; #X msg 98 372 0; #X msg 159 373 0; #X obj 50 333 t b b; #X obj 98 333 t b b; #X msg 199 374 666; #X msg 50 368 777; #X obj 83 195 \$0; #X obj 50 224 s _UNPUNCH_KEYBOARD_GRAB; #X obj 84 123 r _UNPUNCH_KEYBOARD_GRAB; #X obj 50 121 f; #X obj 50 144 sel \$0; #X msg 50 167 -1; #X obj 83 168 b; #X obj 50 246 r _UNPUNCH_KEYBOARD_GRAB; #X obj 50 299 sel \$0; #X obj 269 238 t p b; #X obj 50 269 spigot 0; #X msg 296 264 1; #X obj 326 29 r _UNPUNCH_KEYBOARD_GRAB; #X obj 326 52 sel \$0; #X msg 326 75 1; #X msg 359 75 0; #X obj 326 105 s \$0.keyboard.enable; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 2 0 13 0; #X connect 2 1 19 0; #X connect 4 0 3 0; #X connect 5 0 3 1; #X connect 6 0 9 0; #X connect 6 1 5 0; #X connect 7 0 4 0; #X connect 7 1 8 0; #X connect 8 0 3 1; #X connect 9 0 3 0; #X connect 10 0 11 0; #X connect 12 0 13 1; #X connect 13 0 14 0; #X connect 14 0 15 0; #X connect 14 1 16 0; #X connect 15 0 11 0; #X connect 16 0 10 0; #X connect 17 0 20 0; #X connect 18 0 6 0; #X connect 18 1 7 0; #X connect 19 0 3 2; #X connect 19 1 21 0; #X connect 20 0 18 0; #X connect 21 0 20 1; #X connect 22 0 23 0; #X connect 23 0 24 0; #X connect 23 1 25 0; #X connect 24 0 26 0; #X connect 25 0 26 0; #X restore 3 80 pd keyboard.toggle.logic; #X restore 19 215 pd interaction.logic; #X msg 480 480 clear; #X obj 480 505 s \$1; #X text 13 12 [unpunch] v1.0beta1; #X obj 339 479 r \$0.global.send.out; #X connect 0 0 22 0; #X connect 1 0 2 0; #X connect 2 0 44 0; #X connect 3 0 2 0; #X connect 4 0 22 0; #X connect 7 0 22 0; #X connect 9 0 22 0; #X connect 11 0 25 0; #X connect 11 0 26 0; #X connect 11 0 27 0; #X connect 11 0 28 0; #X connect 11 0 29 0; #X connect 11 0 30 0; #X connect 11 0 41 0; #X connect 12 0 22 0; #X connect 14 0 34 0; #X connect 17 0 20 0; #X connect 19 0 34 0; #X connect 21 0 17 0; #X connect 23 0 38 0; #X connect 34 0 15 0; #X connect 34 1 35 0; #X connect 34 2 43 0; #X connect 37 0 11 0; #X connect 38 0 24 0; #X connect 38 1 12 0; #X connect 38 2 9 0; #X connect 38 3 4 0; #X connect 38 4 7 0; #X connect 38 5 0 0; #X connect 47 0 48 0; #X connect 50 0 18 0;