tested & confirmed.

pin rearranged.
output-driven => hi-z/low-z style update.
This commit is contained in:
Dooho Yi 2023-04-10 17:46:24 +09:00
parent edbfd0adb4
commit a9a9664c8f
3 changed files with 287 additions and 281 deletions

View file

@ -0,0 +1,2 @@
default_port: /dev/tty.usbserial-1410
default_fqbn: esp32:esp32:esp32s2:UploadSpeed=460800

View file

@ -32,14 +32,14 @@ int n_keychg = 0;
// --> for monitoring only 'changed' keys. // --> for monitoring only 'changed' keys.
#define NUMCOLS 14 #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 // --> cols is horizontal offsets on the board
// --> to be read as input. // --> to be read as input.
#define NUMROWS 3 #define NUMROWS 3
int pins_rows[NUMROWS] = {6, 7, 8}; int pins_rows[NUMROWS] = {6, 7, 8};
// --> rows is vertical offsets on the board // --> rows is vertical offsets on the board
// --> to be driven as output. // --> to be driven as output (or high impedance)
void setup() void setup()
{ {
@ -47,11 +47,6 @@ void setup()
Serial.begin(115200); Serial.begin(115200);
//pinmodes //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) // cols : to be read as input. (PULL-UP)
for (int idx = 0; idx < NUMCOLS; idx++) { for (int idx = 0; idx < NUMCOLS; idx++) {
pinMode(pins_cols[idx], INPUT_PULLUP); pinMode(pins_cols[idx], INPUT_PULLUP);
@ -87,12 +82,13 @@ void loop()
// update row voltages // update row voltages
static int row = 0; 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++; row++;
if (row >= NUMROWS) { if (row >= NUMROWS) {
row = 0; 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... // 100us ~ 200us, waiting for the electricity ready...
delayMicroseconds(200); delayMicroseconds(200);
@ -133,11 +129,11 @@ void loop()
// } // }
// Serial.println(); // Serial.println();
// // print out the changes. // print out the changes.
// for (int chg = 0; chg < n_keychg; chg++) { for (int chg = 0; chg < n_keychg; chg++) {
// Serial.print(keychanges[chg]); Serial.print(keychanges[chg]);
// Serial.println(); Serial.print(" ");
// } }
// clear 'keychanges' array // clear 'keychanges' array
for (int idx = 0; idx < MAXCHANGES; idx++) { for (int idx = 0; idx < MAXCHANGES; idx++) {

View file

@ -1,81 +1,39 @@
#N canvas 0 33 1016 615 10; #N canvas 0 93 831 615 10;
#X obj 597 87 loadbang; #X obj 417 87 loadbang;
#N canvas 0 22 450 300 (subpatch) 0; #N canvas 0 22 450 300 (subpatch) 0;
#X array raining 2.57403e+06 float 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 coords 0 0.3 2.57403e+06 -0.3 100 200 1 0 0;
#X restore 870 87 graph; #X restore 690 87 graph;
#X floatatom 597 374 0 0 0 0 - - - 0; #X floatatom 417 374 0 0 0 0 - - - 0;
#X obj 597 144 soundfiler; #X obj 417 144 soundfiler;
#X floatatom 597 167 0 0 0 0 - - - 0; #X floatatom 417 167 0 0 0 0 - - - 0;
#X obj 597 348 env~ 16384; #X obj 417 348 env~ 16384;
#X obj 739 399 *~; #X obj 559 399 *~;
#X obj 739 438 hip~ 5; #X obj 559 438 hip~ 5;
#X msg 612 291 bang; #X msg 432 291 bang;
#X obj 690 338 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #X obj 510 338 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc
#000000 #000000; #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; #000000 #000000;
#X floatatom 754 349 5 0 0 0 - - - 0; #X floatatom 574 349 5 0 0 0 - - - 0;
#X obj 612 217 delay 2000; #X obj 432 217 delay 2000;
#X obj 612 241 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #X obj 432 241 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc
#000000 #000000; #000000 #000000;
#X obj 740 518 dac~; #X obj 560 518 dac~;
#N canvas 0 22 450 300 pan 0; #X obj 559 488 *~;
#X obj 59 82 f 1; #X obj 592 488 *~;
#X obj 59 106 -; #X obj 574 375 * 6;
#X obj 95 129 *; #X obj 623 417 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc
#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
#000000 #000000; #000000 #000000;
#X obj 465 396 +~ 1; #X msg 623 437 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 text 6 7 .; #X text 6 7 .;
#X text 374 102 dsp ON/OFF; #X obj 23 379 loadbang;
#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 text 35 13 arduino i/f; #X text 35 13 arduino i/f;
#X text 602 28 sound generators - sample sound; #X text 422 28 sound generators - sample sound;
#X obj 447 106 print dsp_bang;
#X obj 358 171 print dsp_load;
#X obj 26 68 arduino-wifi; #X obj 26 68 arduino-wifi;
#X msg 146 78 disconnect; #X msg 146 78 disconnect;
#X obj 95 105 tgl 15 0 empty empty connected? 17 7 0 10 #fcfcfc #000000 #X obj 95 105 tgl 15 0 empty empty connected? 17 7 0 10 #fcfcfc #000000
#000000 0 1; #000000 0 1;
#X msg 107 43 connect 192.168.10.113 27016;
#X obj 26 126 route analog; #X obj 26 126 route analog;
#X obj 26 149 route 0; #X obj 26 149 route 0;
#X obj 26 172 * 1023; #X obj 26 172 * 1023;
@ -87,7 +45,6 @@
#X obj 26 294 pack f f; #X obj 26 294 pack f f;
#X text 260 283 60 == C4 == 261.63hz; #X text 260 283 60 == C4 == 261.63hz;
#X obj 156 323 clone ringringrain_piano_node 10; #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 294 pack f f f;
#X obj 156 271 - 1; #X obj 156 271 - 1;
#X msg 156 203 stop; #X msg 156 203 stop;
@ -142,56 +99,22 @@
#X connect 15 0 17 0; #X connect 15 0 17 0;
#X connect 16 0 14 0; #X connect 16 0 14 0;
#X connect 17 0 18 0; #X connect 17 0 18 0;
#X restore 754 260 pd coundhands; #X restore 574 260 pd coundhands;
#X floatatom 754 283 5 0 0 1 hands - - 0; #X floatatom 574 283 5 0 0 1 hands - - 0;
#X msg 597 115 read -resize Rain1.wav raining; #X msg 417 115 read -resize Rain1.wav raining;
#X msg 597 262 set raining; #X msg 417 262 set raining;
#X obj 597 316 tabplay~ raining; #X obj 417 316 tabplay~ raining;
#X obj 754 321 mavg 120; #X obj 574 321 mavg 120;
#X obj 803 394 loadbang; #X obj 623 394 loadbang;
#N canvas 474 285 719 481 keyhands 0; #N canvas 211 248 896 448 keyhands 0;
#X obj 180 18 key; #X obj 180 18 key;
#X floatatom 180 41 5 0 0 0 - - - 0; #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 #X obj 180 63 route 97 115 100 102 103 104 106 107 108 59 113 119 101
114 116 121 117, f 71; 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 listbox 308 316 6 0 0 1 simulated!? - - 0;
#X floatatom 180 161 5 0 0 0 - - - 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 #X obj 180 183 route 97 115 100 102 103 104 106 107 108 59 113 119
101 114 116 121 117, f 71; 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 180 138 keyup;
#X obj 37 192 loadbang; #X obj 37 192 loadbang;
#X msg 360 142 \$1 1; #X msg 360 142 \$1 1;
@ -200,179 +123,264 @@
#X obj 308 361 * 10; #X obj 308 361 * 10;
#X obj 308 384 +; #X obj 308 384 +;
#X floatatom 308 407 5 0 0 0 - - - 0; #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 0 0 1 0;
#X connect 1 0 2 0; #X connect 1 0 2 0;
#X connect 2 0 3 0; #X connect 2 0 15 0;
#X connect 2 1 4 0; #X connect 2 1 16 0;
#X connect 2 2 5 0; #X connect 2 2 17 0;
#X connect 2 3 6 0; #X connect 2 3 18 0;
#X connect 2 4 7 0; #X connect 2 4 19 0;
#X connect 2 5 8 0; #X connect 2 5 20 0;
#X connect 2 6 9 0; #X connect 2 6 21 0;
#X connect 2 7 10 0; #X connect 2 7 22 0;
#X connect 2 8 11 0; #X connect 2 8 23 0;
#X connect 2 9 12 0; #X connect 2 9 24 0;
#X connect 2 10 13 0; #X connect 2 10 25 0;
#X connect 2 11 14 0; #X connect 2 11 26 0;
#X connect 2 12 15 0; #X connect 2 12 27 0;
#X connect 2 13 16 0; #X connect 2 13 28 0;
#X connect 2 14 17 0; #X connect 2 14 29 0;
#X connect 2 15 18 0; #X connect 2 15 30 0;
#X connect 2 16 19 0; #X connect 2 16 31 0;
#X connect 3 0 42 0; #X connect 3 0 10 0;
#X connect 4 0 42 0; #X connect 4 0 5 0;
#X connect 5 0 42 0; #X connect 5 0 32 0;
#X connect 6 0 42 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 7 0 42 0;
#X connect 8 0 42 0; #X connect 7 0 41 0;
#X connect 9 0 42 0; #X connect 7 0 40 0;
#X connect 10 0 42 0; #X connect 7 0 39 0;
#X connect 11 0 42 0; #X connect 7 0 38 0;
#X connect 12 0 42 0; #X connect 7 0 37 0;
#X connect 13 0 42 0; #X connect 7 0 36 0;
#X connect 14 0 42 0; #X connect 7 0 35 0;
#X connect 15 0 42 0; #X connect 7 0 34 0;
#X connect 16 0 42 0; #X connect 7 0 33 0;
#X connect 17 0 42 0; #X connect 7 0 48 0;
#X connect 18 0 42 0; #X connect 8 0 3 0;
#X connect 19 0 42 0; #X connect 9 0 3 0;
#X connect 20 0 44 0; #X connect 10 0 11 0;
#X connect 21 0 22 0; #X connect 10 1 12 1;
#X connect 22 0 23 0; #X connect 11 0 12 0;
#X connect 22 1 24 0; #X connect 12 0 13 0;
#X connect 22 2 25 0; #X connect 13 0 50 0;
#X connect 22 3 26 0; #X connect 15 0 8 0;
#X connect 22 4 27 0; #X connect 16 0 8 0;
#X connect 22 5 28 0; #X connect 17 0 8 0;
#X connect 22 6 29 0; #X connect 18 0 8 0;
#X connect 22 7 30 0; #X connect 19 0 8 0;
#X connect 22 8 31 0; #X connect 20 0 8 0;
#X connect 22 9 32 0; #X connect 21 0 8 0;
#X connect 22 10 33 0; #X connect 22 0 8 0;
#X connect 22 11 34 0; #X connect 23 0 8 0;
#X connect 22 12 35 0; #X connect 24 0 8 0;
#X connect 22 13 36 0; #X connect 25 0 8 0;
#X connect 22 14 37 0; #X connect 26 0 8 0;
#X connect 22 15 38 0; #X connect 27 0 8 0;
#X connect 22 16 39 0; #X connect 28 0 8 0;
#X connect 23 0 43 0; #X connect 29 0 8 0;
#X connect 24 0 43 0; #X connect 30 0 8 0;
#X connect 25 0 43 0; #X connect 31 0 8 0;
#X connect 26 0 43 0; #X connect 32 0 9 0;
#X connect 27 0 43 0; #X connect 33 0 9 0;
#X connect 28 0 43 0; #X connect 34 0 9 0;
#X connect 29 0 43 0; #X connect 35 0 9 0;
#X connect 30 0 43 0; #X connect 36 0 9 0;
#X connect 31 0 43 0; #X connect 37 0 9 0;
#X connect 32 0 43 0; #X connect 38 0 9 0;
#X connect 33 0 43 0; #X connect 39 0 9 0;
#X connect 34 0 43 0; #X connect 40 0 9 0;
#X connect 35 0 43 0; #X connect 41 0 9 0;
#X connect 36 0 43 0; #X connect 42 0 9 0;
#X connect 37 0 43 0; #X connect 43 0 9 0;
#X connect 38 0 43 0; #X connect 44 0 9 0;
#X connect 39 0 43 0; #X connect 45 0 9 0;
#X connect 40 0 21 0; #X connect 46 0 9 0;
#X connect 41 0 23 0; #X connect 47 0 9 0;
#X connect 41 0 39 0; #X connect 48 0 9 0;
#X connect 41 0 38 0; #X connect 49 0 51 0;
#X connect 41 0 37 0; #X connect 50 0 14 0;
#X connect 41 0 36 0; #X connect 51 0 50 1;
#X connect 41 0 35 0; #X restore 225 169 pd keyhands simulator;
#X connect 41 0 34 0; #X msg 634 344 1;
#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 obj 156 248 poly 10; #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 3 0 4 0;
#X connect 4 0 10 0; #X connect 4 0 10 0;
#X connect 5 0 2 0; #X connect 5 0 2 0;
#X connect 6 0 7 0; #X connect 6 0 7 0;
#X connect 7 0 15 0;
#X connect 7 0 16 0; #X connect 7 0 16 0;
#X connect 7 0 17 0; #X connect 8 0 51 0;
#X connect 8 0 74 0; #X connect 9 0 51 0;
#X connect 9 0 74 0; #X connect 10 0 50 0;
#X connect 10 0 73 0;
#X connect 10 0 12 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 12 0 13 0;
#X connect 13 0 8 0; #X connect 13 0 8 0;
#X connect 16 0 14 0; #X connect 15 0 14 0;
#X connect 17 0 14 1; #X connect 16 0 14 1;
#X connect 17 0 6 1;
#X connect 18 0 19 0; #X connect 18 0 19 0;
#X connect 18 0 24 0; #X connect 19 0 15 1;
#X connect 20 0 26 0; #X connect 19 0 16 1;
#X connect 21 0 22 0; #X connect 21 0 62 0;
#X connect 22 0 18 0; #X connect 24 0 27 0;
#X connect 23 0 21 0; #X connect 24 1 26 0;
#X connect 25 0 15 1; #X connect 25 0 24 1;
#X connect 26 0 18 0; #X connect 27 0 28 0;
#X connect 26 0 27 0; #X connect 28 0 29 0;
#X connect 27 0 15 0;
#X connect 28 0 6 1;
#X connect 29 0 30 0; #X connect 29 0 30 0;
#X connect 30 0 16 1; #X connect 29 0 66 0;
#X connect 30 0 17 1; #X connect 30 0 31 0;
#X connect 35 0 33 0; #X connect 30 1 33 0;
#X connect 36 0 35 0; #X connect 31 0 32 0;
#X connect 37 0 40 0; #X connect 32 0 59 0;
#X connect 40 0 36 0; #X connect 33 0 34 0;
#X connect 40 0 43 0; #X connect 34 0 35 1;
#X connect 45 0 49 0; #X connect 35 0 56 0;
#X connect 45 1 47 0; #X connect 37 0 43 0;
#X connect 46 0 45 1; #X connect 38 0 37 0;
#X connect 48 0 45 1; #X connect 39 0 38 0;
#X connect 49 0 50 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 50 0 51 0;
#X connect 51 0 52 0; #X connect 51 0 5 0;
#X connect 52 0 53 0; #X connect 51 0 6 0;
#X connect 52 1 55 0; #X connect 51 1 9 0;
#X connect 53 0 54 0; #X connect 52 0 11 0;
#X connect 54 0 60 0; #X connect 53 0 18 0;
#X connect 55 0 56 0; #X connect 55 0 52 0;
#X connect 56 0 57 1; #X connect 56 0 39 0;
#X connect 57 0 64 0; #X connect 56 1 38 1;
#X connect 57 0 79 0; #X connect 56 2 38 2;
#X connect 59 0 66 0; #X connect 58 0 67 0;
#X connect 60 0 57 0; #X connect 59 0 35 0;
#X connect 61 0 59 0; #X connect 59 0 60 0;
#X connect 62 0 61 0; #X connect 62 0 61 0;
#X connect 63 0 79 0; #X connect 64 0 54 0;
#X connect 66 0 68 0; #X connect 65 0 24 1;
#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 coords 0 0 1 1 85 60 0; #X coords 0 0 1 1 85 60 0;