diff June/woosh_D4.pd @ 117:3f2588a64b25

merged
author Roderick Selfridge <r.selfridge@qmul.ac.uk>
date Sat, 01 Aug 2015 05:48:03 +0100
parents 2dea66bf32a1
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/June/woosh_D4.pd	Sat Aug 01 05:48:03 2015 +0100
@@ -0,0 +1,663 @@
+#N canvas 386 234 893 466 10;
+#X obj 541 -103 vu 15 120 empty empty -1 -8 0 10 -66577 -1 1 0;
+#X obj 604 -103 vu 15 120 empty empty -1 -8 0 10 -66577 -1 1 0;
+#X text 601 -194 Gain;
+#X obj 540 -220 loadbang;
+#N canvas 865 368 284 318 opLevels 0;
+#X obj 85 188 dac~;
+#X obj 30 70 catch~ l;
+#X obj 155 76 catch~ r;
+#X obj 155 106 *~ 0.45;
+#X obj 30 104 *~ 0.45;
+#X obj 30 210 prvu~;
+#X obj 155 213 prvu~;
+#X obj 100 69 / 127;
+#X obj 100 34 inlet;
+#X obj 30 239 outlet;
+#X obj 155 241 outlet;
+#X obj 155 30 r NoOfSources;
+#X obj 155 132 /~ 1;
+#X obj 30 131 /~ 1;
+#X obj 155 49 / 20;
+#X connect 1 0 4 0;
+#X connect 2 0 3 0;
+#X connect 3 0 12 0;
+#X connect 4 0 13 0;
+#X connect 5 0 9 0;
+#X connect 6 0 10 0;
+#X connect 7 0 3 1;
+#X connect 7 0 4 1;
+#X connect 8 0 7 0;
+#X connect 11 0 14 0;
+#X connect 12 0 0 1;
+#X connect 12 0 6 0;
+#X connect 13 0 0 0;
+#X connect 13 0 5 0;
+#X connect 14 0 12 1;
+#X connect 14 0 13 1;
+#X restore 540 -146 pd opLevels;
+#X msg 540 -197 5;
+#N canvas 474 116 807 545 speedCalc 0;
+#X obj 59 -12 inlet;
+#X obj 135 -11 inlet;
+#X obj 217 -12 inlet;
+#X obj 317 -12 inlet;
+#X obj 59 11 s \$0_swLen;
+#X obj 135 11 s \$0_armLen;
+#X obj 317 10 s \$0_tipSpeed;
+#X obj 142 237 r \$0_tipSpeed;
+#X obj 211 437 outlet;
+#X obj 211 414 r \$0_minSpeed;
+#X obj 127 338 s \$0_minSpeed;
+#X obj 310 414 r \$0_deltaSpeed;
+#X obj 504 335 s \$0_deltaSpeed;
+#X obj 310 437 outlet;
+#X obj 212 104 r \$0_swLen;
+#X obj 127 216 /;
+#X floatatom 81 243 5 0 0 0 - - -;
+#X obj 227 127 r \$0_armLen;
+#X obj 212 194 +;
+#X obj 227 149 t f b;
+#X floatatom 212 216 5 0 0 0 - - -;
+#X obj 99 143 r \$0_armLen;
+#X obj 217 11 s \$0_sourceTot;
+#X obj 519 274 r \$0_sourceTot;
+#X obj 127 314 *;
+#X floatatom 85 338 5 0 0 0 - - -;
+#X obj 519 186 r \$0_minSpeed;
+#X obj 504 253 -;
+#X obj 504 163 r \$0_tipSpeed;
+#X obj 504 296 /;
+#X obj 519 207 t f b;
+#X floatatom 521 315 5 0 0 0 - - -;
+#X obj 546 230 delay 9;
+#X text 244 198 Length of blade and arm;
+#X obj 99 165 t f b;
+#X obj 126 189 delay 9;
+#X obj 254 173 delay 6;
+#X text -49 216 Ratio of arm to total length;
+#X text 69 361 Speed of blade at the hilt;
+#X text 387 247 Difference between;
+#X text 369 259 speed at tip and hilt;
+#X text 459 357 Difference in speed for each source;
+#X text 459 369 based on a linear scale;
+#X text 417 16 as well as the difference in speed of each source;
+#X text 431 2 Patch that calculates the minimum speed;
+#X obj 142 260 t f b;
+#X obj 168 283 delay 8;
+#X connect 0 0 4 0;
+#X connect 1 0 5 0;
+#X connect 2 0 22 0;
+#X connect 3 0 6 0;
+#X connect 7 0 45 0;
+#X connect 9 0 8 0;
+#X connect 11 0 13 0;
+#X connect 14 0 18 0;
+#X connect 15 0 16 0;
+#X connect 15 0 24 0;
+#X connect 17 0 19 0;
+#X connect 18 0 20 0;
+#X connect 18 0 15 1;
+#X connect 19 0 18 1;
+#X connect 19 1 36 0;
+#X connect 21 0 34 0;
+#X connect 23 0 29 1;
+#X connect 24 0 10 0;
+#X connect 24 0 25 0;
+#X connect 26 0 30 0;
+#X connect 27 0 29 0;
+#X connect 28 0 27 0;
+#X connect 29 0 31 0;
+#X connect 29 0 12 0;
+#X connect 30 0 27 1;
+#X connect 30 1 32 0;
+#X connect 32 0 27 0;
+#X connect 34 0 15 0;
+#X connect 34 1 35 0;
+#X connect 35 0 15 0;
+#X connect 36 0 18 0;
+#X connect 45 0 24 1;
+#X connect 45 1 46 0;
+#X connect 46 0 24 0;
+#X restore 534 140 pd speedCalc;
+#X floatatom 443 164 8 0 0 0 - - -;
+#X floatatom 688 162 8 0 0 0 - - -;
+#X msg 14 -225 1;
+#X msg 13 -94 100;
+#X msg 12 -159 0.59;
+#X obj 534 45 r bladeLen;
+#X obj 557 68 r armLength;
+#X obj 580 92 r NoOfSources;
+#X obj 603 117 r topSpeed;
+#X obj 14 -202 s bladeLen;
+#X obj 12 -138 s armLength;
+#X obj 13 -71 s NoOfSources;
+#X obj 78 89 s topSpeed;
+#X obj 26 63 hsl 100 20 0 100 0 0 empty empty empty -2 -8 0 10 -262144
+-1 -1 100 1;
+#X floatatom 23 89 8 0 0 0 - - -;
+#X text 47 -226 Blade Length;
+#X text 46 -160 Arm Length;
+#X text 41 -94 Number of Sources;
+#X text 134 67 Top Speed;
+#X obj 23 147 hsl 100 20 0 360 0 0 empty empty empty -2 -8 0 10 -262144
+-1 -1 6600 1;
+#X floatatom 20 179 8 0 0 0 - - -;
+#X obj 75 178 s sweepAngle;
+#X text 134 148 Sweep Angle;
+#X obj 370 -13 r sweepAngle;
+#X obj 277 -57 r bladeLen;
+#X obj 323 -34 r armLength;
+#X obj 508 164 s firstSpeed;
+#X obj 603 163 s deltaSpeed;
+#X floatatom 220 38 8 0 0 0 - - -;
+#X floatatom 458 36 8 0 0 0 - - -;
+#N canvas 833 342 426 335 thickCalc 0;
+#X obj 173 139 r NoOfSources;
+#X obj 23 16 inlet;
+#X obj 26 64 inlet;
+#X obj 26 86 s \$0_tipThick;
+#X obj 158 115 -;
+#X obj 158 164 /;
+#X obj 158 187 outlet;
+#X obj 23 39 s \$0_hiltThick;
+#X floatatom 126 147 5 0 0 0 - - -;
+#X obj 173 44 r \$0_tipThick;
+#X obj 158 19 r \$0_hiltThick;
+#X floatatom 94 189 8 0 0 0 - - -;
+#X obj 173 72 t f b;
+#X obj 200 95 delay 9;
+#X text 58 237 Calculates the difference in thickness between sources
+;
+#X text 59 254 based on the blade tapering in a straight line;
+#X connect 0 0 5 1;
+#X connect 1 0 7 0;
+#X connect 2 0 3 0;
+#X connect 4 0 5 0;
+#X connect 4 0 8 0;
+#X connect 5 0 6 0;
+#X connect 5 0 11 0;
+#X connect 9 0 12 0;
+#X connect 10 0 4 0;
+#X connect 12 0 4 1;
+#X connect 12 1 13 0;
+#X connect 13 0 4 0;
+#X restore 372 -123 pd thickCalc;
+#X obj 372 -100 s deltaThick;
+#X floatatom 317 -99 8 0 0 0 - - -;
+#X obj 20 238 hsl 100 20 0 0.03 0 0 empty empty empty -2 -8 0 10 -262144
+-1 -1 3135 1;
+#X obj 19 323 hsl 100 20 0 0.01 0 0 empty empty empty -2 -8 0 10 -262144
+-1 -1 3168 1;
+#X floatatom 17 268 8 0 0 0 - - -;
+#X obj 71 267 s hiltThick;
+#X floatatom 16 351 8 0 0 0 - - -;
+#X obj 74 350 s tipThick;
+#X text 134 240 Hilt Thickness;
+#X text 126 324 Tip Thickness;
+#X obj 372 -168 r hiltThick;
+#X obj 441 -146 r tipThick;
+#X obj 214 -180 bng 50 250 50 0 empty empty empty 17 7 0 10 -4034 -1
+-1;
+#X obj 214 -127 s GO;
+#X obj 775 -93 tenSource;
+#X obj 19 405 hsl 100 20 100 1 1 0 empty empty empty -2 -8 0 10 -262144
+-1 -1 3210 1;
+#X obj 15 490 hsl 100 20 -180 180 0 0 empty empty empty -2 -8 0 10
+-262144 -1 -1 5000 1;
+#X floatatom 16 431 8 0 0 0 - - -;
+#X text 129 409 Distance to Observer;
+#X floatatom 12 518 8 0 0 0 - - -;
+#X text 137 484 Angle to Observer;
+#X obj 809 -129 r distance;
+#X obj 792 -150 r angle;
+#X obj 775 -191 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 214 -226 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1
+0 1;
+#X obj 214 -207 metro 200;
+#X obj 268 -231 hsl 100 20 300 50 0 0 empty empty empty -2 -8 0 10
+-262144 -1 -1 0 1;
+#X obj 154 -180 bng 50 250 50 0 empty empty empty 17 7 0 10 -257985
+-1 -1;
+#X obj 154 -127 s setUp;
+#X obj -30 37 r setUp;
+#X obj -38 127 r setUp;
+#X obj -34 215 r setUp;
+#X obj -35 303 r setUp;
+#X obj -36 384 r setUp;
+#X obj -39 468 r setUp;
+#X obj 775 -219 r setUp;
+#X obj 75 432 s obsDistance;
+#X obj 71 519 s obsAngle;
+#N canvas 427 69 911 675 circumferCalc 0;
+#X obj 266 13 inlet;
+#X floatatom 365 172 5 0 0 0 - - -;
+#X obj 80 13 inlet;
+#X obj 170 13 inlet;
+#X obj 247 146 +;
+#X obj 316 172 / 360;
+#X obj 247 171 * 3.14159;
+#X obj 247 219 *;
+#X obj 247 195 * 2;
+#X obj 80 36 s \$0_bladeLen;
+#X obj 170 36 s \$0_armLength;
+#X obj 266 36 s \$0_sweepAngle;
+#X obj 247 99 r \$0_bladeLen;
+#X obj 262 123 r \$0_armLength;
+#X obj 316 148 r \$0_sweepAngle;
+#X floatatom 734 192 5 0 0 0 - - -;
+#X obj 685 192 / 360;
+#X floatatom 628 168 5 0 0 0 - - -;
+#X obj 616 191 * 3.14159;
+#X obj 616 239 *;
+#X floatatom 560 267 8 0 0 0 - - -;
+#X obj 616 215 * 2;
+#X obj 616 143 r \$0_armLength;
+#X obj 685 168 r \$0_sweepAngle;
+#X obj 616 267 s \$0_minCirc;
+#X obj 265 459 r \$0_minCirc;
+#X obj 265 481 outlet;
+#X obj 262 279 r \$0_minCirc;
+#X floatatom 188 339 8 0 0 0 - - -;
+#X obj 247 305 -;
+#X obj 247 341 /;
+#X obj 277 317 r NoOfSources;
+#X floatatom 185 370 8 0 0 0 - - -;
+#X obj 247 367 s \$0_deltaCirc;
+#X obj 354 459 r \$0_deltaCirc;
+#X obj 354 481 outlet;
+#X obj 260 246 s maxCirc;
+#X obj 191 172 s length;
+#X text 122 176 Arc radius;
+#X text 318 195 % of circle;
+#X text 323 242 Circumference of arc of tip;
+#X text 692 210 % of circle;
+#X text 601 289 Circumference of arc of hilt;
+#X floatatom 187 243 8 0 0 0 - - -;
+#X text 199 390 Difference of circumference length for each source
+;
+#X text 199 405 based on linear spacing between sources;
+#X connect 0 0 11 0;
+#X connect 2 0 9 0;
+#X connect 3 0 10 0;
+#X connect 4 0 6 0;
+#X connect 4 0 37 0;
+#X connect 5 0 7 1;
+#X connect 6 0 8 0;
+#X connect 7 0 29 0;
+#X connect 7 0 36 0;
+#X connect 7 0 43 0;
+#X connect 8 0 7 0;
+#X connect 12 0 4 0;
+#X connect 13 0 4 1;
+#X connect 14 0 5 0;
+#X connect 14 0 1 0;
+#X connect 16 0 19 1;
+#X connect 18 0 21 0;
+#X connect 19 0 20 0;
+#X connect 19 0 24 0;
+#X connect 21 0 19 0;
+#X connect 22 0 18 0;
+#X connect 22 0 17 0;
+#X connect 23 0 16 0;
+#X connect 23 0 15 0;
+#X connect 25 0 26 0;
+#X connect 27 0 29 1;
+#X connect 29 0 28 0;
+#X connect 29 0 30 0;
+#X connect 30 0 32 0;
+#X connect 30 0 33 0;
+#X connect 31 0 30 1;
+#X connect 34 0 35 0;
+#X restore 277 11 pd circumferCalc;
+#X obj 277 37 s circumMin;
+#X obj 370 36 s deltaCircum;
+#N canvas 303 28 1094 768 angleCalc 0;
+#X obj -129 105 * 0.75;
+#X obj 325 234 * 0.25;
+#X obj -129 145 /;
+#X obj -144 199 * 1000;
+#X obj 263 254 delay \$1;
+#X obj 236 202 f;
+#X obj 236 159 r GO;
+#X obj 236 228 t f b;
+#X msg 227 367 0;
+#X obj 325 276 /;
+#X obj 325 298 * 1000;
+#X obj -127 225 s \$0_thisDe;
+#X obj 251 181 r \$0_thisDe;
+#X obj 145 237 r sweepAngle;
+#X obj -129 81 r maxCirc;
+#X obj 325 212 r maxCirc;
+#X obj -114 124 r topSpeed;
+#X obj 340 255 r topSpeed;
+#X obj 644 360 delay \$1;
+#X obj 646 302 f;
+#X obj 639 248 r GO;
+#X obj 646 328 t f b;
+#X obj 682 208 r maxCirc;
+#X obj 697 230 r topSpeed;
+#X obj 682 254 /;
+#X obj 682 276 * 1000;
+#X obj 644 407 s end;
+#X obj -77 312 r end;
+#X obj 145 260 * -0.25;
+#X text -193 45 0.75 represents the ratio of swing that;
+#X text 200 118 0.25 represents the ratio of swing that;
+#X text 200 132 the sword is decelerating;
+#X text -102 149 Time taken for acceleration;
+#X text -54 221 Send as a delay;
+#X text 280 160 Recieve as a delay;
+#X text -36 312 Reset angle;
+#X text -38 325 once swing complete;
+#X text 622 426 Send bang message at the;
+#X text 623 438 end of the swing to reset;
+#X text 379 296 Time for last;
+#X text 381 307 1/4 of swing;
+#X text -193 59 the sword is before 0 degrees;
+#X text -121 700 Output of complete swing \, split into 75% before
+0 degrees and 25% past 0 degrees;
+#X text 568 517 Once delay from start to 0 degrees complete;
+#X text 564 535 count down from 0 to finish the total swing angle;
+#X text 98 9 Patch that calculates the angle between 0 degrees for
+the full length of the swing;
+#X obj -144 482 line~;
+#X obj 86 601 metro 10;
+#X obj 86 632 snapshot~;
+#X floatatom 85 656 8 0 0 0 - - -;
+#X obj 172 397 line~;
+#X msg 172 350 \$1 \$2;
+#X obj 151 319 pack;
+#X obj 86 570 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X floatatom -108 266 5 0 0 0 - - -;
+#X msg -90 438 \$1;
+#X obj -48 365 r sweepAngle;
+#X obj -48 387 * 0.75;
+#X msg -144 427 0 \$1;
+#X obj -62 341 r setUp;
+#X obj 151 294 f;
+#X obj -4 549 +~;
+#X obj 227 342 r setUp;
+#X floatatom -63 474 5 0 0 0 - - -;
+#X text 11 464 comment;
+#X obj -63 409 f;
+#X floatatom -26 434 5 0 0 0 - - -;
+#X obj 286 343 r end;
+#X obj 632 276 delay 9;
+#X obj 644 383 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj -144 174 f;
+#X obj -163 143 r GO;
+#X obj -4 633 s~ swordAngle;
+#X text 241 325 Set to 0 at end;
+#X obj 86 545 loadbang;
+#X obj 68 509 r obsAngle;
+#X obj -4 576 +~ 1;
+#X text 141 470 Adding in the observer angle here offsets the swing
+angle by the angle the observer is at. This makes all the future calculations
+as if the observer is positioned at 0 degrees to the swordSwing.;
+#X connect 0 0 2 0;
+#X connect 1 0 9 0;
+#X connect 2 0 70 1;
+#X connect 3 0 11 0;
+#X connect 3 0 54 0;
+#X connect 3 0 58 0;
+#X connect 4 0 60 0;
+#X connect 5 0 7 0;
+#X connect 6 0 5 0;
+#X connect 7 0 4 1;
+#X connect 7 1 4 0;
+#X connect 8 0 50 0;
+#X connect 9 0 10 0;
+#X connect 10 0 52 1;
+#X connect 12 0 5 1;
+#X connect 13 0 28 0;
+#X connect 14 0 0 0;
+#X connect 15 0 1 0;
+#X connect 16 0 2 1;
+#X connect 17 0 9 1;
+#X connect 18 0 69 0;
+#X connect 19 0 21 0;
+#X connect 20 0 68 0;
+#X connect 21 0 18 1;
+#X connect 21 1 18 0;
+#X connect 22 0 24 0;
+#X connect 23 0 24 1;
+#X connect 24 0 25 0;
+#X connect 25 0 19 1;
+#X connect 27 0 65 0;
+#X connect 28 0 60 1;
+#X connect 46 0 61 0;
+#X connect 47 0 48 0;
+#X connect 48 0 49 0;
+#X connect 50 0 61 1;
+#X connect 51 0 50 0;
+#X connect 52 0 51 0;
+#X connect 53 0 47 0;
+#X connect 55 0 46 0;
+#X connect 55 0 63 0;
+#X connect 56 0 57 0;
+#X connect 57 0 65 1;
+#X connect 57 0 66 0;
+#X connect 58 0 46 0;
+#X connect 59 0 65 0;
+#X connect 60 0 52 0;
+#X connect 61 0 76 0;
+#X connect 62 0 8 0;
+#X connect 65 0 55 0;
+#X connect 67 0 8 0;
+#X connect 68 0 19 0;
+#X connect 69 0 26 0;
+#X connect 70 0 3 0;
+#X connect 71 0 70 0;
+#X connect 74 0 53 0;
+#X connect 75 0 76 1;
+#X connect 76 0 72 0;
+#X connect 76 0 48 0;
+#X restore 431 -220 pd angleCalc;
+#X obj 543 -175 hsl 100 25 0 127 0 0 empty empty empty -2 -8 0 10 -262144
+-1 -1 9354 1;
+#X msg 775 -172 10;
+#X obj 14 -249 loadbang;
+#X obj 12 -180 loadbang;
+#X obj 13 -116 loadbang;
+#X obj 826 -113 r elev;
+#X msg 15 -22 0;
+#X obj 15 0 s elev;
+#X text 134 496 (Azimuth);
+#X obj 944 -117 r distance;
+#X obj 927 -138 r angle;
+#X obj 910 -179 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 910 -207 r setUp;
+#X obj 961 -101 r elev;
+#X msg 910 -160 9;
+#X obj 15 -45 loadbang;
+#X obj 437 545 s thisTS;
+#X obj 456 524 s thisSA;
+#X obj 476 502 s thisHT;
+#X obj 495 479 s thisTT;
+#X obj 515 458 s thisOD;
+#X obj 534 438 s thisOA;
+#X obj 554 416 s thisG;
+#X obj 23 37 r thisTS;
+#X obj 20 126 r thisSA;
+#X obj 17 215 r thisHT;
+#X obj 16 303 r thisTT;
+#X obj 16 384 r thisOD;
+#X obj 13 469 r thisOA;
+#X obj 488 -195 r thisG;
+#X obj 437 392 unpack f f f f f f f;
+#X obj -37 -45 r setUp;
+#X obj -40 -114 r setUp;
+#X obj -37 -182 r setUp;
+#X obj -38 -247 r setUp;
+#X text 351 -82 Calculate thicknes delta;
+#X text 279 55 Circumference calculations;
+#X text 540 185 Speed calculations;
+#X text 374 392 Presets;
+#X obj 808 36 r distance;
+#X obj 791 15 r angle;
+#X obj 774 -26 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 774 -54 r setUp;
+#X obj 825 52 r elev;
+#X obj 937 45 r distance;
+#X obj 920 24 r angle;
+#X obj 903 -17 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 903 -45 r setUp;
+#X obj 954 61 r elev;
+#X obj 805 187 r distance;
+#X obj 788 166 r angle;
+#X obj 771 125 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 771 97 r setUp;
+#X obj 822 203 r elev;
+#X msg 771 144 6;
+#X msg 903 2 7;
+#X msg 774 -7 8;
+#X obj 939 194 r distance;
+#X obj 922 173 r angle;
+#X obj 905 132 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 905 104 r setUp;
+#X obj 956 210 r elev;
+#X msg 905 151 5;
+#X msg 446 287 20 160 0.01 0.004 2 0 127;
+#X msg 437 264 43 215 0.0085 0.0025 4 90 40;
+#X msg 456 310 30 280 0.0095 0.0032 2 60 120;
+#X text 706 273 Currently the noise sources are not connected but still
+getting a zipping type sound. It seems to get worse with sources lower
+down the blade - this needs looked into;
+#X obj 437 235 loadbang;
+#X obj 154 -232 loadbang;
+#X obj 154 -208 delay 13;
+#X obj 389 317 t b;
+#X obj 369 340 s setUp;
+#X obj 910 -81 tenSource;
+#X obj 774 72 tenSource;
+#X obj 903 81 tenSource;
+#X obj 771 223 tenSource;
+#X obj 905 230 tenSource;
+#X connect 3 0 5 0;
+#X connect 4 0 0 0;
+#X connect 4 1 1 0;
+#X connect 5 0 80 0;
+#X connect 6 0 7 0;
+#X connect 6 0 33 0;
+#X connect 6 1 8 0;
+#X connect 6 1 34 0;
+#X connect 9 0 16 0;
+#X connect 10 0 18 0;
+#X connect 11 0 17 0;
+#X connect 12 0 6 0;
+#X connect 13 0 6 1;
+#X connect 14 0 6 2;
+#X connect 15 0 6 3;
+#X connect 20 0 19 0;
+#X connect 20 0 21 0;
+#X connect 26 0 27 0;
+#X connect 26 0 28 0;
+#X connect 30 0 76 2;
+#X connect 31 0 76 0;
+#X connect 32 0 76 1;
+#X connect 37 0 38 0;
+#X connect 37 0 39 0;
+#X connect 40 0 42 0;
+#X connect 40 0 43 0;
+#X connect 41 0 44 0;
+#X connect 41 0 45 0;
+#X connect 48 0 37 0;
+#X connect 49 0 37 1;
+#X connect 50 0 51 0;
+#X connect 53 0 55 0;
+#X connect 53 0 74 0;
+#X connect 54 0 57 0;
+#X connect 54 0 75 0;
+#X connect 59 0 52 2;
+#X connect 60 0 52 1;
+#X connect 61 0 81 0;
+#X connect 62 0 63 0;
+#X connect 63 0 50 0;
+#X connect 64 0 63 1;
+#X connect 65 0 66 0;
+#X connect 67 0 20 0;
+#X connect 68 0 26 0;
+#X connect 69 0 40 0;
+#X connect 70 0 41 0;
+#X connect 71 0 53 0;
+#X connect 72 0 54 0;
+#X connect 73 0 61 0;
+#X connect 76 0 35 0;
+#X connect 76 0 77 0;
+#X connect 76 1 36 0;
+#X connect 76 1 78 0;
+#X connect 80 0 4 0;
+#X connect 81 0 52 0;
+#X connect 82 0 9 0;
+#X connect 83 0 11 0;
+#X connect 84 0 10 0;
+#X connect 85 0 52 3;
+#X connect 86 0 87 0;
+#X connect 89 0 152 2;
+#X connect 90 0 152 1;
+#X connect 91 0 94 0;
+#X connect 92 0 91 0;
+#X connect 93 0 152 3;
+#X connect 94 0 152 0;
+#X connect 95 0 86 0;
+#X connect 103 0 20 0;
+#X connect 104 0 26 0;
+#X connect 105 0 40 0;
+#X connect 106 0 41 0;
+#X connect 107 0 53 0;
+#X connect 108 0 54 0;
+#X connect 109 0 80 0;
+#X connect 110 0 96 0;
+#X connect 110 1 97 0;
+#X connect 110 2 98 0;
+#X connect 110 3 99 0;
+#X connect 110 4 100 0;
+#X connect 110 5 101 0;
+#X connect 110 6 102 0;
+#X connect 111 0 86 0;
+#X connect 112 0 10 0;
+#X connect 113 0 11 0;
+#X connect 114 0 9 0;
+#X connect 119 0 153 2;
+#X connect 120 0 153 1;
+#X connect 121 0 136 0;
+#X connect 122 0 121 0;
+#X connect 123 0 153 3;
+#X connect 124 0 154 2;
+#X connect 125 0 154 1;
+#X connect 126 0 135 0;
+#X connect 127 0 126 0;
+#X connect 128 0 154 3;
+#X connect 129 0 155 2;
+#X connect 130 0 155 1;
+#X connect 131 0 134 0;
+#X connect 132 0 131 0;
+#X connect 133 0 155 3;
+#X connect 134 0 155 0;
+#X connect 135 0 154 0;
+#X connect 136 0 153 0;
+#X connect 137 0 156 2;
+#X connect 138 0 156 1;
+#X connect 139 0 142 0;
+#X connect 140 0 139 0;
+#X connect 141 0 156 3;
+#X connect 142 0 156 0;
+#X connect 143 0 110 0;
+#X connect 143 0 150 0;
+#X connect 144 0 110 0;
+#X connect 144 0 150 0;
+#X connect 145 0 110 0;
+#X connect 145 0 150 0;
+#X connect 147 0 144 0;
+#X connect 148 0 149 0;
+#X connect 149 0 65 0;
+#X connect 150 0 151 0;