aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/beat2frac.pd2
-rw-r--r--core/btn.pd4
-rw-r--r--core/color.hsl2rgb.pd2
-rw-r--r--core/color.random-dark-light18.pd4
-rw-r--r--core/color.random-dark-light24.pd4
-rw-r--r--core/cpugraph.pd2
-rw-r--r--core/deeprouteOSC.pd108
-rw-r--r--core/dialog.under-cursor.pd3
-rw-r--r--core/dialog.yes-no.pd4
-rw-r--r--core/dotrouteOSC.pd2
-rw-r--r--core/ds-dump-array.pd3
-rw-r--r--core/ds-dump-only.pd2
-rw-r--r--core/ds-dump.pd2
-rw-r--r--core/ds-end.pd2
-rw-r--r--core/ds-first.pd2
-rw-r--r--core/ds-get-list.pd3
-rw-r--r--core/ds-idx-only.pd2
-rw-r--r--core/ds-idx.pd2
-rw-r--r--core/ds-next-element.pd2
-rw-r--r--core/eqpowmix~.pd2
-rw-r--r--core/hotpack.pd4
-rw-r--r--core/list-dripx.pd4
-rw-r--r--core/list-proc-insert.pd2
-rw-r--r--core/list-range.pd2
-rw-r--r--core/list-sample.pd2
-rw-r--r--core/list-split-at.pd4
-rw-r--r--core/list-swap.pd2
-rw-r--r--core/mate.pd2
-rw-r--r--core/menubar.pd2
-rw-r--r--core/pausetimer.pd2
-rw-r--r--core/pcount.pd2
-rw-r--r--core/s2l-explode.pd2
-rw-r--r--core/s2l-shorten.pd2
-rw-r--r--core/savebang.pd2
-rw-r--r--core/saveclear-help.pd16
-rw-r--r--core/saveclear.pd14
-rw-r--r--core/screendimens.pd2
-rw-r--r--core/sendmany.pd4
-rw-r--r--core/storebang-help.pd20
-rw-r--r--core/storebang.pd30
-rw-r--r--core/trimdirs.pd2
-rw-r--r--core/troute.pd104
-rw-r--r--core/vmetro.pd2
43 files changed, 275 insertions, 110 deletions
diff --git a/core/beat2frac.pd b/core/beat2frac.pd
index 6bc2797..546d4ad 100644
--- a/core/beat2frac.pd
+++ b/core/beat2frac.pd
@@ -1,4 +1,5 @@
#N canvas 594 98 330 547 10;
+#X declare -lib zexy -lib list-abs;
#X obj 95 480 * 4;
#X obj 95 503 outlet;
#X obj 27 81 s2l-explode;
@@ -49,6 +50,7 @@
#X connect 9 0 2 0;
#X connect 10 0 4 1;
#X restore 27 155 pd trigger;
+#X obj 178 46 import zexy list-abs;
#X connect 0 0 1 0;
#X connect 2 0 5 0;
#X connect 3 0 20 0;
diff --git a/core/btn.pd b/core/btn.pd
index 68d7797..0d9051a 100644
--- a/core/btn.pd
+++ b/core/btn.pd
@@ -1,7 +1,8 @@
#N canvas 361 196 433 465 10;
+#X declare -lib list-abs;
#X text -117 -87 at size 11 letters are 7px wide;
#X obj -50 348 hradio 15 1 0 4 \$0radio \$0radioR empty 0 -8 0 10 -262144
--1 -1 3;
+-1 -1 0;
#X obj -49 349 cnv 13 118 13 empty \$0canvas boobies 3 6 0 11 -233017
-66577 0;
#X text -118 -45 subtract difference add half to text xoffset;
@@ -25,6 +26,7 @@
#X msg -34 291 number \$1;
#X obj -34 314 s \$0radioR;
#X floatatom 33 159 5 0 0 0 - - -;
+#X obj 185 -61 import list-abs;
#X connect 5 0 9 0;
#X connect 6 0 7 0;
#X connect 7 0 5 0;
diff --git a/core/color.hsl2rgb.pd b/core/color.hsl2rgb.pd
index a29d2f8..01bf336 100644
--- a/core/color.hsl2rgb.pd
+++ b/core/color.hsl2rgb.pd
@@ -1,4 +1,5 @@
#N canvas 662 22 695 753 10;
+#X declare -lib list-abs;
#X obj 121 143 moses 0.5;
#X obj 190 79 v \$0h;
#X obj 224 79 v \$0s;
@@ -79,6 +80,7 @@
#X connect 5 1 4 0;
#X connect 6 0 1 0;
#X restore 97 424 pd restrict;
+#X obj 372 52 import list-abs;
#X connect 0 0 10 0;
#X connect 0 1 15 0;
#X connect 4 0 1 0;
diff --git a/core/color.random-dark-light18.pd b/core/color.random-dark-light18.pd
index 9b34c7f..f19c324 100644
--- a/core/color.random-dark-light18.pd
+++ b/core/color.random-dark-light18.pd
@@ -1,4 +1,7 @@
#N canvas 231 105 422 404 10;
+#X declare -lib list-abs;
+#X declare -lib list-abs;
+#X declare -lib list-abs;
#X obj 76 184 pack f f f;
#X obj 133 47 t b b b;
#X obj 185 184 pack f f f;
@@ -19,6 +22,7 @@
#X obj 318 147 + 100;
#X obj 318 115 + 600;
#X obj 152 100 float_argument \$1 900;
+#X obj 261 25 import list-abs;
#X connect 0 0 9 0;
#X connect 1 0 6 0;
#X connect 1 1 19 0;
diff --git a/core/color.random-dark-light24.pd b/core/color.random-dark-light24.pd
index d287876..746d401 100644
--- a/core/color.random-dark-light24.pd
+++ b/core/color.random-dark-light24.pd
@@ -1,4 +1,7 @@
#N canvas 231 105 359 415 10;
+#X declare -lib list-abs;
+#X declare -lib list-abs;
+#X declare -lib list-abs;
#X obj 76 184 pack f f f;
#X obj 76 57 t b b b;
#X obj 185 184 pack f f f;
@@ -19,6 +22,7 @@
#X obj 185 321 color.rgb2pd24;
#X obj 185 267 color.hsl2rgb;
#X obj 76 122 t a a;
+#X obj 192 21 import list-abs;
#X connect 0 0 13 0;
#X connect 1 0 6 0;
#X connect 1 1 7 0;
diff --git a/core/cpugraph.pd b/core/cpugraph.pd
index d15f0e7..c95efa2 100644
--- a/core/cpugraph.pd
+++ b/core/cpugraph.pd
@@ -1,4 +1,5 @@
#N canvas 172 176 741 586 10;
+#X declare -lib maxlib;
#X obj 52 260 cnv 15 100 50 empty \$0cpucnv empty 20 12 0 14 -225271
-262144 0;
#X floatatom 104 312 4 0 0 1 Now #0now #0nullS;
@@ -47,6 +48,7 @@
#X obj 26 155 r \$0markbang;
#X obj 288 501 min 1;
#X msg 377 397 100;
+#X obj 436 72 import maxlib;
#X connect 2 0 7 0;
#X connect 3 0 4 0;
#X connect 4 0 34 0;
diff --git a/core/deeprouteOSC.pd b/core/deeprouteOSC.pd
index 2051389..f59a382 100644
--- a/core/deeprouteOSC.pd
+++ b/core/deeprouteOSC.pd
@@ -1,11 +1,12 @@
-#N canvas 368 88 717 584 10;
+#N canvas 368 88 344 571 10;
+#X declare -lib zexy -lib list-abs -lib mrpeach;
+#X obj 207 43 namecanvas \$0self;
+#N canvas 208 132 808 593 constructor 0;
#X obj 401 113 symbol2list /;
#X obj 440 364 s2l-explode;
#X obj 440 385 list prepend /;
#X obj 440 406 list-l2s;
-#X msg 377 489 obj 30 \$1 mrpeach/routeOSC \$2;
#X obj 377 466 list append;
-#X obj 527 19 namecanvas \$0self;
#X obj 377 533 s \$0self;
#X obj 377 364 f;
#X obj 401 242 list split 1;
@@ -38,55 +39,58 @@
#X obj 401 69 sel 0;
#X obj 401 23 initbang;
#X msg 319 86 symbol /null;
-#X obj 259 433 + 41;
-#X obj 292 433 + 42;
-#X connect 0 0 20 0;
+#X obj 553 20 import zexy list-abs mrpeach;
+#X msg 377 489 obj 30 \$1 routeOSC \$2;
+#X obj 259 433 + 2;
+#X obj 292 433 + 3;
+#X connect 0 0 18 0;
#X connect 1 0 2 0;
#X connect 2 0 3 0;
-#X connect 3 0 5 1;
-#X connect 4 0 7 0;
-#X connect 5 0 4 0;
-#X connect 8 0 15 0;
-#X connect 8 0 29 1;
-#X connect 8 0 31 0;
-#X connect 9 0 12 0;
-#X connect 9 1 10 1;
-#X connect 9 2 33 0;
-#X connect 10 0 9 0;
-#X connect 11 0 10 0;
-#X connect 11 1 10 1;
-#X connect 12 0 13 0;
-#X connect 12 1 8 0;
-#X connect 12 2 1 0;
-#X connect 13 0 10 0;
-#X connect 14 0 5 0;
-#X connect 14 0 25 0;
-#X connect 15 0 8 1;
-#X connect 16 0 17 0;
-#X connect 17 0 7 0;
-#X connect 18 0 8 1;
-#X connect 19 0 21 0;
-#X connect 20 0 11 0;
-#X connect 20 1 18 0;
-#X connect 20 2 19 0;
-#X connect 22 0 24 0;
-#X connect 23 0 22 0;
-#X connect 24 0 7 0;
-#X connect 26 0 23 1;
-#X connect 27 0 14 0;
-#X connect 28 0 29 0;
-#X connect 29 0 32 0;
-#X connect 30 0 39 0;
-#X connect 30 1 40 0;
-#X connect 31 0 30 0;
-#X connect 31 1 27 0;
-#X connect 32 0 30 0;
+#X connect 3 0 4 1;
+#X connect 4 0 38 0;
+#X connect 6 0 13 0;
+#X connect 6 0 27 1;
+#X connect 6 0 29 0;
+#X connect 7 0 10 0;
+#X connect 7 1 8 1;
+#X connect 7 2 31 0;
+#X connect 8 0 7 0;
+#X connect 9 0 8 0;
+#X connect 9 1 8 1;
+#X connect 10 0 11 0;
+#X connect 10 1 6 0;
+#X connect 10 2 1 0;
+#X connect 11 0 8 0;
+#X connect 12 0 4 0;
+#X connect 12 0 23 0;
+#X connect 13 0 6 1;
+#X connect 14 0 15 0;
+#X connect 15 0 5 0;
+#X connect 16 0 6 1;
+#X connect 17 0 19 0;
+#X connect 18 0 9 0;
+#X connect 18 1 16 0;
+#X connect 18 2 17 0;
+#X connect 20 0 22 0;
+#X connect 21 0 20 0;
+#X connect 22 0 5 0;
+#X connect 24 0 21 1;
+#X connect 25 0 12 0;
+#X connect 26 0 27 0;
+#X connect 27 0 30 0;
+#X connect 28 0 39 0;
+#X connect 28 1 40 0;
+#X connect 29 0 28 0;
+#X connect 29 1 25 0;
+#X connect 30 0 28 0;
+#X connect 31 0 32 0;
+#X connect 31 1 21 0;
#X connect 33 0 34 0;
-#X connect 33 1 23 0;
-#X connect 35 0 36 0;
-#X connect 36 0 38 0;
-#X connect 36 1 0 0;
-#X connect 37 0 35 0;
-#X connect 38 0 0 0;
-#X connect 39 0 16 0;
-#X connect 40 0 16 1;
+#X connect 34 0 36 0;
+#X connect 34 1 0 0;
+#X connect 35 0 33 0;
+#X connect 36 0 0 0;
+#X connect 38 0 5 0;
+#X connect 39 0 14 0;
+#X connect 40 0 14 1;
+#X restore 207 21 pd constructor;
diff --git a/core/dialog.under-cursor.pd b/core/dialog.under-cursor.pd
index b1a47c2..4633d5a 100644
--- a/core/dialog.under-cursor.pd
+++ b/core/dialog.under-cursor.pd
@@ -1,4 +1,6 @@
#N canvas 518 38 492 494 10;
+#X declare -lib toxy;
+#X declare -lib hcs;
#X obj 38 10 inlet;
#X obj 38 53 cursor;
#X obj 38 74 route motion;
@@ -28,6 +30,7 @@
#X obj 262 106 screendimens;
#X obj 262 127 unpack f f;
#X obj 38 31 t b;
+#X obj 351 21 import hcs;
#X connect 0 0 28 0;
#X connect 1 0 2 0;
#X connect 2 0 4 0;
diff --git a/core/dialog.yes-no.pd b/core/dialog.yes-no.pd
index 88cef91..409fe01 100644
--- a/core/dialog.yes-no.pd
+++ b/core/dialog.yes-no.pd
@@ -1,4 +1,7 @@
#N canvas 266 442 628 346 10;
+#X declare -lib toxy;
+#X declare -lib hcs;
+#X declare -lib list-abs;
#N canvas 781 650 305 105 \$0.dialog-box 0;
#X obj 2 2 cnv 15 300 30 empty \$0.line1 Are_you_sure? 20 12 0 14 -262144
-1 0;
@@ -28,6 +31,7 @@
#X obj 31 67 s pd-\$0.dialog-box;
#X obj 31 45 dialog.under-cursor 305 105 1440 900;
#X obj 344 62 list-onearg \$1 Are_you_sure?;
+#X obj 481 22 import list-abs;
#X connect 1 0 18 0;
#X connect 2 0 4 0;
#X connect 2 0 5 0;
diff --git a/core/dotrouteOSC.pd b/core/dotrouteOSC.pd
index f4cf18b..7aacea8 100644
--- a/core/dotrouteOSC.pd
+++ b/core/dotrouteOSC.pd
@@ -1,4 +1,5 @@
#N canvas 0 22 350 222 10;
+#X declare -lib zexy;
#X obj 123 68 loadbang;
#X obj 123 88 list append \$1;
#X obj 48 190 outlet;
@@ -8,6 +9,7 @@
#X obj 94 47 inlet;
#X obj 123 128 list2symbol /;
#X obj 123 108 symbol2list .;
+#X obj 193 35 import zexy;
#X connect 0 0 1 0;
#X connect 1 0 8 0;
#X connect 3 0 2 0;
diff --git a/core/ds-dump-array.pd b/core/ds-dump-array.pd
index 3920336..f27db40 100644
--- a/core/ds-dump-array.pd
+++ b/core/ds-dump-array.pd
@@ -1,4 +1,6 @@
#N canvas 1004 477 263 225 10;
+#X declare -lib list-abs;
+#X declare -lib list-abs;
#X obj 81 29 inlet;
#X obj 81 78 getsize \$1 \$2;
#X obj 81 50 t p p;
@@ -7,6 +9,7 @@
#X obj 81 106 list-range;
#X obj 81 131 list-drip;
#X obj 132 185 outlet;
+#X obj 140 33 import list-abs;
#X connect 0 0 2 0;
#X connect 1 0 5 0;
#X connect 2 0 1 0;
diff --git a/core/ds-dump-only.pd b/core/ds-dump-only.pd
index b0edbc8..ce3a454 100644
--- a/core/ds-dump-only.pd
+++ b/core/ds-dump-only.pd
@@ -1,4 +1,5 @@
#N canvas 480 22 450 300 10;
+#X declare -lib list-abs;
#X obj 182 135 until;
#X msg 182 156 next;
#X obj 56 90 list append \$1;
@@ -10,6 +11,7 @@
#X obj 317 40 t b b b;
#X obj 242 242 outlet;
#X obj 182 179 pointer \$2;
+#X obj 318 18 import list-abs;
#X connect 0 0 1 0;
#X connect 1 0 10 0;
#X connect 2 0 3 0;
diff --git a/core/ds-dump.pd b/core/ds-dump.pd
index 5e8f87a..43171b9 100644
--- a/core/ds-dump.pd
+++ b/core/ds-dump.pd
@@ -1,4 +1,5 @@
#N canvas 0 22 450 300 10;
+#X declare -lib list-abs;
#X obj 182 135 until;
#X obj 182 179 pointer;
#X msg 182 156 next;
@@ -10,6 +11,7 @@
#X obj 336 242 outlet;
#X obj 317 40 t b b b;
#X obj 182 46 t a b;
+#X obj 293 16 import list-abs;
#X connect 0 0 2 0;
#X connect 1 0 7 0;
#X connect 1 1 9 0;
diff --git a/core/ds-end.pd b/core/ds-end.pd
index ebbe4d1..df873b1 100644
--- a/core/ds-end.pd
+++ b/core/ds-end.pd
@@ -1,4 +1,5 @@
#N canvas 61 377 261 305 10;
+#X declare -lib list-abs;
#X obj 139 175 pointer;
#X obj 139 37 inlet;
#X obj 100 228 pointer;
@@ -9,6 +10,7 @@
#X msg 139 140 next;
#X obj 178 198 t b b;
#X obj 100 255 outlet;
+#X obj 27 19 import list-abs;
#X connect 0 0 2 1;
#X connect 0 1 8 0;
#X connect 1 0 5 0;
diff --git a/core/ds-first.pd b/core/ds-first.pd
index eb8ddb4..9f02641 100644
--- a/core/ds-first.pd
+++ b/core/ds-first.pd
@@ -1,4 +1,5 @@
#N canvas 540 376 450 300 10;
+#X declare -lib list-abs;
#X obj 182 135 until;
#X msg 182 156 next;
#X obj 56 90 list append \$1;
@@ -11,6 +12,7 @@
#X obj 182 206 t b a;
#X obj 182 52 t b b;
#X obj 297 50 t b b;
+#X obj 289 17 import list-abs;
#X connect 0 0 1 0;
#X connect 1 0 8 0;
#X connect 2 0 3 0;
diff --git a/core/ds-get-list.pd b/core/ds-get-list.pd
index 8048067..b1d4a0e 100644
--- a/core/ds-get-list.pd
+++ b/core/ds-get-list.pd
@@ -1,4 +1,6 @@
#N canvas 539 101 566 566 10;
+#X declare -lib list-abs;
+#X declare -lib iemlib -lib list-abs;
#N canvas 936 317 494 366 builder 1;
#X obj 182 56 dollarg;
#X obj 182 30 initbang;
@@ -40,6 +42,7 @@
#X msg -6 282 connect 4 0 5 0;
#X obj 202 158 list trim;
#X obj 202 135 list prepend obj 10 100 get;
+#X obj 310 29 import iemlib list-abs;
#X connect 0 0 10 0;
#X connect 0 1 8 1;
#X connect 1 0 0 0;
diff --git a/core/ds-idx-only.pd b/core/ds-idx-only.pd
index b13a7df..cf1a76f 100644
--- a/core/ds-idx-only.pd
+++ b/core/ds-idx-only.pd
@@ -1,4 +1,5 @@
#N canvas 869 295 378 463 10;
+#X declare -lib list-abs -lib iemlib;
#X obj 197 233 sel \$3;
#X obj 197 210 f;
#X obj 221 210 + 1;
@@ -23,6 +24,7 @@
#X obj 224 278 s \$0stop;
#X obj 162 375 route bang;
#X obj 232 426 outlet;
+#X obj 206 17 import list-abs iemlib;
#X connect 0 0 17 0;
#X connect 1 0 2 0;
#X connect 1 0 0 0;
diff --git a/core/ds-idx.pd b/core/ds-idx.pd
index db49ad5..d6955f1 100644
--- a/core/ds-idx.pd
+++ b/core/ds-idx.pd
@@ -1,4 +1,5 @@
#N canvas 692 40 319 298 10;
+#X declare -lib list-abs;
#X obj 64 28 inlet;
#X obj 166 134 list append \$1;
#X obj 166 157 prepent traverse;
@@ -15,6 +16,7 @@
#X obj 91 114 spigot 1;
#X obj 136 65 loadbang;
#X text 192 69 until protection;
+#X obj 146 34 import list-abs;
#X connect 0 0 3 0;
#X connect 1 0 2 0;
#X connect 2 0 4 0;
diff --git a/core/ds-next-element.pd b/core/ds-next-element.pd
index 01fb0d5..43c7d4b 100644
--- a/core/ds-next-element.pd
+++ b/core/ds-next-element.pd
@@ -1,4 +1,5 @@
#N canvas 453 22 467 768 10;
+#X declare -lib iemlib;
#X obj 133 259 f;
#X obj 160 259 + 1;
#X obj 133 237 until;
@@ -94,6 +95,7 @@
#X obj 315 34 inlet;
#X obj 91 51 pointer;
#X obj 91 30 t b a;
+#X obj 282 128 import iemlib;
#X connect 0 0 1 0;
#X connect 0 0 28 0;
#X connect 1 0 0 1;
diff --git a/core/eqpowmix~.pd b/core/eqpowmix~.pd
index 1da8135..9249ec7 100644
--- a/core/eqpowmix~.pd
+++ b/core/eqpowmix~.pd
@@ -1,4 +1,5 @@
#N canvas 259 345 452 502 10;
+#X declare -lib hcs;
#X obj 308 42 inlet;
#X obj 57 174 expr cos($f1 * 3.14159 / 2);
#X obj 247 175 expr sin($f1 * 3.14159 / 2);
@@ -27,6 +28,7 @@
#X obj 310 319 loadbang;
#X obj 310 351 blocksize_in_ms;
#X obj 310 385 s \$0block-ms;
+#X obj 66 113 import hcs;
#X connect 0 0 3 0;
#X connect 1 0 11 0;
#X connect 2 0 8 0;
diff --git a/core/hotpack.pd b/core/hotpack.pd
index 7625535..bf2a2c3 100644
--- a/core/hotpack.pd
+++ b/core/hotpack.pd
@@ -1,5 +1,6 @@
#N canvas 4 22 859 425 10;
-#N canvas 1321 240 446 500 builder 1;
+#X declare -lib iemlib;
+#N canvas 916 222 446 500 builder 0;
#X obj -315 22 initbang;
#X obj -288 219 s \$0self;
#X obj -279 128 s \$0inlets;
@@ -29,6 +30,7 @@
#X msg -274 46 4;
#X obj -244 76 s \$0packObjID;
#X obj -315 111 dollarg;
+#X obj -95 18 import iemlib;
#X connect 0 0 15 0;
#X connect 3 0 4 0;
#X connect 4 0 7 0;
diff --git a/core/list-dripx.pd b/core/list-dripx.pd
index cff4fe3..c3b6851 100644
--- a/core/list-dripx.pd
+++ b/core/list-dripx.pd
@@ -1,5 +1,6 @@
#N canvas 839 426 450 300 10;
-#N canvas 0 22 701 318 drip 0;
+#X declare -lib list-abs;
+#N canvas 0 22 701 318 drip 1;
#X obj 64 123 until;
#X obj 64 181 list append;
#X obj 194 206 bang;
@@ -35,6 +36,7 @@ to its right inlet.;
#X obj 133 212 outlet;
#X obj 177 181 outlet;
#X obj 172 90 inlet;
+#X obj 238 123 import list-abs;
#X connect 0 0 2 0;
#X connect 0 1 3 0;
#X connect 1 0 0 0;
diff --git a/core/list-proc-insert.pd b/core/list-proc-insert.pd
index 89b2728..106bff6 100644
--- a/core/list-proc-insert.pd
+++ b/core/list-proc-insert.pd
@@ -1,4 +1,5 @@
#N canvas 433 22 275 240 10;
+#X declare -lib list-abs;
#X obj 35 34 inlet;
#X obj 75 34 inlet;
#X obj 35 147 list-insert \$1;
@@ -6,6 +7,7 @@
#X obj 176 175 outlet;
#X obj 178 39 inlet;
#X obj 35 174 outlet;
+#X obj 167 92 import list-abs;
#X connect 0 0 3 0;
#X connect 1 0 2 1;
#X connect 2 0 6 0;
diff --git a/core/list-range.pd b/core/list-range.pd
index f331e1c..2ca09ed 100644
--- a/core/list-range.pd
+++ b/core/list-range.pd
@@ -1,4 +1,5 @@
#N canvas 740 166 285 632 10;
+#X declare -lib list-abs;
#X obj 129 52 t b b b;
#X obj 129 168 list-extend;
#X obj 129 28 loadbang;
@@ -124,6 +125,7 @@ count up from zero.;
#X obj 148 113 list-onearg \$2;
#X obj 129 143 list-onearg \$3;
#X obj 168 83 \$1;
+#X obj 152 246 import list-abs;
#X connect 0 0 20 0;
#X connect 0 1 19 0;
#X connect 0 2 21 0;
diff --git a/core/list-sample.pd b/core/list-sample.pd
index c8293fc..785cb53 100644
--- a/core/list-sample.pd
+++ b/core/list-sample.pd
@@ -1,4 +1,5 @@
#N canvas 754 395 450 300 10;
+#X declare -lib list-abs -lib zexy;
#X obj 47 189 list-idx;
#X obj 26 8 inlet;
#X obj 107 116 list length;
@@ -13,6 +14,7 @@
#X obj 26 274 outlet;
#X obj 26 245 list;
#X obj 26 33 t b b a a b;
+#X obj 241 65 import list-abs zexy;
#X connect 0 0 9 0;
#X connect 1 0 13 0;
#X connect 2 0 3 1;
diff --git a/core/list-split-at.pd b/core/list-split-at.pd
index 63d3fc7..e71ded5 100644
--- a/core/list-split-at.pd
+++ b/core/list-split-at.pd
@@ -1,4 +1,5 @@
-#N canvas 741 479 156 229 10;
+#N canvas 741 479 192 221 10;
+#X declare -lib list-abs;
#X obj 25 47 list-drip;
#X obj 50 130 list-extend;
#X obj 25 160 list;
@@ -10,6 +11,7 @@
#X obj 25 25 t a b;
#X obj 76 159 t b b;
#X obj 76 182 outlet;
+#X obj 85 14 import list-abs;
#X connect 0 0 4 0;
#X connect 0 1 9 0;
#X connect 1 0 2 1;
diff --git a/core/list-swap.pd b/core/list-swap.pd
index cdf573e..09add8a 100644
--- a/core/list-swap.pd
+++ b/core/list-swap.pd
@@ -1,4 +1,5 @@
#N canvas 514 190 357 287 10;
+#X declare -lib list-abs;
#X obj 101 25 inlet;
#X obj 100 193 list-insert;
#X obj 145 92 list;
@@ -9,6 +10,7 @@
#X obj 101 53 t a b b a;
#X obj 246 112 list length;
#X obj 145 162 list-remove;
+#X obj 243 67 import list-abs;
#X connect 0 0 7 0;
#X connect 1 0 6 0;
#X connect 2 0 9 0;
diff --git a/core/mate.pd b/core/mate.pd
index 6490d07..d33a865 100644
--- a/core/mate.pd
+++ b/core/mate.pd
@@ -1,4 +1,5 @@
#N canvas 0 22 450 300 10;
+#X declare -lib moonlib -lib ggee;
#X obj 284 110 getdir 1;
#X obj 284 163 list2symbol /;
#X obj 284 75 t b b;
@@ -15,6 +16,7 @@
#X msg 144 137 mate \$1;
#X obj 101 101 bng 15 250 50 0 \$0edit \$0editR T 4 8 0 12 -139998
-262144 -262144;
+#X obj 62 50 import moonlib ggee;
#X connect 0 0 4 0;
#X connect 0 0 8 0;
#X connect 1 0 6 0;
diff --git a/core/menubar.pd b/core/menubar.pd
index 4dae3cb..675f429 100644
--- a/core/menubar.pd
+++ b/core/menubar.pd
@@ -1,4 +1,5 @@
#N canvas 713 295 450 300 10;
+#X declare -lib zexy -lib ggee;
#X msg 64 137 open \$1;
#X obj 64 167 popen;
#X obj 103 18 bng 15 250 50 0 \$0reveal \$0revealR Reveal 17 7 0 10
@@ -22,6 +23,7 @@
#X obj 144 80 r \$0edit;
#X obj 175 110 r \$0fullFile;
#X msg 144 137 mate \$1;
+#X obj 51 204 import zexy ggee;
#X connect 0 0 1 0;
#X connect 3 0 14 0;
#X connect 5 0 9 0;
diff --git a/core/pausetimer.pd b/core/pausetimer.pd
index 1c2a986..96db6e1 100644
--- a/core/pausetimer.pd
+++ b/core/pausetimer.pd
@@ -1,4 +1,5 @@
#N canvas 424 138 374 392 10;
+#X declare -lib iemlib;
#X obj -1 23 inlet;
#X obj 217 230 timer;
#X obj 217 287 f;
@@ -30,6 +31,7 @@
#X obj 55 347 +;
#X obj 121 341 r \$0reset;
#X msg 88 342 0;
+#X obj 199 57 import iemlib;
#X connect 0 0 15 0;
#X connect 1 0 4 0;
#X connect 2 0 3 0;
diff --git a/core/pcount.pd b/core/pcount.pd
index a6ee2f6..8261e27 100644
--- a/core/pcount.pd
+++ b/core/pcount.pd
@@ -1,4 +1,5 @@
#N canvas 731 546 353 279 10;
+#X declare -lib iemlib;
#X obj 78 24 inlet;
#X obj 63 144 f 0;
#X msg 78 108 0;
@@ -11,6 +12,7 @@
#X obj 208 144 mod \$2;
#X obj 171 111 init 1;
#X obj 257 111 init 1e+21;
+#X obj 174 191 import iemlib;
#X connect 0 0 4 0;
#X connect 1 0 3 0;
#X connect 1 0 8 0;
diff --git a/core/s2l-explode.pd b/core/s2l-explode.pd
index 82d0013..56f1255 100644
--- a/core/s2l-explode.pd
+++ b/core/s2l-explode.pd
@@ -1,10 +1,12 @@
#N canvas 583 307 229 180 10;
+#X declare -lib zexy;
#X obj 46 92 symbol2list;
#X obj 109 41 loadbang;
#X msg 109 67 symbol;
#X obj 46 41 inlet;
#X obj 46 125 outlet;
#X obj 46 67 list;
+#X obj 119 128 import zexy;
#X connect 0 0 4 0;
#X connect 1 0 2 0;
#X connect 2 0 0 1;
diff --git a/core/s2l-shorten.pd b/core/s2l-shorten.pd
index b8d0056..0991ce0 100644
--- a/core/s2l-shorten.pd
+++ b/core/s2l-shorten.pd
@@ -1,4 +1,5 @@
#N canvas 0 25 331 384 10;
+#X declare -lib list-abs;
#X obj 41 42 inlet;
#X obj 41 64 s2l-explode;
#X obj 41 85 list split \$1;
@@ -14,6 +15,7 @@
#X obj 41 180 t b;
#X obj 74 181 t b;
#X obj 41 158 sel \$1;
+#X obj 186 68 import list-abs;
#X connect 0 0 1 0;
#X connect 1 0 2 0;
#X connect 2 0 11 0;
diff --git a/core/savebang.pd b/core/savebang.pd
index 3d19f33..adfb49e 100644
--- a/core/savebang.pd
+++ b/core/savebang.pd
@@ -1,10 +1,12 @@
#N canvas 736 201 223 185 10;
+#X declare -lib toxy;
#X msg 26 47 capture 1;
#X obj 68 97 route menusave;
#X obj 26 21 loadbang;
#X obj 26 73 tot .parent;
#X obj 68 122 outlet;
#X text 25 155 Idea by hans-christoph steiner;
+#X obj 124 17 import toxy;
#X connect 0 0 3 0;
#X connect 1 0 4 0;
#X connect 2 0 0 0;
diff --git a/core/saveclear-help.pd b/core/saveclear-help.pd
new file mode 100644
index 0000000..0a5a312
--- /dev/null
+++ b/core/saveclear-help.pd
@@ -0,0 +1,16 @@
+#N canvas 4 22 450 300 10;
+#X text 12 20 saveclear - send a "clear" message to a subpatch before
+the patch is saved.;
+#X obj 16 246 saveclear pd-\$0.my-subpatch;
+#X text 12 59 This is useful for dynamically generated subpatches whose
+contents should not be saved along with the patch.;
+#N canvas 0 22 450 300 \$0.my-subpatch 1;
+#X restore 201 246 pd \$0.my-subpatch;
+#X obj 40 104 loadbang;
+#X obj 40 189 s pd-\$0.my-subpatch;
+#X msg 40 128 msg 10 10 This content was dynamically generated on load
+- but it will be cleared before the patch is saved so that it does
+not exist in saveclear-help.pd \, obj 50 150 bng \, obj 100 100 vslider
+\, obj 150 150 hradio;
+#X connect 4 0 6 0;
+#X connect 6 0 5 0;
diff --git a/core/saveclear.pd b/core/saveclear.pd
new file mode 100644
index 0000000..ce9e065
--- /dev/null
+++ b/core/saveclear.pd
@@ -0,0 +1,14 @@
+#N canvas 591 377 210 205 10;
+#X declare -lib toxy;
+#X msg 26 47 capture 1;
+#X obj 68 97 route menusave;
+#X obj 26 21 loadbang;
+#X obj 26 73 tot .parent;
+#X msg 68 121 clear;
+#X obj 68 147 s \$1;
+#X obj 111 22 import toxy;
+#X connect 0 0 3 0;
+#X connect 1 0 4 0;
+#X connect 2 0 0 0;
+#X connect 3 2 1 0;
+#X connect 4 0 5 0;
diff --git a/core/screendimens.pd b/core/screendimens.pd
index c60a1a3..33c7f38 100644
--- a/core/screendimens.pd
+++ b/core/screendimens.pd
@@ -1,4 +1,5 @@
#N canvas 880 47 296 242 10;
+#X declare -lib toxy;
#X msg 56 87 query winfo screenwidth .;
#X obj 56 164 pack f f;
#X msg 101 109 query winfo screenheight .;
@@ -7,6 +8,7 @@
#X obj 56 190 outlet;
#X obj 101 131 tot .;
#X obj 56 109 tot .;
+#X obj 139 35 import toxy;
#X connect 0 0 7 0;
#X connect 1 0 5 0;
#X connect 2 0 6 0;
diff --git a/core/sendmany.pd b/core/sendmany.pd
index 04f0d90..03890d0 100644
--- a/core/sendmany.pd
+++ b/core/sendmany.pd
@@ -1,4 +1,5 @@
-#N canvas 701 45 161 397 10;
+#N canvas 701 45 196 403 10;
+#X declare -lib list-abs;
#X obj 32 365 s;
#X obj 26 48 t b a;
#X obj 32 160 list;
@@ -7,6 +8,7 @@
#X obj 77 209 list;
#X obj 26 16 inlet;
#X obj 98 161 inlet;
+#X obj 76 49 import list-abs;
#X connect 1 0 5 0;
#X connect 1 1 2 1;
#X connect 2 0 0 0;
diff --git a/core/storebang-help.pd b/core/storebang-help.pd
new file mode 100644
index 0000000..249c1fb
--- /dev/null
+++ b/core/storebang-help.pd
@@ -0,0 +1,20 @@
+#N canvas 0 22 432 300 10;
+#X declare -lib zexy;
+#X declare -lib zexy;
+#X declare -lib zexy;
+#X declare -lib zexy;
+#X declare -lib zexy;
+#X declare -lib zexy;
+#X obj 29 185 storebang murray \$0.selection;
+#X obj 29 231 r \$0.selection;
+#X symbolatom 29 256 10 0 0 0 - - -;
+#X text 8 16 storebang - takes two arguments \, a value and a receiver.
+Clicking the bang will output the value to the receiver. This is useful
+for creating multiple choice lists \, and is especially helpful when
+dynamically generating a list of choices.;
+#X text 6 95 [storebang cheese \$0.receiver] will send "cheese" to
+\$0.receiver when clicked.;
+#X text 280 265 2008 Luke Iannini;
+#X obj 29 139 storebang federer \$0.selection;
+#X obj 29 162 storebang nadal \$0.selection;
+#X connect 1 0 2 0;
diff --git a/core/storebang.pd b/core/storebang.pd
new file mode 100644
index 0000000..4ca29f8
--- /dev/null
+++ b/core/storebang.pd
@@ -0,0 +1,30 @@
+#N canvas 871 193 484 396 10;
+#X declare -lib zexy;
+#X declare -lib zexy;
+#X obj 57 226 list append \$1;
+#X obj 57 251 s \$2;
+#X obj 101 101 bng 15 250 50 0 \$0.storebang-s \$0.storebang-r empty
+17 7 0 10 -249828 -1 -1;
+#X obj 57 202 r \$0.storebang-s;
+#X obj 117 101 cnv 15 94 15 empty \$0.cnv \$1 3 8 0 10 -229120 -66577
+0;
+#X obj 189 232 list length;
+#X obj 189 137 loadbang;
+#X obj 189 319 s \$0.cnv;
+#X msg 189 288 vis_size \$1 15;
+#X obj 189 158 list append \$1 \$2;
+#X text 225 261 letter width;
+#X obj 189 261 * 4.5;
+#X obj 189 184 list2symbol;
+#X obj 189 211 s2l-explode;
+#X obj 329 170 import zexy;
+#X connect 0 0 1 0;
+#X connect 3 0 0 0;
+#X connect 5 0 11 0;
+#X connect 6 0 9 0;
+#X connect 8 0 7 0;
+#X connect 9 0 12 0;
+#X connect 11 0 8 0;
+#X connect 12 0 13 0;
+#X connect 13 0 5 0;
+#X coords 0 -1 1 1 34 17 2 100 100;
diff --git a/core/trimdirs.pd b/core/trimdirs.pd
index 28028cd..a73998a 100644
--- a/core/trimdirs.pd
+++ b/core/trimdirs.pd
@@ -1,4 +1,5 @@
#N canvas 694 125 471 382 10;
+#X declare -lib zexy -lib list-abs;
#X obj 185 137 symbol2list /;
#X obj 185 176 list-splat -1;
#X obj 156 282 list2symbol /;
@@ -25,6 +26,7 @@
#X obj 185 110 s \$0passthrough;
#X obj 170 314 r \$0passthrough;
#X obj 344 82 abs;
+#X obj 303 253 import zexy list-abs;
#X connect 0 0 1 0;
#X connect 1 0 3 0;
#X connect 2 0 17 0;
diff --git a/core/troute.pd b/core/troute.pd
index d10175a..be06e57 100644
--- a/core/troute.pd
+++ b/core/troute.pd
@@ -1,24 +1,13 @@
-#N canvas 360 268 1084 595 10;
-#N canvas 122 62 399 252 \$0canvas 0;
-#X obj 0 20 r 1253-inlet0;
-#X obj 0 50 route j f g;
-#X obj 0 100 s 1253-outlet0;
-#X obj 150 100 s 1253-outlet1;
-#X obj 300 100 s 1253-outlet2;
-#X obj 450 100 s 1253-outlet3;
-#X connect 0 0 1 0;
-#X connect 1 0 2 0;
-#X connect 1 1 3 0;
-#X connect 1 2 4 0;
-#X connect 1 3 5 0;
-#X restore 441 15 pd \$0canvas;
-#X obj 271 103 s \$0totalArgs;
+#N canvas 286 157 803 191 10;
+#X declare -lib iemlib -lib list-abs;
+#X obj 1 67 namecanvas \$0self;
+#N canvas 34 277 750 385 constructor 0;
+#X obj 266 103 s \$0totalArgs;
#X obj 480 92 t a a;
-#X obj 510 116 list length;
-#X obj 20 9 namecanvas \$0self;
-#X obj 510 137 s \$0totalArgs;
+#X obj 507 117 list length;
+#X obj 507 138 s \$0totalArgs;
#X obj 227 152 t b b a;
-#N canvas 518 172 903 672 connections 0;
+#N canvas 423 44 903 672 connections 0;
#X obj 362 60 inlet;
#X msg 609 107 connect 0 0 1 0;
#X obj 609 135 s pd-\$0canvas;
@@ -44,9 +33,9 @@
#X obj 216 192 until;
#X obj 216 134 f;
#X obj 232 111 r \$0checkedArgs;
-#X obj 215 429 list-apply + 21;
#X obj 232 242 r \$0resetIfLess;
#X obj 400 149 r \$0totalOuts;
+#X obj 215 429 list-apply + 4;
#X connect 0 0 18 0;
#X connect 1 0 2 0;
#X connect 3 0 10 0;
@@ -57,7 +46,7 @@
#X connect 7 0 6 0;
#X connect 8 0 9 1;
#X connect 9 0 3 0;
-#X connect 12 0 25 0;
+#X connect 12 0 27 0;
#X connect 13 0 11 0;
#X connect 14 0 4 1;
#X connect 15 0 12 1;
@@ -75,9 +64,9 @@
#X connect 22 0 20 0;
#X connect 23 0 22 0;
#X connect 24 0 23 1;
-#X connect 25 0 13 0;
-#X connect 26 0 20 1;
-#X connect 27 0 7 1;
+#X connect 25 0 20 1;
+#X connect 26 0 7 1;
+#X connect 27 0 13 0;
#X restore 227 236 pd connections;
#X obj 227 63 dollarg;
#N canvas 906 445 436 308 initialSetup 0;
@@ -118,7 +107,7 @@
#X connect 16 0 15 0;
#X connect 17 0 19 0;
#X connect 19 0 18 0;
-#X restore 271 181 pd initialSetup;
+#X restore 266 181 pd initialSetup;
#N canvas 328 204 574 524 addOutlets 0;
#X obj 54 18 inlet;
#X obj 54 279 * 150;
@@ -138,9 +127,9 @@
#X obj 90 132 t a a;
#X obj 127 65 r \$0lessThan;
#X obj 90 107 spigot;
-#X obj 127 85 invert;
-#X msg 120 171 obj \$1 475 r \$2-outlet\$3;
-#X msg 90 240 obj \$1 500 outlet;
+#X obj 127 85 == 0;
+#X msg 120 171 obj \$1 100 r \$2-outlet\$3;
+#X msg 90 240 obj \$1 150 outlet;
#X connect 0 0 4 0;
#X connect 2 0 7 0;
#X connect 2 1 6 0;
@@ -190,7 +179,7 @@
#X connect 22 0 21 1;
#X connect 23 0 11 1;
#X connect 24 0 14 1;
-#X restore 249 210 pd addOutlets;
+#X restore 246 210 pd addOutlets;
#N canvas 228 24 433 398 checkArgs 0;
#X obj 131 114 >;
#X obj 183 114 f;
@@ -198,7 +187,6 @@
#X obj 131 149 sel 1;
#X obj 183 149 t f f;
#X obj 213 188 -;
-#X obj 37 130 invert;
#X obj 37 162 s \$0lessThan;
#X obj 161 313 f;
#X obj 161 179 t b;
@@ -206,23 +194,24 @@
#X obj 213 223 s \$0checkedArgs;
#X obj 131 14 r \$0totalOuts;
#X obj 177 278 r \$0totalOuts;
+#X obj 37 130 == 0;
#X connect 0 0 3 0;
-#X connect 0 0 6 0;
+#X connect 0 0 13 0;
#X connect 1 0 0 1;
#X connect 1 0 4 0;
#X connect 2 0 0 0;
#X connect 2 1 1 1;
#X connect 3 0 1 0;
-#X connect 3 1 9 0;
+#X connect 3 1 8 0;
#X connect 4 0 5 1;
#X connect 4 1 5 0;
-#X connect 5 0 11 0;
-#X connect 6 0 7 0;
-#X connect 8 0 10 0;
-#X connect 9 0 8 0;
-#X connect 12 0 2 0;
-#X connect 13 0 8 1;
-#X restore 271 124 pd checkArgs;
+#X connect 5 0 10 0;
+#X connect 7 0 9 0;
+#X connect 8 0 7 0;
+#X connect 11 0 2 0;
+#X connect 12 0 7 1;
+#X connect 13 0 6 0;
+#X restore 266 124 pd checkArgs;
#X obj 21 49 inlet;
#X obj 21 87 s \$0-inlet0;
#X obj 480 44 inlet;
@@ -232,17 +221,26 @@
#X obj 479 252 s \$0totalOuts;
#X obj 479 230 + 1;
#X obj 227 39 initbang;
-#X connect 2 0 15 0;
-#X connect 2 1 3 0;
-#X connect 3 0 5 0;
-#X connect 6 0 7 0;
-#X connect 6 1 10 0;
-#X connect 6 2 9 0;
-#X connect 8 0 6 0;
-#X connect 8 1 1 0;
-#X connect 12 0 13 0;
-#X connect 14 0 2 0;
-#X connect 16 0 6 0;
-#X connect 17 0 19 0;
-#X connect 19 0 18 0;
-#X connect 20 0 8 0;
+#N canvas 122 62 611 204 \$0canvas 1;
+#X restore 30 243 pd \$0canvas;
+#X obj 378 17 import iemlib list-abs;
+#X obj 30 263 saveclear pd-\$0canvas;
+#X connect 1 0 13 0;
+#X connect 1 1 2 0;
+#X connect 2 0 3 0;
+#X connect 4 0 5 0;
+#X connect 4 1 8 0;
+#X connect 4 2 7 0;
+#X connect 6 0 4 0;
+#X connect 6 1 0 0;
+#X connect 10 0 11 0;
+#X connect 12 0 1 0;
+#X connect 14 0 4 0;
+#X connect 15 0 17 0;
+#X connect 17 0 16 0;
+#X connect 18 0 6 0;
+#X restore 1 45 pd constructor;
+#X obj 1 20 inlet;
+#X obj 82 19 inlet;
+#X connect 2 0 1 0;
+#X connect 3 0 1 1;
diff --git a/core/vmetro.pd b/core/vmetro.pd
index ca79140..b421956 100644
--- a/core/vmetro.pd
+++ b/core/vmetro.pd
@@ -1,4 +1,5 @@
#N canvas 718 533 518 301 10;
+#X declare -lib list-abs;
#X obj 105 261 outlet;
#X obj 327 29 inlet;
#X obj 107 13 inlet;
@@ -12,6 +13,7 @@
#X obj 107 34 list;
#X obj 107 56 sel stop;
#X obj 152 77 sel 0;
+#X obj 375 29 import list-abs;
#X connect 1 0 5 1;
#X connect 2 0 10 0;
#X connect 3 0 7 0;