aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Iannini <lukeiannini@users.sourceforge.net>2009-02-06 11:16:06 +0000
committerLuke Iannini <lukeiannini@users.sourceforge.net>2009-02-06 11:16:06 +0000
commit108c7c2f64b9254ea599073bd737f5e5a8b8d9c3 (patch)
tree4597de6a2c79540c5e8a16beadcc5dae68be30a9
parenta9221abd8f8826e6a71435c631901cad1342401b (diff)
adding jonathan wilkes lovely 'pal' editor, continued work and upgrades to ds-designer, and the start of ds-choice-list, a context-menu-ish gui element (with icons thanks to ds-designer)
svn path=/trunk/abstractions/ds-gui/; revision=10748
-rw-r--r--ds-choice-list.pd78
-rw-r--r--ds-designer-help.pd12
-rw-r--r--ds-designer.pd686
-rw-r--r--ds-slider-o.pd42
-rwxr-xr-xpal/clean.pd65
-rwxr-xr-xpal/color-presets.txt100
-rwxr-xr-xpal/constrain.pd62
-rwxr-xr-xpal/getGUIsize.pd44
-rwxr-xr-xpal/if-numscroll.pd58
-rwxr-xr-xpal/label-tgl.pd18
-rwxr-xr-xpal/label.pd54
-rwxr-xr-xpal/linORlog.pd15
-rwxr-xr-xpal/lock.pd71
-rwxr-xr-xpal/pal-help.pd90
-rwxr-xr-xpal/pal.pd1899
-rwxr-xr-xpal/pappend.pd45
-rwxr-xr-xpal/pbng.pd256
-rwxr-xr-xpal/pcnv.pd239
-rwxr-xr-xpal/pnbx.pd250
-rwxr-xr-xpal/pradio.pd270
-rwxr-xr-xpal/pslider.pd243
-rwxr-xr-xpal/pstruct.pd50
-rwxr-xr-xpal/ptgl.pd237
-rwxr-xr-xpal/ptraverse.pd12
-rwxr-xr-xpal/shownum.pd107
-rwxr-xr-xpal/showsym.pd71
-rwxr-xr-xpal/spawn.pd23
-rwxr-xr-xpal/turnstile.txt1
28 files changed, 4782 insertions, 316 deletions
diff --git a/ds-choice-list.pd b/ds-choice-list.pd
new file mode 100644
index 0000000..4312fce
--- /dev/null
+++ b/ds-choice-list.pd
@@ -0,0 +1,78 @@
+#N struct 1002.list-item.template float x float y symbol item-name
+symbol action-name float item-color float action-color;
+#N canvas 376 92 450 300 10;
+#N canvas 0 22 450 300 \$0.display 1;
+#X scalar 1002.list-item.template 0 80 sandwich symbol 0 0 \;;
+#X scalar 1002.list-item.template 0 40 cheese symbol 0 0 \;;
+#X scalar 1002.list-item.template 0 0 ham symbol 0 0 \;;
+#X restore 219 103 pd \$0.display;
+#N canvas 667 449 450 300 make-list 1;
+#X obj 130 112 t b b;
+#X obj 217 156 ds-begin pd-\$0.display;
+#X obj 130 205 append \$0.list-item.template x y;
+#X obj 130 229 t b a;
+#X obj 130 275 set -symbol \$0.list-item.template item-name;
+#X obj 130 63 list-drip;
+#X obj 130 140 f;
+#X obj 155 140 + 1;
+#X msg 130 180 0 \$1;
+#X msg 175 112 0;
+#X obj 130 160 * 40;
+#X obj 130 90 t b a;
+#X obj 388 156 t a;
+#X obj 130 252 symbol;
+#X obj 130 41 t a b b;
+#X msg 192 41 clear;
+#X obj 235 41 s pd-\$0.display;
+#X obj 130 15 inlet;
+#X connect 0 0 6 0;
+#X connect 0 1 1 0;
+#X connect 1 0 2 2;
+#X connect 2 0 3 0;
+#X connect 3 0 13 0;
+#X connect 3 1 4 1;
+#X connect 5 0 11 0;
+#X connect 6 0 10 0;
+#X connect 6 0 7 0;
+#X connect 7 0 6 1;
+#X connect 8 0 2 0;
+#X connect 9 0 6 1;
+#X connect 10 0 8 0;
+#X connect 11 0 0 0;
+#X connect 11 1 12 0;
+#X connect 12 0 13 1;
+#X connect 13 0 4 0;
+#X connect 14 0 5 0;
+#X connect 14 1 9 0;
+#X connect 14 2 15 0;
+#X connect 15 0 16 0;
+#X connect 17 0 14 0;
+#X restore 34 105 pd make-list;
+#N canvas 884 22 450 300 \$0.list-item.template 1;
+#X obj 52 38 struct \$0.list-item.template float x float y symbol item-name
+symbol action-name float item-color float action-color;
+#X obj 44 169 filledpolygon 900 90 2 10 0 20 10 30 0 40 10 30 20 40
+30 30 40 20 30 10 40 0 30 10 20 0 10;
+#X obj 44 200 drawsymbol item-name 43 13;
+#X obj 52 86 route click;
+#X obj 52 114 s \$0.activate-item;
+#X connect 0 0 3 0;
+#X connect 3 0 4 0;
+#X restore 219 81 pd \$0.list-item.template;
+#N canvas 121 475 450 300 activate-item 0;
+#X obj 67 75 r \$0.activate-item;
+#X obj 68 131 get \$0.list-item.template item-name action-name;
+#X obj 68 160 outlet;
+#X obj 394 162 outlet;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 1 1 3 0;
+#X restore 34 128 pd activate-item;
+#X obj 34 48 inlet;
+#X obj 34 77 route list;
+#X obj 34 166 outlet;
+#X obj 143 166 outlet;
+#X connect 3 0 6 0;
+#X connect 3 1 7 0;
+#X connect 4 0 5 0;
+#X connect 5 0 1 0;
diff --git a/ds-designer-help.pd b/ds-designer-help.pd
index c396379..71f57c4 100644
--- a/ds-designer-help.pd
+++ b/ds-designer-help.pd
@@ -1,6 +1,16 @@
-#N canvas 346 399 450 300 10;
+#N struct 1006.vertex.array.template float x float y array vertex.array
+1006.vertex.template;
+#N struct 1006.vertex.template float x float y float vert.x float vert.y
+;
+#N struct 1006.intersection.template float x float y float vert.x float
+vert.y;
+#N struct 1006.grid.y.template float y;
+#N struct 1006.grid.x.template float x;
+#N canvas 35 257 450 300 10;
#X obj 48 133 ds-designer;
#X text 9 20 ds-designer: a tool for drawing complex shapes with [drawpolygon]/[filledpolygon]/[drawcurve]/[filledcurve]
;
#X text 252 252 2009 Luke Iannini;
#X text 257 267 proyekto.net;
+#X msg 48 166 1 0 0 1 1 2 0 3 1 4 2 3 3 4 4 3 3 2 4 1 3 0 2 1 1 0;
+#X connect 0 0 4 0;
diff --git a/ds-designer.pd b/ds-designer.pd
index dd2b067..62d5e52 100644
--- a/ds-designer.pd
+++ b/ds-designer.pd
@@ -1,218 +1,161 @@
-#N struct 1002.vertex.array.template float x float y array vertex.array
-1002.vertex.template;
-#N struct 1002.vertex.template float x float y float vert.x float vert.y
+#N struct 1006.vertex.array.template float x float y array vertex.array
+1006.vertex.template;
+#N struct 1006.vertex.template float x float y float vert.x float vert.y
;
-#N struct 1002.intersection.template float x float y float vert.x float
+#N struct 1006.intersection.template float x float y float vert.x float
vert.y;
-#N struct 1002.grid.y.template float y;
-#N struct 1002.grid.x.template float x;
-#N canvas 916 311 479 259 10;
-#N canvas 400 22 515 519 \$0.canvas 1;
-#X scalar 1002.vertex.array.template 0 0 \; 100 50 2 1 \; 150 100 3
-2 \; 200 50 4 1 \; 250 100 5 2 \; 200 150 4 3 \; 250 200 5 4 \; 200
-250 4 5 \; 150 200 3 4 \; 100 250 2 5 \; 50 200 1 4 \; 100 150 2 3
-\; 50 100 1 2 \; \;;
-#X scalar 1002.intersection.template 0 0 0 0 \;;
-#X scalar 1002.intersection.template 50 0 1 0 \;;
-#X scalar 1002.intersection.template 100 0 2 0 \;;
-#X scalar 1002.intersection.template 150 0 3 0 \;;
-#X scalar 1002.intersection.template 200 0 4 0 \;;
-#X scalar 1002.intersection.template 250 0 5 0 \;;
-#X scalar 1002.intersection.template 300 0 6 0 \;;
-#X scalar 1002.intersection.template 350 0 7 0 \;;
-#X scalar 1002.intersection.template 400 0 8 0 \;;
-#X scalar 1002.intersection.template 450 0 9 0 \;;
-#X scalar 1002.intersection.template 0 50 0 1 \;;
-#X scalar 1002.intersection.template 50 50 1 1 \;;
-#X scalar 1002.intersection.template 100 50 2 1 \;;
-#X scalar 1002.intersection.template 150 50 3 1 \;;
-#X scalar 1002.intersection.template 200 50 4 1 \;;
-#X scalar 1002.intersection.template 250 50 5 1 \;;
-#X scalar 1002.intersection.template 300 50 6 1 \;;
-#X scalar 1002.intersection.template 350 50 7 1 \;;
-#X scalar 1002.intersection.template 400 50 8 1 \;;
-#X scalar 1002.intersection.template 450 50 9 1 \;;
-#X scalar 1002.intersection.template 0 100 0 2 \;;
-#X scalar 1002.intersection.template 50 100 1 2 \;;
-#X scalar 1002.intersection.template 100 100 2 2 \;;
-#X scalar 1002.intersection.template 150 100 3 2 \;;
-#X scalar 1002.intersection.template 200 100 4 2 \;;
-#X scalar 1002.intersection.template 250 100 5 2 \;;
-#X scalar 1002.intersection.template 300 100 6 2 \;;
-#X scalar 1002.intersection.template 350 100 7 2 \;;
-#X scalar 1002.intersection.template 400 100 8 2 \;;
-#X scalar 1002.intersection.template 450 100 9 2 \;;
-#X scalar 1002.intersection.template 0 150 0 3 \;;
-#X scalar 1002.intersection.template 50 150 1 3 \;;
-#X scalar 1002.intersection.template 100 150 2 3 \;;
-#X scalar 1002.intersection.template 150 150 3 3 \;;
-#X scalar 1002.intersection.template 200 150 4 3 \;;
-#X scalar 1002.intersection.template 250 150 5 3 \;;
-#X scalar 1002.intersection.template 300 150 6 3 \;;
-#X scalar 1002.intersection.template 350 150 7 3 \;;
-#X scalar 1002.intersection.template 400 150 8 3 \;;
-#X scalar 1002.intersection.template 450 150 9 3 \;;
-#X scalar 1002.intersection.template 0 200 0 4 \;;
-#X scalar 1002.intersection.template 50 200 1 4 \;;
-#X scalar 1002.intersection.template 100 200 2 4 \;;
-#X scalar 1002.intersection.template 150 200 3 4 \;;
-#X scalar 1002.intersection.template 200 200 4 4 \;;
-#X scalar 1002.intersection.template 250 200 5 4 \;;
-#X scalar 1002.intersection.template 300 200 6 4 \;;
-#X scalar 1002.intersection.template 350 200 7 4 \;;
-#X scalar 1002.intersection.template 400 200 8 4 \;;
-#X scalar 1002.intersection.template 450 200 9 4 \;;
-#X scalar 1002.intersection.template 0 250 0 5 \;;
-#X scalar 1002.intersection.template 50 250 1 5 \;;
-#X scalar 1002.intersection.template 100 250 2 5 \;;
-#X scalar 1002.intersection.template 150 250 3 5 \;;
-#X scalar 1002.intersection.template 200 250 4 5 \;;
-#X scalar 1002.intersection.template 250 250 5 5 \;;
-#X scalar 1002.intersection.template 300 250 6 5 \;;
-#X scalar 1002.intersection.template 350 250 7 5 \;;
-#X scalar 1002.intersection.template 400 250 8 5 \;;
-#X scalar 1002.intersection.template 450 250 9 5 \;;
-#X scalar 1002.intersection.template 0 300 0 6 \;;
-#X scalar 1002.intersection.template 50 300 1 6 \;;
-#X scalar 1002.intersection.template 100 300 2 6 \;;
-#X scalar 1002.intersection.template 150 300 3 6 \;;
-#X scalar 1002.intersection.template 200 300 4 6 \;;
-#X scalar 1002.intersection.template 250 300 5 6 \;;
-#X scalar 1002.intersection.template 300 300 6 6 \;;
-#X scalar 1002.intersection.template 350 300 7 6 \;;
-#X scalar 1002.intersection.template 400 300 8 6 \;;
-#X scalar 1002.intersection.template 450 300 9 6 \;;
-#X scalar 1002.intersection.template 0 350 0 7 \;;
-#X scalar 1002.intersection.template 50 350 1 7 \;;
-#X scalar 1002.intersection.template 100 350 2 7 \;;
-#X scalar 1002.intersection.template 150 350 3 7 \;;
-#X scalar 1002.intersection.template 200 350 4 7 \;;
-#X scalar 1002.intersection.template 250 350 5 7 \;;
-#X scalar 1002.intersection.template 300 350 6 7 \;;
-#X scalar 1002.intersection.template 350 350 7 7 \;;
-#X scalar 1002.intersection.template 400 350 8 7 \;;
-#X scalar 1002.intersection.template 450 350 9 7 \;;
-#X scalar 1002.intersection.template 0 400 0 8 \;;
-#X scalar 1002.intersection.template 50 400 1 8 \;;
-#X scalar 1002.intersection.template 100 400 2 8 \;;
-#X scalar 1002.intersection.template 150 400 3 8 \;;
-#X scalar 1002.intersection.template 200 400 4 8 \;;
-#X scalar 1002.intersection.template 250 400 5 8 \;;
-#X scalar 1002.intersection.template 300 400 6 8 \;;
-#X scalar 1002.intersection.template 350 400 7 8 \;;
-#X scalar 1002.intersection.template 400 400 8 8 \;;
-#X scalar 1002.intersection.template 450 400 9 8 \;;
-#X scalar 1002.intersection.template 0 450 0 9 \;;
-#X scalar 1002.intersection.template 50 450 1 9 \;;
-#X scalar 1002.intersection.template 100 450 2 9 \;;
-#X scalar 1002.intersection.template 150 450 3 9 \;;
-#X scalar 1002.intersection.template 200 450 4 9 \;;
-#X scalar 1002.intersection.template 250 450 5 9 \;;
-#X scalar 1002.intersection.template 300 450 6 9 \;;
-#X scalar 1002.intersection.template 350 450 7 9 \;;
-#X scalar 1002.intersection.template 400 450 8 9 \;;
-#X scalar 1002.intersection.template 450 450 9 9 \;;
-#X scalar 1002.grid.y.template 0 \;;
-#X scalar 1002.grid.y.template 50 \;;
-#X scalar 1002.grid.y.template 100 \;;
-#X scalar 1002.grid.y.template 150 \;;
-#X scalar 1002.grid.y.template 200 \;;
-#X scalar 1002.grid.y.template 250 \;;
-#X scalar 1002.grid.y.template 300 \;;
-#X scalar 1002.grid.y.template 350 \;;
-#X scalar 1002.grid.y.template 400 \;;
-#X scalar 1002.grid.y.template 450 \;;
-#X scalar 1002.grid.x.template 0 \;;
-#X scalar 1002.grid.x.template 50 \;;
-#X scalar 1002.grid.x.template 100 \;;
-#X scalar 1002.grid.x.template 150 \;;
-#X scalar 1002.grid.x.template 200 \;;
-#X scalar 1002.grid.x.template 250 \;;
-#X scalar 1002.grid.x.template 300 \;;
-#X scalar 1002.grid.x.template 350 \;;
-#X scalar 1002.grid.x.template 400 \;;
-#X scalar 1002.grid.x.template 450 \;;
+#N struct 1006.grid.y.template float y;
+#N struct 1006.grid.x.template float x;
+#N canvas 637 400 639 371 10;
+#N canvas 332 236 524 521 \$0.canvas 0;
+#X scalar 1006.vertex.array.template 0 0 \; 50 0 1 0 \; 0 50 0 1 \;
+50 100 1 2 \; 0 150 0 3 \; 50 200 1 4 \; 100 150 2 3 \; 150 200 3 4
+\; 200 150 4 3 \; 150 100 3 2 \; 200 50 4 1 \; 150 0 3 0 \; 100 50
+2 1 \; 50 0 1 0 \; \;;
+#X scalar 1006.intersection.template 0 0 0 0 \;;
+#X scalar 1006.intersection.template 50 0 1 0 \;;
+#X scalar 1006.intersection.template 100 0 2 0 \;;
+#X scalar 1006.intersection.template 150 0 3 0 \;;
+#X scalar 1006.intersection.template 200 0 4 0 \;;
+#X scalar 1006.intersection.template 250 0 5 0 \;;
+#X scalar 1006.intersection.template 300 0 6 0 \;;
+#X scalar 1006.intersection.template 350 0 7 0 \;;
+#X scalar 1006.intersection.template 400 0 8 0 \;;
+#X scalar 1006.intersection.template 450 0 9 0 \;;
+#X scalar 1006.intersection.template 500 0 10 0 \;;
+#X scalar 1006.intersection.template 0 50 0 1 \;;
+#X scalar 1006.intersection.template 50 50 1 1 \;;
+#X scalar 1006.intersection.template 100 50 2 1 \;;
+#X scalar 1006.intersection.template 150 50 3 1 \;;
+#X scalar 1006.intersection.template 200 50 4 1 \;;
+#X scalar 1006.intersection.template 250 50 5 1 \;;
+#X scalar 1006.intersection.template 300 50 6 1 \;;
+#X scalar 1006.intersection.template 350 50 7 1 \;;
+#X scalar 1006.intersection.template 400 50 8 1 \;;
+#X scalar 1006.intersection.template 450 50 9 1 \;;
+#X scalar 1006.intersection.template 500 50 10 1 \;;
+#X scalar 1006.intersection.template 0 100 0 2 \;;
+#X scalar 1006.intersection.template 50 100 1 2 \;;
+#X scalar 1006.intersection.template 100 100 2 2 \;;
+#X scalar 1006.intersection.template 150 100 3 2 \;;
+#X scalar 1006.intersection.template 200 100 4 2 \;;
+#X scalar 1006.intersection.template 250 100 5 2 \;;
+#X scalar 1006.intersection.template 300 100 6 2 \;;
+#X scalar 1006.intersection.template 350 100 7 2 \;;
+#X scalar 1006.intersection.template 400 100 8 2 \;;
+#X scalar 1006.intersection.template 450 100 9 2 \;;
+#X scalar 1006.intersection.template 500 100 10 2 \;;
+#X scalar 1006.intersection.template 0 150 0 3 \;;
+#X scalar 1006.intersection.template 50 150 1 3 \;;
+#X scalar 1006.intersection.template 100 150 2 3 \;;
+#X scalar 1006.intersection.template 150 150 3 3 \;;
+#X scalar 1006.intersection.template 200 150 4 3 \;;
+#X scalar 1006.intersection.template 250 150 5 3 \;;
+#X scalar 1006.intersection.template 300 150 6 3 \;;
+#X scalar 1006.intersection.template 350 150 7 3 \;;
+#X scalar 1006.intersection.template 400 150 8 3 \;;
+#X scalar 1006.intersection.template 450 150 9 3 \;;
+#X scalar 1006.intersection.template 500 150 10 3 \;;
+#X scalar 1006.intersection.template 0 200 0 4 \;;
+#X scalar 1006.intersection.template 50 200 1 4 \;;
+#X scalar 1006.intersection.template 100 200 2 4 \;;
+#X scalar 1006.intersection.template 150 200 3 4 \;;
+#X scalar 1006.intersection.template 200 200 4 4 \;;
+#X scalar 1006.intersection.template 250 200 5 4 \;;
+#X scalar 1006.intersection.template 300 200 6 4 \;;
+#X scalar 1006.intersection.template 350 200 7 4 \;;
+#X scalar 1006.intersection.template 400 200 8 4 \;;
+#X scalar 1006.intersection.template 450 200 9 4 \;;
+#X scalar 1006.intersection.template 500 200 10 4 \;;
+#X scalar 1006.intersection.template 0 250 0 5 \;;
+#X scalar 1006.intersection.template 50 250 1 5 \;;
+#X scalar 1006.intersection.template 100 250 2 5 \;;
+#X scalar 1006.intersection.template 150 250 3 5 \;;
+#X scalar 1006.intersection.template 200 250 4 5 \;;
+#X scalar 1006.intersection.template 250 250 5 5 \;;
+#X scalar 1006.intersection.template 300 250 6 5 \;;
+#X scalar 1006.intersection.template 350 250 7 5 \;;
+#X scalar 1006.intersection.template 400 250 8 5 \;;
+#X scalar 1006.intersection.template 450 250 9 5 \;;
+#X scalar 1006.intersection.template 500 250 10 5 \;;
+#X scalar 1006.intersection.template 0 300 0 6 \;;
+#X scalar 1006.intersection.template 50 300 1 6 \;;
+#X scalar 1006.intersection.template 100 300 2 6 \;;
+#X scalar 1006.intersection.template 150 300 3 6 \;;
+#X scalar 1006.intersection.template 200 300 4 6 \;;
+#X scalar 1006.intersection.template 250 300 5 6 \;;
+#X scalar 1006.intersection.template 300 300 6 6 \;;
+#X scalar 1006.intersection.template 350 300 7 6 \;;
+#X scalar 1006.intersection.template 400 300 8 6 \;;
+#X scalar 1006.intersection.template 450 300 9 6 \;;
+#X scalar 1006.intersection.template 500 300 10 6 \;;
+#X scalar 1006.intersection.template 0 350 0 7 \;;
+#X scalar 1006.intersection.template 50 350 1 7 \;;
+#X scalar 1006.intersection.template 100 350 2 7 \;;
+#X scalar 1006.intersection.template 150 350 3 7 \;;
+#X scalar 1006.intersection.template 200 350 4 7 \;;
+#X scalar 1006.intersection.template 250 350 5 7 \;;
+#X scalar 1006.intersection.template 300 350 6 7 \;;
+#X scalar 1006.intersection.template 350 350 7 7 \;;
+#X scalar 1006.intersection.template 400 350 8 7 \;;
+#X scalar 1006.intersection.template 450 350 9 7 \;;
+#X scalar 1006.intersection.template 500 350 10 7 \;;
+#X scalar 1006.intersection.template 0 400 0 8 \;;
+#X scalar 1006.intersection.template 50 400 1 8 \;;
+#X scalar 1006.intersection.template 100 400 2 8 \;;
+#X scalar 1006.intersection.template 150 400 3 8 \;;
+#X scalar 1006.intersection.template 200 400 4 8 \;;
+#X scalar 1006.intersection.template 250 400 5 8 \;;
+#X scalar 1006.intersection.template 300 400 6 8 \;;
+#X scalar 1006.intersection.template 350 400 7 8 \;;
+#X scalar 1006.intersection.template 400 400 8 8 \;;
+#X scalar 1006.intersection.template 450 400 9 8 \;;
+#X scalar 1006.intersection.template 500 400 10 8 \;;
+#X scalar 1006.intersection.template 0 450 0 9 \;;
+#X scalar 1006.intersection.template 50 450 1 9 \;;
+#X scalar 1006.intersection.template 100 450 2 9 \;;
+#X scalar 1006.intersection.template 150 450 3 9 \;;
+#X scalar 1006.intersection.template 200 450 4 9 \;;
+#X scalar 1006.intersection.template 250 450 5 9 \;;
+#X scalar 1006.intersection.template 300 450 6 9 \;;
+#X scalar 1006.intersection.template 350 450 7 9 \;;
+#X scalar 1006.intersection.template 400 450 8 9 \;;
+#X scalar 1006.intersection.template 450 450 9 9 \;;
+#X scalar 1006.intersection.template 500 450 10 9 \;;
+#X scalar 1006.intersection.template 0 500 0 10 \;;
+#X scalar 1006.intersection.template 50 500 1 10 \;;
+#X scalar 1006.intersection.template 100 500 2 10 \;;
+#X scalar 1006.intersection.template 150 500 3 10 \;;
+#X scalar 1006.intersection.template 200 500 4 10 \;;
+#X scalar 1006.intersection.template 250 500 5 10 \;;
+#X scalar 1006.intersection.template 300 500 6 10 \;;
+#X scalar 1006.intersection.template 350 500 7 10 \;;
+#X scalar 1006.intersection.template 400 500 8 10 \;;
+#X scalar 1006.intersection.template 450 500 9 10 \;;
+#X scalar 1006.intersection.template 500 500 10 10 \;;
+#X scalar 1006.grid.y.template 0 \;;
+#X scalar 1006.grid.y.template 50 \;;
+#X scalar 1006.grid.y.template 100 \;;
+#X scalar 1006.grid.y.template 150 \;;
+#X scalar 1006.grid.y.template 200 \;;
+#X scalar 1006.grid.y.template 250 \;;
+#X scalar 1006.grid.y.template 300 \;;
+#X scalar 1006.grid.y.template 350 \;;
+#X scalar 1006.grid.y.template 400 \;;
+#X scalar 1006.grid.y.template 450 \;;
+#X scalar 1006.grid.y.template 500 \;;
+#X scalar 1006.grid.x.template 0 \;;
+#X scalar 1006.grid.x.template 50 \;;
+#X scalar 1006.grid.x.template 100 \;;
+#X scalar 1006.grid.x.template 150 \;;
+#X scalar 1006.grid.x.template 200 \;;
+#X scalar 1006.grid.x.template 250 \;;
+#X scalar 1006.grid.x.template 300 \;;
+#X scalar 1006.grid.x.template 350 \;;
+#X scalar 1006.grid.x.template 400 \;;
+#X scalar 1006.grid.x.template 450 \;;
+#X scalar 1006.grid.x.template 500 \;;
#X restore 40 29 pd \$0.canvas;
-#N canvas 738 215 412 554 grid 0;
-#X obj 138 151 ds-begin pd-\$0.canvas;
-#X obj 82 171 f;
-#X obj 107 171 + 1;
-#X obj 82 143 until;
-#X msg 82 114 10;
-#X obj 82 225 append \$0.grid.x.template x;
-#X obj 110 254 append \$0.grid.y.template y;
-#X msg 137 114 0;
-#X msg 187 70 clear;
-#X obj 187 101 s pd-\$0.canvas;
-#X obj 206 381 ds-begin pd-\$0.canvas;
-#X obj 35 380 f;
-#X obj 60 380 + 1;
-#X obj 35 359 until;
-#X msg 205 344 0;
-#X obj 35 317 t b b b;
-#X msg 35 338 100;
-#X obj 35 425 t a a;
-#X obj 82 87 t b b b b;
-#X obj 36 476 t a a;
-#X obj 35 505 append \$0.intersection.template x y vert.x vert.y;
-#X obj 35 401 * 50;
-#X obj 82 193 * 50;
-#X obj 35 451 mod 500;
-#X obj 86 475 / 50;
-#X obj 155 477 * 50;
-#X obj 155 451 div 500;
-#X obj 35 9 inlet;
-#X obj 122 315 s \$0.init-canvas;
-#X obj 66 30 loadbang;
-#X obj 35 46 t b b;
-#X obj 250 22 loadbang;
-#X msg 250 48 vis 1;
-#X obj 77 9 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
--1;
-#X connect 0 0 5 1;
-#X connect 0 0 6 1;
-#X connect 1 0 2 0;
-#X connect 1 0 22 0;
-#X connect 2 0 1 1;
-#X connect 3 0 1 0;
-#X connect 4 0 3 0;
-#X connect 7 0 1 1;
-#X connect 8 0 9 0;
-#X connect 10 0 20 4;
-#X connect 11 0 12 0;
-#X connect 11 0 21 0;
-#X connect 12 0 11 1;
-#X connect 13 0 11 0;
-#X connect 14 0 11 1;
-#X connect 15 0 16 0;
-#X connect 15 1 10 0;
-#X connect 15 2 14 0;
-#X connect 15 2 28 0;
-#X connect 16 0 13 0;
-#X connect 17 0 23 0;
-#X connect 17 1 26 0;
-#X connect 18 0 4 0;
-#X connect 18 1 0 0;
-#X connect 18 2 7 0;
-#X connect 18 3 8 0;
-#X connect 19 0 20 0;
-#X connect 19 1 24 0;
-#X connect 21 0 17 0;
-#X connect 22 0 5 0;
-#X connect 22 0 6 0;
-#X connect 23 0 19 0;
-#X connect 24 0 20 2;
-#X connect 25 0 20 1;
-#X connect 26 0 20 3;
-#X connect 26 0 25 0;
-#X connect 27 0 30 0;
-#X connect 29 0 30 0;
-#X connect 30 0 15 0;
-#X connect 30 1 18 0;
-#X connect 31 0 32 0;
-#X connect 32 0 9 0;
-#X connect 33 0 30 0;
-#X restore 250 186 pd grid;
#N canvas 853 469 450 300 \$0.grid.x.template 0;
#X obj 53 55 struct \$0.grid.x.template float x;
#X obj 54 113 drawpolygon 0 1 0 0 0 500;
@@ -227,21 +170,34 @@ vert.y;
#X obj 15 19 struct \$0.vertex.template float x float y float vert.x
float vert.y;
#X obj 86 247 filledpolygon 990 909 1 -2 -2 2 -2 2 2 -2 2 -2 -2;
-#X obj 30 80 print;
+#X obj 15 80 print vertexclick;
#X connect 2 0 0 0;
#X connect 2 0 4 0;
#X restore 234 97 pd \$0.vertex.template;
-#N canvas 155 354 450 300 \$0.vertex.array.template 0;
+#N canvas 750 358 516 416 \$0.vertex.array.template 0;
#X obj 8 26 struct \$0.vertex.array.template float x float y array
vertex.array \$0.vertex.template;
-#X obj 18 177 plot curve vertex.array 9 2 0 0;
-#X obj 18 217 plot vertex.array 9 2 0 0;
-#X obj 12 73 r \$0.curved?.s;
-#X obj 12 96 sel 0 1;
-#X msg 42 125 0;
-#X msg 42 144 1;
-#X msg 82 125 0;
-#X msg 82 144 1;
+#X obj 245 166 plot curve vertex.array 9 2 0 0;
+#X obj 245 186 plot vertex.array 9 2 0 0;
+#X obj 239 62 r \$0.curved?.s;
+#X obj 239 85 sel 0 1;
+#X msg 269 114 0;
+#X msg 269 133 1;
+#X msg 309 114 0;
+#X msg 309 133 1;
+#X obj 8 63 route click;
+#X obj 8 289 element \$0.vertex.array.template vertex.array;
+#X obj 8 320 get \$0.vertex.template x y vert.x vert.y;
+#X obj 9 347 pack f f f f;
+#X obj 9 372 s \$0.vertex-description;
+#X obj 8 248 t b a;
+#X msg 8 269 0;
+#X obj 8 179 r \$0.close-shape;
+#X obj 375 76 loadbang;
+#X msg 374 99 0;
+#X obj 8 224 ds-first pd-\$0.canvas \$0.vertex.array.template;
+#X obj 8 201 t b;
+#X connect 0 0 9 0;
#X connect 3 0 4 0;
#X connect 4 0 5 0;
#X connect 4 0 6 0;
@@ -251,42 +207,62 @@ vertex.array \$0.vertex.template;
#X connect 6 0 2 0;
#X connect 7 0 2 0;
#X connect 8 0 1 0;
+#X connect 10 0 11 0;
+#X connect 11 0 12 0;
+#X connect 11 1 12 1;
+#X connect 11 2 12 2;
+#X connect 11 3 12 3;
+#X connect 12 0 13 0;
+#X connect 14 0 15 0;
+#X connect 14 1 10 1;
+#X connect 15 0 10 0;
+#X connect 16 0 20 0;
+#X connect 17 0 18 0;
+#X connect 18 0 4 0;
+#X connect 19 0 14 0;
+#X connect 20 0 19 0;
#X restore 234 117 pd \$0.vertex.array.template;
-#N canvas 688 22 450 300 \$0.intersection.template 0;
+#N canvas 866 124 450 300 \$0.intersection.template 0;
#X obj 15 55 route click;
#X obj 15 19 struct \$0.intersection.template float x float y float
vert.x float vert.y;
#X text 114 56 click an intersection to spawn a vertex;
#X obj 15 78 s \$0.spawn-vertex;
#X obj 86 246 filledpolygon 900 90 1 -4 -4 4 -4 4 4 -4 4 -4 -4;
+#X obj 70 140 print;
#X connect 0 0 3 0;
#X connect 1 0 0 0;
+#X connect 1 0 5 0;
#X restore 234 67 pd \$0.intersection.template;
#N canvas 332 236 1076 560 spawn-vertex 0;
#X obj 15 21 r \$0.spawn-vertex;
-#X obj 306 194 getsize \$0.vertex.array.template vertex.array;
-#X obj 306 257 setsize \$0.vertex.array.template vertex.array;
-#X obj 306 171 t a a;
-#X obj 306 235 + 1;
-#X obj 194 155 t a a;
-#X obj 194 295 element \$0.vertex.array.template vertex.array;
-#X obj 194 239 t b a;
-#X obj 194 272 f;
-#X obj 194 134 ds-first pd-\$0.canvas \$0.vertex.array.template;
-#X obj 15 347 get \$0.intersection.template x y vert.x vert.y;
-#X obj 15 429 set \$0.vertex.template x y vert.x vert.y;
-#X obj 15 394 pack f f f f;
-#X obj 682 244 append \$0.vertex.array.template x y;
-#X msg 682 218 0 0;
-#X obj 779 218 ds-begin pd-\$0.canvas;
-#X obj 682 189 t b b;
-#X msg 682 298 0;
-#X obj 682 270 t b a;
-#X obj 15 50 t a b;
-#X obj 682 322 element \$0.vertex.array.template vertex.array;
-#X obj 645 150 once;
-#X obj 681 122 r \$0.init-canvas;
-#X connect 0 0 19 0;
+#X obj 306 234 getsize \$0.vertex.array.template vertex.array;
+#X obj 306 297 setsize \$0.vertex.array.template vertex.array;
+#X obj 306 211 t a a;
+#X obj 306 275 + 1;
+#X obj 194 195 t a a;
+#X obj 194 335 element \$0.vertex.array.template vertex.array;
+#X obj 194 279 t b a;
+#X obj 194 312 f;
+#X obj 194 174 ds-first pd-\$0.canvas \$0.vertex.array.template;
+#X obj 15 469 set \$0.vertex.template x y vert.x vert.y;
+#X obj 682 284 append \$0.vertex.array.template x y;
+#X msg 682 258 0 0;
+#X obj 779 258 ds-begin pd-\$0.canvas;
+#X obj 682 229 t b b;
+#X msg 682 338 0;
+#X obj 15 210 t a b;
+#X obj 682 362 element \$0.vertex.array.template vertex.array;
+#X obj 645 190 once;
+#X obj 681 162 r \$0.init-canvas;
+#X obj 15 47 get \$0.intersection.template x y vert.x vert.y;
+#X obj 15 74 pack f f f f;
+#X obj 15 145 r \$0.vertex-description;
+#X obj 15 101 s \$0.vertex-description;
+#X text 73 123 API : );
+#X obj 742 309 list-value-extend \$0.shape-list;
+#X obj 682 309 t b a a;
+#X connect 0 0 20 0;
#X connect 1 0 4 0;
#X connect 3 0 1 0;
#X connect 3 1 2 1;
@@ -294,71 +270,197 @@ vert.x float vert.y;
#X connect 4 0 8 1;
#X connect 5 0 7 0;
#X connect 5 1 3 0;
-#X connect 6 0 11 4;
+#X connect 6 0 10 4;
#X connect 7 0 8 0;
#X connect 7 1 6 1;
#X connect 8 0 6 0;
#X connect 9 0 5 0;
-#X connect 9 1 21 0;
-#X connect 10 0 12 0;
-#X connect 10 1 12 1;
-#X connect 10 2 12 2;
-#X connect 10 3 12 3;
+#X connect 9 1 18 0;
+#X connect 11 0 26 0;
#X connect 12 0 11 0;
-#X connect 13 0 18 0;
-#X connect 14 0 13 0;
-#X connect 15 0 13 2;
-#X connect 16 0 14 0;
-#X connect 16 1 15 0;
-#X connect 17 0 20 0;
-#X connect 18 0 17 0;
-#X connect 18 1 20 1;
-#X connect 19 0 10 0;
-#X connect 19 1 9 0;
-#X connect 20 0 11 4;
-#X connect 21 0 16 0;
-#X connect 22 0 21 1;
+#X connect 13 0 11 2;
+#X connect 14 0 12 0;
+#X connect 14 1 13 0;
+#X connect 15 0 17 0;
+#X connect 16 0 10 0;
+#X connect 16 1 9 0;
+#X connect 17 0 10 4;
+#X connect 18 0 14 0;
+#X connect 19 0 18 1;
+#X connect 20 0 21 0;
+#X connect 20 1 21 1;
+#X connect 20 2 21 2;
+#X connect 20 3 21 3;
+#X connect 21 0 23 0;
+#X connect 22 0 16 0;
+#X connect 26 0 15 0;
+#X connect 26 1 17 1;
+#X connect 26 2 25 0;
#X restore 234 142 pd spawn-vertex;
-#X msg 45 208 10 0 20 10 30 0 40 10 30 20 40 30 30 40 20 30 10 40 0
-30 10 20 0 10;
#X obj 250 167 bng 15 250 50 0 empty empty reset-drawing 17 7 0 10
-262144 -1 -1;
-#N canvas 0 22 453 392 generate-coordlist 0;
+#N canvas 0 22 454 428 generate-coordlist 0;
#X obj 26 50 inlet;
#X obj 26 133 ds-dump-array \$0.vertex.array.template vertex.array
;
#X obj 26 167 get \$0.vertex.template vert.x vert.y;
-#X msg 26 299 add2 \$1 \$2;
+#X msg 26 321 add2 \$1 \$2;
#X obj 26 206 pack f f;
#X obj 26 99 ds-first pd-\$0.canvas \$0.vertex.array.template;
-#X obj 26 262 list-apply * 1;
-#X floatatom 139 263 5 0 0 0 - - -;
-#X obj 26 78 t a b;
+#X obj 26 232 list-apply * 1;
#X msg 68 78 set;
-#X obj 26 241 list-apply + 0;
-#X msg 139 241 -1;
-#X text 168 239 diag-offset;
-#X obj 25 339 outlet;
-#X text 181 263 scaling;
-#X connect 0 0 8 0;
+#X obj 25 361 outlet;
+#X obj 26 78 t b b;
+#X obj 26 290 list-mapx 2;
+#X obj 147 254 unpack f f;
+#X obj 146 319 +;
+#X obj 213 319 +;
+#X obj 145 342 pack f f;
+#X obj 120 212 r \$0.scale.s;
+#X obj 164 273 r \$0.offset.x.s;
+#X obj 231 293 r \$0.offset.x.s;
+#X connect 0 0 9 0;
#X connect 1 0 2 0;
#X connect 2 0 4 0;
#X connect 2 1 4 1;
-#X connect 3 0 13 0;
-#X connect 4 0 10 0;
+#X connect 3 0 8 0;
+#X connect 4 0 6 0;
#X connect 5 0 1 0;
-#X connect 6 0 3 0;
-#X connect 7 0 6 2;
-#X connect 8 0 5 0;
-#X connect 8 1 9 0;
-#X connect 9 0 13 0;
-#X connect 10 0 6 0;
-#X connect 11 0 10 2;
+#X connect 6 0 10 0;
+#X connect 7 0 8 0;
+#X connect 9 0 5 0;
+#X connect 9 1 7 0;
+#X connect 10 0 3 0;
+#X connect 10 1 11 0;
+#X connect 11 0 12 0;
+#X connect 11 1 13 0;
+#X connect 12 0 14 0;
+#X connect 13 0 14 1;
+#X connect 14 0 10 1;
+#X connect 15 0 6 2;
+#X connect 16 0 12 1;
+#X connect 17 0 13 1;
#X restore 45 144 pd generate-coordlist;
-#X obj 46 119 bng 15 250 50 0 empty empty get-points 17 7 0 10 -262144
+#X obj 45 119 bng 15 250 50 0 empty empty get-points 17 7 0 10 -262144
-1 -1;
-#X obj 46 73 tgl 15 0 \$0.curved?.s \$0.curved?.r curved? 17 7 0 10
+#X obj 46 63 tgl 15 0 \$0.curved?.s \$0.curved?.r curved? 17 7 0 10
-262144 -1 -1 0 1;
-#X connect 9 0 1 0;
-#X connect 10 0 8 0;
-#X connect 11 0 10 0;
+#X text -78 631 comment;
+#X obj -117 639;
+#X text 61 271 TODO: add variable/scaling/quantize support - option-click
+a vertex to edit its properties;
+#X text 57 303 use symbol-boxes and substitution for variables: one
+ID'd symbol-box per variable \, so you can assign a variable-id when
+editing your vertexes. surprising: you can use $vars in [symbol/ boxes
+and they work;
+#X obj 45 190 outlet;
+#X obj 46 83 bng 15 250 50 0 \$0.close-shape empty close-shape 17 7
+0 10 -262144 -1 -1;
+#X obj -78 91 nbx 5 14 0.0001 1e+37 0 0 \$0.scale.s \$0.scale.r scale
+0 -8 0 10 -262144 -1 -1 1 256;
+#X obj -78 121 nbx 5 14 0 1e+37 0 0 \$0.offset.x.s \$0.offset.x.r x-offset
+0 -8 0 10 -262144 -1 -1 0 256;
+#X obj -78 151 nbx 5 14 0 1e+37 0 0 \$0.offset.y.s \$0.offset.y.r y-offset
+0 -8 0 10 -262144 -1 -1 0 256;
+#N canvas 21 138 412 554 build-canvas 0;
+#X obj 138 151 ds-begin pd-\$0.canvas;
+#X obj 82 171 f;
+#X obj 107 171 + 1;
+#X obj 82 143 until;
+#X obj 82 225 append \$0.grid.x.template x;
+#X obj 110 254 append \$0.grid.y.template y;
+#X msg 137 114 0;
+#X msg 187 70 clear;
+#X obj 187 101 s pd-\$0.canvas;
+#X obj 206 381 ds-begin pd-\$0.canvas;
+#X obj 35 380 f;
+#X obj 60 380 + 1;
+#X obj 35 359 until;
+#X msg 205 344 0;
+#X obj 35 317 t b b b;
+#X obj 35 405 t a a;
+#X obj 82 87 t b b b b;
+#X obj 35 456 t a a;
+#X obj 35 515 append \$0.intersection.template x y vert.x vert.y;
+#X obj 82 193 * 50;
+#X obj 35 9 inlet;
+#X obj 122 315 s \$0.init-canvas;
+#X obj 66 30 loadbang;
+#X obj 35 46 t b b;
+#X obj 250 22 loadbang;
+#X msg 250 48 vis 1;
+#X obj 77 9 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X msg 35 338 121;
+#X msg 82 114 11;
+#X obj 35 431 mod 11;
+#X obj 155 431 div 11;
+#X obj 35 485 * 50;
+#X obj 155 477 * 50;
+#X connect 0 0 4 1;
+#X connect 0 0 5 1;
+#X connect 1 0 2 0;
+#X connect 1 0 19 0;
+#X connect 2 0 1 1;
+#X connect 3 0 1 0;
+#X connect 6 0 1 1;
+#X connect 7 0 8 0;
+#X connect 9 0 18 4;
+#X connect 10 0 11 0;
+#X connect 10 0 15 0;
+#X connect 11 0 10 1;
+#X connect 12 0 10 0;
+#X connect 13 0 10 1;
+#X connect 14 0 27 0;
+#X connect 14 1 9 0;
+#X connect 14 2 13 0;
+#X connect 14 2 21 0;
+#X connect 15 0 29 0;
+#X connect 15 1 30 0;
+#X connect 16 0 28 0;
+#X connect 16 1 0 0;
+#X connect 16 2 6 0;
+#X connect 16 3 7 0;
+#X connect 17 0 31 0;
+#X connect 17 1 18 2;
+#X connect 19 0 4 0;
+#X connect 19 0 5 0;
+#X connect 20 0 23 0;
+#X connect 22 0 23 0;
+#X connect 23 0 14 0;
+#X connect 23 1 16 0;
+#X connect 24 0 25 0;
+#X connect 25 0 8 0;
+#X connect 26 0 23 0;
+#X connect 27 0 12 0;
+#X connect 28 0 3 0;
+#X connect 29 0 17 0;
+#X connect 30 0 18 3;
+#X connect 30 0 32 0;
+#X connect 31 0 18 0;
+#X connect 32 0 18 1;
+#X restore 250 186 pd build-canvas;
+#N canvas 0 22 503 437 init 1;
+#X msg 162 172 \; \$1.scale.r 1 \;;
+#X obj 162 101 loadbang;
+#X obj 162 123 \$0;
+#X obj 191 123 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 115 293 ds-first pd-\$0.canvas \$0.vertex.array.template;
+#X obj 120 332 list prepend;
+#X obj 220 333 t a;
+#X obj 103 252 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 121 352 print;
+#X connect 1 0 2 0;
+#X connect 2 0 0 0;
+#X connect 3 0 2 0;
+#X connect 4 0 5 0;
+#X connect 5 0 6 0;
+#X connect 5 0 8 0;
+#X connect 6 0 5 1;
+#X connect 7 0 4 0;
+#X restore 253 227 pd init;
+#X connect 7 0 20 0;
+#X connect 8 0 15 0;
+#X connect 9 0 8 0;
diff --git a/ds-slider-o.pd b/ds-slider-o.pd
index bfaf127..60be2a9 100644
--- a/ds-slider-o.pd
+++ b/ds-slider-o.pd
@@ -1,6 +1,6 @@
-#N struct 1003.advslider float a float frequency float midinote;
+#N struct 1007.advslider float a float frequency float midinote;
#N canvas 946 115 475 427 10;
-#N canvas 493 22 723 750 advslider 1;
+#N canvas 493 22 723 750 advslider 0;
#X obj 284 412 route click change;
#X msg 121 588 traverse pd-\$1.gop \, bang;
#X obj 121 609 pointer;
@@ -104,32 +104,28 @@ a(0:200)(0:110) a(0:200)(50:250);
#X connect 44 0 23 0;
#X restore 221 59 pd advslider;
#N canvas 72 231 364 527 \$0.gop 0;
-#X scalar 1003.advslider 18 18200 133.443 \;;
+#X scalar 1007.advslider 0 0 0 \;;
#X coords 0 0 130 260 130 260 1;
#X restore 50 100 pd \$0.gop;
#X obj 221 109 outlet;
#X obj 203 200 propertybang;
#X msg 203 224 vis 1;
-#N canvas 34 46 245 497 \$0.properties 0;
-#X obj 31 36 nbx 5 14 -1e+37 1e+37 0 0 empty empty width 0 -8 0 10
--262144 -1 -1 0 256;
-#X obj 111 36 nbx 5 14 -1e+37 1e+37 0 0 empty empty height 0 -8 0 10
--262144 -1 -1 0 256;
-#X obj 31 96 nbx 5 14 -1e+37 1e+37 0 0 empty empty bottom 0 -8 0 10
--262144 -1 -1 0 256;
-#X obj 111 96 nbx 5 14 -1e+37 1e+37 0 0 empty empty top 0 -8 0 10 -262144
--1 -1 0 256;
-#X symbolatom 16 261 30 0 0 2 label - -;
-#X obj 78 436 bng 40 250 50 0 empty empty OK 10 20 0 20 -204800 -1
--1;
-#X symbolatom 76 141 20 0 0 2 send-name - -;
-#X symbolatom 76 191 20 0 0 2 receive-name - -;
-#X obj 13 141 tgl 15 0 empty empty $ 17 7 0 12 -262144 -1 -1 0 1;
-#X obj 39 141 nbx 1 15 0 9 0 0 empty empty empty 0 -8 0 10 -262144
--1 -1 0 256;
-#X obj 13 191 tgl 15 0 empty empty $ 17 7 0 12 -262144 -1 -1 0 1;
-#X obj 39 191 nbx 1 15 0 9 0 0 empty empty empty 0 -8 0 10 -262144
--1 -1 0 256;
+#N canvas 34 46 224 489 \$0.properties 1;
+#X obj 31 36 nbx 5 14 -1e+37 1e+37 0 0 \$0.width.s \$0.width.r width
+0 -8 0 10 -262144 -1 -1 0 256;
+#X obj 111 36 nbx 5 14 -1e+37 1e+37 0 0 \$0.height.s \$0.height.r height
+0 -8 0 10 -262144 -1 -1 0 256;
+#X obj 31 96 nbx 5 14 -1e+37 1e+37 0 0 \$0.bottom.s \$0.bottom.r bottom
+0 -8 0 10 -262144 -1 -1 0 256;
+#X obj 111 96 nbx 5 14 -1e+37 1e+37 0 0 \$0.top.s \$0.top.r top 0 -8
+0 10 -262144 -1 -1 0 256;
+#X symbolatom 16 261 30 0 0 2 label #0.label.r #0.label.s;
+#X obj 78 436 bng 40 250 50 0 \$0.ok.s \$0.ok.r OK 10 20 0 20 -204800
+-1 -1;
+#X symbolatom 36 141 20 0 0 2 send-name #0.send-name.r #0.send-name.s
+;
+#X symbolatom 36 191 20 0 0 2 receive-name #0.receive-name.r #0.receive-name.s
+;
#X obj 71 304 color.rgbset;
#X restore 198 316 pd \$0.properties;
#X obj 203 248 s pd-\$0.properties;
diff --git a/pal/clean.pd b/pal/clean.pd
new file mode 100755
index 0000000..2389c08
--- /dev/null
+++ b/pal/clean.pd
@@ -0,0 +1,65 @@
+#N canvas 39 0 867 425 12;
+#X msg 49 267 0 0 0 0;
+#X obj 26 10 r \$1-clean;
+#X obj 49 299 set \$2 x y x0 y0;
+#X obj 26 139 pointer \$2;
+#X msg 64 199 next;
+#X obj 64 170 t b;
+#X obj 26 37 t b;
+#X obj 200 300 get \$2 id;
+#X obj 26 225 t b b a a;
+#X obj 287 300 symbol \$2;
+#X obj 287 273 loadbang;
+#X obj 200 504 pack f s s s;
+#X obj 372 247 r \$1-send-name;
+#X msg 200 536 \; \$2\$1 send \$3 \; \$2\$1 receive \$4;
+#X obj 200 325 t a a;
+#X obj 262 403 makefilename;
+#X obj 442 331 makefilename %s%%d;
+#X msg 442 356 set \$1;
+#X obj 372 272 sel empty;
+#X msg 372 356 set \$1;
+#X msg 372 297 symbol empty;
+#X obj 532 246 r \$1-receive-name;
+#X obj 293 439 makefilename;
+#X obj 602 331 makefilename %s%%d;
+#X msg 602 356 set \$1;
+#X obj 532 272 sel empty;
+#X msg 532 356 set \$1;
+#X msg 532 297 symbol empty;
+#X obj 26 95 ptraverse \$1 next;
+#X connect 0 0 2 0;
+#X connect 1 0 6 0;
+#X connect 3 0 8 0;
+#X connect 3 1 5 0;
+#X connect 4 0 3 0;
+#X connect 5 0 4 0;
+#X connect 6 0 28 0;
+#X connect 7 0 14 0;
+#X connect 8 0 4 0;
+#X connect 8 1 0 0;
+#X connect 8 2 2 4;
+#X connect 8 3 7 0;
+#X connect 9 0 11 1;
+#X connect 10 0 9 0;
+#X connect 11 0 13 0;
+#X connect 12 0 18 0;
+#X connect 14 0 11 0;
+#X connect 14 1 15 0;
+#X connect 14 1 22 0;
+#X connect 15 0 11 2;
+#X connect 16 0 17 0;
+#X connect 17 0 15 0;
+#X connect 18 0 20 0;
+#X connect 18 1 16 0;
+#X connect 19 0 15 0;
+#X connect 20 0 19 0;
+#X connect 21 0 25 0;
+#X connect 22 0 11 3;
+#X connect 23 0 24 0;
+#X connect 24 0 22 0;
+#X connect 25 0 27 0;
+#X connect 25 1 23 0;
+#X connect 26 0 22 0;
+#X connect 27 0 26 0;
+#X connect 28 0 3 0;
diff --git a/pal/color-presets.txt b/pal/color-presets.txt
new file mode 100755
index 0000000..f22f820
--- /dev/null
+++ b/pal/color-presets.txt
@@ -0,0 +1,100 @@
+0
+0
+0
+220
+220
+220
+184
+184
+184
+252
+196
+196
+252
+224
+196
+252
+252
+196
+196
+252
+196
+196
+252
+252
+196
+196
+252
+224
+196
+252
+156
+156
+156
+124
+124
+124
+96
+96
+96
+252
+4
+0
+252
+128
+0
+248
+252
+0
+0
+252
+4
+0
+248
+252
+4
+0
+252
+156
+0
+252
+64
+64
+64
+32
+32
+32
+0
+0
+0
+84
+16
+16
+84
+52
+16
+80
+84
+16
+12
+68
+16
+12
+64
+68
+16
+16
+84
+44
+0
+76
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
diff --git a/pal/constrain.pd b/pal/constrain.pd
new file mode 100755
index 0000000..6fc6f0b
--- /dev/null
+++ b/pal/constrain.pd
@@ -0,0 +1,62 @@
+#N canvas 20 86 1004 682 12;
+#X obj 280 286 outlet;
+#X obj 413 286 outlet;
+#X obj 280 18 inlet;
+#X obj 413 18 inlet;
+#X obj 24 143 pack s 1;
+#X obj 24 196 route + x y;
+#X obj 280 216 spigot;
+#X obj 413 216 spigot;
+#X msg 358 177 0;
+#X obj 24 170 list trim;
+#X obj 24 65 t a b;
+#N canvas 171 66 344 216 vis 1;
+#X text 25 26 x;
+#X text 161 32 y;
+#X obj 66 30 inlet;
+#X obj 199 30 inlet;
+#X obj 66 70 s \$2-x-vis;
+#X obj 199 70 s \$2-y-vis;
+#X connect 2 0 4 0;
+#X connect 3 0 5 0;
+#X restore 24 292 pd vis;
+#X msg 52 244 0;
+#X msg 90 244 0;
+#X obj 24 119 symbol;
+#X msg 130 244 0;
+#X obj 24 17 r \$1-constrain;
+#X obj 144 17 r \$1-global-vis;
+#X obj 197 87 b;
+#X obj 144 63 moses 1;
+#X obj 154 41 s \$2-vis-box;
+#X connect 2 0 6 0;
+#X connect 3 0 7 0;
+#X connect 4 0 9 0;
+#X connect 5 0 7 1;
+#X connect 5 0 11 0;
+#X connect 5 0 11 1;
+#X connect 5 0 6 1;
+#X connect 5 1 6 1;
+#X connect 5 1 12 0;
+#X connect 5 2 7 1;
+#X connect 5 2 13 0;
+#X connect 5 2 11 1;
+#X connect 5 3 15 0;
+#X connect 6 0 0 0;
+#X connect 7 0 1 0;
+#X connect 8 0 6 1;
+#X connect 8 0 7 1;
+#X connect 9 0 5 0;
+#X connect 10 0 14 0;
+#X connect 10 1 8 0;
+#X connect 12 0 11 1;
+#X connect 13 0 11 0;
+#X connect 14 0 4 0;
+#X connect 15 0 11 1;
+#X connect 15 0 11 0;
+#X connect 16 0 10 0;
+#X connect 17 0 19 0;
+#X connect 17 0 20 0;
+#X connect 18 0 14 0;
+#X connect 19 0 5 0;
+#X connect 19 1 18 0;
diff --git a/pal/getGUIsize.pd b/pal/getGUIsize.pd
new file mode 100755
index 0000000..aa6fa08
--- /dev/null
+++ b/pal/getGUIsize.pd
@@ -0,0 +1,44 @@
+#N canvas 0 0 1004 682 12;
+#X obj 95 224 t a;
+#X obj 32 224 t a;
+#X obj 32 63 t f f;
+#X obj 95 63 t f f;
+#X obj 32 24 inlet;
+#X obj 95 24 inlet;
+#X obj 32 263 outlet;
+#X obj 95 263 outlet;
+#X obj 173 24 loadbang;
+#X obj 173 105 \$1;
+#X obj 228 105 \$2;
+#X obj 173 155 + \$3;
+#X obj 228 155 + \$4;
+#X obj 32 102 -;
+#X obj 95 103 -;
+#X obj 32 156 +;
+#X obj 95 158 +;
+#X text 284 104 \$1- initial width;
+#X text 284 123 \$2- initial height;
+#X text 284 142 \$3- x offset for anchor;
+#X text 284 161 \$4- y offset for anchor;
+#X connect 0 0 7 0;
+#X connect 0 0 16 1;
+#X connect 1 0 6 0;
+#X connect 1 0 15 1;
+#X connect 2 0 13 1;
+#X connect 2 1 13 0;
+#X connect 3 0 14 1;
+#X connect 3 1 14 0;
+#X connect 4 0 2 0;
+#X connect 5 0 3 0;
+#X connect 8 0 9 0;
+#X connect 8 0 10 0;
+#X connect 9 0 11 0;
+#X connect 9 0 15 1;
+#X connect 10 0 12 0;
+#X connect 10 0 16 1;
+#X connect 11 0 13 1;
+#X connect 12 0 14 1;
+#X connect 13 0 15 0;
+#X connect 14 0 16 0;
+#X connect 15 0 1 0;
+#X connect 16 0 0 0;
diff --git a/pal/if-numscroll.pd b/pal/if-numscroll.pd
new file mode 100755
index 0000000..21c8c24
--- /dev/null
+++ b/pal/if-numscroll.pd
@@ -0,0 +1,58 @@
+#N canvas 0 64 1004 682 12;
+#X obj 187 220 f;
+#X obj 9 170 sel 0;
+#X obj 150 163 sel 0;
+#X obj 46 223 f;
+#X obj 150 92 t a a;
+#X obj 9 96 t a a;
+#X obj 187 189 b;
+#X obj 46 199 b;
+#X obj 9 13 inlet;
+#X obj 9 41 t a a;
+#X obj 104 14 inlet;
+#X obj 203 14 inlet;
+#X obj 9 67 get \$2 xsize ysize;
+#X obj 46 293 set \$2 x0;
+#X obj 187 290 set \$2 y0;
+#X text 338 47 \$3- initial width;
+#X text 339 68 \$4- initial height;
+#X obj 268 14 loadbang;
+#X obj 268 71 \$3;
+#X obj 304 71 \$4;
+#X obj 9 143 -;
+#X obj 150 139 -;
+#X obj 282 188 \$5;
+#X obj 323 188 \$6;
+#X obj 282 155 loadbang;
+#X obj 46 268 +;
+#X obj 187 265 +;
+#X connect 0 0 26 0;
+#X connect 1 1 7 0;
+#X connect 2 1 6 0;
+#X connect 3 0 25 0;
+#X connect 4 0 21 0;
+#X connect 4 1 0 1;
+#X connect 5 0 20 0;
+#X connect 5 1 3 1;
+#X connect 6 0 0 0;
+#X connect 7 0 3 0;
+#X connect 8 0 9 0;
+#X connect 9 0 12 0;
+#X connect 9 1 13 1;
+#X connect 9 1 14 1;
+#X connect 10 0 20 1;
+#X connect 11 0 21 1;
+#X connect 12 0 5 0;
+#X connect 12 1 4 0;
+#X connect 17 0 18 0;
+#X connect 17 0 19 0;
+#X connect 18 0 20 1;
+#X connect 19 0 21 1;
+#X connect 20 0 1 0;
+#X connect 21 0 2 0;
+#X connect 22 0 25 1;
+#X connect 23 0 26 1;
+#X connect 24 0 22 0;
+#X connect 24 0 23 0;
+#X connect 25 0 13 0;
+#X connect 26 0 14 0;
diff --git a/pal/label-tgl.pd b/pal/label-tgl.pd
new file mode 100755
index 0000000..804e718
--- /dev/null
+++ b/pal/label-tgl.pd
@@ -0,0 +1,18 @@
+#N canvas 0 0 450 300 12;
+#X obj 122 94 sel 0 1;
+#X obj 122 66 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 11 20 loadbang;
+#X msg 11 46 0;
+#X obj 122 194 outlet;
+#X msg 122 119 symbol empty;
+#X msg 148 148 symbol LABEL;
+#X obj 122 28 r \$1-label-tgl;
+#X connect 0 0 5 0;
+#X connect 0 1 6 0;
+#X connect 1 0 0 0;
+#X connect 2 0 3 0;
+#X connect 3 0 1 0;
+#X connect 5 0 4 0;
+#X connect 6 0 4 0;
+#X connect 7 0 1 0;
diff --git a/pal/label.pd b/pal/label.pd
new file mode 100755
index 0000000..bd81ec8
--- /dev/null
+++ b/pal/label.pd
@@ -0,0 +1,54 @@
+#N canvas 0 0 1004 682 12;
+#X obj 224 511 outlet;
+#X obj 224 224 spigot 0;
+#X obj 224 259 sel 0 1;
+#X msg 323 449 symbol LABEL;
+#X obj 85 240 spigot;
+#X obj 250 423 symbol;
+#X obj 323 392 spigot 1;
+#X obj 85 267 t a b;
+#X msg 384 360 0;
+#X obj 250 392 spigot 0;
+#X msg 311 359 1;
+#X msg 224 475 symbol empty;
+#X obj 71 194 symbol;
+#X obj 224 12 r \$1-label-tgl;
+#X obj 7 166 r \$1-label-sym;
+#X obj 130 135 f;
+#X obj 239 63 sel 1;
+#X obj 285 37 r \$2-lock;
+#X obj 130 167 spigot;
+#X msg 276 172 0;
+#X obj 239 90 t b b;
+#X msg 238 133 1;
+#X connect 1 0 2 0;
+#X connect 2 0 11 0;
+#X connect 2 1 6 0;
+#X connect 2 1 9 0;
+#X connect 3 0 0 0;
+#X connect 4 0 7 0;
+#X connect 5 0 0 0;
+#X connect 6 0 3 0;
+#X connect 7 0 0 0;
+#X connect 7 1 8 0;
+#X connect 7 1 10 0;
+#X connect 8 0 6 1;
+#X connect 9 0 5 0;
+#X connect 10 0 9 1;
+#X connect 11 0 0 0;
+#X connect 12 0 5 1;
+#X connect 13 0 1 0;
+#X connect 13 0 15 0;
+#X connect 14 0 4 0;
+#X connect 14 0 12 0;
+#X connect 15 0 18 0;
+#X connect 16 0 20 0;
+#X connect 16 1 19 0;
+#X connect 17 0 1 1;
+#X connect 17 0 16 0;
+#X connect 18 0 4 1;
+#X connect 19 0 4 1;
+#X connect 19 0 18 1;
+#X connect 20 0 15 0;
+#X connect 20 1 21 0;
+#X connect 21 0 18 1;
diff --git a/pal/linORlog.pd b/pal/linORlog.pd
new file mode 100755
index 0000000..b080108
--- /dev/null
+++ b/pal/linORlog.pd
@@ -0,0 +1,15 @@
+#N canvas 0 0 450 300 12;
+#X obj 11 13 inlet;
+#X obj 11 160 outlet;
+#X obj 11 130 symbol;
+#X msg 11 88 lin;
+#X msg 47 88 log;
+#X obj 11 46 sel 0 1;
+#X obj 90 46 loadbang;
+#X connect 0 0 5 0;
+#X connect 2 0 1 0;
+#X connect 3 0 2 0;
+#X connect 4 0 2 0;
+#X connect 5 0 3 0;
+#X connect 5 1 4 0;
+#X connect 6 0 3 0;
diff --git a/pal/lock.pd b/pal/lock.pd
new file mode 100755
index 0000000..9402ebd
--- /dev/null
+++ b/pal/lock.pd
@@ -0,0 +1,71 @@
+#N canvas 342 105 601 459 12;
+#X msg 213 136 1;
+#X msg 113 136 0;
+#X obj 129 62 == 0;
+#X obj 55 82 spigot 1;
+#X obj 18 -11 inlet;
+#X obj 18 408 outlet;
+#X obj 113 173 s \$1-other-structs;
+#X obj 113 193 r \$1-other-structs;
+#X obj 113 266 s \$2-lock;
+#X obj 113 225 spigot;
+#X msg 158 136 0;
+#X msg 76 136 1;
+#X obj 282 265 pointer \$2;
+#X msg 239 266 next;
+#X obj 18 22 t a a;
+#X obj 55 107 t a b b b b;
+#X obj 132 324 t b a;
+#X obj 55 298 unpack s p;
+#X obj 81 25 r \$2-pappend;
+#X obj 282 290 t b b a;
+#X obj 18 47 t a;
+#X obj 226 49 list prepend click;
+#X obj 226 24 route click select;
+#X obj 296 74 list prepend select;
+#X obj 282 239 ptraverse \$1 next;
+#X obj 282 213 t b;
+#X obj 308 372 set \$2 int-c ext-c;
+#X obj 132 374 set \$2 int-c ext-c;
+#X msg 132 349 900 0;
+#X msg 308 348 888 666;
+#X connect 0 0 8 0;
+#X connect 1 0 6 0;
+#X connect 2 0 3 1;
+#X connect 3 0 15 0;
+#X connect 4 0 14 0;
+#X connect 4 0 22 0;
+#X connect 7 0 2 0;
+#X connect 7 0 9 0;
+#X connect 7 0 25 0;
+#X connect 9 0 8 0;
+#X connect 10 0 9 1;
+#X connect 11 0 9 1;
+#X connect 11 0 2 0;
+#X connect 12 0 19 0;
+#X connect 12 1 13 0;
+#X connect 13 0 12 0;
+#X connect 14 0 20 0;
+#X connect 14 1 3 0;
+#X connect 15 0 17 0;
+#X connect 15 1 11 0;
+#X connect 15 2 1 0;
+#X connect 15 3 10 0;
+#X connect 15 4 0 0;
+#X connect 16 0 28 0;
+#X connect 16 1 27 2;
+#X connect 17 1 16 0;
+#X connect 18 0 20 0;
+#X connect 18 0 15 0;
+#X connect 19 0 13 0;
+#X connect 19 1 29 0;
+#X connect 19 2 26 2;
+#X connect 20 0 5 0;
+#X connect 21 0 15 0;
+#X connect 22 0 21 0;
+#X connect 22 1 23 0;
+#X connect 23 0 15 0;
+#X connect 24 0 12 0;
+#X connect 25 0 24 0;
+#X connect 28 0 27 0;
+#X connect 29 0 26 0;
diff --git a/pal/pal-help.pd b/pal/pal-help.pd
new file mode 100755
index 0000000..b7c008b
--- /dev/null
+++ b/pal/pal-help.pd
@@ -0,0 +1,90 @@
+#N struct 411-color-select float x float y;
+#N canvas 0 0 1004 682 12;
+#X obj 633 24 pal 411 help;
+#X obj 501 -2 namecanvas help;
+#X text 478 69 1 Click to start-->;
+#X text 480 407 6 Click the L -->;
+#X text 496 423 to enable labels;
+#X text 292 453 the word "LABEL";
+#X text 292 485 the right to change;
+#X text 498 514 from the palette;
+#X text 481 497 8 Click a color;
+#X text 293 500 font size/ left number;
+#X text 64 -1 <-- 2 Click and drag the red anchor;
+#X text 629 -4 <-- namecanvas object (required);
+#X text 110 17 (in non-editmode = stretch \; in editmode = move);
+#X text 492 306 & color menus -->;
+#X text 289 423 <-- 7 In non-editmode \,;
+#X text 293 438 click and drag;
+#X text 22 508 5 Click and drag the;
+#X text 38 524 color bars above \, or;
+#X text 38 541 scroll the numbers to;
+#X text 36 558 change rgb values;
+#X text 32 577 (You can also click the;
+#X text 37 594 number and type the value);
+#X text 290 469 (Scroll the number on;
+#X text 292 516 chooses font face);
+#X text 460 327 9 Click for handle-->;
+#X text 87 255 10 In non-editmode \, click and drag the;
+#X text 0 356 3 Move object;
+#X text 60 372 here -->;
+#X text 110 286 all GUI properties (Click the;
+#X text 639 251 f;
+#X text 109 302 anchor to make them reappear);
+#X text 496 603 GUI properties;
+#X text 492 531 (<TAB> for;
+#X text 494 549 shortcuts \, then;
+#X text 494 566 type "x" to to;
+#X text 495 584 toggle between;
+#X obj 12 80 cnv 15 438 163 empty empty empty 20 12 0 10 -233017 -66577
+0;
+#X obj 7 75 cnv 15 438 163 empty empty empty 20 12 0 10 -1 -1 0;
+#X obj 8 76 cnv 15 436 161 empty empty empty 20 12 0 10 -262144 -1
+0;
+#X text 43 100 pal is an abstraction to aid in creating and;
+#X text 42 118 developing GUI frontends in pure data. It uses;
+#X text 43 136 pd's native data structures to provide easy;
+#X text 21 79 pal- GUI Editor and Customizable Color Palette;
+#X text 42 153 access to all the properties of pd's GUI objects.;
+#X text 43 180 To use multiple pal objects in different windows \,
+;
+#X text 43 195 give each pal a different number for its first;
+#X text 43 211 creation argument;
+#X obj 747 200 cnv 15 183 447 empty empty empty 20 12 0 10 -233017
+-66577 0;
+#X obj 742 195 cnv 15 183 447 empty empty empty 20 12 0 10 -1 -1 0
+;
+#X obj 743 196 cnv 15 181 445 empty empty empty 20 12 0 10 -253760
+-1 0;
+#X text 755 232 hide all ds anchors;
+#X text 755 270 constrain x/y;
+#X text 753 250 <TAB> = on/ f = off;
+#X text 758 536 you can type "e" to;
+#X text 757 554 toggle editmode;
+#X text 779 201 -- Buttons --;
+#X text 756 305 rgb motion;
+#X text 755 288 textbox motion;
+#X text 755 367 reinit helpers;
+#X text 756 432 Hex!;
+#X text 795 459 then <ENTER>.;
+#X text 797 476 Also turns on;
+#X text 797 493 shortcuts);
+#X text 756 407 <--- Type the label;
+#X text 756 385 move anchors to top;
+#X text 795 441 to type label \,;
+#X text 794 424 (or use <TAB>;
+#X text 759 520 With shortcuts on \,;
+#X text 750 587 send name on Clean_up;
+#X text 750 607 recv name on Clean_up;
+#X text 460 288 4 Click for label -->;
+#X text 112 270 red triangle toward the right to reveal;
+#X obj 747 29 cnv 15 187 103 empty empty empty 20 12 0 10 -233017 -66577
+0;
+#X obj 742 24 cnv 15 187 103 empty empty empty 20 12 0 10 -1 -1 0;
+#X obj 743 25 cnv 15 185 101 empty empty empty 20 12 0 10 -257981 -1
+0;
+#X text 746 25 <-- pal creation args:;
+#X text 769 83 (optional/ defaults;
+#X text 771 101 to "patch");
+#X text 748 45 * a number (required);
+#X text 748 64 * name of patch;
diff --git a/pal/pal.pd b/pal/pal.pd
new file mode 100755
index 0000000..b64ac00
--- /dev/null
+++ b/pal/pal.pd
@@ -0,0 +1,1899 @@
+#N struct 1-color-select float x float y;
+#N canvas 0 32 1004 682 12;
+#X msg 127 417 clean;
+#X obj 4 209 tgl 17 0 \$1-dummy nothing Hide 24 8 0 10 -166441 -262131
+-1 0 1;
+#X obj 4 43 bng 20 250 50 0 \$1-dummy \$1-bng-t bng 27 10 0 14 -262131
+-241291 -1;
+#X obj 4 63 bng 20 250 50 0 \$1-dummy \$1-tgl-t tgl 27 10 0 14 -262131
+-241291 -1;
+#X obj 4 103 bng 20 250 50 0 \$1-dummy \$1-vsl-t vsl 27 10 0 14 -262131
+-241291 -1;
+#X obj 4 123 bng 20 250 50 0 \$1-dummy \$1-hsl-t hsl 27 10 0 14 -262131
+-241291 -1;
+#X obj 4 143 bng 20 250 50 0 \$1-dummy \$1-vradio-t vradio 27 10 0
+14 -262131 -241291 -1;
+#X obj 4 163 bng 20 250 50 0 \$1-dummy \$1-hradio-t hradio 27 10 0
+14 -262131 -241291 -1;
+#X obj 4 183 bng 20 250 50 0 \$1-dummy \$1-cnv-t cnv 27 10 0 14 -262131
+-241291 -1;
+#X obj 4 228 tgl 17 0 \$1-dummy \$1-shortcuts-t Shortcuts 24 8 0 10
+-166441 -262131 -1 0 1;
+#N canvas 137 0 425 265 init 0;
+#X obj 19 18 loadbang;
+#X obj 19 47 list prepend pd- \$1;
+#N canvas 533 184 450 451 get-args 0;
+#X obj 18 8 loadbang;
+#X obj 166 111 makefilename $%dt;
+#X msg 87 68 1;
+#X msg 41 91 2;
+#X obj 18 33 t b b b b;
+#X obj 65 228 sel something;
+#X obj 123 20 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 65 144 symbol \$1t;
+#X obj 18 171 symbol \$2t;
+#X msg 65 322 patch;
+#X obj 65 349 symbol;
+#X obj 65 378 s \$1-patchname;
+#X obj 166 341 symbol \$2;
+#X obj 166 253 b;
+#X text 159 202 yes;
+#X text 71 202 no;
+#X obj 166 280 f;
+#X obj 206 280 + 1;
+#X obj 206 310 sel 2;
+#X msg 87 295 0;
+#X obj 65 265 spigot 1;
+#X connect 0 0 4 0;
+#X connect 1 0 5 1;
+#X connect 2 0 1 0;
+#X connect 3 0 1 0;
+#X connect 4 0 8 0;
+#X connect 4 1 3 0;
+#X connect 4 2 7 0;
+#X connect 4 3 2 0;
+#X connect 5 0 20 0;
+#X connect 5 1 13 0;
+#X connect 6 0 4 0;
+#X connect 7 0 5 0;
+#X connect 8 0 5 0;
+#X connect 9 0 10 0;
+#X connect 10 0 11 0;
+#X connect 12 0 11 0;
+#X connect 13 0 16 0;
+#X connect 16 0 17 0;
+#X connect 17 0 16 1;
+#X connect 17 0 18 0;
+#X connect 18 0 12 0;
+#X connect 19 0 20 1;
+#X connect 20 0 9 0;
+#X connect 20 0 19 0;
+#X restore 185 47 pd get-args;
+#X msg 19 77 \; \$2-label-sym-t symbol abel \; \$2-send-name-t symbol
+empty \; \$2-receive-name-t symbol empty \; \$2-send-name-t set Send
+\; \$2-receive-name-t set Receive \; \$2-label-anchor-t 1 \; \$2-rgb-anchor-t
+1 \; \$2-label-vis 0 \; \$2-rgb-vis 0;
+#X connect 0 0 1 0;
+#X connect 1 0 3 0;
+#X restore 357 305 pd init;
+#X text 9 43 b;
+#X text 9 63 t;
+#X text 9 103 v;
+#X text 9 123 h;
+#X text 8 142 q;
+#X text 9 163 w;
+#X text 9 183 c;
+#X obj 127 231 == 0;
+#X obj 4 361 bng 17 250 50 0 \$1-dummy nothing Clean_up 22 10 0 14
+-162280 -262131 -1;
+#X obj 4 285 tgl 17 0 \$1-dummy \$1-rgb-t RGB 24 8 0 10 -166441 -262131
+-1 0 1;
+#X obj 64 285 tgl 17 0 \$1-dummy \$1-rgb-anchor-t empty -11 23 0 10
+-166441 -262131 -1 1 1;
+#X obj 4 342 bng 17 250 50 0 \$1-dummy nothing Respawn 24 8 0 10 -162280
+-262131 -1;
+#X obj 64 266 tgl 17 0 \$1-dummy \$1-label-anchor-t empty -11 6 0 10
+-166441 -262131 -1 1 1;
+#X obj 4 266 tgl 17 0 \$1-dummy \$1-label-t Text 24 8 0 10 -166441
+-262131 -1 0 1;
+#X text 594 521 Global Label Template;
+#X text 574 499 Global Rgb Template;
+#X obj 4 323 bng 17 250 50 0 \$1-tgl-pos \$1-tgl-pos-t Helper_Pos 24
+8 0 10 -162280 -262131 -1;
+#X text 7 320 z;
+#N canvas 0 11 1004 682 shortcuts 0;
+#X obj 81 26 inlet;
+#X obj 36 76 spigot;
+#X obj 36 26 key;
+#N canvas 515 48 450 420 mode 0;
+#X obj 96 36 inlet;
+#X obj 96 88 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1
+;
+#X obj 65 205 sel 0 1;
+#X obj 12 38 loadbang;
+#X msg 12 68 0;
+#X msg 176 63 set \$1;
+#X obj 96 61 del 50;
+#X msg 65 241 symbol run;
+#X msg 162 241 symbol edit;
+#X msg 65 303 \; \$2-global-edit-t label \$1;
+#X obj 176 35 r \$1-global-editmode;
+#X obj 65 275 pack s \$1;
+#X obj 157 104 r \$1-patchname;
+#X obj 96 130 pack f s;
+#X msg 96 164 \; \$2 editmode \$1;
+#X connect 0 0 6 0;
+#X connect 1 0 2 0;
+#X connect 1 0 13 0;
+#X connect 2 0 7 0;
+#X connect 2 1 8 0;
+#X connect 3 0 4 0;
+#X connect 4 0 1 0;
+#X connect 5 0 1 0;
+#X connect 6 0 1 0;
+#X connect 7 0 11 0;
+#X connect 8 0 11 0;
+#X connect 10 0 5 0;
+#X connect 10 0 2 0;
+#X connect 11 0 9 0;
+#X connect 12 0 13 1;
+#X connect 13 0 14 0;
+#X restore 303 374 pd mode;
+#X obj 599 119 route 9;
+#X obj 599 189 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 727 139 spigot;
+#X obj 783 203 makefilename %c;
+#X obj 783 396 symbol;
+#X obj 727 169 sel 10;
+#X obj 836 337 makefilename;
+#X obj 783 232 t a a b;
+#X msg 836 363 set \$1;
+#X msg 836 304 set %s%%c;
+#X msg 711 204 set %c;
+#X msg 599 318 1;
+#X msg 623 429 color \$1 22;
+#X obj 36 174 s \$1-global-tgl;
+#X obj 67 194 s \$1-bng-t;
+#X obj 130 214 s \$1-tgl-t;
+#X obj 150 234 s \$1-vsl-t;
+#X obj 170 254 s \$1-hsl-t;
+#X obj 190 274 s \$1-vradio-t;
+#X obj 220 294 s \$1-hradio-t;
+#X obj 250 314 s \$1-cnv-t;
+#X obj 269 334 s \$1-label-t;
+#X obj 281 354 s \$1-rgb-t;
+#X obj 323 394 s \$1-tgl-pos-t;
+#X obj 345 414 s \$1-label-tgl-t;
+#X obj 368 434 s \$1-constrain-t;
+#X obj 395 454 s \$1-pdot-vis-t;
+#X obj 623 455 s \$1-label-sym-cnv;
+#X obj 783 428 s \$1-label-sym-t;
+#X obj 599 344 s \$1-label-tgl-t;
+#X obj 576 272 s \$1-shortcuts-t;
+#X obj 409 474 s \$1-nbx-t;
+#X msg 727 245 32;
+#X obj 728 269 makefilename %c;
+#X msg 728 297 set \$1;
+#X obj 37 123 sel 120 66 98 84 116 86 118 72 104 81 113 87 119 67 99
+83 115 65 97 69 101 90 122 76 108 68 100 82 114 78 110 70 102;
+#X obj 424 514 s \$1-shortcuts-t;
+#X msg 424 494 0;
+#X obj 599 214 sel 0 1;
+#X msg 576 245 0;
+#X msg 636 244 1;
+#X msg 659 399 5;
+#X msg 623 399 15;
+#X msg 772 85 1;
+#X msg 772 110 0;
+#X msg 534 119 set \$1;
+#X text 558 19 symbol "typewriter"-- accumulate a symbol;
+#X text 736 39 flush with <ENTER>;
+#X text 531 40 (for entering GUI labels);
+#X connect 0 0 1 1;
+#X connect 1 0 39 0;
+#X connect 2 0 1 0;
+#X connect 2 0 4 0;
+#X connect 4 0 5 0;
+#X connect 4 1 6 0;
+#X connect 5 0 42 0;
+#X connect 6 0 9 0;
+#X connect 7 0 11 0;
+#X connect 8 0 32 0;
+#X connect 9 0 14 0;
+#X connect 9 0 5 0;
+#X connect 9 0 36 0;
+#X connect 9 1 7 0;
+#X connect 10 0 12 0;
+#X connect 11 0 8 0;
+#X connect 11 1 10 0;
+#X connect 11 2 13 0;
+#X connect 12 0 7 0;
+#X connect 13 0 10 0;
+#X connect 14 0 7 0;
+#X connect 15 0 33 0;
+#X connect 16 0 31 0;
+#X connect 36 0 37 0;
+#X connect 37 0 38 0;
+#X connect 38 0 32 0;
+#X connect 39 0 17 0;
+#X connect 39 1 18 0;
+#X connect 39 2 18 0;
+#X connect 39 3 19 0;
+#X connect 39 4 19 0;
+#X connect 39 5 20 0;
+#X connect 39 6 20 0;
+#X connect 39 7 21 0;
+#X connect 39 8 21 0;
+#X connect 39 9 22 0;
+#X connect 39 10 22 0;
+#X connect 39 11 23 0;
+#X connect 39 12 23 0;
+#X connect 39 13 24 0;
+#X connect 39 14 24 0;
+#X connect 39 15 25 0;
+#X connect 39 16 25 0;
+#X connect 39 17 26 0;
+#X connect 39 18 26 0;
+#X connect 39 19 3 0;
+#X connect 39 20 3 0;
+#X connect 39 21 27 0;
+#X connect 39 22 27 0;
+#X connect 39 23 28 0;
+#X connect 39 24 28 0;
+#X connect 39 25 29 0;
+#X connect 39 26 29 0;
+#X connect 39 27 30 0;
+#X connect 39 28 30 0;
+#X connect 39 29 35 0;
+#X connect 39 30 35 0;
+#X connect 39 31 41 0;
+#X connect 39 32 41 0;
+#X connect 41 0 40 0;
+#X connect 41 0 49 0;
+#X connect 42 0 47 0;
+#X connect 42 0 43 0;
+#X connect 42 0 46 0;
+#X connect 42 0 15 0;
+#X connect 42 1 44 0;
+#X connect 42 1 48 0;
+#X connect 42 1 45 0;
+#X connect 43 0 34 0;
+#X connect 44 0 34 0;
+#X connect 45 0 16 0;
+#X connect 46 0 16 0;
+#X connect 47 0 6 1;
+#X connect 48 0 6 1;
+#X connect 49 0 5 0;
+#X restore 127 251 pd shortcuts;
+#X obj 4 247 bng 17 250 50 0 \$1-dummy \$1-constrain-t Constrain 24
+8 0 10 -162280 -241291 -1;
+#X text 7 245 d;
+#N canvas 385 28 492 412 constrain 0;
+#X obj 61 115 sel 0 1 2;
+#X obj 61 35 inlet;
+#X obj 61 62 f;
+#X obj 95 62 + 1;
+#X obj 61 88 % 3;
+#X msg 61 147 symbol x;
+#X msg 216 147 symbol +;
+#X obj 139 147 symbol y;
+#X obj 216 117 loadbang;
+#X msg 216 225 \; \$2-constrain-sym label \$1;
+#X obj 61 248 s \$1-constrain;
+#X obj 216 197 pack s \$1;
+#X connect 0 0 5 0;
+#X connect 0 1 7 0;
+#X connect 0 2 6 0;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 2 0 4 0;
+#X connect 3 0 2 1;
+#X connect 4 0 0 0;
+#X connect 5 0 10 0;
+#X connect 5 0 11 0;
+#X connect 6 0 10 0;
+#X connect 6 0 11 0;
+#X connect 7 0 10 0;
+#X connect 7 0 11 0;
+#X connect 8 0 6 0;
+#X connect 11 0 9 0;
+#X restore 127 271 pd constrain;
+#X obj 74 455 vradio 17 1 0 6 empty 3-vradio empty 0 -8 0 10 -262144
+-1 -1 0;
+#X obj 57 455 vradio 17 1 0 6 empty 3-vradio empty 0 -8 0 10 -262144
+-1 -1 0;
+#X obj 40 455 vradio 17 1 0 6 empty 3-vradio empty 0 -8 0 10 -262144
+-1 -1 0;
+#X obj 23 455 vradio 17 1 0 6 empty 3-vradio empty 0 -8 0 10 -262144
+-1 -1 0;
+#X obj 6 455 vradio 17 1 0 6 empty 3-vradio empty 0 -8 0 10 -262144
+-1 -1 0;
+#X obj 7 456 cnv 15 14 15 empty \$1c0 empty 20 12 0 10 -262144 -262144
+0;
+#X obj 24 456 cnv 15 14 15 empty \$1c6 empty 20 12 0 10 -262144 -262144
+0;
+#X obj 41 456 cnv 15 14 15 empty \$1c12 empty 20 12 0 10 -262144 -262144
+0;
+#X obj 58 456 cnv 15 14 15 empty \$1c18 empty 20 12 0 10 -262144 -262144
+0;
+#X obj 75 456 cnv 15 14 15 empty \$1c24 empty 20 12 0 10 -262144 -262144
+0;
+#X obj 75 473 cnv 15 14 15 empty \$1c25 empty 20 12 0 10 -262144 -262144
+0;
+#X obj 58 473 cnv 15 14 15 empty \$1c19 empty 20 12 0 10 -262144 -262144
+0;
+#X obj 41 473 cnv 15 14 15 empty \$1c13 empty 20 12 0 10 -262144 -262144
+0;
+#X obj 24 473 cnv 15 14 15 empty \$1c7 empty 20 12 0 10 -262144 -262144
+0;
+#X obj 7 473 cnv 15 14 15 empty \$1c1 empty 20 12 0 10 -262144 -262144
+0;
+#X obj 7 490 cnv 15 14 15 empty \$1c2 empty 20 12 0 10 -262144 -262144
+0;
+#X obj 24 490 cnv 15 14 15 empty \$1c8 empty 20 12 0 10 -262144 -262144
+0;
+#X obj 41 490 cnv 15 14 15 empty \$1c14 empty 20 12 0 10 -262144 -262144
+0;
+#X obj 58 490 cnv 15 14 15 empty \$1c20 empty 20 12 0 10 -262144 -262144
+0;
+#X obj 75 490 cnv 15 14 15 empty \$1c26 empty 20 12 0 10 -262144 -262144
+0;
+#X obj 75 507 cnv 15 14 15 empty \$1c27 empty 20 12 0 10 -262144 -262144
+0;
+#X obj 58 507 cnv 15 14 15 empty \$1c21 empty 20 12 0 10 -262144 -262144
+0;
+#X obj 41 507 cnv 15 14 15 empty \$1c15 empty 20 12 0 10 -262144 -262144
+0;
+#X obj 24 507 cnv 15 14 15 empty \$1c9 empty 20 12 0 10 -262144 -262144
+0;
+#X obj 7 507 cnv 15 14 15 empty \$1c3 empty 20 12 0 10 -262144 -262144
+0;
+#X obj 7 524 cnv 15 14 15 empty \$1c4 empty 20 12 0 10 -262144 -262144
+0;
+#X obj 24 524 cnv 15 14 15 empty \$1c10 empty 20 12 0 10 -262144 -262144
+0;
+#X obj 41 524 cnv 15 14 15 empty \$1c16 empty 20 12 0 10 -262144 -262144
+0;
+#X obj 58 524 cnv 15 14 15 empty \$1c22 empty 20 12 0 10 -262144 -262144
+0;
+#X obj 75 524 cnv 15 14 15 empty \$1c28 empty 20 12 0 10 -262144 -262144
+0;
+#X obj 75 541 cnv 15 14 15 empty \$1c29 empty 20 12 0 10 -262144 -262144
+0;
+#X obj 58 541 cnv 15 14 15 empty \$1c23 empty 20 12 0 10 -262144 -262144
+0;
+#X obj 41 541 cnv 15 14 15 empty \$1c17 empty 20 12 0 10 -262144 -262144
+0;
+#X obj 24 541 cnv 15 14 15 empty \$1c11 empty 20 12 0 10 -262144 -262144
+0;
+#X obj 7 541 cnv 15 14 15 empty \$1c5 empty 20 12 0 10 -262144 -262144
+0;
+#X obj 22 614 + 6;
+#X obj 57 614 + 12;
+#X obj 103 614 + 18;
+#X obj 146 614 + 24;
+#X obj 6 653 t f b;
+#X obj 6 677 f;
+#N canvas 0 0 813 398 hex2dec 0;
+#X obj 11 15 inlet;
+#X obj 101 15 inlet;
+#X obj 191 15 inlet;
+#X obj 11 218 pack f f f;
+#N canvas 457 75 305 431 hex2dec 0;
+#X obj 50 15 inlet;
+#X obj 27 374 outlet;
+#X obj 50 195 f;
+#X obj 85 195 + 1;
+#X msg 103 159 0;
+#X obj 160 283 print rgb;
+#X msg 160 257 error: not hex;
+#X obj 27 349 f;
+#X obj 27 254 t a a;
+#X obj 180 136 t b;
+#X obj 27 319 sel hex;
+#X obj 50 134 t b a b;
+#X obj 27 229 moses 256;
+#X obj 180 160 del 0;
+#N canvas 0 9 1004 682 rmv-leading-zero 0;
+#X obj 81 130 f;
+#X obj 115 130 + 1;
+#X obj 177 497 symbol;
+#X obj 28 191 route 10 11 12 13 14 15;
+#X obj 28 256 symbol;
+#X obj 28 308 symbol;
+#X obj 28 279 route symbol;
+#X obj 28 366 sel hex;
+#X msg 102 25 0;
+#X obj 96 513 f;
+#X obj 29 -2 inlet;
+#X obj 36 578 outlet;
+#X obj 29 75 until;
+#X msg 29 52 16;
+#X obj 29 24 t b a b;
+#X obj 29 99 t b;
+#X obj 28 393 t b b;
+#X msg 203 55 bang;
+#X obj 177 468 t b;
+#X obj 28 334 makefilename 0%s;
+#X obj 81 158 t a a a;
+#X obj 107 424 moses 15;
+#X obj 172 334 makefilename 0%x;
+#X obj 36 542 makefilename %x;
+#X msg 28 221 a;
+#X msg 68 221 b;
+#X msg 106 221 c;
+#X msg 143 221 d;
+#X msg 178 221 e;
+#X msg 214 220 f;
+#X connect 0 0 1 0;
+#X connect 0 0 20 0;
+#X connect 1 0 0 1;
+#X connect 2 0 11 0;
+#X connect 3 0 24 0;
+#X connect 3 1 25 0;
+#X connect 3 2 26 0;
+#X connect 3 3 27 0;
+#X connect 3 4 28 0;
+#X connect 3 5 29 0;
+#X connect 3 6 6 0;
+#X connect 4 0 6 0;
+#X connect 5 0 19 0;
+#X connect 6 0 5 0;
+#X connect 6 1 22 0;
+#X connect 7 0 16 0;
+#X connect 8 0 0 1;
+#X connect 9 0 23 0;
+#X connect 10 0 14 0;
+#X connect 12 0 15 0;
+#X connect 13 0 12 0;
+#X connect 14 0 13 0;
+#X connect 14 1 2 1;
+#X connect 14 1 7 1;
+#X connect 14 2 8 0;
+#X connect 15 0 0 0;
+#X connect 16 0 9 0;
+#X connect 16 1 17 0;
+#X connect 17 0 12 1;
+#X connect 18 0 2 0;
+#X connect 19 0 7 0;
+#X connect 20 0 3 0;
+#X connect 20 1 21 0;
+#X connect 20 2 9 1;
+#X connect 21 1 18 0;
+#X connect 22 0 7 0;
+#X connect 23 0 11 0;
+#X connect 24 0 4 0;
+#X connect 25 0 4 0;
+#X connect 26 0 4 0;
+#X connect 27 0 4 0;
+#X connect 28 0 4 0;
+#X connect 29 0 4 0;
+#X restore 50 73 pd rmv-leading-zero;
+#X obj 50 44 symbol;
+#X obj 27 287 makefilename %x;
+#X connect 0 0 15 0;
+#X connect 2 0 3 0;
+#X connect 2 0 12 0;
+#X connect 3 0 2 1;
+#X connect 4 0 2 1;
+#X connect 6 0 5 0;
+#X connect 7 0 1 0;
+#X connect 8 0 16 0;
+#X connect 8 1 7 1;
+#X connect 9 0 13 0;
+#X connect 10 0 7 0;
+#X connect 10 1 9 0;
+#X connect 11 0 2 0;
+#X connect 11 1 10 1;
+#X connect 11 2 4 0;
+#X connect 12 0 8 0;
+#X connect 12 1 6 0;
+#X connect 13 0 2 0;
+#X connect 14 0 11 0;
+#X connect 15 0 14 0;
+#X connect 16 0 10 0;
+#X restore 11 53 pd hex2dec;
+#X obj 11 180 f;
+#X obj 101 84 t b a;
+#X obj 191 82 t b a;
+#N canvas 457 75 305 431 hex2dec 0;
+#X obj 50 15 inlet;
+#X obj 27 374 outlet;
+#X obj 50 195 f;
+#X obj 85 195 + 1;
+#X msg 103 159 0;
+#X obj 160 283 print rgb;
+#X msg 160 257 error: not hex;
+#X obj 27 349 f;
+#X obj 27 254 t a a;
+#X obj 180 136 t b;
+#X obj 27 319 sel hex;
+#X obj 50 134 t b a b;
+#X obj 27 229 moses 256;
+#X obj 180 160 del 0;
+#N canvas 0 9 1004 682 rmv-leading-zero 0;
+#X obj 81 130 f;
+#X obj 115 130 + 1;
+#X obj 178 497 symbol;
+#X obj 28 191 route 10 11 12 13 14 15;
+#X obj 29 256 symbol;
+#X obj 29 308 symbol;
+#X obj 29 279 route symbol;
+#X obj 29 366 sel hex;
+#X msg 102 25 0;
+#X obj 97 513 f;
+#X obj 29 -2 inlet;
+#X obj 37 578 outlet;
+#X obj 29 75 until;
+#X msg 29 52 16;
+#X obj 29 24 t b a b;
+#X obj 29 99 t b;
+#X obj 29 393 t b b;
+#X msg 203 55 bang;
+#X obj 178 468 t b;
+#X obj 29 334 makefilename 0%s;
+#X obj 81 158 t a a a;
+#X obj 108 424 moses 15;
+#X obj 173 334 makefilename 0%x;
+#X obj 37 542 makefilename %x;
+#X msg 29 221 a;
+#X msg 69 221 b;
+#X msg 107 221 c;
+#X msg 144 221 d;
+#X msg 179 221 e;
+#X msg 215 220 f;
+#X connect 0 0 1 0;
+#X connect 0 0 20 0;
+#X connect 1 0 0 1;
+#X connect 2 0 11 0;
+#X connect 3 0 24 0;
+#X connect 3 1 25 0;
+#X connect 3 2 26 0;
+#X connect 3 3 27 0;
+#X connect 3 4 28 0;
+#X connect 3 5 29 0;
+#X connect 3 6 6 0;
+#X connect 4 0 6 0;
+#X connect 5 0 19 0;
+#X connect 6 0 5 0;
+#X connect 6 1 22 0;
+#X connect 7 0 16 0;
+#X connect 8 0 0 1;
+#X connect 9 0 23 0;
+#X connect 10 0 14 0;
+#X connect 12 0 15 0;
+#X connect 13 0 12 0;
+#X connect 14 0 13 0;
+#X connect 14 1 2 1;
+#X connect 14 1 7 1;
+#X connect 14 2 8 0;
+#X connect 15 0 0 0;
+#X connect 16 0 9 0;
+#X connect 16 1 17 0;
+#X connect 17 0 12 1;
+#X connect 18 0 2 0;
+#X connect 19 0 7 0;
+#X connect 20 0 3 0;
+#X connect 20 1 21 0;
+#X connect 20 2 9 1;
+#X connect 21 1 18 0;
+#X connect 22 0 7 0;
+#X connect 23 0 11 0;
+#X connect 24 0 4 0;
+#X connect 25 0 4 0;
+#X connect 26 0 4 0;
+#X connect 27 0 4 0;
+#X connect 28 0 4 0;
+#X connect 29 0 4 0;
+#X restore 50 73 pd rmv-leading-zero;
+#X obj 50 44 symbol;
+#X obj 27 287 makefilename %x;
+#X connect 0 0 15 0;
+#X connect 2 0 3 0;
+#X connect 2 0 12 0;
+#X connect 3 0 2 1;
+#X connect 4 0 2 1;
+#X connect 6 0 5 0;
+#X connect 7 0 1 0;
+#X connect 8 0 16 0;
+#X connect 8 1 7 1;
+#X connect 9 0 13 0;
+#X connect 10 0 7 0;
+#X connect 10 1 9 0;
+#X connect 11 0 2 0;
+#X connect 11 1 10 1;
+#X connect 11 2 4 0;
+#X connect 12 0 8 0;
+#X connect 12 1 6 0;
+#X connect 13 0 2 0;
+#X connect 14 0 11 0;
+#X connect 15 0 14 0;
+#X connect 16 0 10 0;
+#X restore 101 53 pd hex2dec;
+#N canvas 457 75 305 431 hex2dec 0;
+#X obj 50 15 inlet;
+#X obj 27 374 outlet;
+#X obj 50 195 f;
+#X obj 85 195 + 1;
+#X msg 103 159 0;
+#X obj 160 283 print rgb;
+#X msg 160 257 error: not hex;
+#X obj 27 349 f;
+#X obj 27 254 t a a;
+#X obj 180 136 t b;
+#X obj 27 319 sel hex;
+#X obj 50 134 t b a b;
+#X obj 27 229 moses 256;
+#X obj 180 160 del 0;
+#N canvas 0 9 1004 682 rmv-leading-zero 0;
+#X obj 81 130 f;
+#X obj 115 130 + 1;
+#X obj 178 497 symbol;
+#X obj 28 191 route 10 11 12 13 14 15;
+#X obj 29 256 symbol;
+#X obj 29 308 symbol;
+#X obj 29 279 route symbol;
+#X obj 29 366 sel hex;
+#X msg 102 25 0;
+#X obj 97 513 f;
+#X obj 29 -2 inlet;
+#X obj 37 578 outlet;
+#X obj 29 75 until;
+#X msg 29 52 16;
+#X obj 29 24 t b a b;
+#X obj 29 99 t b;
+#X obj 29 393 t b b;
+#X msg 203 55 bang;
+#X obj 178 468 t b;
+#X obj 29 334 makefilename 0%s;
+#X obj 81 158 t a a a;
+#X obj 108 424 moses 15;
+#X obj 173 334 makefilename 0%x;
+#X obj 37 542 makefilename %x;
+#X msg 29 221 a;
+#X msg 69 221 b;
+#X msg 107 221 c;
+#X msg 144 221 d;
+#X msg 179 221 e;
+#X msg 215 220 f;
+#X connect 0 0 1 0;
+#X connect 0 0 20 0;
+#X connect 1 0 0 1;
+#X connect 2 0 11 0;
+#X connect 3 0 24 0;
+#X connect 3 1 25 0;
+#X connect 3 2 26 0;
+#X connect 3 3 27 0;
+#X connect 3 4 28 0;
+#X connect 3 5 29 0;
+#X connect 3 6 6 0;
+#X connect 4 0 6 0;
+#X connect 5 0 19 0;
+#X connect 6 0 5 0;
+#X connect 6 1 22 0;
+#X connect 7 0 16 0;
+#X connect 8 0 0 1;
+#X connect 9 0 23 0;
+#X connect 10 0 14 0;
+#X connect 12 0 15 0;
+#X connect 13 0 12 0;
+#X connect 14 0 13 0;
+#X connect 14 1 2 1;
+#X connect 14 1 7 1;
+#X connect 14 2 8 0;
+#X connect 15 0 0 0;
+#X connect 16 0 9 0;
+#X connect 16 1 17 0;
+#X connect 17 0 12 1;
+#X connect 18 0 2 0;
+#X connect 19 0 7 0;
+#X connect 20 0 3 0;
+#X connect 20 1 21 0;
+#X connect 20 2 9 1;
+#X connect 21 1 18 0;
+#X connect 22 0 7 0;
+#X connect 23 0 11 0;
+#X connect 24 0 4 0;
+#X connect 25 0 4 0;
+#X connect 26 0 4 0;
+#X connect 27 0 4 0;
+#X connect 28 0 4 0;
+#X connect 29 0 4 0;
+#X restore 50 73 pd rmv-leading-zero;
+#X obj 50 44 symbol;
+#X obj 27 287 makefilename %x;
+#X connect 0 0 15 0;
+#X connect 2 0 3 0;
+#X connect 2 0 12 0;
+#X connect 3 0 2 1;
+#X connect 4 0 2 1;
+#X connect 6 0 5 0;
+#X connect 7 0 1 0;
+#X connect 8 0 16 0;
+#X connect 8 1 7 1;
+#X connect 9 0 13 0;
+#X connect 10 0 7 0;
+#X connect 10 1 9 0;
+#X connect 11 0 2 0;
+#X connect 11 1 10 1;
+#X connect 11 2 4 0;
+#X connect 12 0 8 0;
+#X connect 12 1 6 0;
+#X connect 13 0 2 0;
+#X connect 14 0 11 0;
+#X connect 15 0 14 0;
+#X connect 16 0 10 0;
+#X restore 191 53 pd hex2dec;
+#X obj 120 218 r \$1-hex-bang;
+#X obj 88 177 r \$1-global-blue;
+#X obj 49 151 r \$1-global-green;
+#X obj 32 126 r \$1-global-red;
+#X obj 11 251 s \$1-rgb-from-hex;
+#X connect 0 0 4 0;
+#X connect 1 0 8 0;
+#X connect 2 0 9 0;
+#X connect 3 0 14 0;
+#X connect 4 0 5 0;
+#X connect 5 0 3 0;
+#X connect 6 0 5 0;
+#X connect 6 1 3 1;
+#X connect 7 0 5 0;
+#X connect 7 1 3 2;
+#X connect 8 0 6 0;
+#X connect 9 0 7 0;
+#X connect 10 0 5 0;
+#X connect 11 0 3 2;
+#X connect 12 0 3 1;
+#X connect 13 0 5 1;
+#X restore 275 490 pd hex2dec;
+#N canvas 0 0 1004 682 dec2hex 0;
+#X msg 16 191 set \$1;
+#X msg 201 191 set \$1;
+#X msg 381 191 set \$1;
+#X obj 16 5 loadbang;
+#X obj 16 30 255;
+#X obj 23 70 r \$1-global-red;
+#X obj 201 70 r \$1-global-green;
+#X obj 381 70 r \$1-global-blue;
+#X obj 16 220 s \$1-hex-red-rcv;
+#X obj 201 220 s \$1-hex-green-rcv;
+#X obj 381 220 s \$1-hex-blue-rcv;
+#X obj 52 137 makefilename %x;
+#X obj 231 132 makefilename %x;
+#X obj 413 132 makefilename %x;
+#N canvas 0 0 238 189 add-leading-zero 0;
+#X obj 23 18 inlet;
+#X obj 23 122 outlet;
+#X obj 84 122 outlet;
+#X obj 23 49 moses 16;
+#X obj 23 86 makefilename 0%x;
+#X connect 0 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 1 2 0;
+#X connect 4 0 1 0;
+#X restore 16 102 pd add-leading-zero;
+#N canvas 0 0 238 189 add-leading-zero 0;
+#X obj 23 18 inlet;
+#X obj 23 122 outlet;
+#X obj 84 122 outlet;
+#X obj 23 49 moses 16;
+#X obj 23 86 makefilename 0%x;
+#X connect 0 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 1 2 0;
+#X connect 4 0 1 0;
+#X restore 201 100 pd add-leading-zero;
+#N canvas 0 0 238 189 add-leading-zero 0;
+#X obj 23 18 inlet;
+#X obj 23 122 outlet;
+#X obj 84 122 outlet;
+#X obj 23 49 moses 16;
+#X obj 23 86 makefilename 0%x;
+#X connect 0 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 1 2 0;
+#X connect 4 0 1 0;
+#X restore 381 100 pd add-leading-zero;
+#X connect 0 0 8 0;
+#X connect 1 0 9 0;
+#X connect 2 0 10 0;
+#X connect 3 0 4 0;
+#X connect 4 0 14 0;
+#X connect 4 0 15 0;
+#X connect 4 0 16 0;
+#X connect 5 0 14 0;
+#X connect 6 0 15 0;
+#X connect 7 0 16 0;
+#X connect 11 0 0 0;
+#X connect 12 0 1 0;
+#X connect 13 0 2 0;
+#X connect 14 0 0 0;
+#X connect 14 1 11 0;
+#X connect 15 0 1 0;
+#X connect 15 1 12 0;
+#X connect 16 0 2 0;
+#X connect 16 1 13 0;
+#X restore 275 405 pd dec2hex;
+#X text 7 283 A;
+#X text 7 264 S;
+#X obj 5 21 cnv 17 33 17 empty empty empty 5 10 0 16 -166441 -1 0;
+#X obj 1 19 cnv 17 35 17 empty \$1-global-edit-t run 3 10 0 14 -262144
+-1 0;
+#X obj 40 20 bng 16 250 50 0 \$1-constrain-t empty empty 17 7 0 10
+-262144 -1 -1;
+#X obj 43 21 cnv 14 15 17 empty empty empty 5 10 0 16 -166441 -1 0
+;
+#X obj 39 19 cnv 17 17 17 empty \$1-constrain-sym + 5 10 0 14 -262144
+-1 0;
+#X obj 64 22 bng 15 250 50 0 \$1-gopsize-t empty empty 17 7 0 10 -262144
+-262144 -1;
+#X obj 76 22 bng 15 250 50 0 \$1-gopsize-t empty empty 17 7 0 10 -262144
+-262144 -1;
+#X obj 63 21 cnv 17 28 17 empty empty empty 5 10 0 16 -166441 -1 0
+;
+#X obj 59 19 cnv 17 30 17 empty \$1-gopsize-cnv max 5 10 0 14 -262144
+-1 0;
+#X obj 4 304 tgl 17 0 \$1-pdot-global-vis \$1-pdot-vis-t Prop_Tick
+24 8 0 10 -166441 -262131 -1 0 1;
+#X text 8 301 r;
+#X text 585 548 Global Properties Slider Template;
+#X obj 107 123 pslider \$1 \$1-vsl 15 128 5 8 0 127 vsl;
+#X obj 107 203 pcnv \$1 \$1-cnv 100 60 5 5;
+#X obj 107 10 namecanvas \$1-palette-abs;
+#X obj 127 351 s \$1-rgb-vis;
+#X obj 127 331 s \$1-label-vis;
+#X obj 127 291 s \$1-label-move;
+#X obj 127 371 s \$1-label-respawn;
+#X obj 127 391 s \$1-rgb-respawn;
+#X obj 127 443 s \$1-clean;
+#X obj 127 311 s \$1-rgb-move;
+#N canvas 0 19 1004 682 \$1-color-presets 0;
+#X obj 279 7 inlet;
+#X obj 55 107 f;
+#X obj 80 154 * 3;
+#X obj 96 257 f;
+#X obj 139 258 + 1;
+#X msg 80 204 3;
+#X obj 80 230 until;
+#X obj 96 307 % 3;
+#X obj 80 181 t b a;
+#X obj 96 284 t a a;
+#X obj 96 333 route 0 1 2;
+#N canvas 299 246 606 448 RGB_____ 0;
+#X obj 22 34 inlet;
+#X obj 99 36 inlet;
+#X obj 165 37 inlet;
+#X text 27 9 red;
+#X text 97 11 green;
+#X text 169 11 blue;
+#X obj 99 231 +;
+#X obj 78 268 +;
+#X obj 78 327 outlet;
+#X obj 22 150 * -65536;
+#X obj 99 151 * -256;
+#X obj 218 117 * -1;
+#X obj 78 299 - 1;
+#X obj 22 116 f;
+#X obj 99 117 f;
+#X obj 165 76 t b b a;
+#X obj 269 262 s \$1-preset-list;
+#X obj 362 39 inlet;
+#X text 357 13 place in list;
+#X obj 269 230 pack f f f f;
+#X connect 0 0 13 1;
+#X connect 1 0 14 1;
+#X connect 2 0 15 0;
+#X connect 6 0 7 1;
+#X connect 7 0 12 0;
+#X connect 9 0 7 0;
+#X connect 10 0 6 0;
+#X connect 11 0 6 1;
+#X connect 12 0 8 0;
+#X connect 13 0 9 0;
+#X connect 13 0 19 0;
+#X connect 14 0 10 0;
+#X connect 14 0 19 1;
+#X connect 15 0 13 0;
+#X connect 15 1 14 0;
+#X connect 15 2 11 0;
+#X connect 15 2 19 2;
+#X connect 17 0 19 3;
+#X connect 19 0 16 0;
+#X restore 96 515 pd RGB_____;
+#X msg 96 576 \; \$3\$2 color \$1 22;
+#X obj 218 514 makefilename c%d;
+#X obj 55 34 r \$1-grab-color;
+#X obj 96 361 v \$1-red;
+#X obj 125 389 v \$1-green;
+#X obj 152 420 v \$1-blue;
+#X obj 96 546 pack f s \$1;
+#X obj 279 42 * 3;
+#X obj 279 71 t b a;
+#X obj 295 148 f;
+#X obj 338 149 + 1;
+#X msg 279 95 3;
+#X obj 279 121 until;
+#X obj 297 301 % 3;
+#X obj 297 326 pack;
+#X obj 297 417 pack f f f;
+#X obj 296 250 t b a;
+#X obj 296 276 f;
+#X obj 296 172 t a a;
+#X obj 297 381 swap;
+#X obj 297 351 route 2 0 1;
+#X obj 297 441 s \$1-rgb-from-presets;
+#X obj 554 40 loadbang;
+#X obj 54 130 t b a a;
+#X obj 554 65 t b b;
+#N canvas 20 0 1004 682 load-presets 1;
+#X obj 33 10 inlet;
+#X obj 33 497 makefilename \$1c%d;
+#X msg 33 35 30;
+#X obj 33 60 until;
+#X obj 33 85 f;
+#X obj 64 85 + 1;
+#X obj 33 110 t a a;
+#X obj 70 388 mod 3;
+#X obj 70 413 pack;
+#N canvas 299 246 606 448 RGB__ 0;
+#X obj 22 34 inlet;
+#X obj 99 36 inlet;
+#X obj 165 37 inlet;
+#X text 27 9 red;
+#X text 97 11 green;
+#X text 169 11 blue;
+#X obj 99 161 +;
+#X obj 78 198 +;
+#X obj 78 257 outlet;
+#X obj 22 130 * -65536;
+#X obj 99 130 * -256;
+#X obj 165 131 * -1;
+#X obj 78 229 - 1;
+#X obj 22 99 f;
+#X obj 99 101 f;
+#X obj 165 62 t b b a;
+#X connect 0 0 13 1;
+#X connect 1 0 14 1;
+#X connect 2 0 15 0;
+#X connect 6 0 7 1;
+#X connect 7 0 12 0;
+#X connect 9 0 7 0;
+#X connect 10 0 6 0;
+#X connect 11 0 6 1;
+#X connect 12 0 8 0;
+#X connect 13 0 9 0;
+#X connect 14 0 10 0;
+#X connect 15 0 13 0;
+#X connect 15 1 14 0;
+#X connect 15 2 11 0;
+#X restore 70 465 pd RGB__;
+#X obj 33 525 pack s f;
+#X obj 70 136 * 3;
+#X obj 70 161 t b a;
+#X msg 70 186 3;
+#X obj 70 211 until;
+#X obj 70 236 f;
+#X obj 108 236 + 1;
+#X msg 33 550 \; \$1 color \$2 0;
+#X obj 70 438 route 0 1 2;
+#X msg 128 20 0;
+#X obj 70 261 t a a;
+#X obj 70 362 f;
+#X obj 70 337 t b a;
+#X obj 70 286 f \$1;
+#X obj 70 312 tabread \$1-color-presets;
+#X connect 0 0 2 0;
+#X connect 1 0 10 0;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 4 0 5 0;
+#X connect 4 0 6 0;
+#X connect 5 0 4 1;
+#X connect 6 0 1 0;
+#X connect 6 1 11 0;
+#X connect 7 0 8 0;
+#X connect 8 0 18 0;
+#X connect 9 0 10 1;
+#X connect 10 0 17 0;
+#X connect 11 0 12 0;
+#X connect 12 0 13 0;
+#X connect 12 1 15 1;
+#X connect 13 0 14 0;
+#X connect 14 0 15 0;
+#X connect 15 0 16 0;
+#X connect 15 0 20 0;
+#X connect 16 0 15 1;
+#X connect 18 0 9 0;
+#X connect 18 1 9 1;
+#X connect 18 2 9 2;
+#X connect 19 0 4 1;
+#X connect 20 0 23 0;
+#X connect 20 1 21 1;
+#X connect 21 0 7 0;
+#X connect 22 0 21 0;
+#X connect 22 1 8 1;
+#X connect 23 0 24 0;
+#X connect 24 0 22 0;
+#X restore 554 200 pd load-presets;
+#X obj 54 616 f \$1;
+#X obj 591 94 f \$1;
+#X msg 591 124 \; \$1-color-presets read color-presets.txt;
+#X msg 54 649 \; \$1-color-presets write color-presets.txt;
+#X obj 296 197 f \$1;
+#X obj 296 224 tabread \$1-color-presets;
+#X obj 153 478 tabwrite \$1-color-presets;
+#X obj 553 15 table \$1-color-presets;
+#X connect 0 0 1 1;
+#X connect 0 0 19 0;
+#X connect 1 0 35 0;
+#X connect 2 0 8 0;
+#X connect 3 0 4 0;
+#X connect 3 0 9 0;
+#X connect 4 0 3 1;
+#X connect 5 0 6 0;
+#X connect 6 0 3 0;
+#X connect 7 0 10 0;
+#X connect 8 0 5 0;
+#X connect 8 1 3 1;
+#X connect 8 1 11 3;
+#X connect 9 0 7 0;
+#X connect 9 1 44 1;
+#X connect 10 0 15 0;
+#X connect 10 1 16 0;
+#X connect 10 2 17 0;
+#X connect 11 0 18 0;
+#X connect 13 0 18 1;
+#X connect 14 0 1 0;
+#X connect 15 0 11 0;
+#X connect 15 0 44 0;
+#X connect 16 0 11 1;
+#X connect 16 0 44 0;
+#X connect 17 0 11 2;
+#X connect 17 0 44 0;
+#X connect 18 0 12 0;
+#X connect 19 0 20 0;
+#X connect 20 0 23 0;
+#X connect 20 1 21 1;
+#X connect 21 0 22 0;
+#X connect 21 0 30 0;
+#X connect 22 0 21 1;
+#X connect 23 0 24 0;
+#X connect 24 0 21 0;
+#X connect 25 0 26 0;
+#X connect 26 0 32 0;
+#X connect 27 0 33 0;
+#X connect 28 0 29 0;
+#X connect 28 1 26 1;
+#X connect 29 0 25 0;
+#X connect 30 0 42 0;
+#X connect 30 1 29 1;
+#X connect 31 0 27 0;
+#X connect 31 1 27 2;
+#X connect 32 0 31 0;
+#X connect 32 1 31 1;
+#X connect 32 2 27 1;
+#X connect 34 0 36 0;
+#X connect 35 0 38 0;
+#X connect 35 1 2 0;
+#X connect 35 2 13 0;
+#X connect 36 0 37 0;
+#X connect 36 1 39 0;
+#X connect 38 0 41 0;
+#X connect 39 0 40 0;
+#X connect 42 0 43 0;
+#X connect 43 0 28 0;
+#X restore 6 701 pd \$1-color-presets;
+#N canvas 0 86 1004 682 \$1-color-select 0;
+#X obj 466 340 pointer;
+#X msg 466 314 traverse \$1\$2-color-select-gop \, bang;
+#X msg 349 348 0 0;
+#X obj 466 211 t a a;
+#X msg 46 314 traverse \$1\$2-color-select-gop \, next;
+#X msg 136 365 next;
+#X msg 227 404 error: no color-select struct;
+#X obj 227 428 print;
+#X obj 38 150 inlet;
+#X obj 38 177 t a b;
+#N canvas 0 0 450 300 get-xy 0;
+#X obj 24 13 inlet;
+#X obj 24 41 t a a;
+#X obj 21 119 * 17;
+#X text 110 85 y;
+#X obj 21 68 / 6;
+#X obj 21 94 int;
+#X obj 68 85 % 6;
+#X obj 68 119 * 17;
+#X text 1 67 x;
+#X obj 21 148 pack;
+#X obj 21 175 outlet;
+#X connect 0 0 1 0;
+#X connect 1 0 4 0;
+#X connect 1 1 6 0;
+#X connect 2 0 9 0;
+#X connect 4 0 5 0;
+#X connect 5 0 2 0;
+#X connect 6 0 7 0;
+#X connect 7 0 9 1;
+#X connect 9 0 10 0;
+#X restore 38 407 pd get-xy;
+#X obj 349 137 loadbang;
+#X obj 349 163 t b b;
+#X obj 55 77 drawpolygon x 1 2 2 17 2 17 17 2 17 2 2 3 3 16 3 16 16
+3 16 3 3;
+#X obj 109 39 struct \$1-color-select float x float y;
+#X obj 466 185 list prepend pd- \$1;
+#X obj 46 285 list prepend pd- \$1;
+#X obj 46 340 pointer \$1-color-select;
+#X obj 349 372 append \$1-color-select x y;
+#X obj 38 462 set \$1-color-select x y;
+#X msg 503 238 \; \$1\$2-color-select-gop clear \; \$1\$2-color-select-gop
+donecanvasdialog 1 -1 2 0 0 87 104 87 104 0 0;
+#X connect 0 0 18 2;
+#X connect 1 0 0 0;
+#X connect 2 0 18 0;
+#X connect 3 0 1 0;
+#X connect 3 1 20 0;
+#X connect 4 0 17 0;
+#X connect 5 0 17 0;
+#X connect 6 0 7 0;
+#X connect 8 0 9 0;
+#X connect 9 0 10 0;
+#X connect 9 1 16 0;
+#X connect 10 0 19 0;
+#X connect 11 0 12 0;
+#X connect 12 0 2 0;
+#X connect 12 1 15 0;
+#X connect 15 0 3 0;
+#X connect 16 0 4 0;
+#X connect 17 0 19 2;
+#X connect 17 1 5 0;
+#X connect 17 2 6 0;
+#X restore 6 726 pd \$1-color-select;
+#X obj 167 231 s \$1-global-vis;
+#X obj 490 474 r \$1-spawn;
+#N canvas 0 29 1004 682 \$1-rgb 0;
+#X text 60 99 red;
+#X text 44 167 green;
+#X text 50 241 blue;
+#X obj 879 415 pointer;
+#X msg 714 444 0 0;
+#X obj 714 354 t b b;
+#X msg 751 389 0;
+#X obj 689 291 inlet;
+#X obj 426 428 unpack;
+#X obj 78 325 route change;
+#X obj 99 99 filledpolygon 900 555 3 12 red(0:255)(-8:-58)(16) 0 red(0:255)(-8:-58)(16)
+0 0 12 0;
+#X obj 98 170 filledpolygon 90 555 3 37 green(0:255)(-8:-58)(16) 25
+green(0:255)(-8:-58)(16) 25 0 37 0;
+#X obj 98 240 filledpolygon 9 555 3 61 blue(0:255)(-8:-58)(16) 49 blue(0:255)(-8:-58)(16)
+49 0 61 0;
+#X obj 99 141 drawnumber red -2 -85 0;
+#X obj 99 211 drawnumber green 23 -85 0;
+#X obj 99 281 drawnumber blue 47 -85 0;
+#X obj 478 477 + 115;
+#X obj 426 569 spigot 1;
+#X obj 496 569 spigot 1;
+#N canvas 405 208 391 265 rgb-tgl-pos 0;
+#X obj 20 40 f;
+#X obj 53 40 + 1;
+#X msg 222 137 35 115;
+#X obj 20 173 unpack;
+#X msg 20 138 -193 115;
+#X obj 20 205 outlet;
+#X obj 80 204 outlet;
+#X msg 95 137 -193 -5;
+#X obj 20 96 sel 0 1 2 3 4;
+#X obj 20 69 % 5;
+#X msg 281 137 -68 115;
+#X msg 162 137 35 -50;
+#X obj 20 14 r \$1-tgl-pos;
+#X connect 0 0 1 0;
+#X connect 0 0 9 0;
+#X connect 1 0 0 1;
+#X connect 2 0 3 0;
+#X connect 3 0 5 0;
+#X connect 3 1 6 0;
+#X connect 4 0 3 0;
+#X connect 7 0 3 0;
+#X connect 8 0 4 0;
+#X connect 8 1 7 0;
+#X connect 8 2 11 0;
+#X connect 8 3 2 0;
+#X connect 8 4 10 0;
+#X connect 9 0 8 0;
+#X connect 10 0 3 0;
+#X connect 11 0 3 0;
+#X connect 12 0 0 0;
+#X restore 305 351 pd rgb-tgl-pos;
+#X obj 305 428 t b a;
+#X obj 370 427 t b a;
+#X obj 305 384 t a b;
+#X obj 370 384 t a b;
+#X obj 426 384 t a b;
+#X obj 589 523 t b;
+#X msg 589 546 next;
+#X obj 644 585 print;
+#N canvas 293 140 318 218 respawn 0;
+#N canvas 0 0 214 127 traverse-next 0;
+#X obj 12 10 inlet;
+#X obj 12 88 outlet;
+#X obj 12 36 symbol;
+#X msg 12 62 traverse \$1 \, next;
+#X obj 70 36 r \$1-patchname;
+#X connect 0 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 1 0;
+#X connect 4 0 2 1;
+#X restore 15 36 pd traverse-next;
+#X msg 77 86 next;
+#X msg 15 107 error: label struct already exists;
+#X obj 15 132 print respawn;
+#X obj 124 184 outlet;
+#X obj 14 84 t b;
+#X obj 15 9 r \$1-label-respawn;
+#X obj 15 61 pointer \$1-rgb;
+#X connect 0 0 7 0;
+#X connect 1 0 7 0;
+#X connect 2 0 3 0;
+#X connect 5 0 2 0;
+#X connect 6 0 0 0;
+#X connect 7 0 5 0;
+#X connect 7 1 1 0;
+#X connect 7 2 4 0;
+#X restore 827 315 pd respawn;
+#X obj 141 524 t a b;
+#X msg 292 621 next;
+#X obj 292 597 t b;
+#X obj 128 380 unpack f f f;
+#N canvas 15 207 606 448 RGB___________________ 0;
+#X obj 22 34 inlet;
+#X obj 99 36 inlet;
+#X obj 165 37 inlet;
+#X text 27 9 red;
+#X text 97 11 green;
+#X text 169 11 blue;
+#X obj 166 263 t b f;
+#X obj 100 321 +;
+#X obj 100 346 t b f;
+#X obj 100 377 +;
+#X obj 100 436 outlet;
+#X obj 23 240 * -65536;
+#X obj 100 241 * -256;
+#X obj 166 241 * -1;
+#X obj 100 408 - 1;
+#X obj 21 69 t b a;
+#X obj 101 69 t b a;
+#X obj 161 69 t b a;
+#X obj 34 161 s \$1-global-red;
+#X obj 190 157 s \$1-global-blue;
+#X obj 23 123 v \$1-red;
+#X obj 99 124 v \$1-green;
+#X obj 195 123 v \$1-blue;
+#X obj 101 192 s \$1-global-green;
+#X connect 0 0 15 0;
+#X connect 1 0 16 0;
+#X connect 2 0 17 0;
+#X connect 6 0 7 0;
+#X connect 6 1 7 1;
+#X connect 7 0 8 0;
+#X connect 8 0 9 0;
+#X connect 8 1 9 1;
+#X connect 9 0 14 0;
+#X connect 11 0 9 0;
+#X connect 12 0 7 0;
+#X connect 13 0 6 0;
+#X connect 14 0 10 0;
+#X connect 15 0 20 0;
+#X connect 15 1 20 0;
+#X connect 16 0 21 0;
+#X connect 16 1 21 0;
+#X connect 17 0 22 0;
+#X connect 17 1 22 0;
+#X connect 20 0 11 0;
+#X connect 20 0 18 0;
+#X connect 21 0 12 0;
+#X connect 21 0 23 0;
+#X connect 22 0 13 0;
+#X connect 22 0 19 0;
+#X restore 78 413 pd RGB___________________;
+#X msg 644 554 error: can't find rgb struct (try respawn);
+#X obj 426 477 + -68;
+#X msg 629 49 0;
+#X obj 78 24 struct \$1-rgb float x float y float red float green float
+blue;
+#X obj 629 24 r \$1-clean;
+#X obj 629 73 s \$1-rgb-vis;
+#X obj 99 72 r \$1-rgb-vis;
+#X obj 78 352 get \$1-rgb red green blue;
+#X obj 426 352 r \$1-helper-xy;
+#X obj 78 471 s \$1-rgb-value;
+#X obj 140 496 r \$1-rgb-from-hex;
+#X obj 207 519 r \$1-rgb-from-presets;
+#X obj 238 570 pointer \$1-rgb;
+#X obj 79 597 set \$1-rgb red green blue;
+#X obj 535 493 pointer \$1-rgb;
+#X obj 426 606 set \$1-rgb x y;
+#X obj 751 420 s \$1-rgb-vis;
+#X obj 714 471 append \$1-rgb x y;
+#X obj 730 507 r \$1-rgb-move;
+#X obj 689 499 t a;
+#X obj 689 315 spawn \$1 \$1-rgb;
+#X obj 879 374 ptraverse \$1 bang;
+#X obj 535 432 ptraverse \$1 next;
+#X obj 238 544 ptraverse \$1 next;
+#X connect 3 0 51 2;
+#X connect 4 0 51 0;
+#X connect 5 0 4 0;
+#X connect 5 1 6 0;
+#X connect 5 1 55 0;
+#X connect 6 0 50 0;
+#X connect 7 0 54 0;
+#X connect 8 0 35 0;
+#X connect 8 1 16 0;
+#X connect 9 0 41 0;
+#X connect 16 0 18 0;
+#X connect 17 0 49 0;
+#X connect 18 0 49 1;
+#X connect 19 0 22 0;
+#X connect 19 1 23 0;
+#X connect 20 0 35 0;
+#X connect 20 1 35 1;
+#X connect 21 0 16 0;
+#X connect 21 1 16 1;
+#X connect 22 0 20 0;
+#X connect 22 1 56 0;
+#X connect 23 0 21 0;
+#X connect 23 1 56 0;
+#X connect 24 0 8 0;
+#X connect 24 1 56 0;
+#X connect 25 0 26 0;
+#X connect 26 0 48 0;
+#X connect 28 0 5 0;
+#X connect 29 0 47 0;
+#X connect 29 1 57 0;
+#X connect 30 0 46 0;
+#X connect 31 0 30 0;
+#X connect 32 0 33 0;
+#X connect 32 1 33 1;
+#X connect 32 2 33 2;
+#X connect 33 0 43 0;
+#X connect 34 0 27 0;
+#X connect 35 0 17 0;
+#X connect 36 0 39 0;
+#X connect 37 0 9 0;
+#X connect 38 0 36 0;
+#X connect 40 0 10 0;
+#X connect 40 0 11 0;
+#X connect 40 0 12 0;
+#X connect 40 0 13 0;
+#X connect 40 0 14 0;
+#X connect 40 0 15 0;
+#X connect 41 0 33 0;
+#X connect 41 1 33 1;
+#X connect 41 2 33 2;
+#X connect 42 0 24 0;
+#X connect 44 0 29 0;
+#X connect 44 0 32 0;
+#X connect 45 0 29 0;
+#X connect 45 0 32 0;
+#X connect 46 0 47 3;
+#X connect 46 1 31 0;
+#X connect 46 2 34 0;
+#X connect 48 0 49 2;
+#X connect 48 1 25 0;
+#X connect 48 2 34 0;
+#X connect 51 0 53 0;
+#X connect 52 0 18 1;
+#X connect 52 0 17 1;
+#X connect 53 0 49 2;
+#X connect 54 0 53 0;
+#X connect 54 1 5 0;
+#X connect 55 0 3 0;
+#X connect 56 0 48 0;
+#X connect 57 0 46 0;
+#X restore 490 498 pd \$1-rgb;
+#N canvas 0 86 1004 682 \$1-label 0;
+#X obj 8 709 drawpolygon 0 1 x0(-1000:1000)(-962:1038) y0(-1000:1000)(-1002:998)
+x0(-1000:1000)(-962:1038) y0(-1000:1000)(-1000:1000) x0(-1000:1000)(-966:1034)
+y0(-1000:1000)(-1000:1000) x0(-1000:1000)(-966:1034) y0(-1000:1000)(-1007:993)
+x0(-1000:1000)(-965:1035) y0(-1000:1000)(-1007:993) x0(-1000:1000)(-968:1032)
+y0(-1000:1000)(-1007:993) x0(-1000:1000)(-967:1033) y0(-1000:1000)(-1007:993)
+x0(-1000:1000)(-967:1033) y0(-1000:1000)(-1000:1000) x0(-1000:1000)(-962:1038)
+y0(-1000:1000)(-1000:1000) x0(-1000:1000)(-970:1030) y0(-1000:1000)(-1000:1000)
+x0(-1000:1000)(-970:1030) y0(-1000:1000)(-1002:998) x0(-1000:1000)(-970:1030)
+y0(-1000:1000)(-1000:1000) x0(-1000:1000)(-974:1026) y0(-1000:1000)(-1000:1000)
+x0(-1000:1000)(-974:1026) y0(-1000:1000)(-1004:996) x0(-1000:1000)(-972:1028)
+y0(-1000:1000)(-1004:996) x0(-1000:1000)(-972:1028) y0(-1000:1000)(-1003:997)
+x0(-1000:1000)(-972:1028) y0(-1000:1000)(-1005:995) x0(-1000:1000)(-972:1028)
+y0(-1000:1000)(-1004:996) x0(-1000:1000)(-974:1026) y0(-1000:1000)(-1004:996)
+x0(-1000:1000)(-974:1026) y0(-1000:1000)(-1007:993) x0(-1000:1000)(-976:1024)
+y0(-1000:1000)(-1007:993) x0(-1000:1000)(-970:1030) y0(-1000:1000)(-1007:993)
+x0(-1000:1000)(-970:1030) y0(-1000:1000)(-1005:995) x0(-1000:1000)(-970:1030)
+y0(-1000:1000)(-1007:993) x0(-1000:1000)(-975:1025) y0(-1000:1000)(-1007:993)
+x0(-1000:1000)(-975:1025) y0(-1000:1000)(-1000:1000) x0(-1000:1000)(-970:1030)
+y0(-1000:1000)(-1000:1000) x0(-1000:1000)(-977:1023) y0(-1000:1000)(-1000:1000)
+x0(-1000:1000)(-978:1022) y0(-1000:1000)(-1001:999) x0(-1000:1000)(-979:1021)
+y0(-1000:1000)(-1001:999) x0(-1000:1000)(-978:1022) y0(-1000:1000)(-1001:999)
+x0(-1000:1000)(-979:1021) y0(-1000:1000)(-1002:998) x0(-1000:1000)(-978:1022)
+y0(-1000:1000)(-1002:998) x0(-1000:1000)(-978:1022) y0(-1000:1000)(-1003:997)
+x0(-1000:1000)(-979:1021) y0(-1000:1000)(-1003:997) x0(-1000:1000)(-979:1021)
+y0(-1000:1000)(-1005:995) x0(-1000:1000)(-978:1022) y0(-1000:1000)(-1005:995)
+x0(-1000:1000)(-978:1022) y0(-1000:1000)(-1006:994) x0(-1000:1000)(-979:1021)
+y0(-1000:1000)(-1006:994) x0(-1000:1000)(-979:1021) y0(-1000:1000)(-1007:993)
+x0(-1000:1000)(-982:1018) y0(-1000:1000)(-1007:993) x0(-1000:1000)(-982:1018)
+y0(-1000:1000)(-1004:996) x0(-1000:1000)(-979:1021) y0(-1000:1000)(-1004:996)
+x0(-1000:1000)(-982:1018) y0(-1000:1000)(-1004:996) x0(-1000:1000)(-982:1018)
+y0(-1000:1000)(-1000:1000) x0(-1000:1000)(-982:1018) y0(-1000:1000)(-1007:993)
+x0(-1000:1000)(-984:1016) y0(-1000:1000)(-1007:993) x0(-1000:1000)(-983:1017)
+y0(-1000:1000)(-1007:993) x0(-1000:1000)(-983:1017) y0(-1000:1000)(-1000:1000)
+x0(-1000:1000)(-979:1021) y0(-1000:1000)(-1000:1000) x0(-1000:1000)(-987:1013)
+y0(-1000:1000)(-1000:1000) x0(-1000:1000)(-986:1014) y0(-1000:1000)(-1000:1000)
+x0(-1000:1000)(-986:1014) y0(-1000:1000)(-1001:999) x0(-1000:1000)(-985:1015)
+y0(-1000:1000)(-1001:999) x0(-1000:1000)(-985:1015) y0(-1000:1000)(-1002:998)
+x0(-1000:1000)(-986:1014) y0(-1000:1000)(-1002:998) x0(-1000:1000)(-986:1014)
+y0(-1000:1000)(-1005:995) x0(-1000:1000)(-986:1014) y0(-1000:1000)(-1002:998)
+x0(-1000:1000)(-987:1013) y0(-1000:1000)(-1002:998) x0(-1000:1000)(-987:1013)
+y0(-1000:1000)(-1007:993) x0(-1000:1000)(-988:1012) y0(-1000:1000)(-1006:994)
+x0(-1000:1000)(-988:1012) y0(-1000:1000)(-1007:993) x0(-1000:1000)(-991:1009)
+y0(-1000:1000)(-1007:993) x0(-1000:1000)(-989:1011) y0(-1000:1000)(-1007:993)
+x0(-1000:1000)(-989:1011) y0(-1000:1000)(-1004:996) x0(-1000:1000)(-990:1010)
+y0(-1000:1000)(-1004:996) x0(-1000:1000)(-990:1010) y0(-1000:1000)(-1005:995)
+x0(-1000:1000)(-990:1010) y0(-1000:1000)(-1003:997) x0(-1000:1000)(-989:1011)
+y0(-1000:1000)(-1003:997) x0(-1000:1000)(-989:1011) y0(-1000:1000)(-1002:998)
+x0(-1000:1000)(-988:1012) y0(-1000:1000)(-1002:998) x0(-1000:1000)(-991:1009)
+y0(-1000:1000)(-1002:998) x0(-1000:1000)(-991:1009) y0(-1000:1000)(-1001:999)
+x0(-1000:1000)(-990:1010) y0(-1000:1000)(-1001:999) x0(-1000:1000)(-990:1010)
+y0(-1000:1000)(-1000:1000) x0(-1000:1000)(-989:1011) y0(-1000:1000)(-1000:1000)
+x0(-1000:1000)(-994:1006) y0(-1000:1000)(-1000:1000) x0(-1000:1000)(-994:1006)
+y0(-1000:1000)(-1002:998) x0(-1000:1000)(-994:1006) y0(-1000:1000)(-1000:1000)
+x0(-1000:1000)(-998:1002) y0(-1000:1000)(-1000:1000) x0(-1000:1000)(-998:1002)
+y0(-1000:1000)(-1007:993) x0(-1000:1000)(-997:1003) y0(-1000:1000)(-1007:993)
+x0(-1000:1000)(-1000:1000) y0(-1000:1000)(-1007:993) x0(-1000:1000)(-999:1001)
+y0(-1000:1000)(-1007:993) x0(-1000:1000)(-999:1001) y0(-1000:1000)(-1000:1000)
+x0(-1000:1000)(-1000:1000) y0(-1000:1000)(-1000:1000) x0(-1000:1000)(-1000:1000)
+y0(-1000:1000)(-999:1001);
+#X obj 839 271 pointer;
+#X obj 650 210 t b b;
+#X msg 722 265 0;
+#X obj 618 156 inlet;
+#X obj 391 304 unpack;
+#X obj 391 455 spigot 1;
+#X obj 461 455 spigot 1;
+#X obj 443 353 + 80;
+#X obj 11 667 drawpolygon 0 1 70 34 -30 34 -30 -37 70 -37 70 34;
+#X obj 262 307 t b a;
+#X obj 321 307 t b a;
+#X msg 650 300 0 0 10;
+#X obj 262 247 t a b;
+#X obj 321 247 t a b;
+#X obj 391 247 t a b;
+#X obj 535 405 t b;
+#X msg 535 428 next;
+#X msg 598 522 error: can't find label struct;
+#X obj 598 548 print;
+#X obj 23 560 drawnumber size x0(-1000:1000)(-978:1022) y0(-1000:1000)(-996:1004)
+0;
+#X obj 24 610 drawnumber font x0(-1000:1000)(-1000:1000) y0(-1000:1000)(-996:1004)
+0;
+#X obj 22 229 pack f f f f;
+#X obj 434 483 t a b;
+#X msg 472 505 0;
+#X msg 509 504 0;
+#N canvas 289 179 505 408 tgl-pos 0;
+#X obj 12 39 f;
+#X obj 45 39 + 1;
+#X obj 12 194 unpack;
+#X msg 219 138 160 80;
+#X obj 12 230 outlet;
+#X obj 73 230 outlet;
+#X msg 72 137 -68 -40;
+#X msg 12 137 -68 80;
+#X obj 12 95 sel 0 1 2 3 4;
+#X obj 12 68 % 5;
+#X msg 282 137 35 80;
+#X msg 145 137 160 -85;
+#X obj 12 13 r \$1-tgl-pos;
+#X connect 0 0 1 0;
+#X connect 0 0 9 0;
+#X connect 1 0 0 1;
+#X connect 2 0 4 0;
+#X connect 2 1 5 0;
+#X connect 3 0 2 0;
+#X connect 6 0 2 0;
+#X connect 7 0 2 0;
+#X connect 8 0 7 0;
+#X connect 8 1 6 0;
+#X connect 8 2 11 0;
+#X connect 8 3 3 0;
+#X connect 8 4 10 0;
+#X connect 9 0 8 0;
+#X connect 10 0 2 0;
+#X connect 11 0 2 0;
+#X connect 12 0 0 0;
+#X restore 262 198 pd tgl-pos;
+#N canvas 0 0 318 218 respawn 0;
+#N canvas 0 0 214 127 traverse-next 0;
+#X obj 12 10 inlet;
+#X obj 12 88 outlet;
+#X obj 12 36 symbol;
+#X msg 12 62 traverse \$1 \, next;
+#X obj 70 36 r \$1-patchname;
+#X connect 0 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 1 0;
+#X connect 4 0 2 1;
+#X restore 15 36 pd traverse-next;
+#X msg 77 86 next;
+#X msg 15 107 error: label struct already exists;
+#X obj 15 132 print respawn;
+#X obj 140 184 outlet;
+#X obj 15 84 t b;
+#X obj 15 61 pointer \$1-label;
+#X obj 15 9 r \$1-label-respawn;
+#X connect 0 0 6 0;
+#X connect 1 0 6 0;
+#X connect 2 0 3 0;
+#X connect 5 0 2 0;
+#X connect 6 0 5 0;
+#X connect 6 1 1 0;
+#X connect 6 2 4 0;
+#X connect 7 0 0 0;
+#X restore 800 181 pd respawn;
+#X obj 391 353 + 35;
+#X msg 9 467 0;
+#X obj 22 34 struct \$1-label float x float y float x0 float y0 float
+font float size;
+#X obj 22 195 get \$1-label x0 y0 size font;
+#X obj 22 256 s \$1-label-posNsize;
+#X obj 391 198 r \$1-helper-xy;
+#X obj 473 381 pointer \$1-label;
+#X obj 391 528 set \$1-label x y x0 y0;
+#X obj 650 327 append \$1-label x y size;
+#X obj 663 355 r \$1-label-move;
+#X obj 722 296 s \$1-label-vis;
+#X obj 9 442 r \$1-clean;
+#X obj 9 492 s \$1-label-vis;
+#X obj 9 526 r \$1-label-vis;
+#X obj 618 181 spawn \$1 \$1-label;
+#X obj 618 327 t a;
+#X obj 22 164 route change click;
+#X obj 92 356 s \$1-label-tgl;
+#X msg 92 330 1;
+#X obj 92 305 b;
+#X obj 839 230 ptraverse \$1 bang;
+#X obj 473 297 ptraverse \$1 next;
+#X connect 1 0 36 3;
+#X connect 2 0 12 0;
+#X connect 2 1 3 0;
+#X connect 2 1 48 0;
+#X connect 3 0 38 0;
+#X connect 4 0 42 0;
+#X connect 5 0 28 0;
+#X connect 5 1 8 0;
+#X connect 6 0 35 0;
+#X connect 7 0 23 0;
+#X connect 8 0 7 0;
+#X connect 10 0 28 0;
+#X connect 10 1 28 1;
+#X connect 11 0 8 0;
+#X connect 11 1 8 1;
+#X connect 12 0 36 0;
+#X connect 13 0 10 0;
+#X connect 13 1 49 0;
+#X connect 14 0 11 0;
+#X connect 14 1 49 0;
+#X connect 15 0 5 0;
+#X connect 15 1 49 0;
+#X connect 16 0 17 0;
+#X connect 17 0 34 0;
+#X connect 18 0 19 0;
+#X connect 22 0 32 0;
+#X connect 23 0 35 1;
+#X connect 23 1 24 0;
+#X connect 23 1 25 0;
+#X connect 24 0 35 2;
+#X connect 25 0 35 3;
+#X connect 26 0 13 0;
+#X connect 26 1 14 0;
+#X connect 27 0 2 0;
+#X connect 28 0 6 0;
+#X connect 29 0 40 0;
+#X connect 30 0 44 0;
+#X connect 31 0 22 0;
+#X connect 31 1 22 1;
+#X connect 31 2 22 2;
+#X connect 31 3 22 3;
+#X connect 33 0 15 0;
+#X connect 34 0 35 4;
+#X connect 34 1 16 0;
+#X connect 34 2 18 0;
+#X connect 36 0 43 0;
+#X connect 37 0 7 1;
+#X connect 37 0 6 1;
+#X connect 39 0 29 0;
+#X connect 41 0 0 0;
+#X connect 41 0 9 0;
+#X connect 41 0 20 0;
+#X connect 41 0 21 0;
+#X connect 42 0 43 0;
+#X connect 42 1 2 0;
+#X connect 43 0 35 4;
+#X connect 44 0 31 0;
+#X connect 44 1 47 0;
+#X connect 46 0 45 0;
+#X connect 47 0 46 0;
+#X connect 48 0 1 0;
+#X connect 49 0 34 0;
+#X restore 490 523 pd \$1-label;
+#N canvas 0 0 1004 682 \$1-pdot 0;
+#X obj 464 435 pointer;
+#X obj 299 374 t b b;
+#X msg 371 429 0;
+#X obj 265 310 inlet;
+#X obj 36 428 unpack;
+#X obj 36 249 route change;
+#X obj 36 394 t a b;
+#X obj 184 536 t b;
+#X msg 184 561 next;
+#X obj 243 616 print;
+#N canvas 293 140 318 218 respawn 0;
+#N canvas 0 0 214 127 traverse-next 0;
+#X obj 12 10 inlet;
+#X obj 12 88 outlet;
+#X obj 12 36 symbol;
+#X msg 12 62 traverse \$1 \, next;
+#X obj 70 36 r \$1-patchname;
+#X connect 0 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 1 0;
+#X connect 4 0 2 1;
+#X restore 15 36 pd traverse-next;
+#X msg 77 86 next;
+#X msg 15 107 error: label struct already exists;
+#X obj 15 132 print respawn;
+#X obj 132 184 outlet;
+#X obj 14 84 t b;
+#X obj 15 61 pointer \$1-pdot;
+#X obj 15 9 r \$1-label-respawn;
+#X connect 0 0 6 0;
+#X connect 1 0 6 0;
+#X connect 2 0 3 0;
+#X connect 5 0 2 0;
+#X connect 6 0 5 0;
+#X connect 6 1 1 0;
+#X connect 6 2 4 0;
+#X connect 7 0 0 0;
+#X restore 407 337 pd respawn;
+#X msg 243 585 error: can't find pdot struct (try respawn);
+#X obj 81 477 + -45;
+#X msg 299 464 0 0 0;
+#X msg 309 524 \$3;
+#X msg 629 81 0;
+#X obj 36 31 struct \$1-pdot float x float y float x0;
+#X obj 503 49 r \$1-pdot-vis;
+#X obj 629 49 r \$1-clean;
+#X obj 629 114 s \$1-pdot-vis;
+#X obj 36 281 get \$1-pdot x0;
+#X obj 36 312 s \$1-pdot-v;
+#X obj 36 362 r \$1-helper-xy;
+#X obj 126 511 pointer \$1-pdot;
+#X obj 36 616 set \$1-pdot x y;
+#X obj 371 460 s \$1-pdot-vis;
+#X obj 299 491 append \$1-pdot x y x0;
+#X obj 309 548 s \$1-pdot-v;
+#X obj 265 492 t a;
+#X obj 265 337 spawn \$1 \$1-pdot;
+#X obj 100 169 spigot;
+#X obj 105 57 r \$1-pdot-global-vis;
+#X obj 105 82 moses 1;
+#X obj 105 107 t a a;
+#X obj 158 107 t a a;
+#X obj 274 138 loadbang;
+#X msg 274 163 0;
+#X obj 100 197 filledpolygon 900 0 1 x0(0:3)(0:140)(1) 44 x0(0:3)(8:148)(1)
+48 x0(0:3)(8:148)(1) 40;
+#X obj 464 406 ptraverse \$1 bang;
+#X obj 126 414 ptraverse \$1 next;
+#X obj 36 477 + 20;
+#X connect 0 0 26 3;
+#X connect 1 0 13 0;
+#X connect 1 1 2 0;
+#X connect 1 1 38 0;
+#X connect 2 0 25 0;
+#X connect 3 0 29 0;
+#X connect 4 0 40 0;
+#X connect 4 1 12 0;
+#X connect 5 0 20 0;
+#X connect 6 0 4 0;
+#X connect 6 1 39 0;
+#X connect 7 0 8 0;
+#X connect 8 0 23 0;
+#X connect 10 0 1 0;
+#X connect 11 0 9 0;
+#X connect 12 0 24 1;
+#X connect 13 0 14 0;
+#X connect 13 0 26 0;
+#X connect 14 0 27 0;
+#X connect 15 0 19 0;
+#X connect 16 0 5 0;
+#X connect 17 0 30 0;
+#X connect 18 0 15 0;
+#X connect 20 0 21 0;
+#X connect 22 0 6 0;
+#X connect 23 0 24 2;
+#X connect 23 1 7 0;
+#X connect 23 2 11 0;
+#X connect 26 0 28 0;
+#X connect 28 0 24 2;
+#X connect 29 0 28 0;
+#X connect 29 1 1 0;
+#X connect 30 0 37 0;
+#X connect 31 0 32 0;
+#X connect 32 0 33 0;
+#X connect 32 1 34 0;
+#X connect 33 0 30 1;
+#X connect 33 1 30 0;
+#X connect 34 0 30 0;
+#X connect 34 1 30 1;
+#X connect 35 0 36 0;
+#X connect 36 0 37 0;
+#X connect 38 0 0 0;
+#X connect 39 0 23 0;
+#X connect 40 0 24 0;
+#X restore 490 549 pd \$1-pdot;
+#X obj 275 430 r \$1-red-t;
+#X obj 313 450 r \$1-green-t;
+#X obj 352 470 r \$1-blue-t;
+#N canvas 0 0 1004 682 \$1-color-select-gop 0;
+#X scalar 1-color-select 0 0 \;;
+#X coords 0 0 87 104 87 104 1;
+#X restore 5 454 pd \$1-color-select-gop;
+#X text 551 293 quantizing number scrolling (how?);
+#X obj 4 83 bng 20 250 50 0 \$1-dummy \$1-nbx-t nbx 27 10 0 14 -262131
+-241291 -1;
+#X text 9 83 n;
+#X obj 107 103 pnbx \$1 \$1-nbx 5 14 60 10 -1e+037 1e+037 nbx;
+#X obj 127 468 r \$1-rgb-value;
+#X obj 127 494 pack f \$1;
+#X msg 127 520 \; \$2-grab-color-rcv color \$1 22;
+#X obj 4 409 cnv 15 89 40 empty empty empty 1 -1 0 14 -1 -1 0;
+#X obj 5 410 cnv 15 87 38 empty empty RGB 2 11 0 14 -262131 -1 0;
+#X symbolatom 37 411 2 0 0 0 - #1-hex-red-rcv #1-red-t;
+#X symbolatom 55 411 2 0 0 0 - #1-hex-green-rcv #1-green-t;
+#X symbolatom 73 411 2 0 0 0 - #1-hex-blue-rcv #1-blue-t;
+#X obj 6 430 bng 17 250 50 0 \$1-grab-color \$1-grab-color-rcv Grab_Color
+22 10 0 10 -118325 -262131 -1;
+#X obj 4 383 cnv 15 89 21 empty empty empty 56 33 2 10 -1 -1 0;
+#X obj 5 384 cnv 15 87 19 empty \$1-label-sym-cnv empty 85 92 2 38
+-262131 -1 0;
+#X symbolatom 25 385 8 0 0 0 - #1-label-sym-t #1-label-sym;
+#X obj 6 385 tgl 17 0 \$1-label-tgl \$1-label-tgl-t empty 57 41 0 10
+-166441 -262131 -1 0 1;
+#X text 10 384 L;
+#X obj 4 563 cnv 15 86 41 empty empty empty 83 90 2 38 -1 -1 0;
+#X obj 5 564 cnv 15 84 39 empty empty empty 85 92 2 38 -262131 -1 0
+;
+#X symbolatom 6 585 10 0 0 0 - #1-receive-name-t #1-receive-name;
+#X text 463 62 id struct width height x-offset y-offset intrrpt hold
+gui;
+#N canvas 0 86 1004 682 gop-size-tgl 0;
+#X obj 218 45 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 291 65 sel 0 1;
+#X obj 218 18 r \$1-gopsize-t;
+#X obj 65 73 r \$1-patchname;
+#X obj 291 142 pack f s \$1;
+#X obj 218 69 t b a;
+#X obj 218 114 symbol;
+#X obj 218 146 t a a;
+#X msg 255 236 \; \$1 vis 0;
+#X msg 218 278 \; \$1 vis 1;
+#X msg 359 102 208 min;
+#X msg 291 172 \; \$3-gopsize-cnv label \$2 \; \$3-palette-abs donecanvasdialog
+1 -1 1 0 -1 1 \$1 96 \$1 0 0;
+#X msg 291 102 610 max;
+#X connect 0 0 5 0;
+#X connect 1 0 12 0;
+#X connect 1 1 10 0;
+#X connect 2 0 0 0;
+#X connect 3 0 6 1;
+#X connect 4 0 11 0;
+#X connect 5 0 6 0;
+#X connect 5 1 1 0;
+#X connect 6 0 7 0;
+#X connect 7 0 9 0;
+#X connect 7 1 8 0;
+#X connect 10 0 4 0;
+#X connect 12 0 4 0;
+#X restore 357 328 pd gop-size-tgl;
+#X text 553 313 make array button;
+#X symbolatom 6 565 10 0 0 0 - #1-send-name-t #1-send-name;
+#X obj 107 83 ptgl \$1 \$1-tgl 15 0 10 14 0 1 tgl;
+#X obj 107 63 pbng \$1 \$1-bng 15 0 10 14 50 250 bng;
+#X obj 357 351 r \$1-dummy;
+#X text 552 270 touching "label" should change color selector to label
+;
+#X obj 107 143 pslider \$1 \$1-hsl 128 15 8 5 0 127 hsl;
+#X obj 107 163 pradio \$1 \$1-vrad 15 0 10 127 0 8 vradio 0;
+#X obj 107 183 pradio \$1 \$1-hrad 15 15 110 10 0 8 hradio 1;
+#X text 463 83 " " " " " " init non-zero gui;
+#X text 463 103 " " " " " " min max;
+#X text 463 123 " " " " " " min max;
+#X text 463 163 " " " " " " init number swapIF;
+#X text 463 143 " " " " " " min max;
+#X text 463 183 " " " " " " init number swapIF;
+#X text 463 203 " " " " " ";
+#N canvas 216 122 641 500 turnstile 0;
+#X obj 27 13 r global-id-turnstile;
+#X obj 78 145 loadbang;
+#X obj 27 265 v \$1-id;
+#X obj 27 235 + 1;
+#X obj 27 207 textfile;
+#X msg 64 71 set \$1;
+#X msg 27 106 write turnstile.txt cr;
+#X obj 27 40 t b a;
+#X msg 78 173 read turnstile.txt \, rewind \, bang;
+#X obj 343 14 inlet;
+#X msg 343 39 0;
+#X connect 0 0 7 0;
+#X connect 1 0 8 0;
+#X connect 3 0 2 0;
+#X connect 4 0 3 0;
+#X connect 5 0 4 0;
+#X connect 6 0 4 0;
+#X connect 7 0 6 0;
+#X connect 7 1 5 0;
+#X connect 8 0 4 0;
+#X connect 9 0 10 0;
+#X connect 10 0 7 0;
+#X restore 797 179 pd turnstile;
+#X text 551 331 take out "empty" on GUI creation/ replace with \$5
+(label tgl);
+#X text 551 372 more readable connections in pabs;
+#X obj 797 131 bng 42 250 50 0 empty empty Reset_Turnstile -33 -8 0
+16 -161856 -118325 -159808;
+#X connect 0 0 98 0;
+#X connect 1 0 18 0;
+#X connect 2 0 137 0;
+#X connect 3 0 136 0;
+#X connect 4 0 90 0;
+#X connect 5 0 140 0;
+#X connect 6 0 141 0;
+#X connect 7 0 142 0;
+#X connect 8 0 91 0;
+#X connect 9 0 29 0;
+#X connect 18 0 102 0;
+#X connect 19 0 0 0;
+#X connect 20 0 93 0;
+#X connect 21 0 99 0;
+#X connect 22 0 96 0;
+#X connect 22 0 97 0;
+#X connect 23 0 95 0;
+#X connect 24 0 94 0;
+#X connect 30 0 32 0;
+#X connect 33 0 71 0;
+#X connect 34 0 70 0;
+#X connect 35 0 69 0;
+#X connect 36 0 68 0;
+#X connect 37 0 72 0;
+#X connect 68 0 72 0;
+#X connect 69 0 72 0;
+#X connect 70 0 72 0;
+#X connect 71 0 72 0;
+#X connect 72 0 73 0;
+#X connect 73 0 101 0;
+#X connect 73 0 100 0;
+#X connect 103 0 104 0;
+#X connect 103 0 105 0;
+#X connect 103 0 106 0;
+#X connect 107 0 74 0;
+#X connect 108 0 74 1;
+#X connect 109 0 74 2;
+#X connect 112 0 114 0;
+#X connect 115 0 116 0;
+#X connect 116 0 117 0;
+#X connect 153 0 150 0;
+#X coords 0 -1 1 610 96 610 1 0 0;
diff --git a/pal/pappend.pd b/pal/pappend.pd
new file mode 100755
index 0000000..c9c5267
--- /dev/null
+++ b/pal/pappend.pd
@@ -0,0 +1,45 @@
+#N canvas 356 230 545 374 12;
+#X obj 88 164 + 1;
+#X obj 374 248 pointer;
+#X obj 20 67 v \$1-id;
+#X obj 20 17 inlet;
+#X obj 57 301 outlet;
+#X obj 20 331 outlet;
+#X obj 174 171 f \$3;
+#X obj 214 171 f \$4;
+#X obj 127 201 + \$5;
+#X obj 167 201 + \$6;
+#X obj 20 163 t a a;
+#X obj 174 140 loadbang;
+#X obj 20 42 t b b b;
+#X obj 103 39 s \$1-spawn;
+#X obj 86 97 s global-id-turnstile;
+#X obj 57 273 append \$2 id x y x0 y0 xsize ysize int-c;
+#X obj 57 243 pack f 0 0 f f f f 900;
+#X obj 186 302 list prepend pappend;
+#X obj 186 327 s \$2-pappend;
+#X obj 374 62 ptraverse \$1 bang;
+#X connect 0 0 2 0;
+#X connect 1 0 15 8;
+#X connect 2 0 10 0;
+#X connect 2 0 14 0;
+#X connect 3 0 12 0;
+#X connect 6 0 8 0;
+#X connect 6 0 16 5;
+#X connect 7 0 9 0;
+#X connect 7 0 16 6;
+#X connect 8 0 16 3;
+#X connect 9 0 16 4;
+#X connect 10 0 5 0;
+#X connect 10 1 0 0;
+#X connect 10 1 16 0;
+#X connect 11 0 6 0;
+#X connect 11 0 7 0;
+#X connect 12 0 2 0;
+#X connect 12 1 19 0;
+#X connect 12 2 13 0;
+#X connect 15 0 4 0;
+#X connect 15 0 17 0;
+#X connect 16 0 15 0;
+#X connect 17 0 18 0;
+#X connect 19 0 1 0;
diff --git a/pal/pbng.pd b/pal/pbng.pd
new file mode 100755
index 0000000..fbc555c
--- /dev/null
+++ b/pal/pbng.pd
@@ -0,0 +1,256 @@
+#N canvas 0 81 1004 682 12;
+#X obj 20 -14 inlet;
+#N canvas 0 16 1004 682 show-sym 0;
+#X obj -361 12 inlet;
+#X obj -79 62 get \$2 id;
+#X obj -140 192 metro 750;
+#X msg -140 264 \; \$1\$2 bang;
+#X msg -140 168 stop;
+#X obj -140 119 r \$2-lock;
+#X obj -140 143 sel 0;
+#X obj -140 240 pack s f;
+#X obj -140 216 symbol \$2;
+#X obj -361 42 showsym \$1 \$2 SET-BANG-COLOR;
+#X connect 0 0 9 0;
+#X connect 1 0 7 1;
+#X connect 2 0 8 0;
+#X connect 4 0 2 0;
+#X connect 5 0 6 0;
+#X connect 6 0 4 0;
+#X connect 7 0 3 0;
+#X connect 8 0 7 0;
+#X connect 9 0 4 0;
+#X connect 9 1 2 0;
+#X connect 9 2 4 0;
+#X connect 9 3 1 0;
+#X restore 933 168 pd show-sym;
+#N canvas 0 0 296 250 label-tgl 0;
+#X obj 122 94 sel 0 1;
+#X obj 122 66 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 11 20 loadbang;
+#X msg 11 46 0;
+#X obj 122 194 outlet;
+#X msg 122 119 symbol empty;
+#X msg 148 148 symbol LABEL;
+#X obj 122 28 r \$1-label-tgl;
+#X connect 0 0 5 0;
+#X connect 0 1 6 0;
+#X connect 1 0 0 0;
+#X connect 2 0 3 0;
+#X connect 3 0 1 0;
+#X connect 5 0 4 0;
+#X connect 6 0 4 0;
+#X connect 7 0 1 0;
+#X restore 122 531 pd label-tgl;
+#X obj 148 507 r \$1-patchname;
+#X obj 45 507 loadbang;
+#X obj 45 531 symbol \$2;
+#X obj 537 31 lock \$1 \$2;
+#X obj 574 306 constrain \$1 \$2;
+#X obj 574 334 getGUIsize \$3 \$4 \$5 \$6;
+#X obj 217 205 pack;
+#X obj 36 338 t b a;
+#X obj 217 175 +;
+#X obj 258 175 +;
+#X obj 36 313 unpack f f f f;
+#N canvas 0 0 700 277 swap 0;
+#X obj 23 241 outlet;
+#X obj 123 238 outlet;
+#X obj 23 166 spigot 1;
+#X obj 123 166 spigot 0;
+#X obj 23 11 inlet;
+#X obj 196 11 r \$2-color-swap;
+#X obj 214 166 spigot 0;
+#X obj 196 37 t a b;
+#X obj 196 63 pack f 1;
+#X msg 275 63 0;
+#X obj 196 89 route 0 1 2;
+#X obj 214 238 outlet;
+#X connect 2 0 0 0;
+#X connect 3 0 1 0;
+#X connect 4 0 2 0;
+#X connect 4 0 3 0;
+#X connect 4 0 6 0;
+#X connect 5 0 7 0;
+#X connect 6 0 11 0;
+#X connect 7 0 8 0;
+#X connect 7 1 9 0;
+#X connect 8 0 10 0;
+#X connect 9 0 2 1;
+#X connect 9 0 3 1;
+#X connect 9 0 6 1;
+#X connect 10 0 2 1;
+#X connect 10 1 3 1;
+#X connect 10 2 6 1;
+#X restore 202 313 pd swap;
+#X obj 36 289 spigot;
+#X obj 202 289 spigot;
+#X obj 202 266 r \$1-rgb-value;
+#X obj 36 266 r \$1-label-posNsize;
+#X obj 93 290 r \$2-lock;
+#X obj 266 381 loadbang;
+#X obj 266 405 symbol \$2;
+#X obj 217 234 s \$1-helper-xy;
+#X obj 537 341 t a;
+#X msg 352 460 \; \$3\$2 label \$1;
+#X obj 352 435 pack s f s;
+#X obj 450 405 loadbang;
+#X obj 450 435 symbol \$2;
+#X obj 833 371 t b a;
+#X obj 833 402 set \$2 xsize ysize;
+#X obj 442 223 symbol \$2;
+#X obj 442 198 loadbang;
+#X obj 337 223 pack f f f s;
+#X obj 537 120 t a a a;
+#X obj 563 280 if-numscroll \$1 \$2 \$3 \$4 \$5 \$6;
+#X obj 36 405 pack 0 22 22 f 20 12 10 0 s;
+#X msg 36 430 \; \$9\$4 color \$1 \$2 \$3 \; \$9\$4 label_pos \$5 \$6
+\; \$9\$4 label_font \$8 \$7;
+#X obj 273 337 t b a;
+#X obj 219 337 t b a;
+#X obj 268 507 loadbang;
+#X obj 268 534 symbol \$9;
+#X obj 352 405 label \$1 \$2;
+#X obj 831 6 clean \$1 \$2;
+#X obj 704 108 get \$2 id;
+#X obj 20 11 pappend \$1 \$2 \$3 \$4 \$5 \$6;
+#X obj 390 329 t a;
+#X obj 217 121 get \$2 x0 y0 x y;
+#X obj 717 407 loadbang;
+#X obj 717 430 symbol \$2;
+#X obj 933 140 t a;
+#X obj 20 164 t a;
+#N canvas 0 0 461 325 quantize 0;
+#X obj 14 20 inlet;
+#X obj 195 22 inlet;
+#X obj 14 213 outlet;
+#X obj 195 184 outlet;
+#X connect 0 0 2 0;
+#X connect 1 0 3 0;
+#X restore 574 374 pd quantize;
+#X obj 20 558 pack f s \$3 \$4 s s \$7 \$8 s;
+#X msg 20 607 \; \$6 obj 10 10 \$9 \$3 \$8 \$7 0 \$9 \$2\$1 empty 17
+7 0 10 -262144 -1 -1;
+#X obj 575 430 pack f f f f f s;
+#X obj 63 58 t b b a;
+#X obj 63 87 \$7;
+#X obj 95 87 \$8;
+#X msg 575 460 \; \$6\$1 size \$2 \; \$6\$1 flashtime \$4 \$3 \; \$6\$1
+init \$5;
+#X msg 337 250 \; \$4\$3 pos \$1 \$2;
+#X obj 360 121 get \$2 x y id;
+#X obj 360 146 + 10;
+#X obj 410 146 + 10;
+#X obj 537 168 get \$2 id x0 y0 x y intr hld init;
+#X obj 51 121 set \$2 intr hld;
+#X obj 537 6 pstruct \$1 \$2 intr hld init n/a n/a;
+#X obj 815 168 shownum \$1 \$2;
+#X obj 537 57 route change displace pappend select click deselect;
+#X text 670 373 <--UPDATE THIS;
+#X connect 0 0 44 0;
+#X connect 2 0 52 4;
+#X connect 3 0 52 5;
+#X connect 4 0 5 0;
+#X connect 5 0 52 1;
+#X connect 6 0 67 0;
+#X connect 7 0 8 0;
+#X connect 7 1 8 1;
+#X connect 8 0 29 0;
+#X connect 8 0 34 1;
+#X connect 8 0 51 0;
+#X connect 8 1 28 0;
+#X connect 8 1 34 2;
+#X connect 8 1 51 1;
+#X connect 9 0 22 0;
+#X connect 10 0 35 0;
+#X connect 10 1 35 4;
+#X connect 11 0 9 0;
+#X connect 12 0 9 1;
+#X connect 13 0 10 0;
+#X connect 13 1 35 5;
+#X connect 13 2 35 6;
+#X connect 13 3 35 7;
+#X connect 14 0 35 0;
+#X connect 14 1 38 0;
+#X connect 14 2 37 0;
+#X connect 15 0 13 0;
+#X connect 16 0 14 0;
+#X connect 17 0 16 0;
+#X connect 18 0 15 0;
+#X connect 19 0 15 1;
+#X connect 19 0 16 1;
+#X connect 20 0 21 0;
+#X connect 21 0 35 8;
+#X connect 23 0 25 1;
+#X connect 23 0 35 3;
+#X connect 23 0 54 0;
+#X connect 25 0 24 0;
+#X connect 26 0 27 0;
+#X connect 27 0 25 2;
+#X connect 28 0 29 0;
+#X connect 28 1 29 1;
+#X connect 30 0 32 3;
+#X connect 31 0 30 0;
+#X connect 32 0 59 0;
+#X connect 33 0 63 0;
+#X connect 33 1 34 0;
+#X connect 33 2 49 0;
+#X connect 35 0 36 0;
+#X connect 37 0 35 0;
+#X connect 37 1 35 2;
+#X connect 38 0 35 0;
+#X connect 38 1 35 1;
+#X connect 39 0 40 0;
+#X connect 40 0 52 8;
+#X connect 41 0 25 0;
+#X connect 43 0 45 0;
+#X connect 44 0 50 0;
+#X connect 44 1 46 0;
+#X connect 44 1 55 0;
+#X connect 45 0 25 1;
+#X connect 45 0 35 3;
+#X connect 46 0 11 0;
+#X connect 46 1 12 0;
+#X connect 46 2 11 1;
+#X connect 46 3 12 1;
+#X connect 47 0 48 0;
+#X connect 48 0 54 5;
+#X connect 49 0 29 2;
+#X connect 49 0 1 0;
+#X connect 50 0 35 3;
+#X connect 50 0 25 1;
+#X connect 50 0 52 0;
+#X connect 51 0 54 1;
+#X connect 52 0 53 0;
+#X connect 54 0 58 0;
+#X connect 55 0 56 0;
+#X connect 55 1 57 0;
+#X connect 55 2 64 2;
+#X connect 56 0 64 0;
+#X connect 57 0 64 1;
+#X connect 60 0 61 0;
+#X connect 60 1 62 0;
+#X connect 60 2 32 2;
+#X connect 61 0 32 0;
+#X connect 62 0 32 1;
+#X connect 63 0 23 0;
+#X connect 63 1 7 0;
+#X connect 63 2 7 1;
+#X connect 63 5 54 2;
+#X connect 63 6 54 3;
+#X connect 63 7 54 4;
+#X connect 65 0 6 0;
+#X connect 67 0 33 0;
+#X connect 67 0 46 0;
+#X connect 67 0 66 0;
+#X connect 67 1 46 0;
+#X connect 67 1 60 0;
+#X connect 67 2 33 0;
+#X connect 67 3 43 0;
+#X connect 67 3 46 0;
+#X connect 67 3 49 0;
+#X connect 67 3 66 1;
+#X connect 67 4 33 0;
+#X connect 67 4 66 1;
+#X connect 67 4 46 0;
diff --git a/pal/pcnv.pd b/pal/pcnv.pd
new file mode 100755
index 0000000..53ea980
--- /dev/null
+++ b/pal/pcnv.pd
@@ -0,0 +1,239 @@
+#N canvas 0 0 1004 682 12;
+#X obj 20 12 inlet;
+#N canvas 0 47 1004 682 show-sym 0;
+#X obj -145 38 inlet;
+#X obj -265 396 symbol;
+#X obj -26 233 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj -26 294 sel 0 1;
+#X msg -26 318 SET-BG-COLOR;
+#X obj -26 189 spigot;
+#X msg 1 342 SET-LABEL-COLOR;
+#X obj -93 138 r \$1-global-tgl;
+#X obj -265 436 set -symbol \$2 color;
+#X obj 16 366 s \$2-color-swap;
+#X obj -145 64 t b a;
+#X obj -350 199 set \$2 color-flag;
+#X obj -350 39 r \$2-show-sym;
+#X obj -350 72 t b b;
+#X msg -313 102 1;
+#X msg -272 103 stop;
+#X msg -350 160 0;
+#X obj -350 135 del 1750;
+#X obj -82 5 r \$2-pappend;
+#X obj -82 30 unpack s p;
+#X obj -26 425 s \$2-show-sym;
+#X obj -26 395 b;
+#X obj 43 137 r \$2-lock;
+#X connect 0 0 10 0;
+#X connect 1 0 8 0;
+#X connect 2 0 3 0;
+#X connect 2 0 9 0;
+#X connect 3 0 4 0;
+#X connect 3 1 6 0;
+#X connect 4 0 1 0;
+#X connect 4 0 21 0;
+#X connect 5 0 2 0;
+#X connect 6 0 1 0;
+#X connect 6 0 21 0;
+#X connect 7 0 5 0;
+#X connect 10 1 8 1;
+#X connect 10 1 11 1;
+#X connect 12 0 13 0;
+#X connect 13 0 17 0;
+#X connect 13 1 14 0;
+#X connect 13 1 15 0;
+#X connect 14 0 11 0;
+#X connect 15 0 17 0;
+#X connect 16 0 11 0;
+#X connect 17 0 16 0;
+#X connect 18 0 19 0;
+#X connect 19 1 10 0;
+#X connect 21 0 20 0;
+#X connect 22 0 5 1;
+#X restore 669 494 pd show-sym;
+#X obj 597 431 t b a;
+#X obj 228 303 pack;
+#X obj 31 453 t b a;
+#X obj 228 271 +;
+#X obj 281 271 +;
+#X obj 31 428 unpack f f f f;
+#N canvas 0 0 316 277 swap 0;
+#X obj 23 211 outlet;
+#X obj 123 208 outlet;
+#X obj 131 50 == 0;
+#X obj 23 136 spigot 1;
+#X obj 123 136 spigot 0;
+#X obj 23 11 inlet;
+#X obj 131 17 r \$2-color-swap;
+#X connect 2 0 3 1;
+#X connect 3 0 0 0;
+#X connect 4 0 1 0;
+#X connect 5 0 3 0;
+#X connect 5 0 4 0;
+#X connect 6 0 2 0;
+#X connect 6 0 4 1;
+#X restore 200 428 pd swap;
+#X obj 217 452 t b f;
+#X obj 31 404 spigot;
+#X obj 200 404 spigot;
+#N canvas 0 0 1004 682 editmode 0;
+#X obj 25 26 inlet;
+#X obj 141 26 inlet;
+#X obj 25 91 del 50;
+#X obj 25 64 t b;
+#X msg 85 62 stop;
+#X msg 25 140 \; patch editmode 0 \; \$1-global-editmode 0;
+#X obj 25 115 f \$1;
+#X connect 0 0 3 0;
+#X connect 1 0 4 0;
+#X connect 2 0 6 0;
+#X connect 3 0 2 0;
+#X connect 4 0 2 0;
+#X connect 6 0 5 0;
+#X restore 501 160 pd editmode;
+#X obj 387 400 t a;
+#X obj 728 420 t a;
+#X obj 202 625 r \$1-patchname;
+#X obj 200 381 r \$1-rgb-value;
+#X obj 31 381 r \$1-label-posNsize;
+#X obj 387 188 get \$2 id x0 y0 x y;
+#X obj 88 405 r \$2-lock;
+#X obj 606 572 get \$2 id;
+#X obj 597 464 set \$2 xsize ysize;
+#X msg 393 493 \; \$4\$1 vis_size \$2 \$3;
+#X msg 349 641 \; \$3\$2 label \$1;
+#X msg 110 552 \; \$8\$3 color \$1 \$2 \; \$8\$3 label_pos \$4 \$5
+\; \$8\$3 label_font \$7 \$6;
+#X obj 26 569 loadbang;
+#X obj 26 596 symbol \$2;
+#X obj 349 616 pack s f s;
+#X obj 457 566 loadbang;
+#X obj 457 616 symbol \$2;
+#X obj 440 398 loadbang;
+#X obj 440 424 symbol \$2;
+#X obj 393 464 pack f f f s;
+#X obj 307 475 loadbang;
+#X obj 307 499 symbol \$2;
+#X obj 110 527 pack 10 22 f 20 12 10 0 s;
+#X obj 20 70 pappend \$1 \$2 \$3 \$4 \$5 \$6;
+#X text 28 100 id;
+#X text 217 94 pointer;
+#X obj 20 625 pack f s \$3 \$4 s s;
+#X msg 20 694 \; \$6 obj 10 10 cnv 15 \$3 \$4 empty \$2\$1 \$5 20 12
+0 10 -233017 -66577 0 \;;
+#X obj 228 332 s \$1-helper-xy;
+#X obj 424 287 constrain \$1 \$2;
+#X obj 424 319 getGUIsize \$3 \$4 \$5 \$6;
+#X obj 202 648 label-tgl \$1;
+#X obj 387 153 t a a a;
+#X obj 398 260 if-numscroll \$1 \$2 \$3 \$4 \$5 \$6;
+#X obj 349 566 label \$1 \$2;
+#X obj 752 57 clean \$1 \$2;
+#X obj 336 375 get \$2 id;
+#X obj 336 408 t a;
+#X obj 228 186 get \$2 x0 y0 x y;
+#X obj 867 291 symbol \$2;
+#X obj 867 266 loadbang;
+#X obj 762 291 pack f f f s;
+#X msg 762 318 \; \$4\$3 pos \$1 \$2;
+#X obj 785 189 get \$2 x y id;
+#X obj 785 214 + 10;
+#X obj 835 214 + 10;
+#X obj 387 88 lock \$1 \$2;
+#X obj 387 125 route change displace deselect select click pappend
+;
+#X obj 387 58 pstruct \$1 \$2 n/a n/a n/a n/a n/a;
+#X obj 647 188 shownum \$1 \$2;
+#X connect 0 0 36 0;
+#X connect 2 0 21 0;
+#X connect 2 1 21 1;
+#X connect 3 0 41 0;
+#X connect 4 0 35 0;
+#X connect 4 1 35 3;
+#X connect 5 0 3 0;
+#X connect 6 0 3 1;
+#X connect 7 0 4 0;
+#X connect 7 1 35 4;
+#X connect 7 2 35 5;
+#X connect 7 3 35 6;
+#X connect 8 0 35 0;
+#X connect 8 1 9 0;
+#X connect 9 0 35 0;
+#X connect 9 1 35 1;
+#X connect 10 0 7 0;
+#X connect 11 0 8 0;
+#X connect 13 0 27 1;
+#X connect 13 0 32 0;
+#X connect 13 0 35 2;
+#X connect 14 0 1 0;
+#X connect 14 0 21 2;
+#X connect 15 0 39 5;
+#X connect 16 0 11 0;
+#X connect 17 0 10 0;
+#X connect 18 0 13 0;
+#X connect 18 1 42 0;
+#X connect 18 2 42 1;
+#X connect 19 0 10 1;
+#X connect 19 0 11 1;
+#X connect 20 0 27 1;
+#X connect 25 0 26 0;
+#X connect 26 0 39 1;
+#X connect 27 0 23 0;
+#X connect 28 0 29 0;
+#X connect 29 0 27 2;
+#X connect 30 0 31 0;
+#X connect 31 0 32 3;
+#X connect 32 0 22 0;
+#X connect 33 0 34 0;
+#X connect 34 0 35 7;
+#X connect 35 0 24 0;
+#X connect 36 0 39 0;
+#X connect 36 1 51 0;
+#X connect 36 1 49 0;
+#X connect 39 0 40 0;
+#X connect 42 0 43 0;
+#X connect 42 1 43 1;
+#X connect 43 0 32 1;
+#X connect 43 0 21 0;
+#X connect 43 0 46 1;
+#X connect 43 1 32 2;
+#X connect 43 1 2 0;
+#X connect 43 1 46 2;
+#X connect 44 0 39 4;
+#X connect 45 0 18 0;
+#X connect 45 1 46 0;
+#X connect 45 2 14 0;
+#X connect 47 0 27 0;
+#X connect 49 0 50 0;
+#X connect 50 0 35 2;
+#X connect 50 0 27 1;
+#X connect 51 0 5 0;
+#X connect 51 1 6 0;
+#X connect 51 2 5 1;
+#X connect 51 3 6 1;
+#X connect 52 0 54 3;
+#X connect 53 0 52 0;
+#X connect 54 0 55 0;
+#X connect 56 0 57 0;
+#X connect 56 1 58 0;
+#X connect 56 2 54 2;
+#X connect 57 0 54 0;
+#X connect 58 0 54 1;
+#X connect 59 0 60 0;
+#X connect 60 0 45 0;
+#X connect 60 0 51 0;
+#X connect 60 0 62 0;
+#X connect 60 1 51 0;
+#X connect 60 1 56 0;
+#X connect 60 3 20 0;
+#X connect 60 3 49 0;
+#X connect 60 3 14 0;
+#X connect 60 3 51 0;
+#X connect 60 3 1 0;
+#X connect 60 3 62 1;
+#X connect 60 4 45 0;
+#X connect 60 4 62 1;
+#X connect 60 4 51 0;
+#X connect 60 5 45 0;
+#X connect 61 0 59 0;
diff --git a/pal/pnbx.pd b/pal/pnbx.pd
new file mode 100755
index 0000000..a386e92
--- /dev/null
+++ b/pal/pnbx.pd
@@ -0,0 +1,250 @@
+#N canvas 0 12 1004 682 12;
+#X obj 20 -14 inlet;
+#N canvas 160 12 299 130 show-sym 0;
+#X obj -347 11 inlet;
+#X obj -347 36 showsym \$1 \$2 SET-FORE-COLOR;
+#X connect 0 0 1 0;
+#X restore 875 153 pd show-sym;
+#N canvas 0 0 296 250 label-tgl 0;
+#X obj 122 94 sel 0 1;
+#X obj 122 66 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X obj 11 20 loadbang;
+#X msg 11 46 0;
+#X obj 122 194 outlet;
+#X msg 122 119 symbol empty;
+#X msg 148 148 symbol LABEL;
+#X obj 122 28 r \$1-label-tgl;
+#X connect 0 0 5 0;
+#X connect 0 1 6 0;
+#X connect 1 0 0 0;
+#X connect 2 0 3 0;
+#X connect 3 0 1 0;
+#X connect 5 0 4 0;
+#X connect 6 0 4 0;
+#X connect 7 0 1 0;
+#X restore 122 531 pd label-tgl;
+#X obj 148 507 r \$1-patchname;
+#X obj 45 507 loadbang;
+#X obj 45 531 symbol \$2;
+#X obj 572 291 constrain \$1 \$2;
+#X obj 572 319 getGUIsize \$3 \$4 \$5 \$6;
+#X obj 217 205 pack;
+#X obj 36 338 t b a;
+#X obj 217 175 +;
+#X obj 258 175 +;
+#X obj 36 313 unpack f f f f;
+#N canvas 0 0 700 277 swap 0;
+#X obj 23 241 outlet;
+#X obj 123 238 outlet;
+#X obj 23 166 spigot 1;
+#X obj 123 166 spigot 0;
+#X obj 23 11 inlet;
+#X obj 196 11 r \$2-color-swap;
+#X obj 214 166 spigot 0;
+#X obj 196 37 t a b;
+#X obj 196 63 pack f 1;
+#X msg 275 63 0;
+#X obj 196 89 route 0 1 2;
+#X obj 214 238 outlet;
+#X connect 2 0 0 0;
+#X connect 3 0 1 0;
+#X connect 4 0 2 0;
+#X connect 4 0 3 0;
+#X connect 4 0 6 0;
+#X connect 5 0 7 0;
+#X connect 6 0 11 0;
+#X connect 7 0 8 0;
+#X connect 7 1 9 0;
+#X connect 8 0 10 0;
+#X connect 9 0 2 1;
+#X connect 9 0 3 1;
+#X connect 9 0 6 1;
+#X connect 10 0 2 1;
+#X connect 10 1 3 1;
+#X connect 10 2 6 1;
+#X restore 202 313 pd swap;
+#X obj 36 289 spigot;
+#X obj 202 289 spigot;
+#X obj 202 266 r \$1-rgb-value;
+#X obj 36 266 r \$1-label-posNsize;
+#X obj 93 290 r \$2-lock;
+#X obj 266 381 loadbang;
+#X obj 266 405 symbol \$2;
+#X obj 217 234 s \$1-helper-xy;
+#X obj 537 326 t a;
+#X msg 352 460 \; \$3\$2 label \$1;
+#X obj 352 435 pack s f s;
+#X obj 450 405 loadbang;
+#X obj 450 435 symbol \$2;
+#X obj 834 356 t b a;
+#X obj 834 387 set \$2 xsize ysize;
+#X obj 854 179 linORlog;
+#X obj 537 95 t a a a;
+#X obj 563 265 if-numscroll \$1 \$2 \$3 \$4 \$5 \$6;
+#X obj 36 405 pack 0 22 22 f 20 12 10 0 s;
+#X msg 36 430 \; \$9\$4 color \$1 \$2 \$3 \; \$9\$4 label_pos \$5 \$6
+\; \$9\$4 label_font \$8 \$7;
+#X obj 273 337 t b a;
+#X obj 219 337 t b a;
+#X obj 268 507 loadbang;
+#X obj 268 534 symbol \$9;
+#X obj 20 562 pack f s \$3 \$4 s s \$7 \$8 s;
+#X obj 352 405 label \$1 \$2;
+#X obj 859 -9 clean \$1 \$2;
+#X obj 675 124 get \$2 id;
+#X obj 20 11 pappend \$1 \$2 \$3 \$4 \$5 \$6;
+#X obj 59 96 \$7;
+#X obj 94 96 \$8;
+#X obj 390 329 t a;
+#X obj 217 121 get \$2 x0 y0 x y;
+#X obj 576 415 pack f f f f f f f s s;
+#X obj 760 391 loadbang;
+#X obj 760 414 symbol \$2;
+#X obj 875 116 t a;
+#X obj 20 164 t a;
+#N canvas 0 0 461 325 quantize 0;
+#X obj 14 20 inlet;
+#X obj 195 22 inlet;
+#X obj 14 213 outlet;
+#X obj 195 184 outlet;
+#X obj 14 134 int;
+#X obj 14 176 + 5;
+#X obj 14 90 / 9;
+#X connect 0 0 6 0;
+#X connect 1 0 3 0;
+#X connect 4 0 5 0;
+#X connect 5 0 2 0;
+#X connect 6 0 4 0;
+#X restore 612 366 pd quantize;
+#X obj 537 153 get \$2 id x0 y0 x y min max lh init lin;
+#X obj 59 121 set \$2 min max lh;
+#X msg 131 94 256;
+#X obj 59 68 t b b b a;
+#X msg 576 445 \; \$9\$1 size \$2 \$3 \; \$9\$1 range \$4 \$5 \; \$9\$1
+\$8 \; \$9\$1 log_height \$6 \; \$9\$1 init \$7;
+#X msg 20 590 \; \$6 obj 10 10 \$9 \$3 \$4 \$7 \$8 0 0 \$9 \$2\$1 empty
+0 -8 0 10 -262144 -1 -1 0 256;
+#X obj 442 223 symbol \$2;
+#X obj 442 198 loadbang;
+#X obj 337 223 pack f f f s;
+#X msg 337 250 \; \$4\$3 pos \$1 \$2;
+#X obj 360 121 get \$2 x y id;
+#X obj 360 146 + 10;
+#X obj 410 146 + 10;
+#X obj 537 16 lock \$1 \$2;
+#X obj 537 42 route change displace deselect select click pappend;
+#X obj 537 -9 pstruct \$1 \$2 min max lh init lin;
+#X obj 874 90 shownum \$1 \$2;
+#X connect 0 0 42 0;
+#X connect 2 0 38 4;
+#X connect 3 0 38 5;
+#X connect 4 0 5 0;
+#X connect 5 0 38 1;
+#X connect 6 0 7 0;
+#X connect 6 1 7 1;
+#X connect 7 0 28 0;
+#X connect 7 0 31 1;
+#X connect 7 0 52 0;
+#X connect 7 1 27 0;
+#X connect 7 1 31 2;
+#X connect 7 1 52 1;
+#X connect 8 0 21 0;
+#X connect 9 0 32 0;
+#X connect 9 1 32 4;
+#X connect 10 0 8 0;
+#X connect 11 0 8 1;
+#X connect 12 0 9 0;
+#X connect 12 1 32 5;
+#X connect 12 2 32 6;
+#X connect 12 3 32 7;
+#X connect 13 0 32 0;
+#X connect 13 1 35 0;
+#X connect 13 2 34 0;
+#X connect 14 0 12 0;
+#X connect 15 0 13 0;
+#X connect 16 0 15 0;
+#X connect 17 0 14 0;
+#X connect 18 0 14 1;
+#X connect 18 0 15 1;
+#X connect 19 0 20 0;
+#X connect 20 0 32 8;
+#X connect 22 0 24 1;
+#X connect 22 0 32 3;
+#X connect 22 0 47 0;
+#X connect 24 0 23 0;
+#X connect 25 0 26 0;
+#X connect 26 0 24 2;
+#X connect 27 0 28 0;
+#X connect 27 1 28 1;
+#X connect 29 0 47 7;
+#X connect 30 0 53 0;
+#X connect 30 1 31 0;
+#X connect 30 2 50 0;
+#X connect 32 0 33 0;
+#X connect 34 0 32 0;
+#X connect 34 1 32 2;
+#X connect 35 0 32 0;
+#X connect 35 1 32 1;
+#X connect 36 0 37 0;
+#X connect 37 0 38 8;
+#X connect 38 0 58 0;
+#X connect 39 0 24 0;
+#X connect 41 0 45 0;
+#X connect 42 0 51 0;
+#X connect 42 1 46 0;
+#X connect 42 1 56 0;
+#X connect 43 0 54 0;
+#X connect 44 0 54 1;
+#X connect 45 0 24 1;
+#X connect 45 0 32 3;
+#X connect 46 0 10 0;
+#X connect 46 1 11 0;
+#X connect 46 2 10 1;
+#X connect 46 3 11 1;
+#X connect 47 0 57 0;
+#X connect 48 0 49 0;
+#X connect 49 0 47 8;
+#X connect 50 0 28 2;
+#X connect 50 0 1 0;
+#X connect 51 0 38 0;
+#X connect 51 0 32 3;
+#X connect 51 0 24 1;
+#X connect 52 0 47 1;
+#X connect 52 1 47 2;
+#X connect 53 0 22 0;
+#X connect 53 1 6 0;
+#X connect 53 2 6 1;
+#X connect 53 5 47 3;
+#X connect 53 6 47 4;
+#X connect 53 7 47 5;
+#X connect 53 8 47 6;
+#X connect 53 9 29 0;
+#X connect 55 0 54 2;
+#X connect 56 0 43 0;
+#X connect 56 1 44 0;
+#X connect 56 2 55 0;
+#X connect 56 3 54 3;
+#X connect 59 0 61 3;
+#X connect 60 0 59 0;
+#X connect 61 0 62 0;
+#X connect 63 0 64 0;
+#X connect 63 1 65 0;
+#X connect 63 2 61 2;
+#X connect 64 0 61 0;
+#X connect 65 0 61 1;
+#X connect 66 0 67 0;
+#X connect 67 0 30 0;
+#X connect 67 0 46 0;
+#X connect 67 0 69 0;
+#X connect 67 1 46 0;
+#X connect 67 1 63 0;
+#X connect 67 3 41 0;
+#X connect 67 3 46 0;
+#X connect 67 3 50 0;
+#X connect 67 3 69 1;
+#X connect 67 4 30 0;
+#X connect 67 4 69 1;
+#X connect 67 4 46 0;
+#X connect 67 5 30 0;
+#X connect 68 0 66 0;
diff --git a/pal/pradio.pd b/pal/pradio.pd
new file mode 100755
index 0000000..16107e7
--- /dev/null
+++ b/pal/pradio.pd
@@ -0,0 +1,270 @@
+#N canvas 0 84 1004 682 12;
+#X obj 20 -14 inlet;
+#N canvas 219 0 1004 682 show-sym 0;
+#X obj -366 14 inlet;
+#X obj -366 39 showsym \$1 \$2 SET-BUTTON-COLOR;
+#X connect 0 0 1 0;
+#X restore 875 153 pd show-sym;
+#N canvas 0 0 296 250 label-tgl 0;
+#X obj 122 94 sel 0 1;
+#X obj 122 66 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 11 20 loadbang;
+#X msg 11 46 0;
+#X obj 122 194 outlet;
+#X msg 122 119 symbol empty;
+#X msg 148 148 symbol LABEL;
+#X obj 122 28 r \$1-label-tgl;
+#X connect 0 0 5 0;
+#X connect 0 1 6 0;
+#X connect 1 0 0 0;
+#X connect 2 0 3 0;
+#X connect 3 0 1 0;
+#X connect 5 0 4 0;
+#X connect 6 0 4 0;
+#X connect 7 0 1 0;
+#X restore 122 531 pd label-tgl;
+#X obj 148 507 r \$1-patchname;
+#X obj 45 507 loadbang;
+#X obj 45 531 symbol \$2;
+#X obj 574 291 constrain \$1 \$2;
+#X obj 574 319 getGUIsize \$3 \$4 \$5 \$6;
+#X obj 217 205 pack;
+#X obj 36 338 t b a;
+#X obj 217 175 +;
+#X obj 258 175 +;
+#X obj 36 313 unpack f f f f;
+#N canvas 0 0 700 277 swap 0;
+#X obj 23 241 outlet;
+#X obj 123 238 outlet;
+#X obj 23 166 spigot 1;
+#X obj 123 166 spigot 0;
+#X obj 23 11 inlet;
+#X obj 196 11 r \$2-color-swap;
+#X obj 214 166 spigot 0;
+#X obj 196 37 t a b;
+#X obj 196 63 pack f 1;
+#X msg 275 63 0;
+#X obj 196 89 route 0 1 2;
+#X obj 214 238 outlet;
+#X connect 2 0 0 0;
+#X connect 3 0 1 0;
+#X connect 4 0 2 0;
+#X connect 4 0 3 0;
+#X connect 4 0 6 0;
+#X connect 5 0 7 0;
+#X connect 6 0 11 0;
+#X connect 7 0 8 0;
+#X connect 7 1 9 0;
+#X connect 8 0 10 0;
+#X connect 9 0 2 1;
+#X connect 9 0 3 1;
+#X connect 9 0 6 1;
+#X connect 10 0 2 1;
+#X connect 10 1 3 1;
+#X connect 10 2 6 1;
+#X restore 202 313 pd swap;
+#X obj 36 289 spigot;
+#X obj 202 289 spigot;
+#X obj 202 266 r \$1-rgb-value;
+#X obj 36 266 r \$1-label-posNsize;
+#X obj 93 290 r \$2-lock;
+#X obj 266 381 loadbang;
+#X obj 266 405 symbol \$2;
+#X obj 217 234 s \$1-helper-xy;
+#X obj 537 326 t a;
+#X msg 352 460 \; \$3\$2 label \$1;
+#X obj 352 435 pack s f s;
+#X obj 450 405 loadbang;
+#X obj 450 435 symbol \$2;
+#X obj 834 356 t b a;
+#X obj 834 387 set \$2 xsize ysize;
+#X obj 537 95 t a a a;
+#X obj 563 265 if-numscroll \$1 \$2 \$3 \$4 \$5 \$6;
+#X obj 36 405 pack 0 22 22 f 20 12 10 0 s;
+#X msg 36 430 \; \$9\$4 color \$1 \$2 \$3 \; \$9\$4 label_pos \$5 \$6
+\; \$9\$4 label_font \$8 \$7;
+#X obj 273 337 t b a;
+#X obj 219 337 t b a;
+#X obj 268 507 loadbang;
+#X obj 268 534 symbol \$9;
+#X obj 20 562 pack f s \$3 \$4 s s \$7 \$8 s;
+#X obj 352 405 label \$1 \$2;
+#X obj 822 -10 clean \$1 \$2;
+#X obj 675 124 get \$2 id;
+#X obj 20 11 pappend \$1 \$2 \$3 \$4 \$5 \$6;
+#X obj 82 97 \$7;
+#X obj 117 97 \$8;
+#X obj 82 69 t b b a;
+#X obj 390 329 t a;
+#X obj 217 121 get \$2 x0 y0 x y;
+#X obj 707 481 loadbang;
+#X obj 707 504 symbol \$2;
+#X obj 875 116 t a;
+#X obj 20 164 t a;
+#X obj 442 223 symbol \$2;
+#X obj 442 198 loadbang;
+#X obj 337 223 pack f f f s;
+#X msg 337 250 \; \$4\$3 pos \$1 \$2;
+#X obj 360 121 get \$2 x y id;
+#X obj 360 146 + 10;
+#X obj 410 146 + 10;
+#X obj 537 16 lock \$1 \$2;
+#X obj 537 42 route change displace deselect select click pappend;
+#X obj 863 213 shownum \$1 \$2;
+#X obj 506 524 vradio 15 1 0 8 empty empty empty 0 -8 0 10 -262144
+-1 -1 0;
+#X obj 537 -9 pstruct \$1 \$2 init num n/a n/a n/a;
+#X obj 82 122 set \$2 init num;
+#X msg 20 590 \; \$6 obj 10 10 \$9 \$3 1 \$7 \$8 \$9 \$2\$1 empty 0
+-8 0 10 -262144 -1 -1 0;
+#X obj 585 505 pack f f f f s;
+#X obj 633 448 int;
+#X msg 585 535 \; \$5\$1 size \$2 \; \$5\$1 number \$3;
+#X obj 537 153 get \$2 id x0 y0 x y init;
+#N canvas 0 0 1004 682 swapIF 0;
+#X obj 14 20 inlet;
+#X obj 85 22 inlet;
+#X obj 14 183 outlet;
+#X obj 85 184 outlet;
+#X obj 221 9 loadbang;
+#X obj 221 34 \$10;
+#X obj 170 63 == 0;
+#X obj 14 116 spigot;
+#X obj 85 116 spigot;
+#X obj 150 116 spigot;
+#X obj 220 116 spigot;
+#X obj 150 145 swap;
+#X connect 0 0 7 0;
+#X connect 0 0 9 0;
+#X connect 1 0 8 0;
+#X connect 1 0 10 0;
+#X connect 4 0 5 0;
+#X connect 5 0 6 0;
+#X connect 5 0 9 1;
+#X connect 5 0 10 1;
+#X connect 6 0 7 1;
+#X connect 6 0 8 1;
+#X connect 7 0 2 0;
+#X connect 8 0 3 0;
+#X connect 9 0 11 0;
+#X connect 10 0 11 1;
+#X connect 11 0 2 0;
+#X connect 11 1 3 0;
+#X restore 612 366 pd swapIF;
+#X obj 526 630 hradio 15 1 0 8 empty empty empty 0 -8 0 10 -262144
+-1 -1 0;
+#X floatatom 706 403 5 0 0 0 - - -;
+#X floatatom 688 457 5 0 0 0 - - -;
+#X obj 633 398 / 16;
+#X obj 633 423 + 8;
+#X connect 0 0 41 0;
+#X connect 2 0 37 4;
+#X connect 3 0 37 5;
+#X connect 4 0 5 0;
+#X connect 5 0 37 1;
+#X connect 6 0 7 0;
+#X connect 6 1 7 1;
+#X connect 7 0 28 0;
+#X connect 7 0 30 1;
+#X connect 7 0 69 0;
+#X connect 7 1 27 0;
+#X connect 7 1 30 2;
+#X connect 7 1 69 1;
+#X connect 8 0 21 0;
+#X connect 9 0 31 0;
+#X connect 9 1 31 4;
+#X connect 10 0 8 0;
+#X connect 11 0 8 1;
+#X connect 12 0 9 0;
+#X connect 12 1 31 5;
+#X connect 12 2 31 6;
+#X connect 12 3 31 7;
+#X connect 13 0 31 0;
+#X connect 13 1 34 0;
+#X connect 13 2 33 0;
+#X connect 14 0 12 0;
+#X connect 15 0 13 0;
+#X connect 16 0 15 0;
+#X connect 17 0 14 0;
+#X connect 18 0 14 1;
+#X connect 18 0 15 1;
+#X connect 19 0 20 0;
+#X connect 20 0 31 8;
+#X connect 22 0 24 1;
+#X connect 22 0 31 3;
+#X connect 22 0 65 0;
+#X connect 24 0 23 0;
+#X connect 25 0 26 0;
+#X connect 26 0 24 2;
+#X connect 27 0 28 0;
+#X connect 27 1 28 1;
+#X connect 29 0 68 0;
+#X connect 29 1 30 0;
+#X connect 29 2 49 0;
+#X connect 31 0 32 0;
+#X connect 33 0 31 0;
+#X connect 33 1 31 2;
+#X connect 34 0 31 0;
+#X connect 34 1 31 1;
+#X connect 35 0 36 0;
+#X connect 36 0 37 8;
+#X connect 37 0 64 0;
+#X connect 38 0 24 0;
+#X connect 40 0 45 0;
+#X connect 41 0 50 0;
+#X connect 41 1 44 0;
+#X connect 41 1 46 0;
+#X connect 42 0 63 0;
+#X connect 43 0 63 1;
+#X connect 44 0 42 0;
+#X connect 44 1 43 0;
+#X connect 44 2 63 2;
+#X connect 45 0 24 1;
+#X connect 45 0 31 3;
+#X connect 46 0 10 0;
+#X connect 46 1 11 0;
+#X connect 46 2 10 1;
+#X connect 46 3 11 1;
+#X connect 47 0 48 0;
+#X connect 48 0 65 4;
+#X connect 49 0 28 2;
+#X connect 49 0 1 0;
+#X connect 50 0 37 0;
+#X connect 50 0 31 3;
+#X connect 50 0 24 1;
+#X connect 51 0 53 3;
+#X connect 52 0 51 0;
+#X connect 53 0 54 0;
+#X connect 55 0 56 0;
+#X connect 55 1 57 0;
+#X connect 55 2 53 2;
+#X connect 56 0 53 0;
+#X connect 57 0 53 1;
+#X connect 58 0 59 0;
+#X connect 59 0 29 0;
+#X connect 59 0 46 0;
+#X connect 59 0 60 0;
+#X connect 59 1 46 0;
+#X connect 59 1 55 0;
+#X connect 59 3 40 0;
+#X connect 59 3 46 0;
+#X connect 59 3 49 0;
+#X connect 59 3 60 1;
+#X connect 59 4 29 0;
+#X connect 59 4 60 1;
+#X connect 59 4 46 0;
+#X connect 59 5 29 0;
+#X connect 62 0 58 0;
+#X connect 65 0 67 0;
+#X connect 66 0 65 2;
+#X connect 66 0 72 0;
+#X connect 68 0 22 0;
+#X connect 68 1 6 0;
+#X connect 68 2 6 1;
+#X connect 68 5 65 3;
+#X connect 69 0 65 1;
+#X connect 69 1 71 0;
+#X connect 69 1 73 0;
+#X connect 73 0 74 0;
+#X connect 74 0 66 0;
diff --git a/pal/pslider.pd b/pal/pslider.pd
new file mode 100755
index 0000000..b215228
--- /dev/null
+++ b/pal/pslider.pd
@@ -0,0 +1,243 @@
+#N canvas 0 0 1004 682 12;
+#X obj 20 -14 inlet;
+#N canvas 219 -11 269 90 show-sym 0;
+#X obj -366 14 inlet;
+#X obj -366 39 showsym \$1 \$2 SET-SLIDER-COLOR;
+#X connect 0 0 1 0;
+#X restore 875 153 pd show-sym;
+#N canvas 0 0 296 250 label-tgl 0;
+#X obj 122 94 sel 0 1;
+#X obj 122 66 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X obj 11 20 loadbang;
+#X msg 11 46 0;
+#X obj 122 194 outlet;
+#X msg 122 119 symbol empty;
+#X msg 148 148 symbol LABEL;
+#X obj 122 28 r \$1-label-tgl;
+#X connect 0 0 5 0;
+#X connect 0 1 6 0;
+#X connect 1 0 0 0;
+#X connect 2 0 3 0;
+#X connect 3 0 1 0;
+#X connect 5 0 4 0;
+#X connect 6 0 4 0;
+#X connect 7 0 1 0;
+#X restore 122 531 pd label-tgl;
+#X obj 148 507 r \$1-patchname;
+#X obj 45 507 loadbang;
+#X obj 45 531 symbol \$2;
+#X obj 572 291 constrain \$1 \$2;
+#X obj 578 319 getGUIsize \$3 \$4 \$5 \$6;
+#X obj 217 205 pack;
+#X obj 36 338 t b a;
+#X obj 217 175 +;
+#X obj 258 175 +;
+#X obj 36 313 unpack f f f f;
+#N canvas 0 0 700 277 swap 0;
+#X obj 23 241 outlet;
+#X obj 123 238 outlet;
+#X obj 23 166 spigot 1;
+#X obj 123 166 spigot 0;
+#X obj 23 11 inlet;
+#X obj 196 11 r \$2-color-swap;
+#X obj 214 166 spigot 0;
+#X obj 196 37 t a b;
+#X obj 196 63 pack f 1;
+#X msg 275 63 0;
+#X obj 196 89 route 0 1 2;
+#X obj 214 238 outlet;
+#X connect 2 0 0 0;
+#X connect 3 0 1 0;
+#X connect 4 0 2 0;
+#X connect 4 0 3 0;
+#X connect 4 0 6 0;
+#X connect 5 0 7 0;
+#X connect 6 0 11 0;
+#X connect 7 0 8 0;
+#X connect 7 1 9 0;
+#X connect 8 0 10 0;
+#X connect 9 0 2 1;
+#X connect 9 0 3 1;
+#X connect 9 0 6 1;
+#X connect 10 0 2 1;
+#X connect 10 1 3 1;
+#X connect 10 2 6 1;
+#X restore 202 313 pd swap;
+#X obj 36 289 spigot;
+#X obj 202 289 spigot;
+#X obj 202 266 r \$1-rgb-value;
+#X obj 36 266 r \$1-label-posNsize;
+#X obj 93 290 r \$2-lock;
+#X obj 266 381 loadbang;
+#X obj 266 405 symbol \$2;
+#X obj 217 234 s \$1-helper-xy;
+#X obj 537 326 t a;
+#X msg 352 460 \; \$3\$2 label \$1;
+#X obj 352 435 pack s f s;
+#X obj 450 405 loadbang;
+#X obj 450 435 symbol \$2;
+#X obj 834 356 t b a;
+#X obj 834 387 set \$2 xsize ysize;
+#X obj 854 179 linORlog;
+#X obj 537 153 get \$2 id x0 y0 x y min max soc init lin;
+#X obj 783 179 == 0;
+#X obj 537 95 t a a a;
+#X obj 563 265 if-numscroll \$1 \$2 \$3 \$4 \$5 \$6;
+#X obj 36 405 pack 0 22 22 f 20 12 10 0 s;
+#X msg 36 430 \; \$9\$4 color \$1 \$2 \$3 \; \$9\$4 label_pos \$5 \$6
+\; \$9\$4 label_font \$8 \$7;
+#X obj 273 337 t b a;
+#X obj 219 337 t b a;
+#X obj 268 507 loadbang;
+#X obj 268 534 symbol \$9;
+#X obj 20 562 pack f s \$3 \$4 s s \$7 \$8 s;
+#X msg 20 590 \; \$6 obj 10 10 \$9 \$3 \$4 \$7 \$8 0 0 \$9 \$2\$1 empty
+0 -9 0 10 -262144 -1 -1 0 1;
+#X obj 352 405 label \$1 \$2;
+#X obj 822 -10 clean \$1 \$2;
+#X obj 675 124 get \$2 id;
+#X obj 20 11 pappend \$1 \$2 \$3 \$4 \$5 \$6;
+#X obj 82 122 set \$2 min max;
+#X obj 82 97 \$7;
+#X obj 117 97 \$8;
+#X obj 82 69 t b b a;
+#X obj 390 329 t a;
+#X obj 217 121 get \$2 x0 y0 x y;
+#X obj 576 415 pack f f f f f f f s s;
+#X obj 760 391 loadbang;
+#X obj 760 414 symbol \$2;
+#X msg 576 445 \; \$9\$1 size \$2 \$3 \; \$9\$1 range \$4 \$5 \; \$9\$1
+\$8 \; \$9\$1 steady \$6 \; \$9\$1 init \$7;
+#N canvas 0 0 191 238 (subpatch) 0;
+#X obj 14 20 inlet;
+#X obj 85 22 inlet;
+#X obj 14 183 outlet;
+#X obj 85 184 outlet;
+#X connect 0 0 2 0;
+#X connect 1 0 3 0;
+#X restore 612 366 pd;
+#X obj 875 116 t a;
+#X obj 20 164 t a;
+#X obj 442 223 symbol \$2;
+#X obj 442 198 loadbang;
+#X obj 337 223 pack f f f s;
+#X msg 337 250 \; \$4\$3 pos \$1 \$2;
+#X obj 360 121 get \$2 x y id;
+#X obj 360 146 + 10;
+#X obj 410 146 + 10;
+#X obj 537 16 lock \$1 \$2;
+#X obj 537 42 route change displace deselect select click pappend;
+#X obj 863 213 shownum \$1 \$2;
+#X obj 537 -9 pstruct \$1 \$2 min max soc init lin;
+#X connect 0 0 45 0;
+#X connect 2 0 40 4;
+#X connect 3 0 40 5;
+#X connect 4 0 5 0;
+#X connect 5 0 40 1;
+#X connect 6 0 7 0;
+#X connect 6 1 7 1;
+#X connect 7 0 28 0;
+#X connect 7 0 33 1;
+#X connect 7 0 56 0;
+#X connect 7 1 27 0;
+#X connect 7 1 33 2;
+#X connect 7 1 56 1;
+#X connect 8 0 21 0;
+#X connect 9 0 34 0;
+#X connect 9 1 34 4;
+#X connect 10 0 8 0;
+#X connect 11 0 8 1;
+#X connect 12 0 9 0;
+#X connect 12 1 34 5;
+#X connect 12 2 34 6;
+#X connect 12 3 34 7;
+#X connect 13 0 34 0;
+#X connect 13 1 37 0;
+#X connect 13 2 36 0;
+#X connect 14 0 12 0;
+#X connect 15 0 13 0;
+#X connect 16 0 15 0;
+#X connect 17 0 14 0;
+#X connect 18 0 14 1;
+#X connect 18 0 15 1;
+#X connect 19 0 20 0;
+#X connect 20 0 34 8;
+#X connect 22 0 24 1;
+#X connect 22 0 34 3;
+#X connect 22 0 52 0;
+#X connect 24 0 23 0;
+#X connect 25 0 26 0;
+#X connect 26 0 24 2;
+#X connect 27 0 28 0;
+#X connect 27 1 28 1;
+#X connect 29 0 52 7;
+#X connect 30 0 22 0;
+#X connect 30 1 6 0;
+#X connect 30 2 6 1;
+#X connect 30 5 52 3;
+#X connect 30 6 52 4;
+#X connect 30 7 31 0;
+#X connect 30 8 52 6;
+#X connect 30 9 29 0;
+#X connect 31 0 52 5;
+#X connect 32 0 30 0;
+#X connect 32 1 33 0;
+#X connect 32 2 57 0;
+#X connect 34 0 35 0;
+#X connect 36 0 34 0;
+#X connect 36 1 34 2;
+#X connect 37 0 34 0;
+#X connect 37 1 34 1;
+#X connect 38 0 39 0;
+#X connect 39 0 40 8;
+#X connect 40 0 41 0;
+#X connect 42 0 24 0;
+#X connect 44 0 50 0;
+#X connect 45 0 58 0;
+#X connect 45 1 49 0;
+#X connect 45 1 51 0;
+#X connect 47 0 46 0;
+#X connect 48 0 46 1;
+#X connect 49 0 47 0;
+#X connect 49 1 48 0;
+#X connect 49 2 46 2;
+#X connect 50 0 24 1;
+#X connect 50 0 34 3;
+#X connect 51 0 10 0;
+#X connect 51 1 11 0;
+#X connect 51 2 10 1;
+#X connect 51 3 11 1;
+#X connect 52 0 55 0;
+#X connect 53 0 54 0;
+#X connect 54 0 52 8;
+#X connect 56 0 52 1;
+#X connect 56 1 52 2;
+#X connect 57 0 28 2;
+#X connect 57 0 1 0;
+#X connect 58 0 40 0;
+#X connect 58 0 34 3;
+#X connect 58 0 24 1;
+#X connect 59 0 61 3;
+#X connect 60 0 59 0;
+#X connect 61 0 62 0;
+#X connect 63 0 64 0;
+#X connect 63 1 65 0;
+#X connect 63 2 61 2;
+#X connect 64 0 61 0;
+#X connect 65 0 61 1;
+#X connect 66 0 67 0;
+#X connect 67 0 32 0;
+#X connect 67 0 51 0;
+#X connect 67 0 68 0;
+#X connect 67 1 51 0;
+#X connect 67 1 63 0;
+#X connect 67 3 44 0;
+#X connect 67 3 51 0;
+#X connect 67 3 57 0;
+#X connect 67 3 68 1;
+#X connect 67 4 32 0;
+#X connect 67 4 68 1;
+#X connect 67 4 51 0;
+#X connect 67 5 32 0;
+#X connect 69 0 66 0;
diff --git a/pal/pstruct.pd b/pal/pstruct.pd
new file mode 100755
index 0000000..3b72caf
--- /dev/null
+++ b/pal/pstruct.pd
@@ -0,0 +1,50 @@
+#N canvas 446 0 484 674 12;
+#X text 82 72 x-axis;
+#X text 79 292 y-axis;
+#X obj 16 649 outlet;
+#X obj 578 265 drawnumber -v c1 xsize x0(0:1000)(25:1025) y0(0:1000)(-35:965)
+0 x:;
+#X obj 81 316 r \$2-y-vis;
+#X obj 81 95 r \$2-x-vis;
+#X obj 575 375 drawnumber -v c2 \$3 x0(0:1000)(75:1075) y0(0:1000)(-35:965)
+0 \$3:;
+#X obj 574 418 drawnumber -v c2 \$4 x0(0:1000)(75:1075) y0(0:1000)(-20:980)
+0 \$4:;
+#X text 610 237 Column 1;
+#X text 610 347 Column 2;
+#X text 610 460 Column 3;
+#X text 674 203 -- Properties --;
+#X obj 577 309 drawnumber -v c1 ysize x0(0:1000)(25:1025) y0(0:1000)(-20:980)
+0 y:;
+#X text 131 565 trim floats from end of list;
+#X obj 16 593 list trim;
+#X obj 16 565 list split 2;
+#X obj 578 125 drawsymbol -v color-flag color x0(0:1000)(25:1025) y0(0:1000)(5:1005)
+;
+#X obj 574 574 drawnumber -v c3 \$7 x0(0:1000)(140:1140) y0(0:1000)(-20:980)
+0 \$7:;
+#X obj 574 531 drawnumber -v c3 \$6 x0(0:1000)(140:1140) y0(0:1000)(-35:965)
+0 \$6:;
+#X obj 575 485 drawnumber -v c3 \$5 x0(0:1000)(140:1140) y0(0:1000)(-50:950)
+0 \$5:;
+#X obj 17 4 struct \$2 float x float y float x0 float y0 float id symbol
+color float color-flag float xsize float ysize float \$3 float \$4
+float \$5 float \$6 float \$7 float c1 float c2 float c3 float int-c
+float ext-c;
+#X obj 81 125 filledpolygon int-c ext-c 1 x0(0:1000)(7:1007) y0(0:1000)(12:1012)
+x0(0:1000)(7:1007) y0(0:1000)(9:1009) x0(0:1000)(2:1002) y0(0:1000)(12:1012)
+x0(0:1000)(7:1007) y0(0:1000)(15:1015) x0(0:1000)(7:1007) y0(0:1000)(12:1012)
+x0(0:1000)(15:1015) y0(0:1000)(12:1012) x0(0:1000)(15:1015) y0(0:1000)(10:1009)
+x0(0:1000)(20:1020) y0(0:1000)(12:1012) x0(0:1000)(15:1015) y0(0:1000)(15:1015)
+x0(0:1000)(15:1015) y0(0:1000)(12:1012);
+#X obj 81 346 filledpolygon int-c ext-c 1 x0(0:1000)(11:1011) y0(0:1000)(8:1008)
+x0(0:1000)(14:1014) y0(0:1000)(8:1008) x0(0:1000)(11:1011) y0(0:1000)(3:1003)
+x0(0:1000)(8:1008) y0(0:1000)(8:1008) x0(0:1000)(11:1011) y0(0:1000)(8:1008)
+x0(0:1000)(11:1011) y0(0:1000)(16:1016) x0(0:1000)(14:1014) y0(0:1000)(16:1016)
+x0(0:1000)(11:1011) y0(0:1000)(21:1021) x0(0:1000)(8:1008) y0(0:1000)(16:1016)
+x0(0:1000)(11:1011) y0(0:1000)(16:1016);
+#X connect 4 0 22 0;
+#X connect 5 0 21 0;
+#X connect 14 0 2 0;
+#X connect 15 0 14 0;
+#X connect 20 0 15 0;
diff --git a/pal/ptgl.pd b/pal/ptgl.pd
new file mode 100755
index 0000000..8ecca62
--- /dev/null
+++ b/pal/ptgl.pd
@@ -0,0 +1,237 @@
+#N canvas 10 0 1004 682 12;
+#X obj 20 -14 inlet;
+#N canvas 205 25 240 164 show-sym 0;
+#X obj -339 17 inlet;
+#X obj -339 42 showsym \$1 \$2 SET-TICK-COLOR;
+#X connect 0 0 1 0;
+#X restore 874 153 pd show-sym;
+#N canvas 0 0 296 250 label-tgl 0;
+#X obj 122 94 sel 0 1;
+#X obj 122 66 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X obj 11 20 loadbang;
+#X msg 11 46 0;
+#X obj 122 194 outlet;
+#X msg 122 119 symbol empty;
+#X msg 148 148 symbol LABEL;
+#X obj 122 28 r \$1-label-tgl;
+#X connect 0 0 5 0;
+#X connect 0 1 6 0;
+#X connect 1 0 0 0;
+#X connect 2 0 3 0;
+#X connect 3 0 1 0;
+#X connect 5 0 4 0;
+#X connect 6 0 4 0;
+#X connect 7 0 1 0;
+#X restore 122 531 pd label-tgl;
+#X obj 148 507 r \$1-patchname;
+#X obj 45 507 loadbang;
+#X obj 45 531 symbol \$2;
+#X obj 572 291 constrain \$1 \$2;
+#X obj 577 319 getGUIsize \$3 \$4 \$5 \$6;
+#X obj 217 205 pack;
+#X obj 36 338 t b a;
+#X obj 217 175 +;
+#X obj 258 175 +;
+#X obj 36 313 unpack f f f f;
+#N canvas 0 0 700 277 swap 0;
+#X obj 23 241 outlet;
+#X obj 123 238 outlet;
+#X obj 23 166 spigot 1;
+#X obj 123 166 spigot 0;
+#X obj 23 11 inlet;
+#X obj 196 11 r \$2-color-swap;
+#X obj 214 166 spigot 0;
+#X obj 196 37 t a b;
+#X obj 196 63 pack f 1;
+#X msg 275 63 0;
+#X obj 196 89 route 0 1 2;
+#X obj 214 238 outlet;
+#X connect 2 0 0 0;
+#X connect 3 0 1 0;
+#X connect 4 0 2 0;
+#X connect 4 0 3 0;
+#X connect 4 0 6 0;
+#X connect 5 0 7 0;
+#X connect 6 0 11 0;
+#X connect 7 0 8 0;
+#X connect 7 1 9 0;
+#X connect 8 0 10 0;
+#X connect 9 0 2 1;
+#X connect 9 0 3 1;
+#X connect 9 0 6 1;
+#X connect 10 0 2 1;
+#X connect 10 1 3 1;
+#X connect 10 2 6 1;
+#X restore 202 313 pd swap;
+#X obj 36 289 spigot;
+#X obj 202 289 spigot;
+#X obj 202 266 r \$1-rgb-value;
+#X obj 36 266 r \$1-label-posNsize;
+#X obj 93 290 r \$2-lock;
+#X obj 266 381 loadbang;
+#X obj 266 405 symbol \$2;
+#X obj 217 234 s \$1-helper-xy;
+#X obj 537 326 t a;
+#X msg 352 460 \; \$3\$2 label \$1;
+#X obj 352 435 pack s f s;
+#X obj 450 405 loadbang;
+#X obj 450 435 symbol \$2;
+#X obj 833 356 t b a;
+#X obj 833 387 set \$2 xsize ysize;
+#X obj 537 95 t a a a;
+#X obj 563 265 if-numscroll \$1 \$2 \$3 \$4 \$5 \$6;
+#X obj 36 405 pack 0 22 22 f 20 12 10 0 s;
+#X msg 36 430 \; \$9\$4 color \$1 \$2 \$3 \; \$9\$4 label_pos \$5 \$6
+\; \$9\$4 label_font \$8 \$7;
+#X obj 273 337 t b a;
+#X obj 219 337 t b a;
+#X obj 268 507 loadbang;
+#X obj 268 534 symbol \$9;
+#X obj 352 405 label \$1 \$2;
+#X obj 815 -9 clean \$1 \$2;
+#X obj 675 124 get \$2 id;
+#X obj 20 11 pappend \$1 \$2 \$3 \$4 \$5 \$6;
+#X obj 390 329 t a;
+#X obj 217 121 get \$2 x0 y0 x y;
+#X obj 699 391 loadbang;
+#X obj 699 414 symbol \$2;
+#X obj 874 116 t a;
+#X obj 20 164 t a;
+#N canvas 0 0 461 325 quantize 0;
+#X obj 14 20 inlet;
+#X obj 195 22 inlet;
+#X obj 14 213 outlet;
+#X obj 195 184 outlet;
+#X connect 0 0 2 0;
+#X connect 1 0 3 0;
+#X restore 577 360 pd quantize;
+#X obj 537 153 get \$2 id x0 y0 x y nz init;
+#X obj 575 415 pack f f f f s;
+#X msg 132 70 1;
+#X text 672 361 <--UPDATE THIS!!;
+#X obj 132 100 set \$2 nz;
+#X obj 132 47 t b a;
+#X msg 575 445 \; \$5\$1 size \$2 \; \$5\$1 nonzero \$3 \; \$5\$1 init
+\$4;
+#X obj 20 584 t a a;
+#X msg 238 568 \; \$2\$1 1;
+#X obj 442 223 symbol \$2;
+#X obj 442 198 loadbang;
+#X obj 337 223 pack f f f s;
+#X msg 337 250 \; \$4\$3 pos \$1 \$2;
+#X obj 360 121 get \$2 x y id;
+#X obj 360 146 + 10;
+#X obj 410 146 + 10;
+#X obj 20 558 pack f s \$3 \$7 s s 0 \$8 s;
+#X msg 20 610 \; \$6 obj 10 10 \$9 \$3 \$4 \$9 \$2\$1 empty 17 7 0
+10 -262144 -1 -1 0 \$8;
+#X obj 537 -9 pstruct \$1 \$2 nz init n/a n/a n/a;
+#X obj 537 16 lock \$1 \$2;
+#X obj 537 39 route change displace deselect select click pappend;
+#X obj 763 153 shownum \$1 \$2;
+#X connect 0 0 40 0;
+#X connect 2 0 64 4;
+#X connect 3 0 64 5;
+#X connect 4 0 5 0;
+#X connect 5 0 64 1;
+#X connect 6 0 7 0;
+#X connect 6 1 7 1;
+#X connect 7 0 28 0;
+#X connect 7 0 30 1;
+#X connect 7 0 47 0;
+#X connect 7 1 27 0;
+#X connect 7 1 30 2;
+#X connect 7 1 47 1;
+#X connect 8 0 21 0;
+#X connect 9 0 31 0;
+#X connect 9 1 31 4;
+#X connect 10 0 8 0;
+#X connect 11 0 8 1;
+#X connect 12 0 9 0;
+#X connect 12 1 31 5;
+#X connect 12 2 31 6;
+#X connect 12 3 31 7;
+#X connect 13 0 31 0;
+#X connect 13 1 34 0;
+#X connect 13 2 33 0;
+#X connect 14 0 12 0;
+#X connect 15 0 13 0;
+#X connect 16 0 15 0;
+#X connect 17 0 14 0;
+#X connect 18 0 14 1;
+#X connect 18 0 15 1;
+#X connect 19 0 20 0;
+#X connect 20 0 31 8;
+#X connect 22 0 24 1;
+#X connect 22 0 31 3;
+#X connect 22 0 49 0;
+#X connect 24 0 23 0;
+#X connect 25 0 26 0;
+#X connect 26 0 24 2;
+#X connect 27 0 28 0;
+#X connect 27 1 28 1;
+#X connect 29 0 48 0;
+#X connect 29 1 30 0;
+#X connect 29 2 45 0;
+#X connect 31 0 32 0;
+#X connect 33 0 31 0;
+#X connect 33 1 31 2;
+#X connect 34 0 31 0;
+#X connect 34 1 31 1;
+#X connect 35 0 36 0;
+#X connect 36 0 64 8;
+#X connect 37 0 24 0;
+#X connect 39 0 41 0;
+#X connect 40 0 46 0;
+#X connect 40 1 42 0;
+#X connect 40 1 53 0;
+#X connect 41 0 24 1;
+#X connect 41 0 31 3;
+#X connect 42 0 10 0;
+#X connect 42 1 11 0;
+#X connect 42 2 10 1;
+#X connect 42 3 11 1;
+#X connect 43 0 44 0;
+#X connect 44 0 49 4;
+#X connect 45 0 28 2;
+#X connect 45 0 1 0;
+#X connect 46 0 31 3;
+#X connect 46 0 24 1;
+#X connect 46 0 64 0;
+#X connect 47 0 49 1;
+#X connect 48 0 22 0;
+#X connect 48 1 6 0;
+#X connect 48 2 6 1;
+#X connect 48 5 49 2;
+#X connect 48 6 49 3;
+#X connect 49 0 54 0;
+#X connect 50 0 52 0;
+#X connect 53 0 50 0;
+#X connect 53 1 52 1;
+#X connect 55 0 56 0;
+#X connect 55 1 65 0;
+#X connect 57 0 59 3;
+#X connect 58 0 57 0;
+#X connect 59 0 60 0;
+#X connect 61 0 62 0;
+#X connect 61 1 63 0;
+#X connect 61 2 59 2;
+#X connect 62 0 59 0;
+#X connect 63 0 59 1;
+#X connect 64 0 55 0;
+#X connect 66 0 67 0;
+#X connect 67 0 68 0;
+#X connect 68 0 29 0;
+#X connect 68 0 42 0;
+#X connect 68 0 69 0;
+#X connect 68 1 42 0;
+#X connect 68 1 61 0;
+#X connect 68 3 39 0;
+#X connect 68 3 42 0;
+#X connect 68 3 45 0;
+#X connect 68 3 69 1;
+#X connect 68 4 29 0;
+#X connect 68 4 42 0;
+#X connect 68 4 69 1;
+#X connect 68 5 29 0;
diff --git a/pal/ptraverse.pd b/pal/ptraverse.pd
new file mode 100755
index 0000000..c04dea8
--- /dev/null
+++ b/pal/ptraverse.pd
@@ -0,0 +1,12 @@
+#N canvas 0 0 450 300 12;
+#X obj 12 10 inlet;
+#X obj 12 142 outlet;
+#X obj 12 66 symbol;
+#X obj 57 38 r \$1-patchname;
+#X obj 12 91 list append \$2;
+#X msg 12 116 traverse \$1 \, \$2;
+#X connect 0 0 2 0;
+#X connect 2 0 4 0;
+#X connect 3 0 2 1;
+#X connect 4 0 5 0;
+#X connect 5 0 1 0;
diff --git a/pal/shownum.pd b/pal/shownum.pd
new file mode 100755
index 0000000..38fcfec
--- /dev/null
+++ b/pal/shownum.pd
@@ -0,0 +1,107 @@
+#N canvas 3 4 1004 682 12;
+#X obj -316 -4 inlet;
+#X obj -279 532 set \$2 c1;
+#X obj -210 571 set \$2 c2;
+#X obj -147 623 set \$2 c3;
+#X obj -221 68 r \$1-pdot-v;
+#X obj -279 449 spigot;
+#X obj -210 450 spigot;
+#X obj -147 451 spigot;
+#X obj -279 203 1;
+#X obj -316 203 0;
+#X obj -316 161 del 5000;
+#X msg -263 101 stop;
+#X obj -316 70 t b b;
+#X obj -176 107 r \$2-lock;
+#X obj -221 141 spigot;
+#X obj -238 341 route 1 2 3;
+#X obj -221 226 route 1 2 3 0;
+#X obj -221 166 t b a;
+#X obj -238 367 unpack;
+#X obj -210 392 unpack;
+#X msg -221 251 1 1 1 \, 2 0 1 \, 2 0 0 \, 3 0;
+#X obj -147 394 unpack;
+#X obj -316 309 s \$1-pdot-vis;
+#X obj 177 61 pointer \$2;
+#X obj 203 149 set \$2 c1 c2 c3;
+#X obj 177 86 t b b a;
+#X msg 203 112 0 0 0;
+#X msg 129 62 next;
+#X obj 117 512 t a;
+#X obj -279 252 change;
+#X obj -166 -10 inlet;
+#X obj -279 276 sel -1;
+#X msg -140 39 -1;
+#X text -316 -32 change;
+#X text -175 -32 click/select;
+#X obj -94 107 sel 0;
+#X obj -119 68 f;
+#X msg -171 291 1 1 1 \, 2 1 1 \, 3 1 1;
+#X obj -166 15 t a b b;
+#X obj -316 35 t b b p;
+#X msg -196 271 1 1 1 \, 2 1 1 \, 3 0 \, 3 0 0;
+#X msg -146 311 1 0 \, 1 0 0 \, 2 0 1 \, 2 0 \, 2 0 0 \, 3 0 1 \, 3
+0 \, 3 0 0;
+#X text -73 66 use value instead of f?;
+#X obj 177 35 ptraverse \$1 next;
+#X connect 0 0 39 0;
+#X connect 4 0 14 0;
+#X connect 4 0 36 1;
+#X connect 5 0 1 0;
+#X connect 6 0 2 0;
+#X connect 7 0 3 0;
+#X connect 8 0 29 0;
+#X connect 9 0 29 0;
+#X connect 10 0 9 0;
+#X connect 11 0 10 0;
+#X connect 12 0 10 0;
+#X connect 12 1 11 0;
+#X connect 12 1 8 0;
+#X connect 13 0 14 1;
+#X connect 13 0 35 0;
+#X connect 14 0 17 0;
+#X connect 15 0 18 0;
+#X connect 15 1 19 0;
+#X connect 15 2 21 0;
+#X connect 16 0 20 0;
+#X connect 16 1 40 0;
+#X connect 16 2 37 0;
+#X connect 16 3 41 0;
+#X connect 17 0 12 0;
+#X connect 17 1 16 0;
+#X connect 18 0 5 0;
+#X connect 18 1 5 1;
+#X connect 19 0 6 0;
+#X connect 19 1 6 1;
+#X connect 20 0 15 0;
+#X connect 21 0 7 0;
+#X connect 21 1 7 1;
+#X connect 23 0 25 0;
+#X connect 23 1 27 0;
+#X connect 25 0 27 0;
+#X connect 25 1 26 0;
+#X connect 25 2 24 3;
+#X connect 26 0 24 0;
+#X connect 27 0 23 0;
+#X connect 28 0 1 1;
+#X connect 28 0 2 1;
+#X connect 28 0 3 1;
+#X connect 29 0 31 0;
+#X connect 30 0 38 0;
+#X connect 31 1 22 0;
+#X connect 31 1 5 0;
+#X connect 31 1 6 0;
+#X connect 31 1 7 0;
+#X connect 32 0 29 0;
+#X connect 35 0 43 0;
+#X connect 36 0 14 0;
+#X connect 37 0 15 0;
+#X connect 38 0 39 0;
+#X connect 38 1 32 0;
+#X connect 38 2 43 0;
+#X connect 39 0 12 0;
+#X connect 39 1 36 0;
+#X connect 39 2 28 0;
+#X connect 40 0 15 0;
+#X connect 41 0 15 0;
+#X connect 43 0 23 0;
diff --git a/pal/showsym.pd b/pal/showsym.pd
new file mode 100755
index 0000000..822827a
--- /dev/null
+++ b/pal/showsym.pd
@@ -0,0 +1,71 @@
+#N canvas 0 0 1004 682 12;
+#X obj -243 32 inlet;
+#X obj -341 440 symbol;
+#X msg -111 372 SET-BG-COLOR;
+#X obj -111 201 spigot;
+#X obj -111 461 bang;
+#X obj -376 192 set \$2 color-flag;
+#X obj -341 490 set -symbol \$2 color;
+#X obj -200 164 r \$1-global-tgl;
+#X obj -97 313 s \$2-color-swap;
+#X obj -111 490 s \$2-show-sym;
+#X obj -376 32 r \$2-show-sym;
+#X obj -111 250 f;
+#X obj -76 250 + 1;
+#X obj -111 276 % 3;
+#X obj -111 337 sel 0 1 2;
+#X msg -65 420 SET-LABEL-COLOR;
+#X obj -111 225 b;
+#X obj -376 65 t b b;
+#X msg -339 95 1;
+#X msg -298 96 stop;
+#X obj -188 7 r \$2-pappend;
+#X obj -188 32 unpack s p;
+#X msg -376 153 0;
+#X obj -376 128 del 1750;
+#X obj -66 163 r \$2-lock;
+#X obj 124 426 outlet;
+#X obj 186 426 outlet;
+#X obj 248 426 outlet;
+#X text 109 449 outlets to trigger bang animation;
+#X obj -243 57 t a;
+#X obj 418 422 outlet;
+#X text 410 444 the pointer;
+#X obj -88 396 symbol \$3;
+#X connect 0 0 29 0;
+#X connect 1 0 6 0;
+#X connect 2 0 1 0;
+#X connect 2 0 4 0;
+#X connect 3 0 16 0;
+#X connect 4 0 9 0;
+#X connect 7 0 3 0;
+#X connect 10 0 17 0;
+#X connect 11 0 13 0;
+#X connect 11 0 12 0;
+#X connect 12 0 11 1;
+#X connect 13 0 8 0;
+#X connect 13 0 14 0;
+#X connect 14 0 2 0;
+#X connect 14 0 25 0;
+#X connect 14 1 26 0;
+#X connect 14 1 32 0;
+#X connect 14 2 15 0;
+#X connect 14 2 27 0;
+#X connect 15 0 4 0;
+#X connect 15 0 1 0;
+#X connect 16 0 11 0;
+#X connect 17 0 23 0;
+#X connect 17 1 18 0;
+#X connect 17 1 19 0;
+#X connect 18 0 5 0;
+#X connect 19 0 23 0;
+#X connect 20 0 21 0;
+#X connect 21 1 29 0;
+#X connect 22 0 5 0;
+#X connect 23 0 22 0;
+#X connect 24 0 3 1;
+#X connect 29 0 5 1;
+#X connect 29 0 6 1;
+#X connect 29 0 30 0;
+#X connect 32 0 4 0;
+#X connect 32 0 1 0;
diff --git a/pal/spawn.pd b/pal/spawn.pd
new file mode 100755
index 0000000..546ba0c
--- /dev/null
+++ b/pal/spawn.pd
@@ -0,0 +1,23 @@
+#N canvas 0 0 183 282 12;
+#X obj 7 8 inlet;
+#X obj 84 243 outlet;
+#X msg 45 176 next;
+#N canvas 0 0 214 127 traverse-next 0;
+#X obj 12 10 inlet;
+#X obj 12 88 outlet;
+#X obj 12 36 symbol;
+#X msg 12 62 traverse \$1 \, next;
+#X obj 70 36 r \$1-patchname;
+#X connect 0 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 1 0;
+#X connect 4 0 2 1;
+#X restore 7 120 pd traverse-next;
+#X obj 7 242 outlet;
+#X obj 7 148 pointer \$2;
+#X connect 0 0 3 0;
+#X connect 2 0 5 0;
+#X connect 3 0 5 0;
+#X connect 5 0 4 0;
+#X connect 5 1 2 0;
+#X connect 5 2 1 0;
diff --git a/pal/turnstile.txt b/pal/turnstile.txt
new file mode 100755
index 0000000..7273c0f
--- /dev/null
+++ b/pal/turnstile.txt
@@ -0,0 +1 @@
+25