diff --git a/arduino/rainboard/sketch.yaml b/arduino/rainboard/sketch.yaml new file mode 100644 index 0000000..ecbfa50 --- /dev/null +++ b/arduino/rainboard/sketch.yaml @@ -0,0 +1,2 @@ +default_port: /dev/tty.usbserial-1410 +default_fqbn: esp32:esp32:esp32s2:UploadSpeed=460800 diff --git a/arduino/rainboard/src/rainboard.ino b/arduino/rainboard/src/rainboard.ino index 7e670cd..94d57d6 100644 --- a/arduino/rainboard/src/rainboard.ino +++ b/arduino/rainboard/src/rainboard.ino @@ -32,14 +32,14 @@ int n_keychg = 0; // --> for monitoring only 'changed' keys. #define NUMCOLS 14 -int pins_cols[NUMCOLS] = {19, 20, 18, 17, 15, 16, 40, 39, 38, 37, 36, 35, 34, 33}; //16 +int pins_cols[NUMCOLS] = {40, 39, 38, 37, 36, 35, 34, 33, 19, 20, 18, 17, 15, 16}; //16 // --> cols is horizontal offsets on the board // --> to be read as input. #define NUMROWS 3 int pins_rows[NUMROWS] = {6, 7, 8}; // --> rows is vertical offsets on the board -// --> to be driven as output. +// --> to be driven as output (or high impedance) void setup() { @@ -47,11 +47,6 @@ void setup() Serial.begin(115200); //pinmodes - // rows : to be driven as output. (scanning) - for (int idx = 0; idx < NUMROWS; idx++) { - pinMode(pins_rows[idx], OUTPUT); - digitalWrite(pins_rows[idx], HIGH); - } // cols : to be read as input. (PULL-UP) for (int idx = 0; idx < NUMCOLS; idx++) { pinMode(pins_cols[idx], INPUT_PULLUP); @@ -87,12 +82,13 @@ void loop() // update row voltages static int row = 0; - digitalWrite(pins_rows[row], HIGH); // let old 'on' row goes 'off' first. + pinMode(pins_rows[row], INPUT); // let old 'on' row goes 'hi-z' first. row++; if (row >= NUMROWS) { row = 0; } - digitalWrite(pins_rows[row], LOW); // let new 'off' row goes 'on'.. -> ready to scan. + pinMode(pins_rows[row], OUTPUT); + digitalWrite(pins_rows[row], LOW); // let new 'hi-z' row goes 'on'.. -> ready to scan. // 100us ~ 200us, waiting for the electricity ready... delayMicroseconds(200); @@ -133,11 +129,11 @@ void loop() // } // Serial.println(); - // // print out the changes. - // for (int chg = 0; chg < n_keychg; chg++) { - // Serial.print(keychanges[chg]); - // Serial.println(); - // } + // print out the changes. + for (int chg = 0; chg < n_keychg; chg++) { + Serial.print(keychanges[chg]); + Serial.print(" "); + } // clear 'keychanges' array for (int idx = 0; idx < MAXCHANGES; idx++) { diff --git a/ringringrain_rev2.pd b/ringringrain_rev2.pd index 9de8650..b1cf374 100644 --- a/ringringrain_rev2.pd +++ b/ringringrain_rev2.pd @@ -1,81 +1,39 @@ -#N canvas 0 33 1016 615 10; -#X obj 597 87 loadbang; +#N canvas 0 93 831 615 10; +#X obj 417 87 loadbang; #N canvas 0 22 450 300 (subpatch) 0; #X array raining 2.57403e+06 float 0; #X coords 0 0.3 2.57403e+06 -0.3 100 200 1 0 0; -#X restore 870 87 graph; -#X floatatom 597 374 0 0 0 0 - - - 0; -#X obj 597 144 soundfiler; -#X floatatom 597 167 0 0 0 0 - - - 0; -#X obj 597 348 env~ 16384; -#X obj 739 399 *~; -#X obj 739 438 hip~ 5; -#X msg 612 291 bang; -#X obj 690 338 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc +#X restore 690 87 graph; +#X floatatom 417 374 0 0 0 0 - - - 0; +#X obj 417 144 soundfiler; +#X floatatom 417 167 0 0 0 0 - - - 0; +#X obj 417 348 env~ 16384; +#X obj 559 399 *~; +#X obj 559 438 hip~ 5; +#X msg 432 291 bang; +#X obj 510 338 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000; -#X obj 597 193 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc +#X obj 417 193 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000; -#X floatatom 754 349 5 0 0 0 - - - 0; -#X obj 612 217 delay 2000; -#X obj 612 241 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc +#X floatatom 574 349 5 0 0 0 - - - 0; +#X obj 432 217 delay 2000; +#X obj 432 241 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000; -#X obj 740 518 dac~; -#N canvas 0 22 450 300 pan 0; -#X obj 59 82 f 1; -#X obj 59 106 -; -#X obj 95 129 *; -#X obj 44 130 *; -#X obj 44 36 inlet; -#X obj 110 36 inlet; -#X obj 44 171 outlet; -#X obj 95 171 outlet; -#X connect 0 0 1 0; -#X connect 1 0 3 1; -#X connect 2 0 7 0; -#X connect 3 0 6 0; -#X connect 4 0 0 0; -#X connect 4 0 3 0; -#X connect 4 0 2 0; -#X connect 5 0 1 1; -#X connect 5 0 2 1; -#X restore 394 561 pd pan; -#X obj 739 488 *~; -#X obj 772 488 *~; -#X obj 458 453 snapshot~; -#X floatatom 533 493 5 0 0 0 - - - 0; -#X obj 341 388 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc +#X obj 560 518 dac~; +#X obj 559 488 *~; +#X obj 592 488 *~; +#X obj 574 375 * 6; +#X obj 623 417 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000; -#X obj 465 396 +~ 1; -#X obj 465 423 *~ 0.5; -#X obj 465 368 osc~ 0.1; -#X obj 462 492 s pann; -#X obj 432 530 r pann; -#X obj 341 413 metro 200; -#X msg 384 506 1; -#X obj 754 375 * 6; -#X obj 803 417 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc -#000000 #000000; -#X msg 803 437 1; +#X msg 623 437 1; #X text 6 7 .; -#X text 374 102 dsp ON/OFF; -#X floatatom 358 147 5 0 0 0 - - - 0; -#X text 395 148 % cpu; -#X obj 358 125 dsp; -#X obj 358 102 tgl 15 0 empty empty empty 8 -8 0 10 #fcfcfc #000000 -#000000 0 1; -#X obj 358 56 loadbang; -#X text 356 30 Automatically turn on audio; -#X text 356 40 8 seconds after patch opens.; -#X obj 358 79 delay 8000; +#X obj 23 379 loadbang; #X text 35 13 arduino i/f; -#X text 602 28 sound generators - sample sound; -#X obj 447 106 print dsp_bang; -#X obj 358 171 print dsp_load; +#X text 422 28 sound generators - sample sound; #X obj 26 68 arduino-wifi; #X msg 146 78 disconnect; #X obj 95 105 tgl 15 0 empty empty connected? 17 7 0 10 #fcfcfc #000000 #000000 0 1; -#X msg 107 43 connect 192.168.10.113 27016; #X obj 26 126 route analog; #X obj 26 149 route 0; #X obj 26 172 * 1023; @@ -87,7 +45,6 @@ #X obj 26 294 pack f f; #X text 260 283 60 == C4 == 261.63hz; #X obj 156 323 clone ringringrain_piano_node 10; -#X obj 26 264 + 60; #X obj 156 294 pack f f f; #X obj 156 271 - 1; #X msg 156 203 stop; @@ -142,56 +99,22 @@ #X connect 15 0 17 0; #X connect 16 0 14 0; #X connect 17 0 18 0; -#X restore 754 260 pd coundhands; -#X floatatom 754 283 5 0 0 1 hands - - 0; -#X msg 597 115 read -resize Rain1.wav raining; -#X msg 597 262 set raining; -#X obj 597 316 tabplay~ raining; -#X obj 754 321 mavg 120; -#X obj 803 394 loadbang; -#N canvas 474 285 719 481 keyhands 0; +#X restore 574 260 pd coundhands; +#X floatatom 574 283 5 0 0 1 hands - - 0; +#X msg 417 115 read -resize Rain1.wav raining; +#X msg 417 262 set raining; +#X obj 417 316 tabplay~ raining; +#X obj 574 321 mavg 120; +#X obj 623 394 loadbang; +#N canvas 211 248 896 448 keyhands 0; #X obj 180 18 key; #X floatatom 180 41 5 0 0 0 - - - 0; #X obj 180 63 route 97 115 100 102 103 104 106 107 108 59 113 119 101 114 116 121 117, f 71; -#X msg 177 91 2; -#X msg 207 95 3; -#X msg 237 91 4; -#X msg 267 95 5; -#X msg 297 91 6; -#X msg 327 95 7; -#X msg 357 91 8; -#X msg 387 95 9; -#X msg 417 91 10; -#X msg 447 95 11; -#X msg 477 91 12; -#X msg 507 95 14; -#X msg 537 91 15; -#X msg 567 95 16; -#X msg 597 91 17; -#X msg 627 95 18; -#X msg 657 91 19; #X listbox 308 316 6 0 0 1 simulated!? - - 0; #X floatatom 180 161 5 0 0 0 - - - 0; #X obj 180 183 route 97 115 100 102 103 104 106 107 108 59 113 119 101 114 116 121 117, f 71; -#X msg 177 211 2; -#X msg 207 215 3; -#X msg 237 211 4; -#X msg 267 215 5; -#X msg 297 211 6; -#X msg 327 215 7; -#X msg 357 211 8; -#X msg 387 215 9; -#X msg 417 211 10; -#X msg 447 215 11; -#X msg 477 211 12; -#X msg 507 215 14; -#X msg 537 211 15; -#X msg 567 215 16; -#X msg 597 211 17; -#X msg 627 215 18; -#X msg 657 211 19; #X obj 180 138 keyup; #X obj 37 192 loadbang; #X msg 360 142 \$1 1; @@ -200,179 +123,264 @@ #X obj 308 361 * 10; #X obj 308 384 +; #X floatatom 308 407 5 0 0 0 - - - 0; -#X obj 308 429 s keyhands; +#X obj 459 389 s keyhands; +#X msg 177 91 0; +#X msg 207 95 1; +#X msg 237 91 2; +#X msg 267 95 3; +#X msg 297 91 4; +#X msg 327 95 5; +#X msg 357 91 6; +#X msg 387 95 7; +#X msg 417 91 8; +#X msg 447 95 9; +#X msg 477 91 10; +#X msg 507 95 11; +#X msg 537 91 12; +#X msg 567 95 13; +#X msg 597 91 14; +#X msg 627 95 15; +#X msg 657 91 16; +#X msg 177 211 0; +#X msg 207 215 1; +#X msg 237 211 2; +#X msg 267 215 3; +#X msg 297 211 4; +#X msg 327 215 5; +#X msg 357 211 6; +#X msg 387 215 7; +#X msg 417 211 8; +#X msg 447 215 9; +#X msg 477 211 10; +#X msg 507 215 11; +#X msg 537 211 12; +#X msg 567 214 13; +#X msg 597 211 14; +#X msg 627 215 15; +#X msg 657 211 16; +#X obj 492 321 inlet; +#X obj 459 368 spigot; +#X obj 492 348 tgl 15 0 empty empty empty 17 7 0 10 #fcfcfc #000000 +#000000 0 1; #X connect 0 0 1 0; #X connect 1 0 2 0; -#X connect 2 0 3 0; -#X connect 2 1 4 0; -#X connect 2 2 5 0; -#X connect 2 3 6 0; -#X connect 2 4 7 0; -#X connect 2 5 8 0; -#X connect 2 6 9 0; -#X connect 2 7 10 0; -#X connect 2 8 11 0; -#X connect 2 9 12 0; -#X connect 2 10 13 0; -#X connect 2 11 14 0; -#X connect 2 12 15 0; -#X connect 2 13 16 0; -#X connect 2 14 17 0; -#X connect 2 15 18 0; -#X connect 2 16 19 0; -#X connect 3 0 42 0; -#X connect 4 0 42 0; -#X connect 5 0 42 0; -#X connect 6 0 42 0; +#X connect 2 0 15 0; +#X connect 2 1 16 0; +#X connect 2 2 17 0; +#X connect 2 3 18 0; +#X connect 2 4 19 0; +#X connect 2 5 20 0; +#X connect 2 6 21 0; +#X connect 2 7 22 0; +#X connect 2 8 23 0; +#X connect 2 9 24 0; +#X connect 2 10 25 0; +#X connect 2 11 26 0; +#X connect 2 12 27 0; +#X connect 2 13 28 0; +#X connect 2 14 29 0; +#X connect 2 15 30 0; +#X connect 2 16 31 0; +#X connect 3 0 10 0; +#X connect 4 0 5 0; +#X connect 5 0 32 0; +#X connect 5 1 33 0; +#X connect 5 2 34 0; +#X connect 5 3 35 0; +#X connect 5 4 36 0; +#X connect 5 5 37 0; +#X connect 5 6 38 0; +#X connect 5 7 39 0; +#X connect 5 8 40 0; +#X connect 5 9 41 0; +#X connect 5 10 42 0; +#X connect 5 11 43 0; +#X connect 5 12 44 0; +#X connect 5 13 45 0; +#X connect 5 14 46 0; +#X connect 5 15 47 0; +#X connect 5 16 48 0; +#X connect 6 0 4 0; +#X connect 7 0 32 0; +#X connect 7 0 47 0; +#X connect 7 0 46 0; +#X connect 7 0 45 0; +#X connect 7 0 44 0; +#X connect 7 0 43 0; #X connect 7 0 42 0; -#X connect 8 0 42 0; -#X connect 9 0 42 0; -#X connect 10 0 42 0; -#X connect 11 0 42 0; -#X connect 12 0 42 0; -#X connect 13 0 42 0; -#X connect 14 0 42 0; -#X connect 15 0 42 0; -#X connect 16 0 42 0; -#X connect 17 0 42 0; -#X connect 18 0 42 0; -#X connect 19 0 42 0; -#X connect 20 0 44 0; -#X connect 21 0 22 0; -#X connect 22 0 23 0; -#X connect 22 1 24 0; -#X connect 22 2 25 0; -#X connect 22 3 26 0; -#X connect 22 4 27 0; -#X connect 22 5 28 0; -#X connect 22 6 29 0; -#X connect 22 7 30 0; -#X connect 22 8 31 0; -#X connect 22 9 32 0; -#X connect 22 10 33 0; -#X connect 22 11 34 0; -#X connect 22 12 35 0; -#X connect 22 13 36 0; -#X connect 22 14 37 0; -#X connect 22 15 38 0; -#X connect 22 16 39 0; -#X connect 23 0 43 0; -#X connect 24 0 43 0; -#X connect 25 0 43 0; -#X connect 26 0 43 0; -#X connect 27 0 43 0; -#X connect 28 0 43 0; -#X connect 29 0 43 0; -#X connect 30 0 43 0; -#X connect 31 0 43 0; -#X connect 32 0 43 0; -#X connect 33 0 43 0; -#X connect 34 0 43 0; -#X connect 35 0 43 0; -#X connect 36 0 43 0; -#X connect 37 0 43 0; -#X connect 38 0 43 0; -#X connect 39 0 43 0; -#X connect 40 0 21 0; -#X connect 41 0 23 0; -#X connect 41 0 39 0; -#X connect 41 0 38 0; -#X connect 41 0 37 0; -#X connect 41 0 36 0; -#X connect 41 0 35 0; -#X connect 41 0 34 0; -#X connect 41 0 33 0; -#X connect 41 0 32 0; -#X connect 41 0 31 0; -#X connect 41 0 30 0; -#X connect 41 0 29 0; -#X connect 41 0 28 0; -#X connect 41 0 27 0; -#X connect 41 0 26 0; -#X connect 41 0 25 0; -#X connect 41 0 24 0; -#X connect 42 0 20 0; -#X connect 43 0 20 0; -#X connect 44 0 45 0; -#X connect 44 1 46 1; -#X connect 45 0 46 0; -#X connect 46 0 47 0; -#X connect 47 0 48 0; -#X restore 200 130 pd keyhands simulator; -#X msg 814 344 1; +#X connect 7 0 41 0; +#X connect 7 0 40 0; +#X connect 7 0 39 0; +#X connect 7 0 38 0; +#X connect 7 0 37 0; +#X connect 7 0 36 0; +#X connect 7 0 35 0; +#X connect 7 0 34 0; +#X connect 7 0 33 0; +#X connect 7 0 48 0; +#X connect 8 0 3 0; +#X connect 9 0 3 0; +#X connect 10 0 11 0; +#X connect 10 1 12 1; +#X connect 11 0 12 0; +#X connect 12 0 13 0; +#X connect 13 0 50 0; +#X connect 15 0 8 0; +#X connect 16 0 8 0; +#X connect 17 0 8 0; +#X connect 18 0 8 0; +#X connect 19 0 8 0; +#X connect 20 0 8 0; +#X connect 21 0 8 0; +#X connect 22 0 8 0; +#X connect 23 0 8 0; +#X connect 24 0 8 0; +#X connect 25 0 8 0; +#X connect 26 0 8 0; +#X connect 27 0 8 0; +#X connect 28 0 8 0; +#X connect 29 0 8 0; +#X connect 30 0 8 0; +#X connect 31 0 8 0; +#X connect 32 0 9 0; +#X connect 33 0 9 0; +#X connect 34 0 9 0; +#X connect 35 0 9 0; +#X connect 36 0 9 0; +#X connect 37 0 9 0; +#X connect 38 0 9 0; +#X connect 39 0 9 0; +#X connect 40 0 9 0; +#X connect 41 0 9 0; +#X connect 42 0 9 0; +#X connect 43 0 9 0; +#X connect 44 0 9 0; +#X connect 45 0 9 0; +#X connect 46 0 9 0; +#X connect 47 0 9 0; +#X connect 48 0 9 0; +#X connect 49 0 51 0; +#X connect 50 0 14 0; +#X connect 51 0 50 1; +#X restore 225 169 pd keyhands simulator; +#X msg 634 344 1; #X obj 156 248 poly 10; -#X connect 0 0 72 0; +#X obj 41 489 table pitches; +#X obj 30 516 loadbang; +#X obj 26 264 tabread pitches; +#X floatatom 103 294 5 0 0 0 - - - 0; +#X msg 23 427 \; pd dsp 1; +#X obj 23 400 del 5000; +#N canvas 47 74 450 300 archive 0; +#N canvas 0 22 450 300 pan 0; +#X obj 59 82 f 1; +#X obj 59 106 -; +#X obj 95 129 *; +#X obj 44 130 *; +#X obj 44 36 inlet; +#X obj 110 36 inlet; +#X obj 44 171 outlet; +#X obj 95 171 outlet; +#X connect 0 0 1 0; +#X connect 1 0 3 1; +#X connect 2 0 7 0; +#X connect 3 0 6 0; +#X connect 4 0 0 0; +#X connect 4 0 3 0; +#X connect 4 0 2 0; +#X connect 5 0 1 1; +#X connect 5 0 2 1; +#X restore 89 215 pd pan; +#X obj 153 107 snapshot~; +#X floatatom 228 147 5 0 0 0 - - - 0; +#X obj 36 42 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 +#000000; +#X obj 160 50 +~ 1; +#X obj 160 77 *~ 0.5; +#X obj 160 22 osc~ 0.1; +#X obj 157 146 s pann; +#X obj 127 184 r pann; +#X obj 36 67 metro 200; +#X msg 79 160 1; +#X connect 1 0 2 0; +#X connect 1 0 7 0; +#X connect 3 0 9 0; +#X connect 4 0 5 0; +#X connect 5 0 1 0; +#X connect 6 0 4 0; +#X connect 8 0 0 1; +#X connect 9 0 1 0; +#X connect 9 0 10 0; +#X connect 10 0 0 0; +#X restore 694 510 pd archive; +#X obj 225 149 tgl 15 0 empty empty on/off 17 7 0 10 #fcfcfc #000000 +#000000 0 1; +#X msg 107 43 connect 192.168.10.111 27016; +#X obj 130 146 print keys; +#X msg 30 537 \; pitches 0 60 62 64 65 67 69 71 72 74 76 77 79 81 83 +84 86 88 89 91 93 95 96 98 100 101 103 105 107 108; +#X connect 0 0 49 0; #X connect 3 0 4 0; #X connect 4 0 10 0; #X connect 5 0 2 0; #X connect 6 0 7 0; +#X connect 7 0 15 0; #X connect 7 0 16 0; -#X connect 7 0 17 0; -#X connect 8 0 74 0; -#X connect 9 0 74 0; -#X connect 10 0 73 0; +#X connect 8 0 51 0; +#X connect 9 0 51 0; +#X connect 10 0 50 0; #X connect 10 0 12 0; -#X connect 11 0 28 0; +#X connect 11 0 17 0; #X connect 12 0 13 0; #X connect 13 0 8 0; -#X connect 16 0 14 0; -#X connect 17 0 14 1; +#X connect 15 0 14 0; +#X connect 16 0 14 1; +#X connect 17 0 6 1; #X connect 18 0 19 0; -#X connect 18 0 24 0; -#X connect 20 0 26 0; -#X connect 21 0 22 0; -#X connect 22 0 18 0; -#X connect 23 0 21 0; -#X connect 25 0 15 1; -#X connect 26 0 18 0; -#X connect 26 0 27 0; -#X connect 27 0 15 0; -#X connect 28 0 6 1; +#X connect 19 0 15 1; +#X connect 19 0 16 1; +#X connect 21 0 62 0; +#X connect 24 0 27 0; +#X connect 24 1 26 0; +#X connect 25 0 24 1; +#X connect 27 0 28 0; +#X connect 28 0 29 0; #X connect 29 0 30 0; -#X connect 30 0 16 1; -#X connect 30 0 17 1; -#X connect 35 0 33 0; -#X connect 36 0 35 0; -#X connect 37 0 40 0; -#X connect 40 0 36 0; -#X connect 40 0 43 0; -#X connect 45 0 49 0; -#X connect 45 1 47 0; -#X connect 46 0 45 1; -#X connect 48 0 45 1; -#X connect 49 0 50 0; +#X connect 29 0 66 0; +#X connect 30 0 31 0; +#X connect 30 1 33 0; +#X connect 31 0 32 0; +#X connect 32 0 59 0; +#X connect 33 0 34 0; +#X connect 34 0 35 1; +#X connect 35 0 56 0; +#X connect 37 0 43 0; +#X connect 38 0 37 0; +#X connect 39 0 38 0; +#X connect 40 0 56 0; +#X connect 43 0 45 0; +#X connect 43 1 44 1; +#X connect 44 0 42 0; +#X connect 45 0 44 0; +#X connect 45 1 42 1; +#X connect 46 0 30 0; +#X connect 47 0 48 0; +#X connect 48 0 52 0; +#X connect 49 0 3 0; #X connect 50 0 51 0; -#X connect 51 0 52 0; -#X connect 52 0 53 0; -#X connect 52 1 55 0; -#X connect 53 0 54 0; -#X connect 54 0 60 0; -#X connect 55 0 56 0; -#X connect 56 0 57 1; -#X connect 57 0 64 0; -#X connect 57 0 79 0; -#X connect 59 0 66 0; -#X connect 60 0 57 0; -#X connect 61 0 59 0; +#X connect 51 0 5 0; +#X connect 51 0 6 0; +#X connect 51 1 9 0; +#X connect 52 0 11 0; +#X connect 53 0 18 0; +#X connect 55 0 52 0; +#X connect 56 0 39 0; +#X connect 56 1 38 1; +#X connect 56 2 38 2; +#X connect 58 0 67 0; +#X connect 59 0 35 0; +#X connect 59 0 60 0; #X connect 62 0 61 0; -#X connect 63 0 79 0; -#X connect 66 0 68 0; -#X connect 66 1 67 1; -#X connect 67 0 65 0; -#X connect 68 0 67 0; -#X connect 68 1 65 1; -#X connect 69 0 52 0; -#X connect 70 0 71 0; -#X connect 71 0 75 0; -#X connect 72 0 3 0; -#X connect 73 0 74 0; -#X connect 74 0 5 0; -#X connect 74 0 6 0; -#X connect 74 1 9 0; -#X connect 75 0 11 0; -#X connect 76 0 29 0; -#X connect 78 0 75 0; -#X connect 79 0 62 0; -#X connect 79 1 61 1; -#X connect 79 2 61 2; +#X connect 64 0 54 0; +#X connect 65 0 24 1; #X coords 0 0 1 1 85 60 0;