aboutsummaryrefslogtreecommitdiff
path: root/sx
diff options
context:
space:
mode:
authorN.N. <chr15m@users.sourceforge.net>2007-07-10 07:47:46 +0000
committerN.N. <chr15m@users.sourceforge.net>2007-07-10 07:47:46 +0000
commit3faf17f7b713905f582def227df90dac15f3468d (patch)
treea429f621d2aad8db85d902fde422d3ff1e859bd6 /sx
This commit was generated by cvs2svn to compensate for changes in r7969,svn2git-root
which included commits to RCS files with non-trunk default branches. svn path=/trunk/abstractions/s-abstractions/; revision=7970
Diffstat (limited to 'sx')
-rw-r--r--sx/addnoise.pd36
-rw-r--r--sx/binter.pd17
-rw-r--r--sx/blend.pd17
-rw-r--r--sx/blob-help.pd19
-rw-r--r--sx/blob.pd105
-rw-r--r--sx/blob2.pd66
-rw-r--r--sx/drift.pd24
-rw-r--r--sx/explode-help.pd16
-rw-r--r--sx/explode.pd100
-rw-r--r--sx/fakecyl.pd26
-rw-r--r--sx/gemwin.pd114
-rw-r--r--sx/hutz.pd54
-rw-r--r--sx/mirrorball.pd13
-rw-r--r--sx/netgeom-help.pd23
-rw-r--r--sx/netgeom.pd43
-rw-r--r--sx/normal.pd45
-rw-r--r--sx/phitz.pd32
-rw-r--r--sx/pinger.pd46
-rw-r--r--sx/props.pd124
-rw-r--r--sx/ring.pd61
-rw-r--r--sx/rumble.pd37
-rw-r--r--sx/shadow.pd19
-rw-r--r--sx/sigplane.pd22
-rw-r--r--sx/unit.pd28
-rw-r--r--sx/vibber-help.pd7
-rw-r--r--sx/vibber.pd101
-rw-r--r--sx/voibu.pd86
-rw-r--r--sx/wander.pd205
-rw-r--r--sx/wobtower.pd108
29 files changed, 1594 insertions, 0 deletions
diff --git a/sx/addnoise.pd b/sx/addnoise.pd
new file mode 100644
index 0000000..4f073b6
--- /dev/null
+++ b/sx/addnoise.pd
@@ -0,0 +1,36 @@
+#N canvas 162 213 450 300 10;
+#X obj 129 107 inlet;
+#X obj 129 270 outlet;
+#X obj 129 215 pix_sig2pix~ 128 128;
+#X obj 173 61 noise~;
+#X obj 51 31 tgl 14 0 \$0/onoff \$1/onoff onoff 0 -6 0 8 -233017 -128992
+-1 1 1;
+#X obj 5 31 nbx 4 14 0 1 0 1 \$0/rage \$1/rage rage 0 -6 0 8 -233017
+-128992 -1 0.36 256;
+#X obj 309 106 r \$0/onoff;
+#X obj 173 84 abs~;
+#X obj 174 128 *~;
+#X obj 190 105 r \$0/rage;
+#X obj 129 245 pix_texture;
+#X obj 309 128 switch~ 16384;
+#X obj 174 172 +~ 1;
+#X obj 174 150 *~ -1;
+#X obj 43 147 r \$0/smooth;
+#X obj 5 60 tgl 14 1 \$0/smooth \$1/smooth smooth 0 -6 0 8 -233017
+-128992 -1 0 1;
+#X msg 43 175 quality \$1;
+#X connect 0 0 2 0;
+#X connect 2 0 10 0;
+#X connect 3 0 7 0;
+#X connect 6 0 11 0;
+#X connect 7 0 8 0;
+#X connect 8 0 13 0;
+#X connect 9 0 8 1;
+#X connect 10 0 1 0;
+#X connect 12 0 2 1;
+#X connect 12 0 2 2;
+#X connect 12 0 2 0;
+#X connect 13 0 12 0;
+#X connect 14 0 16 0;
+#X connect 16 0 10 0;
+#X coords 0 -1 1 1 85 80 1 0 0;
diff --git a/sx/binter.pd b/sx/binter.pd
new file mode 100644
index 0000000..1ba0221
--- /dev/null
+++ b/sx/binter.pd
@@ -0,0 +1,17 @@
+#N canvas 326 53 678 635 10;
+#X obj 145 15 inlet;
+#X obj 6 26 nbx 3 14 -1e+37 1e+37 0 0 \$0/stretch \$1/stretch stretch
+0 -6 0 8 -233017 -128992 -1 148.61 256;
+#X obj 126 130 disk 1 16 0.9;
+#X obj 257 137 scaleXYZ;
+#X obj 128 102 separator;
+#X obj 235 72 separator;
+#X obj 261 173 cylinder 0.1 8;
+#X obj 309 114 r \$0/stretch;
+#X connect 0 0 5 0;
+#X connect 0 0 4 0;
+#X connect 3 0 6 0;
+#X connect 4 0 2 0;
+#X connect 5 0 3 0;
+#X connect 7 0 3 3;
+#X coords 0 -1 1 1 85 45 1 0 0;
diff --git a/sx/blend.pd b/sx/blend.pd
new file mode 100644
index 0000000..3b31aeb
--- /dev/null
+++ b/sx/blend.pd
@@ -0,0 +1,17 @@
+#N canvas 0 0 450 300 10;
+#X msg 168 64 snap;
+#X obj 168 35 t b a;
+#X obj 168 11 inlet;
+#X obj 168 130 separator;
+#X obj 168 195 rectangle 6 3;
+#X obj 168 152 alpha 1;
+#X obj 168 97 pix_snap2tex 0 0 512 512;
+#X obj 168 174 colorRGB 1 1 1 0.5;
+#X connect 0 0 6 0;
+#X connect 1 0 0 0;
+#X connect 1 1 6 0;
+#X connect 2 0 1 0;
+#X connect 3 0 5 0;
+#X connect 5 0 7 0;
+#X connect 6 0 3 0;
+#X connect 7 0 4 0;
diff --git a/sx/blob-help.pd b/sx/blob-help.pd
new file mode 100644
index 0000000..11bc548
--- /dev/null
+++ b/sx/blob-help.pd
@@ -0,0 +1,19 @@
+#N canvas 398 36 562 420 10;
+#X obj 20 42 sx/gemwin;
+#X obj 161 323 sx/blob;
+#X obj 161 27 gemhead;
+#X obj 161 52 sx/props;
+#X text 19 6 the blob takes a list of verticies of triangular faces
+in the right inlet.;
+#X obj 214 167 loadbang;
+#X msg 214 188 -1 0 0 0 -1 0 1 0 0 -1 0 1 0 -1 1 1 0 1;
+#X obj 191 281 list;
+#X obj 161 167 t a b;
+#X text 17 355 You can use the blender export script in the;
+#X connect 2 0 3 0;
+#X connect 3 0 8 0;
+#X connect 5 0 6 0;
+#X connect 6 0 7 1;
+#X connect 7 0 1 1;
+#X connect 8 0 1 0;
+#X connect 8 1 7 0;
diff --git a/sx/blob.pd b/sx/blob.pd
new file mode 100644
index 0000000..56f088d
--- /dev/null
+++ b/sx/blob.pd
@@ -0,0 +1,105 @@
+#N canvas 364 24 641 641 10;
+#X obj 24 571 GEMglEnd;
+#X obj 24 387 GEMglVertex3f -1 0 0;
+#X obj 24 505 GEMglVertex3f 1 0 0;
+#X obj 24 439 GEMglVertex3f 0 -1 0;
+#X obj 89 187 loadbang;
+#X obj 24 318 GEMglBegin;
+#X obj 497 -9 inlet;
+#X obj 497 137 until;
+#X obj 497 175 list append;
+#X obj 497 94 t b l;
+#X obj 603 220 bang;
+#X obj 497 49 list;
+#X obj 497 220 list split 9;
+#X text 411 221 count faces;
+#X obj 497 266 f;
+#X obj 527 266 + 1;
+#X msg 497 243 bang;
+#X obj 497 16 t b l b;
+#X msg 541 94 0;
+#X obj 24 71 repeat 1;
+#X obj 497 316 s \$0-size;
+#X obj 75 50 r \$0-size;
+#X obj 24 98 t a b;
+#X obj 89 209 GLdefine GL_TRIANGLES;
+#X obj 292 104 list;
+#X obj 89 15 t a b;
+#X obj 220 239 list append;
+#X obj 220 284 list split 9;
+#X obj 24 601 outlet;
+#X obj 497 291 + 1;
+#X floatatom 455 317 5 0 0 0 - - -;
+#X obj 220 326 unpack f f f f f f f f f;
+#X obj 89 -8 inlet;
+#X obj 124 108 loadbang;
+#X obj 24 153 GEMglShadeModel;
+#X obj 124 130 GLdefine GL_FLAT;
+#X obj 24 358 GEMglTexCoord3f 0 0 0;
+#X obj 24 412 GEMglTexCoord3f 1 0 0;
+#X obj 24 468 GEMglTexCoord3f 0 1 0;
+#X obj 24 542 GEMglNormal3f;
+#X obj 250 444 sx/normal;
+#X obj 220 305 t l l;
+#X obj 250 467 unpack f f f;
+#X connect 0 0 28 0;
+#X connect 1 0 37 0;
+#X connect 2 0 39 0;
+#X connect 3 0 38 0;
+#X connect 4 0 23 0;
+#X connect 5 0 36 0;
+#X connect 6 0 17 0;
+#X connect 7 0 8 0;
+#X connect 8 0 12 0;
+#X connect 9 0 7 0;
+#X connect 9 1 8 1;
+#X connect 10 0 7 1;
+#X connect 11 0 9 0;
+#X connect 12 0 16 0;
+#X connect 12 1 8 1;
+#X connect 12 2 10 0;
+#X connect 14 0 15 0;
+#X connect 14 0 29 0;
+#X connect 15 0 14 1;
+#X connect 16 0 14 0;
+#X connect 17 0 11 0;
+#X connect 17 1 11 1;
+#X connect 17 1 24 1;
+#X connect 17 2 18 0;
+#X connect 18 0 14 1;
+#X connect 19 0 22 0;
+#X connect 21 0 19 1;
+#X connect 22 0 34 0;
+#X connect 22 1 26 0;
+#X connect 23 0 5 1;
+#X connect 24 0 26 1;
+#X connect 25 0 19 0;
+#X connect 25 1 24 0;
+#X connect 26 0 27 0;
+#X connect 27 0 41 0;
+#X connect 27 1 26 1;
+#X connect 29 0 20 0;
+#X connect 29 0 30 0;
+#X connect 31 0 1 1;
+#X connect 31 1 1 2;
+#X connect 31 2 1 3;
+#X connect 31 3 3 1;
+#X connect 31 4 3 2;
+#X connect 31 5 3 3;
+#X connect 31 6 2 1;
+#X connect 31 7 2 2;
+#X connect 31 8 2 3;
+#X connect 32 0 25 0;
+#X connect 33 0 35 0;
+#X connect 34 0 5 0;
+#X connect 35 0 34 1;
+#X connect 36 0 1 0;
+#X connect 37 0 3 0;
+#X connect 38 0 2 0;
+#X connect 39 0 0 0;
+#X connect 40 0 42 0;
+#X connect 41 0 31 0;
+#X connect 41 1 40 0;
+#X connect 42 0 39 1;
+#X connect 42 1 39 2;
+#X connect 42 2 39 3;
diff --git a/sx/blob2.pd b/sx/blob2.pd
new file mode 100644
index 0000000..d96f462
--- /dev/null
+++ b/sx/blob2.pd
@@ -0,0 +1,66 @@
+#N canvas 364 24 641 641 10;
+#X obj 497 -9 inlet;
+#X obj 497 137 until;
+#X obj 497 175 list append;
+#X obj 497 94 t b l;
+#X obj 603 220 bang;
+#X obj 497 49 list;
+#X obj 497 220 list split 9;
+#X text 411 221 count faces;
+#X obj 497 266 f;
+#X obj 527 266 + 1;
+#X msg 497 243 bang;
+#X obj 497 16 t b l b;
+#X msg 541 94 0;
+#X obj 24 71 repeat 1;
+#X obj 497 316 s \$0-size;
+#X obj 75 50 r \$0-size;
+#X obj 24 98 t a b;
+#X obj 292 104 list;
+#X obj 89 15 t a b;
+#X obj 220 239 list append;
+#X obj 220 284 list split 9;
+#X obj 24 601 outlet;
+#X obj 497 291 + 1;
+#X floatatom 455 317 5 0 0 0 - - -;
+#X obj 89 -8 inlet;
+#X obj 24 543 primTri 0 0 0 1 0 0 1 1 0;
+#X obj 220 308 list split 3;
+#X obj 259 332 list split 3;
+#X connect 0 0 11 0;
+#X connect 1 0 2 0;
+#X connect 2 0 6 0;
+#X connect 3 0 1 0;
+#X connect 3 1 2 1;
+#X connect 4 0 1 1;
+#X connect 5 0 3 0;
+#X connect 6 0 10 0;
+#X connect 6 1 2 1;
+#X connect 6 2 4 0;
+#X connect 8 0 9 0;
+#X connect 8 0 22 0;
+#X connect 9 0 8 1;
+#X connect 10 0 8 0;
+#X connect 11 0 5 0;
+#X connect 11 1 5 1;
+#X connect 11 1 17 1;
+#X connect 11 2 12 0;
+#X connect 12 0 8 1;
+#X connect 13 0 16 0;
+#X connect 15 0 13 1;
+#X connect 16 0 25 0;
+#X connect 16 1 19 0;
+#X connect 17 0 19 1;
+#X connect 18 0 13 0;
+#X connect 18 1 17 0;
+#X connect 19 0 20 0;
+#X connect 20 0 26 0;
+#X connect 20 1 19 1;
+#X connect 22 0 14 0;
+#X connect 22 0 23 0;
+#X connect 24 0 18 0;
+#X connect 25 0 21 0;
+#X connect 26 0 25 1;
+#X connect 26 1 27 0;
+#X connect 27 0 25 2;
+#X connect 27 1 25 3;
diff --git a/sx/drift.pd b/sx/drift.pd
new file mode 100644
index 0000000..21cbf86
--- /dev/null
+++ b/sx/drift.pd
@@ -0,0 +1,24 @@
+#N canvas 0 0 450 300 10;
+#X obj 15 9 inlet;
+#X obj 15 148 line \$1;
+#X obj 15 33 unpack f f f;
+#X obj 85 149 line \$1;
+#X obj 155 150 line \$1;
+#X obj 15 182 pack f f f;
+#X obj 15 210 outlet;
+#X obj 79 209 s \$2;
+#X obj 15 90 pack f \$1;
+#X obj 85 90 pack f \$1;
+#X obj 155 90 pack f \$1;
+#X connect 0 0 2 0;
+#X connect 1 0 5 0;
+#X connect 2 0 8 0;
+#X connect 2 1 9 0;
+#X connect 2 2 10 0;
+#X connect 3 0 5 1;
+#X connect 4 0 5 2;
+#X connect 5 0 6 0;
+#X connect 5 0 7 0;
+#X connect 8 0 1 0;
+#X connect 9 0 3 0;
+#X connect 10 0 4 0;
diff --git a/sx/explode-help.pd b/sx/explode-help.pd
new file mode 100644
index 0000000..5fb94df
--- /dev/null
+++ b/sx/explode-help.pd
@@ -0,0 +1,16 @@
+#N canvas 326 160 542 476 10;
+#X obj 20 42 sx/gemwin;
+#X obj 161 341 sx/blob;
+#X obj 161 27 gemhead;
+#X obj 161 52 sx/props;
+#X text 19 6 the blob takes a list of verticies of triangular faces
+in the right inlet.;
+#X obj 205 268 sx/explode;
+#X obj 161 162 t a b;
+#X msg 205 185 -1 0 0 0 -1 0 1 0 0 1 0 1 0 -1 1 -1 0 1;
+#X connect 2 0 3 0;
+#X connect 3 0 6 0;
+#X connect 5 0 1 1;
+#X connect 6 0 1 0;
+#X connect 6 1 7 0;
+#X connect 7 0 5 0;
diff --git a/sx/explode.pd b/sx/explode.pd
new file mode 100644
index 0000000..daa1c7d
--- /dev/null
+++ b/sx/explode.pd
@@ -0,0 +1,100 @@
+#N canvas 25 90 427 534 10;
+#X obj 5 39 nbx 3 14 -100000 100000 0 1 \$0/explode \$1/explode explode
+0 -6 0 8 -233017 -128992 -1 0 256;
+#X obj 105 5 inlet;
+#X text 150 9 send geometry in here;
+#X obj 105 506 outlet;
+#X obj 105 208 until;
+#X obj 105 246 list append;
+#X obj 211 291 bang;
+#X obj 105 291 list split 9;
+#X obj 206 445 t l;
+#X obj 105 445 list prepend;
+#X obj 105 165 t b l b;
+#X obj 135 340 sx/normal;
+#X obj 105 314 t l l;
+#N canvas 336 253 450 300 add-vector-to-face 0;
+#X obj 16 7 inlet;
+#X obj 335 4 inlet;
+#X obj 16 274 outlet;
+#X obj 16 31 unpack f f f f f f f f f;
+#X obj 16 220 +;
+#X obj 43 220 +;
+#X obj 70 220 +;
+#X obj 97 220 +;
+#X obj 124 220 +;
+#X obj 151 220 +;
+#X obj 178 220 +;
+#X obj 205 220 +;
+#X obj 232 220 +;
+#X obj 16 249 pack f f f f f f f f f;
+#X obj 335 26 unpack f f f;
+#X obj 335 53 *;
+#X obj 374 53 *;
+#X obj 414 53 *;
+#X obj 415 3 inlet;
+#X connect 0 0 3 0;
+#X connect 1 0 14 0;
+#X connect 3 0 4 0;
+#X connect 3 1 5 0;
+#X connect 3 2 6 0;
+#X connect 3 3 7 0;
+#X connect 3 4 8 0;
+#X connect 3 5 9 0;
+#X connect 3 6 10 0;
+#X connect 3 7 11 0;
+#X connect 3 8 12 0;
+#X connect 4 0 13 0;
+#X connect 5 0 13 1;
+#X connect 6 0 13 2;
+#X connect 7 0 13 3;
+#X connect 8 0 13 4;
+#X connect 9 0 13 5;
+#X connect 10 0 13 6;
+#X connect 11 0 13 7;
+#X connect 12 0 13 8;
+#X connect 13 0 2 0;
+#X connect 14 0 15 0;
+#X connect 14 1 16 0;
+#X connect 14 2 17 0;
+#X connect 15 0 4 1;
+#X connect 15 0 7 1;
+#X connect 15 0 10 1;
+#X connect 16 0 5 1;
+#X connect 16 0 11 1;
+#X connect 16 0 8 1;
+#X connect 17 0 6 1;
+#X connect 17 0 9 1;
+#X connect 17 0 12 1;
+#X connect 18 0 17 1;
+#X connect 18 0 16 1;
+#X connect 18 0 15 1;
+#X restore 105 389 pd add-vector-to-face;
+#X obj 105 143 list;
+#X obj 105 30 t b a;
+#X obj 217 72 r \$0/explode;
+#X obj 217 93 t b f;
+#X connect 1 0 15 0;
+#X connect 4 0 5 0;
+#X connect 5 0 7 0;
+#X connect 6 0 4 1;
+#X connect 7 0 12 0;
+#X connect 7 1 5 1;
+#X connect 7 2 6 0;
+#X connect 8 0 9 1;
+#X connect 9 0 8 0;
+#X connect 9 0 3 0;
+#X connect 10 0 4 0;
+#X connect 10 1 5 1;
+#X connect 10 2 9 1;
+#X connect 11 0 13 1;
+#X connect 12 0 13 0;
+#X connect 12 1 11 0;
+#X connect 13 0 9 0;
+#X connect 14 0 10 0;
+#X connect 15 0 14 0;
+#X connect 15 1 14 1;
+#X connect 16 0 17 0;
+#X connect 17 0 14 0;
+#X connect 17 1 13 2;
+#X coords 0 -1 1 1 85 60 1 0 0;
diff --git a/sx/fakecyl.pd b/sx/fakecyl.pd
new file mode 100644
index 0000000..f5d0c9d
--- /dev/null
+++ b/sx/fakecyl.pd
@@ -0,0 +1,26 @@
+#N canvas 489 326 450 300 10;
+#X obj 44 167 rotateXYZ 45 0 0;
+#X obj 44 70 repeat 8;
+#X obj 14 45 t a a;
+#X obj 14 3 inlet;
+#X obj 44 93 translateXYZ 0 0 1.2;
+#X obj 44 142 translateXYZ 0 0 -1.2;
+#X obj 14 216 outlet;
+#X obj 199 68 * 1.2;
+#X obj 222 100 * -1;
+#X obj 158 47 / 2;
+#X obj 44 116 rectangle 2 0.5;
+#X obj 191 13 inlet;
+#X connect 1 0 4 0;
+#X connect 2 0 6 0;
+#X connect 2 1 1 0;
+#X connect 3 0 2 0;
+#X connect 4 0 10 0;
+#X connect 5 0 0 0;
+#X connect 7 0 8 0;
+#X connect 7 0 4 3;
+#X connect 8 0 5 3;
+#X connect 9 0 10 2;
+#X connect 10 0 5 0;
+#X connect 11 0 9 0;
+#X connect 11 0 7 0;
diff --git a/sx/gemwin.pd b/sx/gemwin.pd
new file mode 100644
index 0000000..6f44fac
--- /dev/null
+++ b/sx/gemwin.pd
@@ -0,0 +1,114 @@
+#N canvas 40 166 521 483 10;
+#X obj 22 396 gemwin;
+#X msg 94 162 destroy;
+#X msg 49 212 1;
+#X msg 103 185 0;
+#N canvas 22 20 213 300 Gem.init 0;
+#X obj 71 254 outlet;
+#X msg 101 134 reset;
+#X obj 71 109 t b b;
+#X msg 71 164 lighting 1;
+#X msg 95 203 dimen 1024 576;
+#X obj 71 81 inlet;
+#X msg 58 230 perspec -1 1 -1 1 1 100;
+#X connect 1 0 0 0;
+#X connect 2 0 3 0;
+#X connect 2 1 1 0;
+#X connect 3 0 0 0;
+#X connect 3 0 6 0;
+#X connect 4 0 0 0;
+#X connect 5 0 2 0;
+#X connect 5 0 4 0;
+#X connect 6 0 0 0;
+#X restore 112 263 pd Gem.init;
+#X obj 23 90 route 0 1;
+#X obj 8 39 tgl 14 0 \$0/onoff \$1/onoff onoff 0 -6 0 8 -233017 -128992
+-1 0 1;
+#X obj 23 67 r \$0/onoff;
+#X obj 289 210 world_light;
+#X obj 211 338 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
+1;
+#X msg 211 362 debug \$1;
+#X obj 337 -3 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X msg 333 31 debug \$1;
+#X obj 305 120 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
+1;
+#X msg 304 140 debug \$1;
+#X obj 282 180 rotateXYZ 0 240 0;
+#X obj 300 59 rotateXYZ 240 0 0;
+#X obj 300 81 world_light 0.5;
+#X obj 274 269 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
+1;
+#X msg 270 303 debug \$1;
+#X obj 322 333 world_light 0.2 0.5 0.9;
+#X obj 125 42 inlet;
+#X msg 129 231 border \$1;
+#X obj 45 39 tgl 14 0 \$0/border \$1/border border 0 -6 0 8 -233017
+-128992 -1 0 1;
+#X obj 129 209 r \$0/border;
+#X obj 303 275 rotateXYZ 0 -80 180;
+#X obj 280 387 rotateXYZ 0 100 0;
+#X obj 283 445 world_light;
+#X msg 362 418 0.3 0.3 0.3;
+#X msg 402 136 0.8 0.8 0.8;
+#X obj 402 111 loadbang;
+#X obj 450 257 loadbang;
+#X obj 416 390 loadbang;
+#X msg 438 302 0.7 0.7 0.7;
+#X obj 26 154 t b b b;
+#X msg 3 193 create;
+#X obj 161 112 r \$1/color;
+#X msg 161 134 color \$1 \$2 \$3 \;;
+#X msg 99 296 lighting 0;
+#X obj 246 21 gemhead -80;
+#X obj 91 127 t b b b;
+#X obj 145 178 r \$1/fog;
+#X obj 98 330 r \$1/lighting;
+#X msg 97 351 lighting \$1;
+#X connect 1 0 0 0;
+#X connect 2 0 0 0;
+#X connect 3 0 0 0;
+#X connect 4 0 0 0;
+#X connect 5 0 40 0;
+#X connect 5 1 34 0;
+#X connect 7 0 5 0;
+#X connect 9 0 10 0;
+#X connect 10 0 27 0;
+#X connect 11 0 12 0;
+#X connect 12 0 17 0;
+#X connect 13 0 14 0;
+#X connect 14 0 8 0;
+#X connect 15 0 8 0;
+#X connect 16 0 17 0;
+#X connect 18 0 19 0;
+#X connect 19 0 20 0;
+#X connect 21 0 0 0;
+#X connect 22 0 0 0;
+#X connect 24 0 22 0;
+#X connect 25 0 20 0;
+#X connect 26 0 27 0;
+#X connect 28 0 27 1;
+#X connect 29 0 15 3;
+#X connect 30 0 29 0;
+#X connect 31 0 33 0;
+#X connect 32 0 28 0;
+#X connect 33 0 20 1;
+#X connect 34 0 2 0;
+#X connect 34 1 35 0;
+#X connect 34 2 4 0;
+#X connect 35 0 0 0;
+#X connect 36 0 37 0;
+#X connect 37 0 0 0;
+#X connect 38 0 0 0;
+#X connect 39 0 15 0;
+#X connect 39 0 16 0;
+#X connect 39 0 25 0;
+#X connect 39 0 26 0;
+#X connect 40 0 1 0;
+#X connect 40 1 3 0;
+#X connect 40 2 38 0;
+#X connect 41 0 0 0;
+#X connect 42 0 43 0;
+#X connect 43 0 0 0;
+#X coords 0 -1 1 1 85 60 1 0 0;
diff --git a/sx/hutz.pd b/sx/hutz.pd
new file mode 100644
index 0000000..cdc2adb
--- /dev/null
+++ b/sx/hutz.pd
@@ -0,0 +1,54 @@
+#N canvas 475 4 450 300 10;
+#X obj 119 63 repeat 3;
+#X obj 119 176 repeat 3;
+#X obj 119 269 cube 0.5;
+#X obj 119 199 colorRGB 0.66 0.66 0.66;
+#X obj 119 128 colorRGB 1 0.52 0.3;
+#X obj 119 246 rotateXYZ 0 0 1;
+#X obj 119 84 translateXYZ 0.2 0 0;
+#X floatatom 282 33 5 0 0 0 - - -;
+#X obj 119 105 rotateXYZ 0 90 0;
+#X obj 275 61 * 2;
+#X obj 119 153 cuboid 0.1 1 1;
+#X obj 119 222 translateXYZ 0.33 0 0;
+#X floatatom 315 102 5 0 0 0 - - -;
+#X obj 264 147 / 60;
+#X obj 315 136 / 360;
+#X obj 292 171 / 120;
+#X obj 6 30 nbx 4 14 -360 360 0 0 \$0/stretch \$1/stretch stretch 0
+-6 0 8 -233017 -128992 -1 -251 256;
+#X obj 7 59 nbx 4 14 -360 360 0 0 \$0/twist \$1/twist twist 0 -6 0
+8 -233017 -128992 -1 180 256;
+#X obj 119 0 inlet;
+#X obj 282 13 r \$0/twist;
+#X obj 315 81 r \$0/stretch;
+#X obj 119 20 separator;
+#X obj 119 40 scaleXYZ 0.5 0.5 0.5;
+#X connect 0 0 6 0;
+#X connect 1 0 3 0;
+#X connect 3 0 11 0;
+#X connect 4 0 10 0;
+#X connect 5 0 2 0;
+#X connect 6 0 8 0;
+#X connect 7 0 8 3;
+#X connect 7 0 9 0;
+#X connect 7 0 5 1;
+#X connect 7 0 5 2;
+#X connect 8 0 4 0;
+#X connect 9 0 8 2;
+#X connect 10 0 1 0;
+#X connect 11 0 5 0;
+#X connect 12 0 13 0;
+#X connect 12 0 14 0;
+#X connect 12 0 15 0;
+#X connect 13 0 11 1;
+#X connect 14 0 6 1;
+#X connect 14 0 6 3;
+#X connect 15 0 5 3;
+#X connect 15 0 8 1;
+#X connect 18 0 21 0;
+#X connect 19 0 7 0;
+#X connect 20 0 12 0;
+#X connect 21 0 22 0;
+#X connect 22 0 0 0;
+#X coords 0 -1 1 1 85 80 1 0 0;
diff --git a/sx/mirrorball.pd b/sx/mirrorball.pd
new file mode 100644
index 0000000..8b64f19
--- /dev/null
+++ b/sx/mirrorball.pd
@@ -0,0 +1,13 @@
+#N canvas 0 0 450 300 10;
+#X msg 168 64 snap;
+#X obj 168 35 t b a;
+#X obj 168 11 inlet;
+#X obj 168 97 pix_snap2tex 0 0 256 256;
+#X obj 168 157 sphere 10 20;
+#X obj 168 123 separator;
+#X connect 0 0 3 0;
+#X connect 1 0 0 0;
+#X connect 1 1 3 0;
+#X connect 2 0 1 0;
+#X connect 3 0 5 0;
+#X connect 5 0 4 0;
diff --git a/sx/netgeom-help.pd b/sx/netgeom-help.pd
new file mode 100644
index 0000000..fedfc3c
--- /dev/null
+++ b/sx/netgeom-help.pd
@@ -0,0 +1,23 @@
+#N canvas 222 16 582 378 10;
+#X obj 295 100 sx/gemwin;
+#X obj 14 7 gemhead;
+#X obj 14 32 sx/props;
+#X obj 65 142 netreceive 3142 1;
+#X obj 65 189 sx/netgeom Cube;
+#X text 115 287 sx/netgeom can receive a list of triangle data for
+use with sx/blob. Copy the blender script in utils/net_triangle.py
+into your blender scripts directory (./blender/scripts/) and then run
+blender and choose File... Export... Raw Triangle over the net... to
+send here. Big complicated meshes will probably make things chug.;
+#X obj 14 282 sx/blob2;
+#X obj 65 165 t b a;
+#X obj 295 14 sx/wander;
+#X obj 65 216 sx/explode e;
+#X connect 1 0 2 0;
+#X connect 2 0 6 0;
+#X connect 3 0 7 0;
+#X connect 4 0 9 0;
+#X connect 7 0 4 0;
+#X connect 7 1 4 1;
+#X connect 8 0 0 0;
+#X connect 9 0 6 1;
diff --git a/sx/netgeom.pd b/sx/netgeom.pd
new file mode 100644
index 0000000..8d07330
--- /dev/null
+++ b/sx/netgeom.pd
@@ -0,0 +1,43 @@
+#N canvas 0 0 455 394 10;
+#X obj 99 158 route \$1;
+#X obj 16 355 list;
+#X obj 16 137 inlet;
+#X msg 16 158 bang;
+#X obj 16 376 outlet;
+#X obj 99 133 inlet;
+#X obj 227 309 t l;
+#X text 13 4 args: [blender object name \; e.g. Cube];
+#X obj 99 309 list append;
+#X obj 129 203 list split 1;
+#X obj 99 179 t a a;
+#X obj 99 286 spigot;
+#X msg 208 249 1;
+#X msg 129 250 0;
+#X obj 129 224 select clear;
+#X text 13 36 copy the blender export script into .blender/scripts/
+folder and start blender. Make the argument of this be the same name
+as a blender object. Go file.. Export... Raw Triangle Across the net
+... and it will arrive as a list of verticies of triangles here. This
+can be used with other objects such as sx/explode and sx/blob. The
+shape list will be retained between sessions if you use a sssad/panel
+save.;
+#X obj 99 333 s \$1/geomdata;
+#X obj 194 167 sssad/auto \$0/geomdata \$1/geomdata;
+#X connect 0 0 10 0;
+#X connect 1 0 4 0;
+#X connect 2 0 3 0;
+#X connect 3 0 1 0;
+#X connect 5 0 0 0;
+#X connect 6 0 8 1;
+#X connect 8 0 6 0;
+#X connect 8 0 1 1;
+#X connect 8 0 16 0;
+#X connect 9 0 14 0;
+#X connect 10 0 11 0;
+#X connect 10 1 9 0;
+#X connect 11 0 8 0;
+#X connect 12 0 11 1;
+#X connect 13 0 11 1;
+#X connect 14 0 8 1;
+#X connect 14 0 13 0;
+#X connect 14 1 12 0;
diff --git a/sx/normal.pd b/sx/normal.pd
new file mode 100644
index 0000000..8a57819
--- /dev/null
+++ b/sx/normal.pd
@@ -0,0 +1,45 @@
+#N canvas 283 137 706 514 10;
+#X obj 10 9 inlet;
+#X text 58 10 takes a list of 9 numbers (3 vectors of a triangular
+face);
+#X obj 10 486 outlet;
+#X obj 10 433 pack f f f;
+#X obj 10 33 unpack f f f f f f f f f;
+#X obj 101 140 expr ( ($f1 - $f2) * ($f3 - $f4) ) - ( ($f3 - $f5) *
+($f1 - $f6) );
+#X obj 10 344 expr ( ($f1 - $f2) * ($f3 - $f4) ) - ( ($f3 - $f5) *
+($f1 - $f6) );
+#X obj 10 460 sx/unit;
+#X obj 52 244 expr ( ($f3 - $f2) * ($f1 - $f4) ) - ( ($f1 - $f5) *
+($f3 - $f6) );
+#X obj 11 106 t f f;
+#X obj 13 408 f;
+#X obj 10 378 t b f;
+#X connect 0 0 4 0;
+#X connect 3 0 7 0;
+#X connect 4 0 9 0;
+#X connect 4 1 5 0;
+#X connect 4 1 6 2;
+#X connect 4 2 5 2;
+#X connect 4 2 8 2;
+#X connect 4 3 6 1;
+#X connect 4 3 8 4;
+#X connect 4 4 5 1;
+#X connect 4 4 6 4;
+#X connect 4 5 5 4;
+#X connect 4 5 8 1;
+#X connect 4 6 6 5;
+#X connect 4 6 8 3;
+#X connect 4 7 5 5;
+#X connect 4 7 6 3;
+#X connect 4 8 5 3;
+#X connect 4 8 8 5;
+#X connect 5 0 10 1;
+#X connect 6 0 11 0;
+#X connect 7 0 2 0;
+#X connect 8 0 3 1;
+#X connect 9 0 6 0;
+#X connect 9 1 8 0;
+#X connect 10 0 3 0;
+#X connect 11 0 10 0;
+#X connect 11 1 3 2;
diff --git a/sx/phitz.pd b/sx/phitz.pd
new file mode 100644
index 0000000..f9b7402
--- /dev/null
+++ b/sx/phitz.pd
@@ -0,0 +1,32 @@
+#N canvas 523 326 450 300 10;
+#X obj 212 203 rotateXYZ;
+#X obj 212 125 repeat 5;
+#X obj 212 150 translateXYZ -0.35 -0.07 0.01;
+#X obj 283 250 cuboid 6 0.01 0.1;
+#X obj 212 250 cube 1.2;
+#X obj 212 52 inlet;
+#X obj 6 28 nbx 3 14 0 360 0 0 \$0/skitz \$1/skitz skitz 0 -6 0 8 -233017
+-128992 -1 6 256;
+#X obj 6 56 nbx 3 14 0 360 0 0 \$0/phat \$1/phat phat 0 -6 0 8 -233017
+-128992 -1 3.025 256;
+#X obj 359 205 r \$0/phat;
+#X obj 231 173 r \$0/skitz;
+#X obj 397 229 * 0.07;
+#X obj 212 81 scaleXYZ 0.5 0.5 0.5;
+#X obj 45 28 nbx 3 14 0 8 0 0 \$0/num \$1/num num 0 -6 0 8 -233017
+-128992 -1 7 256;
+#X obj 263 104 r \$0/num;
+#X connect 0 0 4 0;
+#X connect 0 0 3 0;
+#X connect 1 0 2 0;
+#X connect 2 0 0 0;
+#X connect 5 0 11 0;
+#X connect 8 0 3 2;
+#X connect 8 0 10 0;
+#X connect 9 0 0 1;
+#X connect 9 0 0 2;
+#X connect 9 0 0 3;
+#X connect 10 0 3 3;
+#X connect 11 0 1 0;
+#X connect 13 0 1 1;
+#X coords 0 -1 1 1 85 75 1 0 0;
diff --git a/sx/pinger.pd b/sx/pinger.pd
new file mode 100644
index 0000000..0e8169d
--- /dev/null
+++ b/sx/pinger.pd
@@ -0,0 +1,46 @@
+#N canvas 19 89 570 578 10;
+#X obj 406 281 line;
+#X msg 406 253 1 \$1;
+#X msg 446 252 0;
+#X obj 406 231 t f b;
+#X obj 330 415 - 0.2;
+#X obj 507 8 inlet;
+#X obj 507 30 list;
+#X msg 507 53 \$1 \$2 \;;
+#X obj 83 26 bng 14 250 50 0 \$0/shot \$1/shot shot 0 -6 0 8 -233017
+-128992 -66577;
+#X obj 406 160 r \$0/shot;
+#X obj 429 183 r \$0/time;
+#X obj 411 371 r \$0/width;
+#X obj 6 26 nbx 3 14 -1e+37 1e+37 0 0 \$0/width \$1/width width 0 -6
+0 8 -233017 -128992 -1 0 256;
+#X obj 451 306 select 1;
+#X obj 352 314 - 1;
+#X obj 348 339 * -1;
+#X obj 360 392 * 0.2;
+#X obj 406 330 * 10;
+#X obj 406 208 1000;
+#X obj 192 354 inlet;
+#X obj 192 452 disk 1 10 0.2;
+#X connect 0 0 13 0;
+#X connect 0 0 14 0;
+#X connect 0 0 17 0;
+#X connect 1 0 0 0;
+#X connect 2 0 0 0;
+#X connect 3 0 1 0;
+#X connect 3 1 2 0;
+#X connect 4 0 20 3;
+#X connect 5 0 6 0;
+#X connect 6 0 7 0;
+#X connect 9 0 18 0;
+#X connect 10 0 18 1;
+#X connect 11 0 16 1;
+#X connect 13 0 2 0;
+#X connect 14 0 15 0;
+#X connect 15 0 16 0;
+#X connect 16 0 4 1;
+#X connect 17 0 4 0;
+#X connect 17 0 20 1;
+#X connect 18 0 3 0;
+#X connect 19 0 20 0;
+#X coords 0 -1 1 1 120 45 1 0 0;
diff --git a/sx/props.pd b/sx/props.pd
new file mode 100644
index 0000000..da0c169
--- /dev/null
+++ b/sx/props.pd
@@ -0,0 +1,124 @@
+#N canvas 323 232 656 443 10;
+#X obj 350 219 translateXYZ;
+#X obj 6 28 nbx 3 14 -1e+37 1e+37 0 0 \$0/rX \$1/rX rotate 0 -6 0 8
+-233017 -128992 -1 0 256;
+#X obj 44 28 nbx 3 14 -1e+37 1e+37 0 0 \$0/rY \$1/rY empty 0 -6 0 8
+-233017 -128992 -1 0 256;
+#X obj 83 28 nbx 3 14 -1e+37 1e+37 0 0 \$0/rZ \$1/rZ empty 0 -6 0 8
+-233017 -128992 -1 0 256;
+#X obj 376 154 r \$0/tX;
+#X obj 402 176 r \$0/tY;
+#X obj 429 198 r \$0/tZ;
+#X obj 6 83 nbx 3 14 0 1 0 1 \$0/cR \$1/cR color 0 -6 0 8 -233017 -128992
+-1 1 256;
+#X obj 44 83 nbx 3 14 0 1 0 1 \$0/cG \$1/cG empty 0 -6 0 8 -233017
+-128992 -1 1 256;
+#X obj 83 83 nbx 3 14 0 1 0 1 \$0/cB \$1/cB empty 0 -6 0 8 -233017
+-128992 -1 1 256;
+#X obj 350 8 inlet;
+#X obj 369 245 r \$0/rX;
+#X obj 388 266 r \$0/rY;
+#X obj 408 288 r \$0/rZ;
+#X obj 350 311 rotateXYZ;
+#X obj 350 130 colorRGB;
+#X obj 388 82 r \$0/cB;
+#X obj 375 61 r \$0/cG;
+#X obj 362 40 r \$0/cR;
+#X obj 401 103 r \$0/cA;
+#X obj 6 56 nbx 3 14 -1e+37 1e+37 0 0 \$0/tX \$1/tX translate 0 -6
+0 8 -233017 -128992 -1 0 256;
+#X obj 44 56 nbx 3 14 -1e+37 1e+37 0 0 \$0/tY \$1/tY empty 0 -6 0 8
+-233017 -128992 -1 0 256;
+#X obj 83 56 nbx 3 14 -1e+37 1e+37 0 0 \$0/tZ \$1/tZ empty 0 -6 0 8
+-233017 -128992 -1 0 256;
+#X obj 122 83 nbx 3 14 0.01 1 0 1 \$0/cA \$1/cA empty 0 -6 0 8 -233017
+-128992 -1 0.299213 256;
+#X obj 350 335 outlet;
+#X obj 499 27 unpack f f f f;
+#X obj 499 112 s \$0/cR;
+#X obj 499 159 unpack f f f;
+#X obj 499 136 r \$1/translate;
+#X obj 499 272 unpack f f f;
+#X obj 499 249 r \$1/rotate;
+#X obj 499 4 r \$1/color;
+#X obj 5 395 s \$1/translate;
+#X obj 5 372 sssad/sssad \$1/translate;
+#X obj 5 113 r \$0/tX;
+#X obj 37 136 r \$0/tY;
+#X obj 70 158 r \$0/tZ;
+#X obj 168 351 r \$0/translate;
+#X obj 5 180 pack f f f;
+#X obj 5 201 s \$0/translate;
+#X obj 5 312 pack f f f;
+#X obj 5 245 r \$0/rX;
+#X obj 37 268 r \$0/rY;
+#X obj 70 290 r \$0/rZ;
+#X obj 174 91 r \$0/cR;
+#X obj 200 114 r \$0/cG;
+#X obj 174 183 pack f f f f;
+#X obj 253 160 r \$0/cA;
+#X obj 226 136 r \$0/cB;
+#X obj 174 204 s \$0/color;
+#X obj 5 333 s \$0/rotate;
+#X obj 345 369 r \$0/rotate;
+#X obj 203 390 sssad/sssad \$1/rotate;
+#X obj 203 413 s \$1/rotate;
+#X obj 565 371 r \$0/color;
+#X obj 430 392 sssad/sssad \$1/color;
+#X obj 430 415 s \$1/color;
+#X obj 538 203 s \$1/tY;
+#X obj 578 182 s \$1/tZ;
+#X obj 499 227 s \$1/tX;
+#X obj 561 70 s \$1/cB;
+#X obj 592 49 s \$1/cA;
+#X obj 530 91 s \$1/cG;
+#X obj 499 340 s \$1/rX;
+#X obj 538 316 s \$1/rY;
+#X obj 578 295 s \$1/rZ;
+#X connect 0 0 14 0;
+#X connect 4 0 0 1;
+#X connect 5 0 0 2;
+#X connect 6 0 0 3;
+#X connect 10 0 15 0;
+#X connect 11 0 14 1;
+#X connect 12 0 14 2;
+#X connect 13 0 14 3;
+#X connect 14 0 24 0;
+#X connect 15 0 0 0;
+#X connect 16 0 15 3;
+#X connect 17 0 15 2;
+#X connect 18 0 15 1;
+#X connect 19 0 15 4;
+#X connect 25 0 26 0;
+#X connect 25 1 62 0;
+#X connect 25 2 60 0;
+#X connect 25 3 61 0;
+#X connect 27 0 59 0;
+#X connect 27 1 57 0;
+#X connect 27 2 58 0;
+#X connect 28 0 27 0;
+#X connect 29 0 63 0;
+#X connect 29 1 64 0;
+#X connect 29 2 65 0;
+#X connect 30 0 29 0;
+#X connect 31 0 25 0;
+#X connect 33 0 32 0;
+#X connect 34 0 38 0;
+#X connect 35 0 38 1;
+#X connect 36 0 38 2;
+#X connect 37 0 33 1;
+#X connect 38 0 39 0;
+#X connect 40 0 50 0;
+#X connect 41 0 40 0;
+#X connect 42 0 40 1;
+#X connect 43 0 40 2;
+#X connect 44 0 46 0;
+#X connect 45 0 46 1;
+#X connect 46 0 49 0;
+#X connect 47 0 46 3;
+#X connect 48 0 46 2;
+#X connect 51 0 52 1;
+#X connect 52 0 53 0;
+#X connect 54 0 55 1;
+#X connect 55 0 56 0;
+#X coords 0 -1 1 1 160 103 1 0 0;
diff --git a/sx/ring.pd b/sx/ring.pd
new file mode 100644
index 0000000..6121903
--- /dev/null
+++ b/sx/ring.pd
@@ -0,0 +1,61 @@
+#N canvas 362 185 526 460 10;
+#X obj 119 0 inlet;
+#X obj 149 65 rotateXYZ 0 90 0;
+#X obj 149 386 rotateXYZ 0 90 0;
+#X obj 149 298 translateXYZ 1 0 1;
+#X obj 149 252 cuboid 0.1 0.1 1.1;
+#X obj 29 110 outlet;
+#X obj 119 23 GEMglPushMatrix;
+#X obj 29 88 GEMglPopMatrix;
+#X obj 119 44 t a a;
+#X obj 307 173 \$2;
+#X obj 307 151 loadbang;
+#X obj 215 130 inlet;
+#X obj 296 127 inlet;
+#X obj 307 193 select 0;
+#X obj 390 204 * 1.1;
+#X obj 169 169 select 0;
+#X obj 173 109 loadbang;
+#X obj 173 131 \$1;
+#X obj 149 208 repeat 4;
+#X obj 220 362 expr 360 / $f1;
+#X obj 390 180 inlet;
+#X obj 425 80 loadbang;
+#X obj 425 104 \$3;
+#X obj 425 126 select 0;
+#X text 247 3 args: [pieces] [thickness] [width];
+#X obj 149 89 translateXYZ -0.5 0 -0.5;
+#X obj 319 66 / -2;
+#X connect 0 0 6 0;
+#X connect 1 0 25 0;
+#X connect 3 0 2 0;
+#X connect 4 0 3 0;
+#X connect 6 0 8 0;
+#X connect 7 0 5 0;
+#X connect 8 0 7 0;
+#X connect 8 1 1 0;
+#X connect 9 0 13 0;
+#X connect 10 0 9 0;
+#X connect 11 0 15 0;
+#X connect 12 0 9 0;
+#X connect 13 1 4 2;
+#X connect 14 0 4 3;
+#X connect 15 1 18 1;
+#X connect 15 1 19 0;
+#X connect 16 0 17 0;
+#X connect 17 0 15 0;
+#X connect 18 0 4 0;
+#X connect 19 0 2 2;
+#X connect 20 0 14 0;
+#X connect 20 0 3 3;
+#X connect 20 0 3 1;
+#X connect 21 0 22 0;
+#X connect 22 0 23 0;
+#X connect 23 1 14 0;
+#X connect 23 1 3 3;
+#X connect 23 1 4 3;
+#X connect 23 1 26 0;
+#X connect 25 0 18 0;
+#X connect 26 0 25 3;
+#X connect 26 0 25 1;
+#X coords 0 0 1 1 85 80 0;
diff --git a/sx/rumble.pd b/sx/rumble.pd
new file mode 100644
index 0000000..ce568c4
--- /dev/null
+++ b/sx/rumble.pd
@@ -0,0 +1,37 @@
+#N canvas 147 48 647 639 10;
+#X obj 198 82 part_head;
+#X obj 198 136 part_color;
+#X obj 198 447 part_draw;
+#X obj 198 334 part_orbitpoint 0 1 0 0.08;
+#X obj 198 174 part_size 0.4;
+#X obj 360 61 loadbang;
+#X msg 336 97 0 0 0;
+#X obj 198 56 inlet;
+#X msg 126 411 draw 6;
+#X obj 126 387 loadbang;
+#X text 381 250 small values (0.1) is normal;
+#X text 384 269 larger values (1) is intense;
+#X text 382 288 negative values is explosive;
+#X obj 5 42 nbx 4 14 -0.2 1.2 0 0 \$0/rumble \$1/rumble rumble 0 -6
+0 8 -233017 -128992 -1 0.228346 256;
+#X obj 375 305 r \$0/rumble;
+#X obj 198 220 part_velocity sphere 0 0 0 0.2;
+#X msg 396 98 0 0 1;
+#X obj 198 270 part_source 3;
+#X obj 198 381 part_killold 30;
+#X connect 0 0 1 0;
+#X connect 1 0 4 0;
+#X connect 3 0 18 0;
+#X connect 4 0 15 0;
+#X connect 5 0 16 0;
+#X connect 5 0 6 0;
+#X connect 6 0 1 1;
+#X connect 7 0 0 0;
+#X connect 8 0 2 0;
+#X connect 9 0 8 0;
+#X connect 14 0 3 2;
+#X connect 15 0 17 0;
+#X connect 16 0 1 2;
+#X connect 17 0 3 0;
+#X connect 18 0 2 0;
+#X coords 0 -1 1 1 85 60 1 0 0;
diff --git a/sx/shadow.pd b/sx/shadow.pd
new file mode 100644
index 0000000..f254416
--- /dev/null
+++ b/sx/shadow.pd
@@ -0,0 +1,19 @@
+#N canvas 0 0 450 300 10;
+#X obj 68 73 separator;
+#X obj 68 129 scaleXYZ 1.25 0 1.25;
+#X obj 229 254 outlet;
+#X obj 283 21 inlet;
+#X obj 283 46 t a a;
+#X obj 68 184 alpha 0;
+#X obj 68 155 colorRGB 0.01 0.01 0.01 1;
+#X obj 68 100 translateXYZ 0.5 -6 0.5;
+#X obj 313 69 separator;
+#X connect 0 0 7 0;
+#X connect 1 0 6 0;
+#X connect 3 0 4 0;
+#X connect 4 0 0 0;
+#X connect 4 1 8 0;
+#X connect 5 0 2 0;
+#X connect 6 0 5 0;
+#X connect 7 0 1 0;
+#X connect 8 0 2 0;
diff --git a/sx/sigplane.pd b/sx/sigplane.pd
new file mode 100644
index 0000000..8006a5e
--- /dev/null
+++ b/sx/sigplane.pd
@@ -0,0 +1,22 @@
+#N canvas 380 148 383 404 10;
+#X obj 74 303 pix_texture;
+#X obj 138 172 +~;
+#X obj 74 234 pix_sig2pix~ 64 64;
+#X msg 90 279 quality 0;
+#X obj 149 48 block~ 4096;
+#X obj 74 106 inlet;
+#X obj 137 106 inlet~;
+#X obj 155 142 inlet~;
+#X obj 90 257 loadbang;
+#X obj 74 336 outlet;
+#X connect 0 0 9 0;
+#X connect 1 0 2 2;
+#X connect 1 0 2 1;
+#X connect 1 0 2 0;
+#X connect 1 0 2 3;
+#X connect 2 0 0 0;
+#X connect 3 0 0 0;
+#X connect 5 0 2 0;
+#X connect 6 0 1 0;
+#X connect 7 0 1 1;
+#X connect 8 0 3 0;
diff --git a/sx/unit.pd b/sx/unit.pd
new file mode 100644
index 0000000..0f971b5
--- /dev/null
+++ b/sx/unit.pd
@@ -0,0 +1,28 @@
+#N canvas 167 33 599 530 10;
+#X obj 10 8 inlet;
+#X text 57 7 Takes a vector and calculates the unit;
+#X obj 10 311 outlet;
+#X obj 167 94 unpack f f f;
+#X obj 167 160 expr sqrt(($f1 * $f1) + ($f2 * $f2) + ($f3 * $f3));
+#X obj 10 34 t l l;
+#X obj 10 187 unpack f f f;
+#X obj 10 246 /;
+#X obj 49 246 /;
+#X obj 89 246 /;
+#X obj 10 287 pack f f f;
+#X connect 0 0 5 0;
+#X connect 3 0 4 0;
+#X connect 3 1 4 1;
+#X connect 3 2 4 2;
+#X connect 4 0 7 1;
+#X connect 4 0 8 1;
+#X connect 4 0 9 1;
+#X connect 5 0 6 0;
+#X connect 5 1 3 0;
+#X connect 6 0 7 0;
+#X connect 6 1 8 0;
+#X connect 6 2 9 0;
+#X connect 7 0 10 0;
+#X connect 8 0 10 1;
+#X connect 9 0 10 2;
+#X connect 10 0 2 0;
diff --git a/sx/vibber-help.pd b/sx/vibber-help.pd
new file mode 100644
index 0000000..96140a7
--- /dev/null
+++ b/sx/vibber-help.pd
@@ -0,0 +1,7 @@
+#N canvas 0 0 450 300 10;
+#X obj 6 8 sx/gemwin;
+#X obj 101 9 gemhead 99;
+#X obj 101 32 sx/props;
+#X obj 101 141 sx/vibber;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
diff --git a/sx/vibber.pd b/sx/vibber.pd
new file mode 100644
index 0000000..f3303a6
--- /dev/null
+++ b/sx/vibber.pd
@@ -0,0 +1,101 @@
+#N canvas 15 10 755 647 10;
+#X msg 23 318 draw line;
+#X obj 23 294 loadbang;
+#X obj 212 137 alpha;
+#X msg 201 103 1;
+#X obj 138 55 inlet;
+#X obj 138 79 t a a;
+#X obj 114 122 separator;
+#X obj 211 548 rotateXYZ;
+#X obj 328 262 random 10;
+#X obj 329 283 expr $f1 / 10 - 0.5;
+#X obj 286 307 random 10;
+#X obj 257 352 random 10;
+#X obj 110 147 repeat 3;
+#X obj 110 168 t a a b;
+#X obj 59 270 scaleXYZ;
+#X obj 5 20 nbx 2 14 0 10 0 0 \$0/wobble \$1/wobble wobble 30 8 0 8
+-233017 -128992 -1 2 256;
+#X obj 5 40 nbx 2 14 0 10 0 1 \$0/spring \$1/spring spring 30 8 0 8
+-233017 -128992 -1 1.06457 256;
+#X obj 86 234 r \$0/spring;
+#X obj 324 414 r \$0/wobble;
+#X obj 285 328 expr $f1 / 10 - 0.5;
+#X obj 256 373 expr $f1 / 10 - 0.5;
+#X obj 233 458 *;
+#X obj 255 490 *;
+#X obj 287 469 *;
+#X obj 398 452 r \$0/wobble;
+#X obj 332 486 sssad/sssad \$1/wobble;
+#X obj 393 545 r \$0/spring;
+#X obj 327 579 sssad/sssad \$1/spring;
+#X obj 563 240 cube;
+#X obj 563 262 scaleXYZ 0.5 0.5 0.5;
+#X obj 563 305 cube;
+#X obj 563 347 cube;
+#X obj 563 394 scaleXYZ 2 2 2;
+#X obj 563 283 translateXYZ 3 0 0;
+#X obj 563 326 translateXYZ -6 0 0;
+#X obj 563 372 translateXYZ 3 0 0;
+#X obj 95 335 cube;
+#X obj 95 357 scaleXYZ 0.5 0.5 0.5;
+#X obj 95 400 cube;
+#X obj 95 442 cube;
+#X obj 95 489 scaleXYZ 2 2 2;
+#X obj 95 378 translateXYZ 3 0 0;
+#X obj 95 421 translateXYZ -6 0 0;
+#X obj 95 467 translateXYZ 3 0 0;
+#X obj 367 516 s \$1/wobble;
+#X obj 362 609 s \$1/spring;
+#X connect 0 0 36 0;
+#X connect 0 0 38 0;
+#X connect 0 0 39 0;
+#X connect 1 0 0 0;
+#X connect 2 0 28 0;
+#X connect 3 0 2 0;
+#X connect 4 0 5 0;
+#X connect 5 0 2 0;
+#X connect 5 1 3 0;
+#X connect 5 1 6 0;
+#X connect 6 0 12 0;
+#X connect 8 0 9 0;
+#X connect 9 0 23 0;
+#X connect 10 0 19 0;
+#X connect 11 0 20 0;
+#X connect 12 0 13 0;
+#X connect 13 0 14 0;
+#X connect 13 1 36 0;
+#X connect 13 2 8 0;
+#X connect 13 2 10 0;
+#X connect 13 2 11 0;
+#X connect 17 0 14 1;
+#X connect 17 0 14 2;
+#X connect 17 0 14 3;
+#X connect 18 0 21 1;
+#X connect 18 0 23 1;
+#X connect 18 0 22 1;
+#X connect 19 0 22 0;
+#X connect 20 0 21 0;
+#X connect 21 0 7 1;
+#X connect 22 0 7 2;
+#X connect 23 0 7 3;
+#X connect 24 0 25 1;
+#X connect 25 0 44 0;
+#X connect 26 0 27 1;
+#X connect 27 0 45 0;
+#X connect 28 0 29 0;
+#X connect 29 0 33 0;
+#X connect 30 0 34 0;
+#X connect 31 0 35 0;
+#X connect 33 0 30 0;
+#X connect 34 0 31 0;
+#X connect 35 0 32 0;
+#X connect 36 0 37 0;
+#X connect 37 0 41 0;
+#X connect 38 0 42 0;
+#X connect 39 0 43 0;
+#X connect 40 0 7 0;
+#X connect 41 0 38 0;
+#X connect 42 0 39 0;
+#X connect 43 0 40 0;
+#X coords 0 -1 1 1 85 60 1 0 0;
diff --git a/sx/voibu.pd b/sx/voibu.pd
new file mode 100644
index 0000000..b8c1e9c
--- /dev/null
+++ b/sx/voibu.pd
@@ -0,0 +1,86 @@
+#N canvas 475 4 528 494 10;
+#X obj 6 30 nbx 4 14 -2 50 0 1 \$0/stretch \$1/stretch stretch 0 -6
+0 8 -233017 -128992 -1 1 256;
+#X obj 7 59 nbx 4 14 -360 360 0 0 \$0/twist \$1/twist twist 0 -6 0
+8 -233017 -128992 -1 0 256;
+#X obj 155 7 inlet;
+#X obj 329 149 separator;
+#X obj 329 240 repeat 7;
+#X obj 329 270 translateXYZ 0 1 0;
+#X obj 329 196 translateXYZ 0 -3.5 0;
+#X obj 423 175 * -3.5;
+#X obj 155 31 t a a;
+#X obj 155 159 separator;
+#X obj 155 280 translateXYZ 0 1 0;
+#X obj 155 232 translateXYZ 0 -3.5 0;
+#X obj 330 107 colorRGB 0.7 0.7 0.7;
+#X obj 155 134 colorRGB 1 0.3 0.3;
+#X obj 250 206 * -2.5;
+#X obj 155 256 repeat 6;
+#X obj 155 180 translateXYZ 0 -0.5 0;
+#X obj 245 156 / -2;
+#X obj 55 30 nbx 4 14 0 2 0 0 \$0/flavour \$1/flavour flavour 0 -6
+0 8 -233017 -128992 -1 0 256;
+#X obj 155 301 rotateXYZ;
+#X obj 329 294 rotateXYZ;
+#X obj 407 128 r \$0/stretch;
+#X obj 402 226 r \$0/twist;
+#X obj 440 247 r \$0/warp;
+#X obj 55 59 nbx 4 14 -360 360 0 0 \$0/warp \$1/warp warp 0 -6 0 8
+-233017 -128992 -1 0 256;
+#X obj 191 106 unpack f f f;
+#X msg 258 64 0.3 0.3 1;
+#X obj 238 21 r \$0/flavour;
+#X obj 238 44 select 0 1 2;
+#X msg 285 84 1 0.6 0.2;
+#X floatatom 257 299 5 0 0 0 - - -;
+#X obj 156 323 sx/ring 5 0.1 1;
+#X obj 330 314 sx/ring 5 0.1 1;
+#X msg 192 85 1 0.25 0.25;
+#X obj 7 371 sssad/auto \$0/stretch \$1/stretch;
+#X obj 7 394 sssad/auto \$0/flavour \$1/flavour;
+#X obj 7 417 sssad/auto \$0/warp \$1/warp;
+#X obj 7 440 sssad/auto \$0/twist \$1/twist;
+#X connect 2 0 8 0;
+#X connect 3 0 6 0;
+#X connect 4 0 5 0;
+#X connect 5 0 20 0;
+#X connect 6 0 4 0;
+#X connect 7 0 6 2;
+#X connect 8 0 13 0;
+#X connect 8 1 12 0;
+#X connect 9 0 16 0;
+#X connect 10 0 19 0;
+#X connect 11 0 15 0;
+#X connect 12 0 3 0;
+#X connect 13 0 9 0;
+#X connect 14 0 11 2;
+#X connect 15 0 10 0;
+#X connect 16 0 11 0;
+#X connect 17 0 16 2;
+#X connect 19 0 31 0;
+#X connect 20 0 32 0;
+#X connect 21 0 17 0;
+#X connect 21 0 7 0;
+#X connect 21 0 14 0;
+#X connect 21 0 10 2;
+#X connect 21 0 5 2;
+#X connect 22 0 20 2;
+#X connect 22 0 19 2;
+#X connect 23 0 20 3;
+#X connect 23 0 20 1;
+#X connect 23 0 19 3;
+#X connect 23 0 19 1;
+#X connect 25 0 13 1;
+#X connect 25 1 13 2;
+#X connect 25 2 13 3;
+#X connect 26 0 25 0;
+#X connect 27 0 28 0;
+#X connect 28 0 33 0;
+#X connect 28 1 26 0;
+#X connect 28 2 29 0;
+#X connect 29 0 25 0;
+#X connect 30 0 31 3;
+#X connect 30 0 32 3;
+#X connect 33 0 25 0;
+#X coords 0 -1 1 1 100 78 1 0 0;
diff --git a/sx/wander.pd b/sx/wander.pd
new file mode 100644
index 0000000..ccf0537
--- /dev/null
+++ b/sx/wander.pd
@@ -0,0 +1,205 @@
+#N canvas 0 9 628 655 10;
+#X obj 132 614 outlet;
+#X obj 194 546 loadbang;
+#X obj 136 146 t b b b;
+#X obj 52 61 tgl 14 0 \$0/onoff \$1/onoff onoff 0 -6 0 8 -233017 -128992
+-1 0 1;
+#X obj 6 61 nbx 4 14 0 127 0 0 \$0/speed \$1/speed speed 0 -6 0 8 -233017
+-128992 -1 0 256;
+#X obj 126 80 r \$0/onoff;
+#X obj 201 80 r \$0/speed;
+#X obj 136 124 metro 3000;
+#X floatatom 137 271 5 0 0 0 - - -;
+#X floatatom 277 274 5 0 0 0 - - -;
+#X floatatom 402 265 5 0 0 0 - - -;
+#X obj 331 366 +;
+#X obj 273 318 t b f;
+#X obj 270 366 f;
+#X floatatom 267 397 5 0 0 0 - - -;
+#X obj 413 314 t b f;
+#X obj 207 352 +;
+#X obj 137 317 t b f;
+#X obj 135 346 f;
+#X floatatom 133 369 5 0 0 0 - - -;
+#X obj 500 283 unpack f f f;
+#X msg 500 260 2 2 5;
+#X obj 464 380 +;
+#X obj 411 379 f;
+#X floatatom 411 404 5 0 0 0 - - -;
+#N canvas 0 0 450 300 pickrandom 0;
+#X obj 97 150 +;
+#X obj 40 51 t b b;
+#X obj 130 78 random 3;
+#X obj 145 99 - 1;
+#X obj 159 121 * 0.01;
+#X obj 27 148 f;
+#X obj 54 123 clip -0.1 0.1;
+#X obj 39 19 inlet;
+#X obj 30 187 outlet;
+#X connect 0 0 5 1;
+#X connect 1 0 5 0;
+#X connect 1 1 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 4 0 0 1;
+#X connect 5 0 6 0;
+#X connect 5 0 8 0;
+#X connect 6 0 0 0;
+#X connect 7 0 1 0;
+#X restore 444 234 pd pickrandom;
+#N canvas 0 0 450 300 pickrandom 0;
+#X obj 97 150 +;
+#X obj 40 51 t b b;
+#X obj 130 78 random 3;
+#X obj 145 99 - 1;
+#X obj 159 121 * 0.01;
+#X obj 27 148 f;
+#X obj 54 123 clip -0.1 0.1;
+#X obj 39 19 inlet;
+#X obj 30 187 outlet;
+#X connect 0 0 5 1;
+#X connect 1 0 5 0;
+#X connect 1 1 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 4 0 0 1;
+#X connect 5 0 6 0;
+#X connect 5 0 8 0;
+#X connect 6 0 0 0;
+#X connect 7 0 1 0;
+#X restore 278 241 pd pickrandom;
+#N canvas 0 0 450 300 pickrandom 0;
+#X obj 97 150 +;
+#X obj 40 51 t b b;
+#X obj 130 78 random 3;
+#X obj 145 99 - 1;
+#X obj 159 121 * 0.01;
+#X obj 27 148 f;
+#X obj 54 123 clip -0.1 0.1;
+#X obj 39 19 inlet;
+#X obj 30 187 outlet;
+#X connect 0 0 5 1;
+#X connect 1 0 5 0;
+#X connect 1 1 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 4 0 0 1;
+#X connect 5 0 6 0;
+#X connect 5 0 8 0;
+#X connect 6 0 0 0;
+#X connect 7 0 1 0;
+#X restore 133 241 pd pickrandom;
+#X obj 322 342 clip -2 2;
+#X obj 466 348 clip -2 2;
+#X obj 188 324 clip -2 2;
+#X obj 201 102 mtof;
+#X obj 363 31 r \$1/target;
+#X obj 362 58 unpack f f f;
+#X obj 260 418 +;
+#X obj 407 425 +;
+#X obj 135 410 +;
+#X obj 134 502 pack f f f f f f;
+#X msg 132 525 view \$1 \$2 \$3 \$4 \$5 \$6 0 1 0;
+#X obj 460 34 sssad/sssad \$1/speed;
+#X obj 460 56 s \$1/speed;
+#X obj 530 11 r \$0/speed;
+#X msg 348 524 view 10 0 0 0 0 0 0 1 0;
+#X obj 133 468 line;
+#X obj 133 446 pack f f;
+#X obj 207 472 line;
+#X obj 207 450 pack f f;
+#X obj 290 476 line;
+#X obj 290 454 pack f f;
+#X obj 6 33 nbx 4 14 0 127 0 1 \$0/distance \$1/distance distance 0
+-6 0 8 -233017 -128992 -1 3 256;
+#X obj 229 39 * -1;
+#X obj 272 1 r \$0/distance;
+#X obj 488 88 inlet;
+#X obj 488 109 list;
+#X msg 488 131 \; \$1 \$2 \$3 \$4 \$5 \;;
+#X msg 194 570 perspec -1 1 -1 1 1 100;
+#X obj 10 379 r \$1/position;
+#X obj 10 400 unpack f f f;
+#X msg 365 91 bang;
+#X obj 412 5 r \$1/floor;
+#X connect 1 0 55 0;
+#X connect 2 0 27 0;
+#X connect 2 1 26 0;
+#X connect 2 2 25 0;
+#X connect 5 0 7 0;
+#X connect 6 0 31 0;
+#X connect 7 0 2 0;
+#X connect 8 0 17 0;
+#X connect 9 0 12 0;
+#X connect 10 0 15 0;
+#X connect 11 0 13 1;
+#X connect 12 0 13 0;
+#X connect 12 1 11 1;
+#X connect 13 0 14 0;
+#X connect 13 0 28 0;
+#X connect 14 0 34 0;
+#X connect 15 0 23 0;
+#X connect 15 1 22 1;
+#X connect 16 0 18 1;
+#X connect 17 0 18 0;
+#X connect 17 1 16 1;
+#X connect 18 0 19 0;
+#X connect 18 0 30 0;
+#X connect 19 0 36 0;
+#X connect 20 0 18 1;
+#X connect 20 1 13 1;
+#X connect 20 2 23 1;
+#X connect 21 0 20 0;
+#X connect 22 0 23 1;
+#X connect 23 0 24 0;
+#X connect 23 0 29 0;
+#X connect 24 0 35 0;
+#X connect 25 0 10 0;
+#X connect 26 0 9 0;
+#X connect 27 0 8 0;
+#X connect 28 0 11 0;
+#X connect 29 0 22 0;
+#X connect 30 0 16 0;
+#X connect 31 0 7 1;
+#X connect 31 0 48 1;
+#X connect 31 0 46 1;
+#X connect 31 0 44 1;
+#X connect 32 0 33 0;
+#X connect 33 0 36 1;
+#X connect 33 0 37 3;
+#X connect 33 0 58 0;
+#X connect 33 1 34 1;
+#X connect 33 1 37 4;
+#X connect 33 2 35 1;
+#X connect 33 2 37 5;
+#X connect 34 0 46 0;
+#X connect 35 0 48 0;
+#X connect 36 0 44 0;
+#X connect 37 0 38 0;
+#X connect 38 0 0 0;
+#X connect 39 0 40 0;
+#X connect 41 0 39 1;
+#X connect 42 0 0 0;
+#X connect 43 0 37 0;
+#X connect 44 0 43 0;
+#X connect 45 0 37 1;
+#X connect 46 0 45 0;
+#X connect 47 0 37 2;
+#X connect 48 0 47 0;
+#X connect 50 0 30 1;
+#X connect 50 0 28 1;
+#X connect 50 0 29 1;
+#X connect 51 0 50 0;
+#X connect 51 0 30 2;
+#X connect 51 0 28 2;
+#X connect 51 0 29 2;
+#X connect 52 0 53 0;
+#X connect 53 0 54 0;
+#X connect 55 0 0 0;
+#X connect 56 0 57 0;
+#X connect 57 0 37 0;
+#X connect 57 1 37 1;
+#X connect 57 2 37 2;
+#X connect 58 0 37 0;
+#X connect 59 0 28 1;
+#X coords 0 -1 1 1 85 80 1 0 0;
diff --git a/sx/wobtower.pd b/sx/wobtower.pd
new file mode 100644
index 0000000..d1c62c2
--- /dev/null
+++ b/sx/wobtower.pd
@@ -0,0 +1,108 @@
+#N canvas 138 22 755 647 10;
+#X obj 134 15 inlet;
+#X obj 134 39 t a a;
+#X obj 134 85 separator;
+#X obj 5 20 nbx 3 14 0 10 0 1 \$0/thicken \$1/thicken thicken 36 8
+0 8 -233017 -128992 -1 0 256;
+#X obj 5 40 nbx 2 14 0 99 0 1 \$0/throb \$1/throb throb 30 8 0 8 -233017
+-128992 -1 0 256;
+#X obj 166 279 repeat 3;
+#X obj 134 62 scaleXYZ 0.2 0.2 0.2;
+#X obj 166 304 t a b;
+#X obj 373 354 random 10;
+#X obj 447 354 random 10;
+#X obj 520 354 random 10;
+#X obj 366 406 -;
+#X obj 382 379 / 2;
+#X obj 295 145 separator;
+#X obj 166 346 translateXYZ 0 2 0;
+#X obj 445 405 -;
+#X obj 461 378 / 2;
+#X obj 521 407 -;
+#X obj 537 380 / 2;
+#X obj 134 108 t a a a;
+#X obj 166 256 separator;
+#X obj 137 450 separator;
+#X obj 166 370 rotateXYZ 0 0 5;
+#X obj 137 521 rotateXYZ 0 0 -5;
+#X obj 485 443 expr -$f1;
+#X obj 137 579 translateXYZ 0 -3 0;
+#X obj 137 557 cuboid 0.1 -2 0.1;
+#X obj 164 422 cuboid 0.1 2 0.1;
+#X obj 137 500 repeat 3;
+#X obj 137 473 translateXYZ 0 -3 0;
+#X obj 424 272 r \$0/throb;
+#X obj 423 302 t f f;
+#X obj 222 395 r \$0/thicken;
+#X obj 259 524 r \$0/thicken;
+#X text 317 115 heads;
+#X text 204 194 bits;
+#X obj 391 445 expr -$f1;
+#X obj 314 442 expr -$f1;
+#X obj 295 169 translateXYZ 0 -10 0;
+#X obj 296 219 translateXYZ 0 19 0;
+#X obj 654 -2 r \$0/thicken;
+#X obj 588 32 sssad/sssad \$1/thicken;
+#X obj 623 62 s \$0/thicken;
+#X obj 664 119 r \$0/throb;
+#X obj 598 153 sssad/sssad \$1/throb;
+#X obj 633 183 s \$0/throb;
+#X obj 295 195 cube 1.25;
+#X obj 295 245 cube 1.25;
+#X obj 137 601 outlet;
+#X connect 0 0 1 0;
+#X connect 1 0 6 0;
+#X connect 2 0 19 0;
+#X connect 5 0 7 0;
+#X connect 6 0 2 0;
+#X connect 7 0 14 0;
+#X connect 7 1 8 0;
+#X connect 7 1 9 0;
+#X connect 7 1 10 0;
+#X connect 8 0 11 0;
+#X connect 9 0 15 0;
+#X connect 10 0 17 0;
+#X connect 11 0 37 0;
+#X connect 11 0 22 1;
+#X connect 12 0 11 1;
+#X connect 13 0 38 0;
+#X connect 14 0 22 0;
+#X connect 15 0 36 0;
+#X connect 15 0 22 2;
+#X connect 16 0 15 1;
+#X connect 17 0 22 3;
+#X connect 17 0 24 0;
+#X connect 18 0 17 1;
+#X connect 19 1 20 0;
+#X connect 19 2 13 0;
+#X connect 20 0 5 0;
+#X connect 21 0 29 0;
+#X connect 22 0 27 0;
+#X connect 23 0 26 0;
+#X connect 24 0 23 3;
+#X connect 25 0 48 0;
+#X connect 26 0 25 0;
+#X connect 27 0 21 0;
+#X connect 28 0 23 0;
+#X connect 29 0 28 0;
+#X connect 30 0 31 0;
+#X connect 31 0 8 1;
+#X connect 31 0 9 1;
+#X connect 31 0 10 1;
+#X connect 31 1 18 0;
+#X connect 31 1 16 0;
+#X connect 31 1 12 0;
+#X connect 32 0 27 3;
+#X connect 32 0 27 1;
+#X connect 33 0 26 3;
+#X connect 33 0 26 1;
+#X connect 36 0 23 2;
+#X connect 37 0 23 1;
+#X connect 38 0 46 0;
+#X connect 39 0 47 0;
+#X connect 40 0 41 1;
+#X connect 41 0 42 0;
+#X connect 43 0 44 1;
+#X connect 44 0 45 0;
+#X connect 46 0 39 0;
+#X coords 0 -1 1 1 85 60 1 0 0;