diff --git a/chordthing/chordthing.pd b/chordthing/chordthing.pd new file mode 100644 index 0000000..88c527e --- /dev/null +++ b/chordthing/chordthing.pd @@ -0,0 +1,101 @@ +#N canvas 505 109 1236 790 12; +#N canvas 1287 785 450 250 (subpatch) 0; +#X array scale 8 float 2; +#X coords 0 0 8 12 200 140 1 0 0; +#X restore 594 89 graph; +#X obj 201 564 noteout; +#X floatatom 273 555 5 0 0 0 - - -; +#X obj 255 299 + 2; +#X obj 217 271 t f f f; +#X obj 466 291 + 4; +#X obj 150 414 +; +#X obj 169 322 t f f; +#X obj 301 385 * 12; +#X obj 301 411 +; +#X obj 320 319 t f f; +#X obj 466 319 t f f; +#X obj 456 416 +; +#X obj 452 389 * 12; +#X obj 201 367 mod 7; +#X obj 301 360 div 7; +#X obj 352 364 mod 7; +#X obj 452 364 div 7; +#X obj 498 364 mod 7; +#X obj 83 36 grid; +#X obj 217 202 spigot; +#X msg 149 9 connect; +#X obj 201 459 + 60; +#X obj 256 174 < 7; +#X obj 20 18 r grid; +#X msg 9 97 set \$2 \$3 \$1; +#X obj 9 122 s grid; +#X text 235 485 root; +#X obj 182 154 t f f; +#X obj 201 392 getnote; +#X obj 352 389 getnote; +#X obj 498 389 getnote; +#X obj 150 390 div 7; +#X obj 594 233 v scale_length; +#X text 799 66 major/dorian/phrygian/lydian/mixolydian/minor/locrian +; +#X text 232 10 thingy for playing chords. TODO more scales \, chord +types \, inversions \, extensions \, chromatic notes \, the fun chord +stuff. Also better interface. Also less mess.; +#X obj 594 258 v mode; +#X msg 801 90 \; scale 0 2 2 1 2 2 2 1 \; scale_length 7 \; mode 0 +; +#X msg 764 414 \; mode \$1; +#X floatatom 765 372 5 0 7 0 - - -; +#X obj 201 484 + 0; +#X obj 83 61 t a a a; +#X msg 173 66 \$1; +#X obj 173 91 s state; +#X obj 224 510 r state; +#X obj 224 535 * 127; +#X obj 291 109 print; +#X obj 115 119 unpack f f f; +#X connect 2 0 1 2; +#X connect 3 0 10 0; +#X connect 4 0 7 0; +#X connect 4 1 3 0; +#X connect 4 2 5 0; +#X connect 5 0 11 0; +#X connect 6 0 22 0; +#X connect 7 0 32 0; +#X connect 7 1 14 0; +#X connect 8 0 9 0; +#X connect 9 0 22 0; +#X connect 10 0 15 0; +#X connect 10 1 16 0; +#X connect 11 0 17 0; +#X connect 11 1 18 0; +#X connect 12 0 22 0; +#X connect 13 0 12 0; +#X connect 14 0 29 0; +#X connect 15 0 8 0; +#X connect 16 0 30 0; +#X connect 17 0 13 0; +#X connect 18 0 31 0; +#X connect 19 0 41 0; +#X connect 20 0 4 0; +#X connect 21 0 19 0; +#X connect 22 0 40 0; +#X connect 23 0 20 1; +#X connect 24 0 19 0; +#X connect 25 0 26 0; +#X connect 28 0 20 0; +#X connect 28 1 23 0; +#X connect 29 0 6 1; +#X connect 30 0 9 1; +#X connect 31 0 12 1; +#X connect 32 0 6 0; +#X connect 39 0 38 0; +#X connect 40 0 1 0; +#X connect 41 0 25 0; +#X connect 41 1 47 0; +#X connect 41 2 42 0; +#X connect 42 0 43 0; +#X connect 42 0 46 0; +#X connect 44 0 45 0; +#X connect 45 0 1 1; +#X connect 47 1 28 0; diff --git a/chordthing/getnote.pd b/chordthing/getnote.pd new file mode 100644 index 0000000..5a06c0a --- /dev/null +++ b/chordthing/getnote.pd @@ -0,0 +1,46 @@ +#N canvas 586 402 770 584 12; +#X msg 205 142 0; +#X obj 163 142 until; +#X obj 163 167 f; +#X obj 163 192 + 1; +#X obj 195 243 - 1; +#X obj 195 338 tabread scale; +#X obj 195 373 +; +#X obj 195 398 t f f; +#X obj 177 426 f; +#X obj 177 451 t f b; +#X msg 222 451 0; +#X obj 163 217 t f f; +#X obj 163 276 sel; +#X obj 173 114 t b f b f, f 12; +#X obj 141 53 inlet scale_degree; +#X obj 126 482 outlet; +#X obj 141 78 sel 0; +#X msg 127 169 0; +#X obj 195 305 expr ($f1 + mode) % scale_length; +#X text 4 11 TODO clean this bullshit up \, comment it; +#X connect 0 0 2 1; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 3 0 2 1; +#X connect 3 0 11 0; +#X connect 4 0 18 0; +#X connect 5 0 6 0; +#X connect 6 0 7 0; +#X connect 7 0 8 1; +#X connect 7 1 6 1; +#X connect 8 0 9 0; +#X connect 9 0 15 0; +#X connect 9 1 10 0; +#X connect 10 0 7 0; +#X connect 11 0 12 0; +#X connect 11 1 4 0; +#X connect 12 0 8 0; +#X connect 13 1 1 0; +#X connect 13 2 0 0; +#X connect 13 3 12 1; +#X connect 14 0 16 0; +#X connect 16 0 17 0; +#X connect 16 1 13 0; +#X connect 17 0 15 0; +#X connect 18 0 5 0; diff --git a/medowphysic.pd b/medowphysic.pd new file mode 100644 index 0000000..6783fa0 --- /dev/null +++ b/medowphysic.pd @@ -0,0 +1,48 @@ +#N canvas 195 94 638 813 12; +#X obj 59 88 f; +#X obj 59 113 + 1; +#X obj 59 185 t f f, f 19; +#X obj 59 268 t f b; +#X obj 59 366 sel, f 5; +#X obj 59 391 t b b; +#X obj 91 319 tabread lengths; +#X obj 91 344 - 1; +#X obj 59 60 inlet; +#X obj 91 419 f \$1; +#X msg 91 450 row 0 \$1 0 0; +#X obj 189 213 t f b; +#X obj 221 238 f \$1; +#X obj 196 267 pack; +#X msg 221 307 lset \$1 \$2 8; +#X obj 200 16 r reset; +#X obj 91 294 f \$1; +#X obj 221 470 outlet; +#X obj 59 539 outlet; +#X obj 59 160 expr lengths[\$1]-$f1-1; +#X obj 59 135 expr fmod($f1 \, lengths[\$1]); +#X msg 200 68 0; +#X connect 0 0 1 0; +#X connect 1 0 20 0; +#X connect 2 0 3 0; +#X connect 2 1 11 0; +#X connect 3 0 4 0; +#X connect 3 1 16 0; +#X connect 4 0 5 0; +#X connect 5 0 18 0; +#X connect 5 1 9 0; +#X connect 6 0 7 0; +#X connect 7 0 4 1; +#X connect 8 0 0 0; +#X connect 9 0 10 0; +#X connect 10 0 17 0; +#X connect 11 0 13 0; +#X connect 11 1 12 0; +#X connect 12 0 13 1; +#X connect 13 0 14 0; +#X connect 14 0 17 0; +#X connect 15 0 21 0; +#X connect 16 0 6 0; +#X connect 19 0 2 0; +#X connect 20 0 0 1; +#X connect 20 0 19 0; +#X connect 21 0 0 1; diff --git a/melodic-seq-maybe.pd b/melodic-seq-maybe.pd new file mode 100644 index 0000000..cb236f8 --- /dev/null +++ b/melodic-seq-maybe.pd @@ -0,0 +1,94 @@ +#N canvas 439 153 851 707 12; +#N canvas 0 50 450 250 (subpatch) 0; +#X array loop 16 float 3; +#A 0 0 3 4 0 0 3 4 0 0 0 0 3 5 0 0 0; +#X coords 0 7 16 0 200 140 1 0 0; +#X restore 597 44 graph; +#X obj 47 47 grid; +#X msg 47 21 connect; +#X obj 47 72 route 1; +#X obj 79 133 unpack f f, f 13; +#X obj 79 208 swap, f 13; +#X obj 79 232 tabwrite loop; +#X obj 167 162 expr 7-$f1, f 5; +#X obj 287 129 metro 150; +#X obj 287 101 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 287 154 f; +#X obj 287 204 mod 16; +#X floatatom 287 229 5 0 0 0 pos - -; +#X obj 287 179 + 1; +#X obj 287 253 tabread loop; +#X obj 287 348 + 60; +#N canvas 0 50 450 250 (subpatch) 0; +#X array scale 16 float 3; +#A 0 0 2 4 5 7 9 11 12 0 0 0 0 0 0 0 0; +#X coords 0 24 16 0 200 140 1 0 0; +#X restore 597 202 graph; +#X obj 695 346 v scale_length; +#X obj 287 318 tabread scale; +#X msg 47 259 16; +#X obj 47 284 t f b; +#X msg 88 318 0; +#X obj 47 318 until; +#X obj 47 343 f; +#X obj 47 368 + 1; +#X obj 47 393 - 1; +#X obj 79 452 tabread loop; +#X obj 47 418 t f f; +#X obj 26 547 pack f f; +#X msg 26 578 col \$1 0 \$2; +#X obj 26 603 s grid; +#X obj 132 27 r grid; +#X obj 79 517 expr 1 << $f1; +#X obj 47 97 t b a; +#X obj 79 477 expr 7-$f1; +#X obj 287 279 expr $f1 % (scale_length); +#X msg 495 350 \; scale 0 0 2 4 5 7 9 11 \; scale_length 7; +#X msg 185 27 all 0; +#X obj 287 397 testsynth, f 16; +#X obj 287 422 dac~; +#X obj 287 372 makenote 127 100; +#X connect 1 0 3 0; +#X connect 2 0 1 0; +#X connect 3 0 33 0; +#X connect 4 0 5 0; +#X connect 4 1 7 0; +#X connect 5 0 6 0; +#X connect 5 1 6 1; +#X connect 7 0 5 1; +#X connect 8 0 10 0; +#X connect 9 0 8 0; +#X connect 10 0 13 0; +#X connect 11 0 10 1; +#X connect 11 0 12 0; +#X connect 12 0 14 0; +#X connect 13 0 11 0; +#X connect 14 0 35 0; +#X connect 15 0 40 0; +#X connect 18 0 15 0; +#X connect 19 0 20 0; +#X connect 20 0 22 0; +#X connect 20 1 21 0; +#X connect 21 0 23 1; +#X connect 22 0 23 0; +#X connect 23 0 24 0; +#X connect 24 0 23 1; +#X connect 24 0 25 0; +#X connect 25 0 27 0; +#X connect 26 0 34 0; +#X connect 27 0 28 0; +#X connect 27 1 26 0; +#X connect 28 0 29 0; +#X connect 29 0 30 0; +#X connect 31 0 1 0; +#X connect 32 0 28 1; +#X connect 33 0 19 0; +#X connect 33 1 4 0; +#X connect 34 0 32 0; +#X connect 35 0 18 0; +#X connect 37 0 1 0; +#X connect 38 0 39 0; +#X connect 38 0 39 1; +#X connect 40 0 38 0; +#X connect 40 1 38 1; diff --git a/rotating-recorder.pd b/rotating-recorder.pd new file mode 100644 index 0000000..bdea43d --- /dev/null +++ b/rotating-recorder.pd @@ -0,0 +1,94 @@ +#N canvas 666 129 776 583 12; +#X obj 520 28 table buffer; +#X obj 251 128 samplerate~; +#X obj 255 363 tabwrite~ buffer; +#X obj 381 312 metro, f 7; +#X obj 427 176 samplerate~; +#X obj 427 201 / 64; +#X obj 427 226 / 1000; +#X obj 381 337 f; +#X obj 254 323 adc~; +#X msg 315 233 bang; +#X msg 254 235 stop; +#X obj 427 108 loadbang; +#X msg 398 286 0; +#X obj 254 259 t a a; +#X msg 251 186 \; buffer resize \$1 \; buffer_length \$1; +#X obj 519 56 v buffer_length; +#X obj 316 257 t b b b b; +#X obj 413 423 v record_head; +#X obj 501 113 bng 15 250 50 0 empty empty reinit 17 7 0 10 -262144 +-1 -1; +#X obj 381 387 t f f; +#X obj 381 451 expr $f1>=buffer_length; +#X obj 381 476 sel 1; +#X obj 251 153 expr $f1*10; +#X obj 381 501 t b b; +#X msg 413 527 0; +#X obj 413 552 s counter; +#X obj 440 317 r counter; +#X msg 321 527 stop \, bang; +#X obj 90 369 tabplay~ buffer; +#X obj 90 394 dac~; +#X obj 115 303 v record_head; +#X obj 115 279 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X text 192 149 10 secs; +#X msg 47 73 stop; +#X obj 47 98 s stop; +#X msg 98 72 bang; +#X obj 98 97 s start; +#X obj 64 309 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#X msg 437 280 \; buffer const 0; +#X obj 192 394 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 175 496 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 175 516 v record_head; +#X floatatom 175 541 10 0 0 0 - - -; +#X msg 115 328 300000 441000; +#X obj 381 362 + 32; +#X text 208 84 TODO cleanup \, fix rotating playhead \, saving; +#X connect 1 0 22 0; +#X connect 3 0 7 0; +#X connect 4 0 5 0; +#X connect 5 0 6 0; +#X connect 6 0 3 1; +#X connect 7 0 44 0; +#X connect 8 0 2 0; +#X connect 9 0 16 0; +#X connect 10 0 13 0; +#X connect 11 0 4 0; +#X connect 11 0 1 0; +#X connect 12 0 7 1; +#X connect 13 0 2 0; +#X connect 13 1 3 0; +#X connect 16 0 2 0; +#X connect 16 1 3 0; +#X connect 16 2 12 0; +#X connect 16 3 38 0; +#X connect 18 0 4 0; +#X connect 18 0 1 0; +#X connect 19 0 20 0; +#X connect 19 1 17 0; +#X connect 20 0 21 0; +#X connect 21 0 23 0; +#X connect 22 0 14 0; +#X connect 23 0 27 0; +#X connect 23 1 24 0; +#X connect 24 0 25 0; +#X connect 26 0 7 1; +#X connect 27 0 2 0; +#X connect 28 0 29 0; +#X connect 28 1 39 0; +#X connect 30 0 43 0; +#X connect 31 0 30 0; +#X connect 33 0 34 0; +#X connect 35 0 36 0; +#X connect 37 0 28 0; +#X connect 40 0 41 0; +#X connect 41 0 42 0; +#X connect 43 0 28 0; +#X connect 44 0 7 1; +#X connect 44 0 19 0; diff --git a/scale-thing.pd b/scale-thing.pd index ee44dd2..9a9b57d 100644 --- a/scale-thing.pd +++ b/scale-thing.pd @@ -1,17 +1,14 @@ #N canvas 635 134 972 740 12; #N canvas 1287 785 450 250 (subpatch) 0; #X array scale 8 float 3; -#A 0 0 2 4 5 7 9 11 12; +#A 0 2 2 1 2 2 2 1 1; #X coords 0 0 8 12 200 140 1 0 0; #X restore 594 89 graph; -#X obj 201 393 tabread scale; #X obj 201 564 noteout; #X floatatom 273 555 5 0 0 0 - - -; -#X floatatom 217 247 5 0 0 0 - - -; #X obj 255 299 + 2; #X obj 217 271 t f f f; #X obj 466 291 + 4; -#X obj 150 388 * 12; #X obj 150 414 +; #X obj 169 322 t f f; #X obj 352 390 tabread scale; @@ -24,16 +21,12 @@ #X obj 201 509 makenote 127 200; #X obj 452 389 * 12; #X obj 201 367 mod 7; -#X obj 150 363 div 7; #X obj 301 360 div 7; #X obj 352 364 mod 7; #X obj 452 364 div 7; #X obj 498 364 mod 7; -#X obj 609 635 array set scale; -#X msg 608 423 0 2 4 5 7 9 11 12; -#X text 738 420 major; -#X text 759 543 minor; -#X msg 630 543 0 2 3 5 7 8 10 12; +#X obj 471 558 array set scale; +#X text 570 532 major; #X obj 83 36 grid; #X obj 115 94 route 1; #X obj 115 119 unpack f f; @@ -44,71 +37,99 @@ #X obj 27 13 r grid; #X msg 9 97 set \$2 \$3 \$1; #X obj 9 122 s grid; -#X text 745 495 lydian; -#X msg 619 495 0 2 4 6 7 9 11 12; #X text 235 485 root; #X obj 182 154 t f f; #X obj 83 61 t a a; -#X text 374 10 thingy for playing chords. TODO more scales \, chord +#X text 232 10 thingy for playing chords. TODO more scales \, chord types \, inversions \, extensions \, chromatic notes \, the fun chord stuff. Also better interface.; -#X msg 612 449 0 2 3 5 7 9 10 12; -#X text 740 446 dorian; -#X msg 617 472 0 1 3 5 7 8 10 12; -#X text 741 469 phrygian; -#X msg 624 519 0 2 4 5 7 9 10 12; -#X text 749 519 mixolydian; -#X msg 635 567 0 1 3 5 6 8 10 12; -#X text 765 568 locrian; #X obj 201 484 + 0; -#X connect 1 0 9 1; -#X connect 3 0 2 2; -#X connect 4 0 6 0; -#X connect 5 0 14 0; -#X connect 6 0 10 0; -#X connect 6 1 5 0; -#X connect 6 2 7 0; -#X connect 7 0 16 0; +#X msg 471 532 2 2 1 2 2 2 1; +#N canvas 750 277 916 709 get-note 1; +#X msg 205 142 0; +#X obj 163 142 until; +#X obj 163 167 f; +#X obj 163 192 + 1; +#X obj 195 263 - 1; +#X obj 195 288 tabread scale; +#X obj 195 343 +; +#X obj 195 368 t f f; +#X obj 177 396 f; +#X obj 177 421 t f b; +#X msg 222 421 0; +#X obj 163 217 t f f; +#X obj 163 276 sel; +#X obj 173 114 t b f b f, f 12; +#X obj 141 53 inlet scale_degree; +#X obj 126 462 outlet; +#X obj 141 78 sel 0; +#X msg 127 169 0; +#X obj 195 313 - 1; +#X text 5 12 TODO clean this bullshit up \, comment it \, and add inversions +to it; +#X connect 0 0 2 1; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 3 0 2 1; +#X connect 3 0 11 0; +#X connect 4 0 5 0; +#X connect 5 0 18 0; +#X connect 6 0 7 0; +#X connect 7 0 8 1; +#X connect 7 1 6 1; #X connect 8 0 9 0; -#X connect 9 0 36 0; -#X connect 10 0 21 0; -#X connect 10 1 20 0; -#X connect 11 0 13 1; -#X connect 12 0 13 0; -#X connect 13 0 36 0; -#X connect 14 0 22 0; -#X connect 14 1 23 0; -#X connect 15 0 17 1; -#X connect 16 0 24 0; -#X connect 16 1 25 0; -#X connect 17 0 36 0; -#X connect 18 0 2 0; -#X connect 18 1 2 1; -#X connect 19 0 17 0; -#X connect 20 0 1 0; -#X connect 21 0 8 0; -#X connect 22 0 12 0; -#X connect 23 0 11 0; -#X connect 24 0 19 0; -#X connect 25 0 15 0; -#X connect 27 0 26 0; -#X connect 30 0 26 0; -#X connect 31 0 45 0; +#X connect 9 0 15 0; +#X connect 9 1 10 0; +#X connect 10 0 7 0; +#X connect 11 0 12 0; +#X connect 11 1 4 0; +#X connect 12 0 8 0; +#X connect 13 1 1 0; +#X connect 13 2 0 0; +#X connect 13 3 12 1; +#X connect 14 0 16 0; +#X connect 16 0 17 0; +#X connect 16 1 13 0; +#X connect 17 0 15 0; +#X connect 18 0 6 0; +#X restore 196 396 pd get-note; +#X connect 2 0 1 2; +#X connect 3 0 11 0; +#X connect 4 0 7 0; +#X connect 5 0 13 0; +#X connect 6 0 29 0; +#X connect 7 0 6 0; +#X connect 7 1 17 0; +#X connect 8 0 10 1; +#X connect 9 0 10 0; +#X connect 10 0 29 0; +#X connect 11 0 18 0; +#X connect 11 1 19 0; +#X connect 12 0 14 1; +#X connect 13 0 20 0; +#X connect 13 1 21 0; +#X connect 14 0 29 0; +#X connect 15 0 1 0; +#X connect 15 1 1 1; +#X connect 16 0 14 0; +#X connect 17 0 40 0; +#X connect 18 0 9 0; +#X connect 19 0 8 0; +#X connect 20 0 16 0; +#X connect 21 0 12 0; +#X connect 24 0 36 0; +#X connect 25 0 26 0; +#X connect 26 0 35 0; +#X connect 27 0 4 0; +#X connect 28 0 24 0; +#X connect 29 0 38 0; +#X connect 30 0 27 1; +#X connect 31 0 24 0; #X connect 32 0 33 0; -#X connect 33 0 44 0; -#X connect 34 0 4 0; -#X connect 35 0 31 0; -#X connect 36 0 55 0; -#X connect 37 0 34 1; -#X connect 38 0 31 0; -#X connect 39 0 40 0; -#X connect 42 0 26 0; -#X connect 44 0 34 0; -#X connect 44 1 37 0; -#X connect 45 0 39 0; -#X connect 45 1 32 0; -#X connect 47 0 26 0; -#X connect 49 0 26 0; -#X connect 51 0 26 0; -#X connect 53 0 26 0; -#X connect 55 0 18 0; +#X connect 35 0 27 0; +#X connect 35 1 30 0; +#X connect 36 0 32 0; +#X connect 36 1 25 0; +#X connect 38 0 15 0; +#X connect 39 0 22 0; +#X connect 40 0 6 1; diff --git a/shittyphysics.pd b/shittyphysics.pd new file mode 100644 index 0000000..5f10e9d --- /dev/null +++ b/shittyphysics.pd @@ -0,0 +1,60 @@ +#N canvas 572 59 1032 803 12; +#X obj 114 102 grid; +#X msg 114 71 connect; +#X obj 114 127 route 1; +#X obj 114 152 unpack f f, f 20; +#X obj 416 27 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 39 82 r grid; +#X msg 171 83 all 0; +#X obj 161 206 s reset; +#X obj 280 235 s grid; +#X obj 420 554 noteout; +#N canvas 0 50 450 250 (subpatch) 0; +#X array lengths 8 float 3; +#A 0 7 7 8 2 2 2 2 2; +#X coords 0 16 8 0 200 140 1 0 0; +#X restore 78 426 graph; +#X obj 138 270 tabwrite lengths; +#X obj 138 242 + 2; +#X obj 420 499 makenote 127 100; +#X msg 279 211 row 0 \$1 0 0; +#X obj 247 177 t f f; +#X obj 375 175 medowphysic 0; +#X obj 520 258 s grid; +#X obj 416 54 metro 100; +#X obj 476 174 medowphysic 1; +#X obj 578 173 medowphysic 2; +#X obj 115 177 t f f f; +#X msg 377 398 36; +#X msg 441 405 38; +#X msg 561 392 44; +#X text 340 6 shitty medowphysics "clone"; +#X connect 0 0 2 0; +#X connect 1 0 0 0; +#X connect 2 0 3 0; +#X connect 3 0 21 0; +#X connect 3 1 15 0; +#X connect 4 0 18 0; +#X connect 5 0 0 0; +#X connect 6 0 0 0; +#X connect 12 0 11 0; +#X connect 13 0 9 0; +#X connect 13 1 9 1; +#X connect 14 0 8 0; +#X connect 15 0 11 1; +#X connect 15 1 14 0; +#X connect 16 0 22 0; +#X connect 16 1 17 0; +#X connect 18 0 16 0; +#X connect 18 0 19 0; +#X connect 18 0 20 0; +#X connect 19 0 23 0; +#X connect 19 1 17 0; +#X connect 20 0 24 0; +#X connect 20 1 17 0; +#X connect 21 1 12 0; +#X connect 21 2 7 0; +#X connect 22 0 13 0; +#X connect 23 0 13 0; +#X connect 24 0 13 0;