Commit 686f0624 authored by Jérôme Abel's avatar Jérôme Abel
Browse files

delete software, update hardware, create readme

parent d50d1823
# BrutBox
The BrutBox is an open source midi device based on a Teensy microcontroller. The software is based on Pure Data and our [Malinette](http://malinette.info) project. You should follow this link to install it.
Website: http://reso-nance.org/brutbox
Documentation: http://reso-nance.org/wiki/projets/brutbox/accueil
This diff is collapsed.
This diff is collapsed.
# La Malinette
A Free Open Source Kit To Simplify Programming Interactivity
- Version: 0.90.beta1
- Languages: English, French
- Date: 15/10/2015
- Contact: contact_at_reso-nance.org
- Website: http://reso-nance.org/malinette
- Licence: GNU/GPL v3
Special thanks for all Pure Data developers, we've taken some good ideas from few projects (pdmtl abstractions, DIY2, ...)
## Description
Malinette is an all-in-one solution, a rapid prototyping tool to show and make simple interaction and multimedia projects. It is a software and a hardware set. The software is based on Pure Data extended. It is also a very convenient suitcase and wood boxes with sensors, actuators, Arduino, Teensy and electronic components to test ideas and projects very quickly.
## Features
See : http://reso-nance.org/malinette/en/software/features
## Requirements
- Computer : a decent computer (>2005 is adviced)
- Operating system : should work on Mac OS X, MS Windows and main GNU/Linux distributions.
- Install Pd-extended : http://puredata.info/downloads/pd-extended
- Optional, if you want to use an Arduino, download the Arduino software : http://www.arduino.cc/en/Main/Software. Plug the USB board, install drivers if required, and upload the "StandardFirmata" sketch from the Arduino software : Menu File > Examples > Firmata > StandardFirmata
## Pure Data dependancies
If you have not Pure Data Extended, here you can find our dependancies : initbang, Gem, zexy, cyclone, moonlib, moocow, hcs, tof, comport, iemlib, iemnet or oscx or mrpeach, motex, ggee, list-abs, mapping
## Installation and startup
1. Download the software:
- The most recent version : https://git.framasoft.org/resonance/malinette
- Release : http://reso-nance.org/malinette/en/download
2. Extract anywhere
3. Open the "MALINETTE.pd"
4. Open Manual examples to see how it works
## User instructions
You have two windows : the menu on the left and the project window on the right (called a "patch" in Pure Data). Basically, you can open examples or create your project. When you want to start a project, the better way is to open the "new" project and fill it with some objects. Clic on the "?" buttons to find all objects of a category. You can also find some documentations in the "./docs" folder.
Have fun and report feedbacks and bugs at contact_/at/_reso-nance.org.
## Content
- ./abstractions : all objects (audio, core, in, numbers, out, seq, video)
- ./medias : media files (images, videos, sounds, etc.)
- ./docs : some documentations (license, todo, changes) and OVERVIEW.pdf help
- ./examples : examples patchs to show and edit projects about interaction
- ./other : tclplugins, scripts, processing codes, ...
- ./projects : your projects folders
- MALINETTE.pd : open this patch to start the program (in french)
- preferences.txt : preferences file with global setup (language, level, screen size, project folder)
- README.md
## Abstractions
- ./abstractions/audio : audio effects
- ./abstractions/core : core functions (menu buttons, media masters, tools, ...)
- ./abstractions/in : inputs (arduino, audio, video, mouse, key, kinect, ...)
- ./abstractions/numbers : numbers effects
- ./abstractions/out : outputs (arduino, audio, video, ...)
- ./abstractions/seq : sequencers tools
- ./abstractions/video : video effects
## Coding rules
- file names with dash
- file names in lowercase
- default values
- test arguments
- a toggle to switch on/off the abstraction
- when an extra object is used from pd-extended, put the library as a prefix. Ex: [tof/menubutton] (to discuss)
- if they are more than 2 or 3 inlets, a good practice would be to use the cold inlet (on the right) to pass messages throught it and route them with a [route] object.
## Files formats (video, audio, 3d etc..)
Video : best format for video files (better performance in pd) is MJPEG, this compression is better packed in .avi for windows and .mov for mac.
Audio : Pure Data audio objects use .aiff or .wav, except some librairies which use mp3 (we do not have mp3 player yet).
3d: .obj is the 3d-model-file you can import in Pure Data, you can create .obj from most of 3D software (like Blender for instance).
## Some documentations (in french)
- Pure Data : http://fr.flossmanuals.net/Puredata/
- Arduino : http://fr.flossmanuals.net/arduino/
- Forum de bidouilleurs : http://codelab.fr/
#N canvas 346 82 531 285 10;
#X declare -path ../core;
#X obj 252 162 arduino-out;
#X obj 252 112 midi-out;
#X obj 14 34 cnv 15 140 20 empty empty VIDEO 20 11 0 14 -179879 -1
0;
#X obj 175 34 cnv 15 58 20 empty empty AUDIO 10 11 0 14 -179879 -1
0;
#X obj 254 34 cnv 15 185 20 empty empty DATA 10 11 0 14 -179879 -1
0;
#X text 441 157 [arduino-out];
#X obj 253 65 osc-out;
#X obj 175 65 audio-out;
#X obj 14 162 video-out;
#N canvas 487 408 450 300 _COLORS_ 0;
#X msg 131 21 1 131 255 0 22;
#X msg 124 -2 5 255 237 2 22;
#X msg 111 -19 255 159 20 28 0;
#X obj 111 42 gui ../out;
#X msg 102 -44 157 235 176 12 22;
#X obj 109 160 declare -path ../core;
#X obj 240 128 outlet;
#X obj 322 36 r CNV-out;
#X msg 278 -19 102 255 110 12 22;
#X connect 0 0 3 0;
#X connect 1 0 3 0;
#X connect 2 0 3 0;
#X connect 3 0 6 0;
#X connect 4 0 3 0;
#X restore 429 63 pd _COLORS_;
#X obj 429 86 universal 1;
#X obj 370 11 ../include;
#X obj 14 65 video-object;
#X obj 14 115 video-text;
#X obj 13 212 video-graph;
#X connect 9 0 10 0;
#N canvas 21 120 1513 953 10;
#X obj 255 161 seq-count 4;
#X obj 348 133 map 0 1 400 150;
#X obj 887 17 == 1;
#X obj 887 39 change;
#X obj 887 61 sel 1;
#X obj 887 85 count 2;
#X obj 887 -9 inlet;
#X obj 255 210 s \$0-step;
#X obj 89 395 r \$0-step;
#X obj 89 501 kick;
#X obj 89 466 spigot;
#X obj 89 418 sel 0;
#X obj 189 395 r \$0-step;
#X obj 189 466 spigot;
#X obj 189 418 sel 1;
#X obj 289 395 r \$0-step;
#X obj 289 466 spigot;
#X obj 389 395 r \$0-step;
#X obj 389 466 spigot;
#X obj 122 442 r 1tog0;
#X obj 222 442 r 1tog1;
#X obj 322 442 r 1tog2;
#X obj 422 442 r 1tog3;
#X obj 289 418 sel 2;
#X obj 389 418 sel 3;
#X obj 509 395 r \$0-step;
#X obj 509 466 spigot;
#X obj 509 418 sel 0;
#X obj 609 395 r \$0-step;
#X obj 609 466 spigot;
#X obj 609 418 sel 1;
#X obj 709 395 r \$0-step;
#X obj 709 466 spigot;
#X obj 809 395 r \$0-step;
#X obj 809 466 spigot;
#X obj 709 418 sel 2;
#X obj 809 418 sel 3;
#X obj 509 501 hat;
#X obj 542 442 r 2tog0;
#X obj 642 442 r 2tog1;
#X obj 742 442 r 2tog2;
#X obj 842 442 r 2tog3;
#X obj 930 392 r \$0-step;
#X obj 930 463 spigot;
#X obj 930 415 sel 0;
#X obj 1030 392 r \$0-step;
#X obj 1030 463 spigot;
#X obj 1030 415 sel 1;
#X obj 1130 392 r \$0-step;
#X obj 1130 463 spigot;
#X obj 1230 392 r \$0-step;
#X obj 1230 463 spigot;
#X obj 1130 415 sel 2;
#X obj 1230 415 sel 3;
#X obj 930 498 snare;
#X obj 963 439 r 3tog0;
#X obj 1063 439 r 3tog1;
#X obj 1163 439 r 3tog2;
#X obj 1263 439 r 3tog3;
#X obj 1334 390 r \$0-step;
#X obj 1334 461 spigot;
#X obj 1334 413 sel 0;
#X obj 1434 390 r \$0-step;
#X obj 1434 461 spigot;
#X obj 1434 413 sel 1;
#X obj 1534 390 r \$0-step;
#X obj 1534 461 spigot;
#X obj 1634 390 r \$0-step;
#X obj 1634 461 spigot;
#X obj 1534 413 sel 2;
#X obj 1634 413 sel 3;
#X obj 1334 496 crash;
#X obj 1367 437 r 4tog0;
#X obj 1467 437 r 4tog1;
#X obj 1567 437 r 4tog2;
#X obj 1667 437 r 4tog3;
#X obj 348 108 r \$0-speed;
#X obj 593 -115 inlet;
#X text 591 -134 sel de ligne;
#X obj 593 8 hradio 15 1 0 5 empty empty empty 0 -8 0 10 -262144 -1
-1 0;
#X obj 117 -268 inlet;
#X obj 103 -119 r \$0-selligne;
#X obj 593 32 s \$0-selligne;
#X obj 103 -92 gate 4;
#X obj 103 1 s 1tog0in;
#X obj 114 21 s 2tog0in;
#X obj 125 41 s 3tog0in;
#X obj 136 61 s 4tog0in;
#X obj 117 -215 > 0.9;
#X obj 117 -193 change;
#X obj 117 -170 sel 0 1;
#X obj 237 -268 inlet;
#X obj 223 -119 r \$0-selligne;
#X obj 223 -92 gate 4;
#X obj 237 -215 > 0.9;
#X obj 237 -193 change;
#X obj 237 -170 sel 0 1;
#X obj 347 -268 inlet;
#X obj 333 -119 r \$0-selligne;
#X obj 333 -92 gate 4;
#X obj 347 -215 > 0.9;
#X obj 347 -193 change;
#X obj 347 -170 sel 0 1;
#X obj 467 -268 inlet;
#X obj 453 -119 r \$0-selligne;
#X obj 453 -92 gate 4;
#X obj 467 -215 > 0.9;
#X obj 467 -193 change;
#X obj 467 -170 sel 0 1;
#X obj 223 1 s 1tog1in;
#X obj 234 21 s 2tog1in;
#X obj 245 41 s 3tog1in;
#X obj 256 61 s 4tog1in;
#X obj 475 41 s 3tog3in;
#X obj 486 61 s 4tog3in;
#X obj 464 21 s 2tog3in;
#X obj 453 1 s 1tog3in;
#X obj 333 1 s 1tog2in;
#X obj 344 21 s 2tog2in;
#X obj 355 41 s 3tog2in;
#X obj 366 61 s 4tog2in;
#X obj 593 -89 map 0 1 1 5;
#X obj 593 -56 i;
#X obj 731 -113 inlet;
#X text 729 -132 speed;
#X obj 731 34 s \$0-speedin;
#X obj 731 -87 f;
#X obj 918 606 r \$0-speed;
#X obj 926 633 outlet;
#X text 898 -43 onoff;
#N canvas 461 312 1456 687 gemvideo 0;
#X obj 135 3 r 1tog0;
#X obj 42 16 gemhead;
#X obj 42 50 translateXYZ -2 1 0;
#X obj 1289 96 r \$0-step;
#X obj 1253 191 gemhead;
#X obj 1272 240 translateXYZ;
#X obj 1336 133 - 2;
#X obj 42 100 alpha;
#X obj 135 27 + 0.3;
#X obj 42 74 colorRGB 1 1 1 0;
#X obj 42 127 triangle 0.2;
#X obj 212 16 gemhead;
#X obj 212 100 alpha;
#X obj 305 27 + 0.3;
#X obj 212 74 colorRGB 1 1 1 0;
#X obj 212 127 triangle 0.2;
#X obj 382 16 gemhead;
#X obj 382 100 alpha;
#X obj 475 27 + 0.3;
#X obj 382 74 colorRGB 1 1 1 0;
#X obj 382 127 triangle 0.2;
#X obj 552 16 gemhead;
#X obj 552 100 alpha;
#X obj 645 27 + 0.3;
#X obj 552 74 colorRGB 1 1 1 0;
#X obj 552 127 triangle 0.2;
#X obj 305 3 r 1tog1;
#X obj 475 3 r 1tog2;
#X obj 645 3 r 1tog3;
#X obj 212 50 translateXYZ -1 1 0;
#X obj 382 50 translateXYZ 0 1 0;
#X obj 552 50 translateXYZ 1 1 0;
#X obj 42 176 gemhead;
#X obj 42 260 alpha;
#X obj 135 187 + 0.3;
#X obj 42 234 colorRGB 1 1 1 0;
#X obj 212 176 gemhead;
#X obj 212 260 alpha;
#X obj 305 187 + 0.3;
#X obj 212 234 colorRGB 1 1 1 0;
#X obj 382 176 gemhead;
#X obj 382 260 alpha;
#X obj 475 187 + 0.3;
#X obj 382 234 colorRGB 1 1 1 0;
#X obj 552 176 gemhead;
#X obj 552 260 alpha;
#X obj 645 187 + 0.3;
#X obj 552 234 colorRGB 1 1 1 0;
#X obj 42 346 gemhead;
#X obj 42 430 alpha;
#X obj 135 357 + 0.3;
#X obj 42 404 colorRGB 1 1 1 0;
#X obj 212 346 gemhead;
#X obj 212 430 alpha;
#X obj 305 357 + 0.3;
#X obj 212 404 colorRGB 1 1 1 0;
#X obj 382 346 gemhead;
#X obj 382 430 alpha;
#X obj 475 357 + 0.3;
#X obj 382 404 colorRGB 1 1 1 0;
#X obj 552 346 gemhead;
#X obj 552 430 alpha;
#X obj 645 357 + 0.3;
#X obj 552 404 colorRGB 1 1 1 0;
#X obj 42 506 gemhead;
#X obj 42 590 alpha;
#X obj 135 517 + 0.3;
#X obj 42 564 colorRGB 1 1 1 0;
#X obj 42 617 triangle 0.2;
#X obj 212 506 gemhead;
#X obj 212 590 alpha;
#X obj 305 517 + 0.3;
#X obj 212 564 colorRGB 1 1 1 0;
#X obj 212 617 triangle 0.2;
#X obj 382 506 gemhead;
#X obj 382 590 alpha;
#X obj 475 517 + 0.3;
#X obj 382 564 colorRGB 1 1 1 0;
#X obj 382 617 triangle 0.2;
#X obj 552 506 gemhead;
#X obj 552 590 alpha;
#X obj 645 517 + 0.3;
#X obj 552 564 colorRGB 1 1 1 0;
#X obj 552 617 triangle 0.2;
#X obj 135 163 r 2tog0;
#X obj 305 163 r 2tog1;
#X obj 475 163 r 2tog2;
#X obj 645 163 r 2tog3;
#X obj 645 333 r 3tog3;
#X obj 475 333 r 3tog2;
#X obj 305 333 r 3tog1;
#X obj 135 333 r 3tog0;
#X obj 135 493 r 4tog0;
#X obj 305 493 r 4tog1;
#X obj 475 493 r 4tog2;
#X obj 645 493 r 4tog3;
#X obj 42 210 translateXYZ -2 0 0;
#X obj 212 210 translateXYZ -1 0 0;
#X obj 382 210 translateXYZ 0 0 0;
#X obj 552 210 translateXYZ 1 0 0;
#X obj 42 380 translateXYZ -2 -1 0;
#X obj 212 380 translateXYZ -1 -1 0;
#X obj 382 380 translateXYZ 0 -1 0;
#X obj 552 380 translateXYZ 1 -1 0;
#X obj 552 540 translateXYZ 1 -2 0;
#X obj 382 540 translateXYZ 0 -2 0;
#X obj 212 540 translateXYZ -1 -2 0;
#X obj 42 540 translateXYZ -2 -2 0;
#X obj 1280 284 colorRGB 1 0 0;
#X obj 1279 315 rectangle 0.01 8;
#X obj 42 287 circle 0.2;
#X obj 42 457 square 0.2;
#X obj 212 457 square 0.2;
#X obj 382 457 square 0.2;
#X obj 552 457 square 0.2;
#X obj 212 287 circle 0.2;
#X obj 382 287 circle 0.2;
#X obj 552 287 circle 0.2;
#X obj 1334 182 fade 20;
#X msg 833 32;
#X obj 832 56 unpack f f;
#X connect 0 0 8 0;
#X connect 1 0 2 0;
#X connect 2 0 9 0;
#X connect 3 0 6 0;
#X connect 4 0 5 0;
#X connect 5 0 108 0;
#X connect 6 0 5 1;
#X connect 7 0 10 0;
#X connect 8 0 9 4;
#X connect 9 0 7 0;
#X connect 11 0 29 0;
#X connect 12 0 15 0;
#X connect 13 0 14 4;
#X connect 14 0 12 0;
#X connect 16 0 30 0;
#X connect 17 0 20 0;
#X connect 18 0 19 4;
#X connect 19 0 17 0;
#X connect 21 0 31 0;
#X connect 22 0 25 0;
#X connect 23 0 24 4;
#X connect 24 0 22 0;
#X connect 26 0 13 0;
#X connect 27 0 18 0;
#X connect 28 0 23 0;
#X connect 29 0 14 0;
#X connect 30 0 19 0;
#X connect 31 0 24 0;
#X connect 32 0 96 0;
#X connect 33 0 110 0;
#X connect 34 0 35 4;
#X connect 35 0 33 0;
#X connect 36 0 97 0;
#X connect 37 0 115 0;
#X connect 38 0 39 4;
#X connect 39 0 37 0;
#X connect 40 0 98 0;
#X connect 41 0 116 0;
#X connect 42 0 43 4;
#X connect 43 0 41 0;
#X connect 44 0 99 0;
#X connect 45 0 117 0;
#X connect 46 0 47 4;
#X connect 47 0 45 0;
#X connect 48 0 100 0;
#X connect 49 0 111 0;
#X connect 50 0 51 4;
#X connect 51 0 49 0;
#X connect 52 0 101 0;
#X connect 53 0 112 0;
#X connect 54 0 55 4;
#X connect 55 0 53 0;
#X connect 56 0 102 0;
#X connect 57 0 113 0;
#X connect 58 0 59 4;
#X connect 59 0 57 0;
#X connect 60 0 103 0;
#X connect 61 0 114 0;
#X connect 62 0 63 4;
#X connect 63 0 61 0;
#X connect 64 0 107 0;
#X connect 65 0 68 0;
#X connect 66 0 67 4;
#X connect 67 0 65 0;
#X connect 69 0 106 0;
#X connect 70 0 73 0;
#X connect 71 0 72 4;
#X connect 72 0 70 0;
#X connect 74 0 105 0;
#X connect 75 0 78 0;
#X connect 76 0 77 4;
#X connect 77 0 75 0;
#X connect 79 0 104 0;
#X connect 80 0 83 0;
#X connect 81 0 82 4;
#X connect 82 0 80 0;
#X connect 84 0 34 0;
#X connect 85 0 38 0;
#X connect 86 0 42 0;
#X connect 87 0 46 0;
#X connect 88 0 62 0;
#X connect 89 0 58 0;
#X connect 90 0 54 0;
#X connect 91 0 50 0;
#X connect 92 0 66 0;
#X connect 93 0 71 0;
#X connect 94 0 76 0;
#X connect 95 0 81 0;
#X connect 96 0 35 0;
#X connect 97 0 39 0;
#X connect 98 0 43 0;
#X connect 99 0 47 0;
#X connect 100 0 51 0;
#X connect 101 0 55 0;
#X connect 102 0 59 0;
#X connect 103 0 63 0;
#X connect 104 0 82 0;
#X connect 105 0 77 0;
#X connect 106 0 72 0;
#X connect 107 0 67 0;
#X connect 108 0 109 0;
#X connect 118 0 5 1;
#X connect 119 0 120 0;
#X restore 596 125 pd gemvideo;
#X obj 101 114 cnv 15 138 120 empty empty empty 20 12 0 14 -233017
-66577 0;
#X obj 151 134 tgl 20 0 1tog1 1tog1in empty 17 7 0 10 -262144 -1 -1
0 1;
#X obj 217 105 tgl 18 0 empty empty empty -7 -8 0 10 -257985 -1 -1
1 1;
#X obj 171 134 tgl 20 0 1tog2 1tog2in empty 17 7 0 10 -262144 -1 -1
0 1;
#X obj 191 134 tgl 20 0 1tog3 1tog3in empty 17 7 0 10 -262144 -1 -1
0 1;
#X obj 131 134 tgl 20 0 1tog0 1tog0in empty 17 7 0 10 -262144 -1 -1
1 1;
#X obj 151 154 tgl 20 0 2tog1 2tog1in empty 17 7 0 10 -262144 -1 -1
1 1;
#X obj 171 154 tgl 20 0 2tog2 2tog2in empty 17 7 0 10 -262144 -1 -1
0 1;
#X obj 191 154 tgl 20 0 2tog3 2tog3in empty 17 7 0 10 -262144 -1 -1
1 1;
#X obj 131 154 tgl 20 0 2tog0 2tog0in empty 17 7 0 10 -262144 -1 -1
0 1;
#X obj 151 174 tgl 20 0 3tog1 3tog1in empty 17 7 0 10 -262144 -1 -1
1 1;
#X obj 171 174 tgl 20 0 3tog2 3tog2in empty 17 7 0 10 -262144 -1 -1
0 1;
#X obj 191 174 tgl 20 0 3tog3 3tog3in empty 17 7 0 10 -262144 -1 -1
1 1;
#X obj 131 174 tgl 20 0 3tog0 3tog0in empty 17 7 0 10 -262144 -1 -1
0 1;
#X obj 151 194 tgl 20 0 4tog1 4tog1in empty 17 7 0 10 -262144 -1 -1
0 1;
#X obj 171 194 tgl 20 0 4tog2 4tog2in empty 17 7 0 10 -262144 -1 -1
1 1;
#X obj 191 194 tgl 20 0 4tog3 4tog3in empty 17 7 0 10 -262144 -1 -1
0 1;
#X obj 131 194 tgl 20 0 4tog0 4tog0in empty 17 7 0 10 -262144 -1 -1
0 1;
#X obj 131 214 hradio 20 1 0 4 empty \$0-step empty 0 -8 0 10 -228856
-1 -1 0;
#X obj 216 136 vsl 20 95 0 1 0 0 \$0-speed \$0-speedin speed 0 -9 1
8 -204800 -1 -1 4700 1;
#X obj 1074 -18 initbang;
#X msg 1073 14 1;
#X msg 1108 16 0.5;
#X obj 1108 42 s \$0-speedin;
#X msg 1449 555 decay \$1;
#X obj 1455 510 randomF 1;
#X obj 1456 531 + 0.5;
#X obj 88 662 outlet~;
#X obj 88 640 *~ 2;
#X obj 982 -64 r bbmainseq;
#X obj 712 167 r bbmainseqspeed;
#X obj 100 134 cnv 15 30 20 empty empty BD 3 11 1 14 -99865 -262144
0;
#X obj 100 154 cnv 15 30 20 empty empty HH 3 11 1 14 -99865 -262144
0;
#X obj 100 174 cnv 15 30 20 empty empty SN 3 11 1 14 -99865 -262144
0;
#X obj 100 194 cnv 15 30 20 empty empty CY 3 11 1 14 -99865 -262144
0;
#X connect 0 0 7 0;
#X connect 1 0 0 1;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 4 0 5 0;
#X connect 5 0 133 0;
#X connect 6 0 2 0;
#X connect 8 0 11 0;
#X connect 9 0 159 0;
#X connect 10 0 9 0;
#X connect 11 0 10 0;
#X connect 12 0 14 0;
#X connect 13 0 9 0;
#X connect 14 0 13 0;
#X connect 15 0 23 0;
#X connect 16 0 9 0;
#X connect 17 0 24 0;
#X connect 18 0 9 0;
#X connect 19 0 10 1;
#X connect 20 0 13 1;
#X connect 21 0 16 1;
#X connect 22 0 18 1;
#X connect 23 0 16 0;
#X connect 24 0 18 0;
#X connect 25 0 27 0;
#X connect 26 0 37 0;
#X connect 27 0 26 0;
#X connect 28 0 30 0;
#X connect 29 0 37 0;
#X connect 30 0 29 0;
#X connect 31 0 35 0;
#X connect 32 0 37 0;
#X connect 33 0 36 0;
#X connect 34 0 37 0;
#X connect 35 0 32 0;
#X connect 36 0 34 0;
#X connect 37 0 159 0;
#X connect 38 0 26 1;
#X connect 39 0 29 1;
#X connect 40 0 32 1;
#X connect 41 0 34 1;
#X connect 42 0 44 0;
#X connect 43 0 54 0;
#X connect 44 0 43 0;
#X connect 45 0 47 0;
#X connect 46 0 54 0;
#X connect 47 0 46 0;
#X connect 48 0 52 0;
#X connect 49 0 54 0;
#X connect 50 0 53 0;
#X connect 51 0 54 0;
#X connect 52 0 49 0;
#X connect 53 0 51 0;
#X connect 54 0 159 0;
#X connect 55 0 43 1;
#X connect 56 0 46 1;
#X connect 57 0 49 1;
#X connect 58 0 51 1;
#X connect 59 0 61 0;
#X connect 60 0 71 0;
#X connect 60 0 156 0;
#X connect 61 0 60 0;
#X connect 62 0 64 0;
#X connect 63 0 71 0;
#X connect 63 0 156 0;
#X connect 64 0 63 0;
#X connect 65 0 69 0;