aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Iannini <lukeiannini@users.sourceforge.net>2009-03-22 01:41:27 +0000
committerLuke Iannini <lukeiannini@users.sourceforge.net>2009-03-22 01:41:27 +0000
commitcc3062618f3e4ab08b3a3847a3993a8b567240ef (patch)
tree7a31f896f2bed17346428f1e093303c16cb9ebdd
parent108c7c2f64b9254ea599073bd737f5e5a8b8d9c3 (diff)
more work on ds-choice-list, added ds-array for visualizing arrays more flexibly, and added a few more of jwilkes' prototypes from the list
svn path=/trunk/abstractions/ds-gui/; revision=10887
-rwxr-xr-xcompactidac/compactidac~.pd199
-rwxr-xr-xcompactidac/expand.pd52
-rwxr-xr-xcompactidac/filetype.pd68
-rwxr-xr-xcompactidac/load.pd48
-rwxr-xr-xcompactidac/mute.pd78
-rwxr-xr-xcompactidac/rec.pd50
-rwxr-xr-xcompactidac/save.pd51
-rwxr-xr-xcompactidac/stop.pd53
-rwxr-xr-xcompactidac/test.pd16
-rwxr-xr-xcompactidac/volume.pd138
-rw-r--r--ds-array.pd192
-rwxr-xr-xds-bng-help.pd35
-rwxr-xr-xds-bng.pd172
-rwxr-xr-xds-bng2.pd172
-rw-r--r--ds-choice-list.pd115
-rwxr-xr-xpal/turnstile.txt2
16 files changed, 1384 insertions, 57 deletions
diff --git a/compactidac/compactidac~.pd b/compactidac/compactidac~.pd
new file mode 100755
index 0000000..6b48453
--- /dev/null
+++ b/compactidac/compactidac~.pd
@@ -0,0 +1,199 @@
+#N struct 1039-clickpoint float x float y float vis;
+#N struct 1039-slider float x float y float x0 float vis;
+#N struct 1040-mute float x float y float c;
+#N struct 1041-expand float x float y float max float max-shadow;
+#N struct 1042-save float x float y float border float vis;
+#N struct 1043-stop float x float y float border float vis;
+#N struct 1044-rec float x float y float border float vis;
+#N struct 1045-filetype float x float y float vis symbol ext;
+#N canvas 3 16 1004 682 12;
+#X obj 59 435 *~;
+#X obj 126 435 *~;
+#X obj 125 296 inlet~;
+#X obj 60 296 inlet~;
+#X obj 76 501 dac~;
+#X obj 60 530 outlet~;
+#X obj 127 531 outlet~;
+#X obj 148 401 line~;
+#X obj 148 350 dbtorms;
+#X msg 148 375 \$1 50;
+#X obj 296 144 moses 1;
+#X msg 336 234 set 0;
+#X obj 160 210 sel 0 1;
+#X msg 148 258 0;
+#X msg 186 258 set 0;
+#X msg 296 171 1;
+#X obj 296 31 inlet;
+#X obj 625 170 i;
+#X msg 502 164 \; pd dsp 1;
+#X obj 262 262 f 1;
+#X obj 113 6 loadbang;
+#X obj 571 6 namecanvas \$0-vol-abs;
+#X obj 113 31 t b b b;
+#X obj 625 333 list append \$0 pd-;
+#X obj 625 251 t a a;
+#X obj 662 277 - 5;
+#X obj 433 86 t a;
+#N canvas 0 46 1004 682 \$0-gop 0;
+#X scalar 1039-clickpoint 27 18 1 \;;
+#X scalar 1039-clickpoint 37 18 1 \;;
+#X scalar 1039-clickpoint 47 18 1 \;;
+#X scalar 1039-clickpoint 57 18 1 \;;
+#X scalar 1039-clickpoint 67 18 1 \;;
+#X scalar 1039-clickpoint 77 18 1 \;;
+#X scalar 1039-slider 25 17 0 1 \;;
+#X scalar 1040-mute 1 15 0 \;;
+#X scalar 1041-expand 0 0 999 999 \;;
+#X scalar 1041-expand 12 0 333 666 \;;
+#X scalar 1042-save 0 32 999 1 \;;
+#X scalar 1043-stop 69 32 999 1 \;;
+#X scalar 1044-rec 48 32 999 1 \;;
+#X scalar 1045-filetype 22 36 1 wav \;;
+#X coords 0 0 5 5 5 5 1;
+#X restore 3 6 pd \$0-gop;
+#X obj 625 226 + 30;
+#X obj 625 145 * 67;
+#X obj 296 115 volume \$0 25 17;
+#X obj 160 182 mute \$0 1 15;
+#X obj 188 31 s pd-\$0-gop;
+#X obj 139 59 s \$0-init;
+#X obj 625 66 expand \$0 0 0;
+#X msg 188 6 clear \, donecanvasdialog 1 -1 2 0 0 5 5 5 5 0 0;
+#X obj 625 118 line 1;
+#X msg 625 91 \$1 200;
+#X obj 625 195 change;
+#X obj 625 306 pack f f f;
+#X obj 702 225 + 44;
+#X msg 454 536 0;
+#X msg 340 536 0;
+#X msg 305 481 0;
+#X obj 305 456 del 200;
+#X obj 503 600 savepanel;
+#X obj 454 795 writesf~ 2;
+#X obj 340 480 save \$0 0 32;
+#X obj 454 566 stop \$0 69 32;
+#X obj 340 566 rec \$0 48 32;
+#X obj 620 620 filetype \$0 22 36;
+#X obj 691 144 * 20;
+#X obj 691 169 i;
+#X obj 691 194 change;
+#X obj 575 645 symbol;
+#X obj 575 670 makefilename %%s.%s;
+#X msg 575 695 set \$1;
+#X obj 503 725 makefilename;
+#X obj 503 625 t a b;
+#X msg 503 750 open \$1;
+#X obj 340 700 spigot;
+#X msg 540 654 1;
+#X msg 404 728 start;
+#X msg 454 728 stop;
+#X msg 385 654 0;
+#X obj 340 795 f;
+#X obj 374 795 == 0;
+#X obj 385 535 == 0;
+#X obj 340 770 metro 450;
+#X obj 296 56 route float;
+#X obj 381 170 b;
+#X obj 304 86 r \$0-mstr-lvl;
+#X obj 262 310 s \$0-mstr-lvl;
+#X obj 336 263 s \$0-mute;
+#X obj 160 156 r \$0-mute;
+#X msg 625 362 \; \$4-vol-abs donecanvasdialog 1 -1 2 0 0 1 -1 \$1
+\$3 0 0 \;;
+#X text 63 754 2009 Jonathan Wilkes;
+#X connect 0 0 4 0;
+#X connect 0 0 5 0;
+#X connect 1 0 4 1;
+#X connect 1 0 6 0;
+#X connect 2 0 1 0;
+#X connect 3 0 0 0;
+#X connect 7 0 1 1;
+#X connect 7 0 0 1;
+#X connect 8 0 9 0;
+#X connect 9 0 7 0;
+#X connect 10 0 15 0;
+#X connect 10 1 8 0;
+#X connect 10 1 18 0;
+#X connect 10 1 19 1;
+#X connect 10 1 11 0;
+#X connect 11 0 73 0;
+#X connect 12 0 19 0;
+#X connect 12 1 13 0;
+#X connect 12 1 14 0;
+#X connect 13 0 8 0;
+#X connect 14 0 72 0;
+#X connect 15 0 73 0;
+#X connect 16 0 69 0;
+#X connect 17 0 38 0;
+#X connect 19 0 72 0;
+#X connect 20 0 22 0;
+#X connect 22 0 11 0;
+#X connect 22 1 33 0;
+#X connect 22 2 35 0;
+#X connect 23 0 75 0;
+#X connect 24 0 39 0;
+#X connect 24 1 25 0;
+#X connect 25 0 39 1;
+#X connect 26 0 30 1;
+#X connect 26 0 47 1;
+#X connect 26 0 48 1;
+#X connect 26 0 49 1;
+#X connect 26 0 50 1;
+#X connect 28 0 24 0;
+#X connect 29 0 17 0;
+#X connect 30 0 10 0;
+#X connect 31 0 12 0;
+#X connect 34 0 37 0;
+#X connect 34 0 26 0;
+#X connect 35 0 32 0;
+#X connect 36 0 29 0;
+#X connect 36 0 51 0;
+#X connect 37 0 36 0;
+#X connect 38 0 28 0;
+#X connect 39 0 23 0;
+#X connect 40 0 39 2;
+#X connect 41 0 48 0;
+#X connect 42 0 49 0;
+#X connect 43 0 47 0;
+#X connect 44 0 43 0;
+#X connect 45 0 58 0;
+#X connect 47 0 44 0;
+#X connect 47 0 42 0;
+#X connect 47 0 41 0;
+#X connect 47 0 45 0;
+#X connect 48 0 42 0;
+#X connect 48 0 63 0;
+#X connect 48 0 64 0;
+#X connect 49 0 41 0;
+#X connect 49 0 60 0;
+#X connect 50 0 54 1;
+#X connect 51 0 52 0;
+#X connect 52 0 53 0;
+#X connect 53 0 40 0;
+#X connect 54 0 55 0;
+#X connect 55 0 56 0;
+#X connect 56 0 57 0;
+#X connect 57 0 59 0;
+#X connect 58 0 57 0;
+#X connect 58 1 54 0;
+#X connect 58 1 61 0;
+#X connect 59 0 46 0;
+#X connect 60 0 62 0;
+#X connect 60 0 68 0;
+#X connect 61 0 60 1;
+#X connect 62 0 46 0;
+#X connect 63 0 46 0;
+#X connect 64 0 60 1;
+#X connect 64 0 67 0;
+#X connect 64 0 68 0;
+#X connect 65 0 66 0;
+#X connect 66 0 49 1;
+#X connect 66 0 65 1;
+#X connect 67 0 49 1;
+#X connect 68 0 65 0;
+#X connect 69 0 30 0;
+#X connect 69 1 70 0;
+#X connect 70 0 73 0;
+#X connect 71 0 30 0;
+#X connect 74 0 31 0;
+#X coords 0 0 1 -1 97 62 2 0 0;
diff --git a/compactidac/expand.pd b/compactidac/expand.pd
new file mode 100755
index 0000000..f0f5815
--- /dev/null
+++ b/compactidac/expand.pd
@@ -0,0 +1,52 @@
+#N canvas 0 56 1004 682 12;
+#N canvas 344 86 653 382 expand 0;
+#X obj 86 106 outlet;
+#X obj 119 305 filledpolygon 999 999 1 -1 -1 12 -1 12 14 -1 14;
+#X obj 125 172 drawpolygon max-shadow 1 2 11 12 11 12 3 2 3 2 11;
+#X obj 125 142 drawpolygon max 1 1 2 11 2 11 3 1 3 11 3 11 11 1 11
+1 2;
+#X obj 124 244 drawpolygon 666 1 2 12 10 12 2 12;
+#X obj 124 219 drawpolygon 333 1 1 11 9 11 1 11;
+#X obj 86 56 struct \$0-expand float x float y float max float max-shadow
+;
+#X connect 6 0 0 0;
+#X restore 23 50 pd expand;
+#X obj 475 189 pointer;
+#X obj 438 52 t b b;
+#X obj 23 75 route click;
+#X obj 23 100 unpack p;
+#X obj 23 220 outlet;
+#X obj 198 78 f \$2;
+#X obj 198 217 append \$0-expand x y max max-shadow;
+#X obj 198 103 t a a;
+#X obj 198 153 pack f f \$3;
+#X msg 198 181 \$1 \$3 999 999 \, \$2 \$3 333 666;
+#X obj 23 125 get \$0-expand max;
+#X obj 23 150 sel 999;
+#X msg 23 175 0;
+#X msg 76 175 1;
+#X obj 235 126 + 12;
+#X obj 438 26 r \$1-init;
+#X msg 475 164 traverse \$1\$2\$3 \, bang;
+#X obj 475 139 list prepend pd- \$1 -gop;
+#X connect 0 0 3 0;
+#X connect 1 0 7 4;
+#X connect 2 0 6 0;
+#X connect 2 1 18 0;
+#X connect 3 0 4 0;
+#X connect 4 0 11 0;
+#X connect 6 0 8 0;
+#X connect 8 0 9 0;
+#X connect 8 1 15 0;
+#X connect 9 0 10 0;
+#X connect 10 0 7 0;
+#X connect 11 0 12 0;
+#X connect 12 0 13 0;
+#X connect 12 1 14 0;
+#X connect 13 0 5 0;
+#X connect 14 0 5 0;
+#X connect 15 0 9 1;
+#X connect 16 0 2 0;
+#X connect 17 0 1 0;
+#X connect 18 0 17 0;
+#X coords 0 0 1 1 26 15 0;
diff --git a/compactidac/filetype.pd b/compactidac/filetype.pd
new file mode 100755
index 0000000..cf3d6dc
--- /dev/null
+++ b/compactidac/filetype.pd
@@ -0,0 +1,68 @@
+#N canvas 154 140 730 457 12;
+#X obj 578 162 pointer;
+#X obj 73 37 route click;
+#X obj 541 84 t b b;
+#X obj 541 56 r \$1-init;
+#X obj 578 112 list prepend pd- \$1 -gop;
+#X msg 578 137 traverse \$1\$2\$3 \, bang;
+#X obj 13 38 inlet;
+#X obj 73 87 t b a;
+#X obj 267 38 inlet;
+#X obj 437 198 append \$0-filetype x y vis;
+#X obj 437 252 t b a;
+#X obj 267 222 set \$0-filetype vis;
+#X obj 73 115 f;
+#X obj 106 115 + 1;
+#X obj 73 140 mod 3;
+#X obj 73 170 sel 0 1 2;
+#X obj 73 387 outlet;
+#X obj 437 162 pack \$2 \$3 1;
+#N canvas 502 92 490 255 filetype 1;
+#X obj 7 36 outlet;
+#X obj 7 11 struct \$0-filetype float x float y float vis symbol ext
+;
+#X obj 110 145 drawpolygon -v vis 999 1 -1 16 26 16;
+#X text 34 138 hide gop;
+#X text 39 158 border;
+#X obj 109 93 drawsymbol -v vis ext 0 0 322;
+#X connect 1 0 0 0;
+#X restore 73 10 pd filetype;
+#X obj 437 329 set -symbol \$0-filetype ext;
+#X obj 73 271 set -symbol \$0-filetype ext;
+#X obj 73 62 unpack p f;
+#X msg 73 195 symbol aiff;
+#X msg 96 220 symbol snd;
+#X msg 119 245 symbol wav;
+#X obj 437 302 symbol;
+#X msg 437 277 wav;
+#X connect 0 0 9 3;
+#X connect 1 0 21 0;
+#X connect 2 0 17 0;
+#X connect 2 1 4 0;
+#X connect 3 0 2 0;
+#X connect 4 0 5 0;
+#X connect 5 0 0 0;
+#X connect 7 0 12 0;
+#X connect 7 1 20 1;
+#X connect 8 0 11 0;
+#X connect 9 0 10 0;
+#X connect 9 0 11 1;
+#X connect 9 0 20 1;
+#X connect 10 0 26 0;
+#X connect 10 1 19 1;
+#X connect 12 0 13 0;
+#X connect 12 0 14 0;
+#X connect 13 0 12 1;
+#X connect 14 0 15 0;
+#X connect 15 0 22 0;
+#X connect 15 1 23 0;
+#X connect 15 2 24 0;
+#X connect 17 0 9 0;
+#X connect 18 0 1 0;
+#X connect 21 0 7 0;
+#X connect 22 0 20 0;
+#X connect 23 0 20 0;
+#X connect 24 0 20 0;
+#X connect 25 0 19 0;
+#X connect 25 0 16 0;
+#X connect 26 0 25 0;
diff --git a/compactidac/load.pd b/compactidac/load.pd
new file mode 100755
index 0000000..444b316
--- /dev/null
+++ b/compactidac/load.pd
@@ -0,0 +1,48 @@
+#N canvas 20 86 1004 682 12;
+#N canvas 37 15 546 300 load 1;
+#X obj 71 65 outlet;
+#X obj 71 41 struct \$0-load float x float y float border;
+#X obj 111 156 filledpolygon 999 border 1 0 0 20 0 20 20 0 20;
+#X obj 111 96 filledpolygon 0 0 1 5 9 10 4 15 9;
+#X obj 111 126 filledpolygon 0 0 1 5 12 5 15 15 15 15 12;
+#X connect 1 0 0 0;
+#X restore 107 41 pd load;
+#X obj 401 176 pointer;
+#X obj 107 71 route click;
+#X obj 43 201 outlet;
+#X obj 364 98 t b b;
+#X obj 364 70 r \$1-init;
+#X obj 401 126 list prepend pd- \$1 -gop;
+#X msg 401 151 traverse \$1\$2\$3 \, bang;
+#X obj 260 176 pack \$2 \$3 999;
+#X obj 107 96 unpack p;
+#X obj 142 151 == 0;
+#X obj 107 151 f 1;
+#X obj 107 176 sel 0 1;
+#X obj 47 72 inlet;
+#X msg 107 201 999;
+#X msg 133 229 0;
+#X obj 107 121 t a a;
+#X obj 260 212 append \$0-load x y border;
+#X obj 107 256 set \$0-load border;
+#X connect 0 0 2 0;
+#X connect 1 0 17 3;
+#X connect 2 0 9 0;
+#X connect 4 0 8 0;
+#X connect 4 1 6 0;
+#X connect 5 0 4 0;
+#X connect 6 0 7 0;
+#X connect 7 0 1 0;
+#X connect 8 0 17 0;
+#X connect 9 0 16 0;
+#X connect 10 0 11 1;
+#X connect 11 0 10 0;
+#X connect 11 0 12 0;
+#X connect 11 0 3 0;
+#X connect 12 0 14 0;
+#X connect 12 1 15 0;
+#X connect 13 0 11 0;
+#X connect 14 0 18 0;
+#X connect 15 0 18 0;
+#X connect 16 0 11 0;
+#X connect 16 1 18 1;
diff --git a/compactidac/mute.pd b/compactidac/mute.pd
new file mode 100755
index 0000000..0f8f271
--- /dev/null
+++ b/compactidac/mute.pd
@@ -0,0 +1,78 @@
+#N canvas 173 240 804 453 12;
+#X obj 74 90 route click;
+#X obj 111 194 == 0;
+#X obj 150 239 s \$0-x;
+#X msg 74 270 555;
+#N canvas 258 229 741 372 \$0-mute 0;
+#X obj 70 59 outlet;
+#X text 26 326 rect to hide gop box;
+#X obj 70 34 struct \$0-mute float x float y float c;
+#X obj 193 326 filledpolygon 999 999 1 -1 -1 23 -1 23 16 -1 16;
+#X text 120 209 drybrush;
+#X text 147 140 horn;
+#X obj 193 139 filledpolygon 459 c 1 1 6 5 6 10 1 11 1 11 15 10 15
+5 10 1 10;
+#X text 173 109 x;
+#X obj 193 79 r \$0-x;
+#X obj 193 109 drawpolygon 911 2 2 2 14 14 8 8 2 14 14 2 8 8;
+#X obj 193 180 drawpolygon c 1 14 6 15 7 15 9 14 10 15 9;
+#X obj 193 210 drawpolygon c 1 16 4 17 5 18 6 18 10 17 11 16 12 17
+11;
+#X obj 193 240 drawpolygon c 1 19 2 20 3 20 4 21 5 21 11 20 12 20 13
+19 14 18 15;
+#X connect 2 0 0 0;
+#X connect 8 0 9 0;
+#X restore 74 65 pd \$0-mute;
+#X obj 74 296 set \$0-mute c;
+#X obj 262 75 inlet;
+#X obj 188 296 outlet;
+#X obj 262 100 route set;
+#X obj 74 194 f;
+#X obj 74 245 sel 1;
+#X obj 262 127 == 0;
+#X obj 74 115 b;
+#N canvas 0 0 450 509 init 0;
+#X obj 12 15 inlet;
+#X obj 12 246 outlet;
+#X obj 169 157 pointer;
+#X obj 12 46 t b b;
+#X obj 12 185 pack 0 \$2 \$3;
+#X msg 12 150 0;
+#X obj 12 217 append \$0-mute c x y;
+#X obj 49 73 list prepend pd- \$1 -gop;
+#X msg 169 132 traverse \$1\$2\$3 \, bang;
+#X connect 0 0 3 0;
+#X connect 2 0 6 3;
+#X connect 3 0 5 0;
+#X connect 3 1 7 0;
+#X connect 4 0 6 0;
+#X connect 5 0 4 0;
+#X connect 6 0 1 0;
+#X connect 7 0 8 0;
+#X connect 8 0 2 0;
+#X restore 377 104 pd init;
+#X obj 150 120 loadbang;
+#X msg 150 145 0;
+#X obj 377 76 r \$1-init;
+#X connect 0 0 12 0;
+#X connect 1 0 9 1;
+#X connect 3 0 5 0;
+#X connect 4 0 0 0;
+#X connect 6 0 8 0;
+#X connect 8 0 11 0;
+#X connect 8 0 10 0;
+#X connect 8 0 2 0;
+#X connect 8 1 9 0;
+#X connect 9 0 1 0;
+#X connect 9 0 10 0;
+#X connect 9 0 2 0;
+#X connect 9 0 7 0;
+#X connect 10 0 3 0;
+#X connect 10 1 5 0;
+#X connect 11 0 9 1;
+#X connect 12 0 9 0;
+#X connect 13 0 5 1;
+#X connect 14 0 15 0;
+#X connect 15 0 2 0;
+#X connect 16 0 13 0;
+#X coords 0 0 1 1 22 16 0;
diff --git a/compactidac/rec.pd b/compactidac/rec.pd
new file mode 100755
index 0000000..a409cd1
--- /dev/null
+++ b/compactidac/rec.pd
@@ -0,0 +1,50 @@
+#N canvas 0 86 1004 682 12;
+#X obj 401 176 pointer;
+#X obj 107 71 route click;
+#X obj 43 201 outlet;
+#X obj 364 98 t b b;
+#X obj 364 70 r \$1-init;
+#X obj 401 126 list prepend pd- \$1 -gop;
+#X msg 401 151 traverse \$1\$2\$3 \, bang;
+#X obj 107 96 unpack p;
+#X obj 107 176 sel 0 1;
+#X obj 47 72 inlet;
+#X msg 107 201 999;
+#X msg 133 229 0;
+#X obj 107 121 t b a;
+#X obj 107 146 1;
+#X obj 682 67 inlet;
+#X obj 682 341 set \$0-rec vis;
+#X obj 107 256 set \$0-rec border;
+#N canvas 502 92 490 255 rec 1;
+#X obj 7 36 outlet;
+#X obj 7 11 struct \$0-rec float x float y float border float vis;
+#X obj 47 116 filledpolygon -v vis 999 border 1 0 0 20 0 20 20 0 20
+;
+#X obj 47 86 filledpolygon -v vis 933 233 1 4 17 17 10 4 3;
+#X connect 1 0 0 0;
+#X restore 107 44 pd rec;
+#X obj 260 212 append \$0-rec x y border vis;
+#X obj 260 176 pack \$2 \$3 999 1;
+#X connect 0 0 18 4;
+#X connect 1 0 7 0;
+#X connect 3 0 19 0;
+#X connect 3 1 5 0;
+#X connect 4 0 3 0;
+#X connect 5 0 6 0;
+#X connect 6 0 0 0;
+#X connect 7 0 12 0;
+#X connect 8 0 10 0;
+#X connect 8 1 11 0;
+#X connect 9 0 8 0;
+#X connect 10 0 16 0;
+#X connect 11 0 16 0;
+#X connect 12 0 13 0;
+#X connect 12 0 2 0;
+#X connect 12 1 16 1;
+#X connect 13 0 8 0;
+#X connect 14 0 15 0;
+#X connect 17 0 1 0;
+#X connect 18 0 15 1;
+#X connect 18 0 16 1;
+#X connect 19 0 18 0;
diff --git a/compactidac/save.pd b/compactidac/save.pd
new file mode 100755
index 0000000..6df4e41
--- /dev/null
+++ b/compactidac/save.pd
@@ -0,0 +1,51 @@
+#N canvas 0 86 1004 682 12;
+#N canvas 280 171 525 300 save 0;
+#X obj 71 66 outlet;
+#X obj 71 41 struct \$0-save float x float y float border float vis
+;
+#X obj 111 168 filledpolygon -v vis 999 border 1 0 0 20 0 20 20 0 20
+;
+#X obj 111 116 drawpolygon -v vis 0 1 2 2 15 2 15 9 5 9 5 2 18 2 18
+18 6 18 6 12 14 12 14 18 2 18 2 2;
+#X connect 1 0 0 0;
+#X restore 107 44 pd save;
+#X obj 399 176 pointer;
+#X obj 107 71 route click;
+#X obj 43 201 outlet;
+#X obj 362 98 t b b;
+#X obj 362 70 r \$1-init;
+#X obj 399 126 list prepend pd- \$1 -gop;
+#X msg 399 151 traverse \$1\$2\$3 \, bang;
+#X obj 107 96 unpack p;
+#X obj 107 176 sel 0 1;
+#X obj 47 72 inlet;
+#X msg 107 201 999;
+#X msg 133 229 0;
+#X obj 107 256 set \$0-save border;
+#X obj 107 121 t b a;
+#X obj 107 146 1;
+#X obj 682 67 inlet;
+#X obj 682 341 set \$0-save vis;
+#X obj 260 212 append \$0-save x y border vis;
+#X obj 260 176 pack \$2 \$3 999 1;
+#X connect 0 0 2 0;
+#X connect 1 0 18 4;
+#X connect 2 0 8 0;
+#X connect 4 0 19 0;
+#X connect 4 1 6 0;
+#X connect 5 0 4 0;
+#X connect 6 0 7 0;
+#X connect 7 0 1 0;
+#X connect 8 0 14 0;
+#X connect 9 0 11 0;
+#X connect 9 1 12 0;
+#X connect 10 0 9 0;
+#X connect 11 0 13 0;
+#X connect 12 0 13 0;
+#X connect 14 0 15 0;
+#X connect 14 0 3 0;
+#X connect 14 1 13 1;
+#X connect 15 0 9 0;
+#X connect 16 0 17 0;
+#X connect 18 0 17 1;
+#X connect 19 0 18 0;
diff --git a/compactidac/stop.pd b/compactidac/stop.pd
new file mode 100755
index 0000000..9e52807
--- /dev/null
+++ b/compactidac/stop.pd
@@ -0,0 +1,53 @@
+#N canvas 0 84 1004 682 12;
+#N canvas 37 15 546 300 stop 1;
+#X obj 71 66 outlet;
+#X obj 71 41 struct \$0-stop float x float y float border float vis
+;
+#X obj 91 209 filledpolygon -v vis 999 border 1 0 0 20 0 20 20 0 20
+;
+#X obj 91 127 filledpolygon -v vis 933 933 1 5 7 7 5 10 8 13 5 15 7
+12 10 15 13 13 15 10 12 7 15 5 13 8 10 5 7 2 7 2 13 7 18 13 18 18 13
+18 7 13 2 7 2 2 7 5 7;
+#X connect 1 0 0 0;
+#X restore 107 43 pd stop;
+#X obj 401 176 pointer;
+#X obj 107 71 route click;
+#X obj 43 201 outlet;
+#X obj 364 98 t b b;
+#X obj 364 70 r \$1-init;
+#X obj 401 126 list prepend pd- \$1 -gop;
+#X msg 401 151 traverse \$1\$2\$3 \, bang;
+#X obj 107 96 unpack p;
+#X obj 107 176 sel 0 1;
+#X obj 47 72 inlet;
+#X msg 107 201 999;
+#X msg 133 229 0;
+#X obj 107 256 set \$0-stop border;
+#X obj 107 121 t b a;
+#X obj 107 146 1;
+#X obj 682 67 inlet;
+#X obj 682 341 set \$0-stop vis;
+#X obj 260 212 append \$0-stop x y border vis;
+#X obj 260 176 pack \$2 \$3 999 1;
+#X connect 0 0 2 0;
+#X connect 1 0 18 4;
+#X connect 2 0 8 0;
+#X connect 4 0 19 0;
+#X connect 4 1 6 0;
+#X connect 5 0 4 0;
+#X connect 6 0 7 0;
+#X connect 7 0 1 0;
+#X connect 8 0 14 0;
+#X connect 9 0 11 0;
+#X connect 9 1 12 0;
+#X connect 10 0 9 0;
+#X connect 11 0 13 0;
+#X connect 12 0 13 0;
+#X connect 14 0 15 0;
+#X connect 14 0 3 0;
+#X connect 14 1 13 1;
+#X connect 15 0 9 0;
+#X connect 16 0 17 0;
+#X connect 18 0 17 1;
+#X connect 18 0 13 1;
+#X connect 19 0 18 0;
diff --git a/compactidac/test.pd b/compactidac/test.pd
new file mode 100755
index 0000000..4971c32
--- /dev/null
+++ b/compactidac/test.pd
@@ -0,0 +1,16 @@
+#N struct 1004-clickpoint float x float y float vis;
+#N struct 1004-slider float x float y float x0 float vis;
+#N struct 1005-mute float x float y float c;
+#N struct 1006-expand float x float y float max float max-shadow;
+#N struct 1007-save float x float y float border float vis;
+#N struct 1008-stop float x float y float border float vis;
+#N struct 1009-rec float x float y float border float vis;
+#N struct 1010-filetype float x float y float vis symbol ext;
+#N canvas 366 173 450 300 12;
+#X obj 157 60 osc~ 440;
+#X floatatom 248 40 5 0 100 0 - - -;
+#X msg 299 76 mute;
+#X obj 158 96 compactidac~;
+#X connect 0 0 3 0;
+#X connect 1 0 3 2;
+#X connect 2 0 3 2;
diff --git a/compactidac/volume.pd b/compactidac/volume.pd
new file mode 100755
index 0000000..d53e2f4
--- /dev/null
+++ b/compactidac/volume.pd
@@ -0,0 +1,138 @@
+#N canvas 0 11 1004 682 12;
+#N canvas 306 292 580 300 slider 1;
+#X obj 28 68 outlet;
+#X obj 28 43 struct \$0-slider float x float y float x0 float vis;
+#X text 9 255 hide gop;
+#X obj 95 256 filledpolygon -v vis 999 999 1 0 -19 64 -19 64 14 0 14
+;
+#X obj 91 174 filledpolygon -v vis 999 999 1 0 0 64 0 64 14 0 14;
+#X obj 89 98 filledpolygon -v vis 999 0 1 2 7 x0(0:100)(2:52) 7 x0(0:100)(2:52)
+2 x0(0:100)(12:62) 2 x0(0:100)(12:62) 7 62 7 x0(0:100)(12:62) 7 x0(0:100)(12:62)
+12 x0(0:100)(2:52) 12 x0(0:100)(2:52) 7 2 7;
+#X obj 92 216 drawnumber -v vis x0 7 -18 322 Vol:;
+#X connect 1 0 0 0;
+#X restore 285 28 pd slider;
+#X obj 505 321 pointer;
+#N canvas 3 357 450 300 clickpoint 0;
+#X obj 54 59 outlet;
+#X obj 54 34 struct \$0-clickpoint float x float y float vis;
+#X obj 92 125 filledpolygon -v vis 999 999 1 0 0 10 0 10 12 0 12;
+#X connect 1 0 0 0;
+#X restore 88 28 pd clickpoint;
+#X obj 88 53 route click;
+#X obj 88 78 unpack p;
+#X obj 285 53 route change;
+#X obj 285 78 unpack p;
+#X msg 314 312 0;
+#X obj 88 218 * 2;
+#X obj 106 342 outlet;
+#X obj 88 103 get \$0-clickpoint x;
+#X obj 285 103 get \$0-slider x0;
+#X obj 462 614 append \$0-clickpoint x y;
+#X obj 88 411 set \$0-slider x0;
+#X obj 3 29 inlet;
+#X obj 3 218 route set;
+#X obj 462 559 + 2;
+#X obj 462 377 t b b;
+#X obj 506 503 f \$3;
+#X obj 506 559 + 1;
+#X obj 462 427 until;
+#X msg 462 402 6;
+#X obj 462 452 f;
+#X msg 516 426 0;
+#X obj 462 477 t a b;
+#X obj 500 451 + 1;
+#X obj 462 589 pack;
+#X obj 167 140 loadbang;
+#X obj 167 165 \$2;
+#X obj 167 190 max 1;
+#X obj 462 528 + \$2;
+#X obj 462 503 * 10;
+#X obj 737 36 inlet;
+#X obj 372 351 append \$0-slider x y vis;
+#X obj 372 320 pack \$2 \$3 1;
+#X msg 676 405 next;
+#X obj 737 244 t b a;
+#X obj 737 359 t b b a;
+#X obj 763 437 f;
+#X obj 844 474 f;
+#X obj 818 359 t b b a;
+#X obj 737 334 pointer \$0-clickpoint \$0-slider;
+#X obj 663 499 set \$0-clickpoint vis;
+#X obj 844 499 set \$0-slider vis;
+#X obj 88 160 - \$2;
+#X obj 88 128 - 2;
+#X obj 505 271 list prepend pd- \$1 -gop;
+#X msg 505 296 traverse \$1\$2\$3 \, bang;
+#X obj 420 143 r \$1-init;
+#X msg 542 224 1;
+#X obj 737 283 list prepend pd- \$1 -gop;
+#X msg 737 309 traverse \$1\$2\$3 \, bang;
+#X obj 420 170 t b b b b b;
+#X connect 0 0 5 0;
+#X connect 1 0 12 2;
+#X connect 1 0 33 3;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 4 0 10 0;
+#X connect 5 0 6 0;
+#X connect 6 0 11 0;
+#X connect 7 0 13 0;
+#X connect 8 0 9 0;
+#X connect 8 0 13 0;
+#X connect 10 0 45 0;
+#X connect 11 0 9 0;
+#X connect 14 0 15 0;
+#X connect 15 0 13 0;
+#X connect 15 1 13 0;
+#X connect 15 1 9 0;
+#X connect 16 0 26 0;
+#X connect 17 0 21 0;
+#X connect 17 1 23 0;
+#X connect 18 0 19 0;
+#X connect 19 0 26 1;
+#X connect 20 0 22 0;
+#X connect 21 0 20 0;
+#X connect 22 0 24 0;
+#X connect 22 0 25 0;
+#X connect 23 0 22 1;
+#X connect 24 0 31 0;
+#X connect 24 1 18 0;
+#X connect 25 0 22 1;
+#X connect 26 0 12 0;
+#X connect 27 0 28 0;
+#X connect 28 0 29 0;
+#X connect 30 0 16 0;
+#X connect 31 0 30 0;
+#X connect 32 0 36 0;
+#X connect 33 0 13 1;
+#X connect 34 0 33 0;
+#X connect 35 0 41 0;
+#X connect 36 0 50 0;
+#X connect 36 1 38 1;
+#X connect 36 1 39 1;
+#X connect 37 0 35 0;
+#X connect 37 1 38 0;
+#X connect 37 2 42 1;
+#X connect 38 0 42 0;
+#X connect 39 0 43 0;
+#X connect 40 0 35 0;
+#X connect 40 1 39 0;
+#X connect 40 2 43 1;
+#X connect 41 0 37 0;
+#X connect 41 1 40 0;
+#X connect 41 2 35 0;
+#X connect 44 0 8 0;
+#X connect 45 0 44 0;
+#X connect 46 0 47 0;
+#X connect 47 0 1 0;
+#X connect 48 0 52 0;
+#X connect 49 0 36 0;
+#X connect 50 0 51 0;
+#X connect 51 0 41 0;
+#X connect 52 0 7 0;
+#X connect 52 1 49 0;
+#X connect 52 2 17 0;
+#X connect 52 3 34 0;
+#X connect 52 4 46 0;
+#X coords 0 0 1 1 66 16 0;
diff --git a/ds-array.pd b/ds-array.pd
new file mode 100644
index 0000000..ee241c5
--- /dev/null
+++ b/ds-array.pd
@@ -0,0 +1,192 @@
+#N struct 3182.ds-array float x float y float l-width float l-color
+float x-spacing array ds-array 3182.ds-element;
+#N struct 3182.ds-element float y float x-spacing;
+#N canvas 347 22 761 806 10;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array \$0.soundfile 4e+06 float 2;
+#X coords 0 1 4e+06 -1 200 140 1;
+#X restore 29 34 graph;
+#N canvas 893 26 450 300 \$0.ds-array 0;
+#X obj 59 73 struct \$0.ds-array float x float y float l-width float
+l-color float x-spacing array ds-array \$0.ds-element;
+#X obj 88 195 plot ds-array l-color 1 0 0 x-spacing;
+#X restore 538 276 pd \$0.ds-array;
+#N canvas 890 355 450 300 \$0.element 0;
+#X obj 98 59 struct \$0.ds-element float y;
+#X restore 538 302 pd \$0.element;
+#N canvas 40 484 212 121 \$0.data 1;
+#X scalar 3182.ds-array 0 50 30 537 1 \; -0 0 \; -5.00793 0 \; -54.7729
+0 \; 15.9882 0 \; -13.5376 0 \; -3.24707 0 \; 19.281 0 \; 11.6119 0
+\; -4.97742 0 \; -52.6917 0 \; 18.1671 0 \; 18.7744 0 \; 3.31726 0
+\; -10.8673 0 \; 9.8877 0 \; 17.6575 0 \; 3.25012 0 \; 22.7112 0 \;
+28.0823 0 \; 1.03455 0 \; -12.0789 0 \; 27.005 0 \; 11.3678 0 \; -4.56543
+0 \; 7.68433 0 \; -42.4652 0 \; -4.50134 0 \; -4.97131 0 \; -7.08618
+0 \; -4.5105 0 \; 5.26733 0 \; -3.64685 0 \; 41.9983 0 \; -1.92566
+0 \; 36.0138 0 \; -8.0658 0 \; 63.5406 0 \; 13.1073 0 \; -3.17078 0
+\; -11.795 0 \; -5.81055 0 \; -35.2692 0 \; -11.2854 0 \; 8.56934 0
+\; 29.9957 0 \; 3.42407 0 \; -7.97424 0 \; -14.0411 0 \; -20.8618 0
+\; -9.68628 0 \; -3.51257 0 \; -11.4227 0 \; -36.6241 0 \; 22.2473
+0 \; -3.69873 0 \; -14.1724 0 \; 30.188 0 \; 40.564 0 \; 1.62048 0
+\; 42.1539 0 \; 9.47571 0 \; -3.1189 0 \; 7.76367 0 \; 42.6697 0 \;
+39.4623 0 \; -12.2253 0 \; -36.7676 0 \; 15.8295 0 \; 73.7396 0 \;
+-3.03345 0 \; -2.41394 0 \; 23.8678 0 \; -6.29272 0 \; 2.83203 0 \;
+-12.912 0 \; -42.1936 0 \; -13.501 0 \; 0.119019 0 \; 6.48804 0 \;
+-62.2437 0 \; 27.0172 0 \; -8.255 0 \; 13.8153 0 \; -7.56836 0 \; -51.3214
+0 \; -19.278 0 \; -48.642 0 \; 8.83789 0 \; -14.4135 0 \; -1.55029
+0 \; -19.1315 0 \; 18.2953 0 \; 27.6978 0 \; -50.1038 0 \; -10.6781
+0 \; 37.3413 0 \; -4.98962 0 \; 51.7151 0 \; 23.8251 0 \; 42.63 0 \;
+-5.40466 0 \; -6.6925 0 \; 6.10046 0 \; 9.12781 0 \; -13.681 0 \; -18.2129
+0 \; 28.4241 0 \; -12.5946 0 \; 8.89282 0 \; -21.2585 0 \; -48.9441
+0 \; -3.43018 0 \; -56.0059 0 \; 39.7644 0 \; 19.5526 0 \; 11.9354
+0 \; -82.9651 0 \; -16.3666 0 \; -93.9301 0 \; 19.0796 0 \; 76.8219
+0 \; 3.98254 0 \; 1.44348 0 \; 44.4122 0 \; 3.85437 0 \; 47.4335 0
+\; -0.634766 0 \; -9.03931 0 \; -29.7638 0 \; 35.675 0 \; 37.2711 0
+\; -23.3917 0 \; 9.50928 0 \; 6.13098 0 \; 1.14441 0 \; 34.1736 0 \;
+10.7971 0 \; -31.8268 0 \; -3.08228 0 \; -11.3007 0 \; 25.0671 0 \;
+45.4895 0 \; -4.32129 0 \; 31.3721 0 \; 25.3784 0 \; 15.9546 0 \; -24.942
+0 \; 30.5054 0 \; -51.9287 0 \; -14.621 0 \; 3.79333 0 \; 69.7113 0
+\; 10.8032 0 \; 43.6005 0 \; -24.7284 0 \; 92.1814 0 \; 10.437 0 \;
+-15.6342 0 \; 44.9188 0 \; 18.6462 0 \; 19.6899 0 \; -9.48181 0 \;
+18.8293 0 \; 34.1248 0 \; -49.1058 0 \; -18.8904 0 \; 18.7592 0 \;
+7.73315 0 \; -33.075 0 \; -59.7473 0 \; 14.0442 0 \; -65.3656 0 \;
+3.44543 0 \; -1.0437 0 \; 8.77991 0 \; 30.4474 0 \; 23.4131 0 \; -2.88696
+0 \; -10.8124 0 \; -31.1462 0 \; -2.61536 0 \; 43.457 0 \; -44.2902
+0 \; 58.6914 0 \; -5.2002 0 \; 62.6221 0 \; -53.6407 0 \; 0.732422
+0 \; 64.0747 0 \; -32.1106 0 \; -21.6003 0 \; 5.3833 0 \; -23.7854
+0 \; -33.7128 0 \; 4.97131 0 \; -14.1327 0 \; 28.5858 0 \; -12.9761
+0 \; -24.6246 0 \; -25.2045 0 \; \;;
+#X restore 540 233 pd \$0.data;
+#X obj 459 417 ds-begin pd-\$0.data;
+#X obj 237 356 list length;
+#X obj 237 396 expr $f2 / $f1;
+#X msg 318 373 200;
+#X obj 174 585 list;
+#X obj 174 421 list append;
+#X msg 318 354 determine graph pixel width;
+#X obj 231 692 element \$0.ds-array ds-array;
+#X obj 201 511 f;
+#X obj 201 490 t b a;
+#X obj 174 468 t a a;
+#X obj 200 533 setsize \$0.ds-array ds-array;
+#X obj 237 376 t a a;
+#X obj 174 612 list-enumerate;
+#X obj 174 560 t b a;
+#X obj 174 635 list-rev;
+#X obj 174 661 unpack f f;
+#X obj 174 743 set \$0.ds-element y;
+#X obj 174 443 append \$0.ds-array x y l-width l-color x-spacing;
+#X msg 174 377 0 50 1 0;
+#X text 56 372 middle of y-height;
+#X text 47 713 half y-height \, flip;
+#X obj 174 280 t b a a b b b;
+#X msg 262 281 clear;
+#X obj 306 281 s pd-\$0.data;
+#X obj 435 131 soundfiler;
+#X obj 436 80 list append \$0;
+#X obj 436 55 openpanel;
+#X obj 436 30 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X msg 435 102 read -resize \$1 \$2.soundfile;
+#X floatatom 269 420 5 0 0 0 - - -;
+#X text 390 589 need list-resample to only take every Xth value;
+#X text 389 606 better yet build own dump that resamples;
+#N canvas 0 22 452 378 tabdump-resample 0;
+#X obj 159 63 inlet;
+#X obj 159 310 list-extendq;
+#X obj 199 268 tabread \$0.soundfile;
+#X obj 199 119 /;
+#X obj 228 119 r \$0.display-width;
+#X obj 229 186 r \$0.display-width;
+#X obj 199 145 t b a;
+#X obj 199 186 f;
+#X obj 199 213 until;
+#X obj 199 240 f;
+#X obj 227 240 +;
+#X obj 199 91 t a b;
+#X msg 243 91 0;
+#X obj 159 86 t b a;
+#X obj 159 340 outlet;
+#X obj 159 268 t b b;
+#X connect 0 0 13 0;
+#X connect 1 0 14 0;
+#X connect 2 0 1 0;
+#X connect 3 0 6 0;
+#X connect 4 0 3 1;
+#X connect 5 0 7 1;
+#X connect 6 0 7 0;
+#X connect 6 1 10 1;
+#X connect 7 0 8 0;
+#X connect 8 0 9 0;
+#X connect 9 0 10 0;
+#X connect 9 0 2 0;
+#X connect 10 0 9 1;
+#X connect 11 0 3 0;
+#X connect 11 1 12 0;
+#X connect 12 0 9 1;
+#X connect 13 0 15 0;
+#X connect 13 1 11 0;
+#X connect 15 0 1 1;
+#X connect 15 1 1 0;
+#X restore 174 254 pd tabdump-resample;
+#X obj 435 170 s \$0.arraysize;
+#X obj 174 231 r \$0.arraysize;
+#X msg 635 382 200;
+#X obj 635 360 loadbang;
+#X obj 635 405 s \$0.display-width;
+#X obj 100 254 list length;
+#X floatatom 100 277 5 0 0 0 - - -;
+#X obj 174 714 * -100;
+#X obj 474 527 set \$0.ds-array l-width;
+#X obj 474 547 set \$0.ds-array l-color;
+#X obj 287 475 s \$0.array-pointer;
+#X obj 626 518 r \$0.array-pointer;
+#X floatatom 474 497 5 0 0 0 - - -;
+#X floatatom 530 487 5 0 0 0 - - -;
+#X connect 4 0 22 5;
+#X connect 5 0 16 0;
+#X connect 6 0 9 1;
+#X connect 6 0 34 0;
+#X connect 7 0 6 1;
+#X connect 8 0 17 0;
+#X connect 9 0 22 0;
+#X connect 10 0 7 0;
+#X connect 11 0 21 1;
+#X connect 12 0 15 0;
+#X connect 13 0 12 0;
+#X connect 13 1 15 1;
+#X connect 14 0 18 0;
+#X connect 14 1 13 0;
+#X connect 16 0 6 0;
+#X connect 16 1 12 1;
+#X connect 17 0 19 0;
+#X connect 18 0 8 0;
+#X connect 18 1 11 1;
+#X connect 19 0 20 0;
+#X connect 20 0 45 0;
+#X connect 20 1 11 0;
+#X connect 22 0 14 0;
+#X connect 22 0 48 0;
+#X connect 23 0 9 0;
+#X connect 26 0 23 0;
+#X connect 26 1 5 0;
+#X connect 26 2 8 1;
+#X connect 26 3 10 0;
+#X connect 26 4 4 0;
+#X connect 26 5 27 0;
+#X connect 27 0 28 0;
+#X connect 29 0 38 0;
+#X connect 30 0 33 0;
+#X connect 31 0 30 0;
+#X connect 32 0 31 0;
+#X connect 33 0 29 0;
+#X connect 37 0 26 0;
+#X connect 37 0 43 0;
+#X connect 39 0 37 0;
+#X connect 40 0 42 0;
+#X connect 41 0 40 0;
+#X connect 43 0 44 0;
+#X connect 45 0 21 0;
+#X connect 49 0 46 1;
+#X connect 49 0 47 1;
+#X connect 50 0 46 0;
+#X connect 51 0 47 0;
diff --git a/ds-bng-help.pd b/ds-bng-help.pd
new file mode 100755
index 0000000..93340b7
--- /dev/null
+++ b/ds-bng-help.pd
@@ -0,0 +1,35 @@
+#N struct 1015-ds-bng float button float bg;
+#N struct 1016-ds-bng float button float bg;
+#N struct 1017-ds-bng float button float bg;
+#N struct 1018-ds-bng float button float bg;
+#N struct 1019-ds-bng float button float bg;
+#N struct 1020-ds-bng float button float bg;
+#N struct 1021-ds-bng float button float bg;
+#N struct 1022-ds-bng float button float bg;
+#N canvas 92 138 608 373 12;
+#X text 17 5 ds-bng;
+#X msg 227 55 bang;
+#X obj 227 171 ds-bng;
+#X msg 270 132 set bang;
+#X msg 270 105 hold 750;
+#X text 65 252 ds-bng 30 75;
+#X text 108 312 ds-bng 75 15;
+#X text 79 183 ds-bng 50;
+#X obj 24 59 loadbang;
+#X obj 227 83 ds-bng;
+#X obj 24 118 ds-bng 25;
+#X obj 24 227 ds-bng 30 75;
+#X obj 25 314 ds-bng 75 15;
+#X obj 23 169 ds-bng 50;
+#X obj 306 293 ds-bng2;
+#X obj 227 278 ds-bng;
+#X text 275 311 (ds-bng2);
+#X msg 24 87 color 439 180 755;
+#X connect 1 0 9 0;
+#X connect 2 0 15 0;
+#X connect 3 0 2 0;
+#X connect 4 0 2 0;
+#X connect 8 0 17 0;
+#X connect 9 0 2 0;
+#X connect 15 0 14 0;
+#X connect 17 0 10 0;
diff --git a/ds-bng.pd b/ds-bng.pd
new file mode 100755
index 0000000..5a82d04
--- /dev/null
+++ b/ds-bng.pd
@@ -0,0 +1,172 @@
+#N struct 1010-ds-bng float button float bg;
+#N canvas 13 177 967 416 12;
+#N canvas 0 85 1004 682 \$0-ds-bng 1;
+#X obj 107 64 outlet;
+#X obj 169 106 filledpolygon bg bg 1 0 0 13 0 13 13 0 13;
+#X obj 107 39 struct \$0-ds-bng float button float bg;
+#X obj 169 136 filledcurve button 0 1 0 0 13 0 13 13 0 13;
+#X connect 2 0 0 0;
+#X restore 296 97 pd \$0-ds-bng;
+#X obj 609 273 pointer;
+#X obj 296 122 route click;
+#X obj 122 225 b;
+#X obj 122 269 del 250;
+#X obj 296 248 outlet;
+#X obj 122 97 inlet;
+#X obj 296 152 b;
+#X obj 404 331 s \$0-p;
+#X msg 404 248 999;
+#X msg 506 248 999;
+#N canvas 0 0 450 300 color 1;
+#X obj 16 7 inlet;
+#X obj 213 145 r \$0-p;
+#X obj 53 62 unpack f f f;
+#X obj 16 32 t b a;
+#X obj 5 62 t b b;
+#X obj 32 175 set \$0-ds-bng bg button;
+#X obj 99 137 v \$0-f;
+#X obj 146 111 v \$0-b;
+#X obj 32 147 f;
+#X connect 0 0 3 0;
+#X connect 1 0 5 2;
+#X connect 2 0 8 1;
+#X connect 2 1 6 0;
+#X connect 2 2 7 0;
+#X connect 3 0 4 0;
+#X connect 3 1 2 0;
+#X connect 4 0 8 0;
+#X connect 4 1 6 0;
+#X connect 4 1 7 0;
+#X connect 7 0 5 1;
+#X connect 8 0 5 0;
+#X restore 214 152 pd color;
+#X obj 404 306 append \$0-ds-bng bg button;
+#X obj 188 326 set \$0-ds-bng button;
+#N canvas 0 86 1004 682 \$0-gop 0;
+#X scalar 1010-ds-bng 999 999 \;;
+#X coords 0 0 13 13 13 13 1;
+#X restore 1 1 pd \$0-gop;
+#N canvas 0 0 1004 682 gop-init 0;
+#X obj 60 546 list prepend pd- \$0 -gop;
+#X obj 60 8 inlet;
+#X obj 60 111 symbol \$1-f;
+#X obj 168 111 makefilename $%d-f;
+#X obj 60 150 sel char;
+#X obj 438 111 makefilename $%d-f;
+#X obj 330 150 sel char;
+#X obj 60 255 +;
+#X obj 60 175 0;
+#X obj 121 200 1;
+#X obj 330 175 0;
+#X obj 391 201 1;
+#X obj 60 280 sel 0 1;
+#X obj 438 83 2;
+#X obj 168 85 1;
+#X obj 60 38 t b b b b;
+#X obj 172 400 \$1;
+#X obj 209 400 \$2;
+#X obj 172 370 t b b;
+#X obj 227 425 max 8;
+#X obj 172 427 max 8;
+#X obj 86 344 \$1;
+#X obj 172 509 pack f f f f;
+#X obj 265 456 + 2;
+#X obj 172 452 t a a;
+#X obj 234 479 + 2;
+#X obj 86 373 t a a a;
+#X obj 391 175 b;
+#X obj 121 174 b;
+#X obj 330 111 symbol \$2-f;
+#X obj 139 401 + 2;
+#X msg 60 582 \; \$1\$2\$3 clear \; \$1\$2\$3 donecanvasdialog 1 -1
+2 0 0 13 13 \$4 \$5 0 0 \; \$2-ds-bng-abs donecanvasdialog 1 -1 2 0
+0 14 14 \$6 \$7;
+#X msg 60 314 13 13 15 15;
+#X text 591 111 check for creation arguments;
+#X text 121 342 copy x-coord if there is only one creation argument
+;
+#X text 161 314 default size;
+#X connect 0 0 31 0;
+#X connect 1 0 15 0;
+#X connect 2 0 4 0;
+#X connect 3 0 4 1;
+#X connect 4 0 8 0;
+#X connect 4 1 28 0;
+#X connect 5 0 6 1;
+#X connect 6 0 10 0;
+#X connect 6 1 27 0;
+#X connect 7 0 12 0;
+#X connect 8 0 7 0;
+#X connect 9 0 7 0;
+#X connect 10 0 7 1;
+#X connect 11 0 7 1;
+#X connect 12 0 32 0;
+#X connect 12 1 21 0;
+#X connect 12 2 18 0;
+#X connect 13 0 5 0;
+#X connect 14 0 3 0;
+#X connect 15 0 2 0;
+#X connect 15 1 14 0;
+#X connect 15 2 29 0;
+#X connect 15 3 13 0;
+#X connect 16 0 20 0;
+#X connect 17 0 19 0;
+#X connect 18 0 16 0;
+#X connect 18 1 17 0;
+#X connect 19 0 23 0;
+#X connect 19 0 22 1;
+#X connect 20 0 24 0;
+#X connect 21 0 26 0;
+#X connect 22 0 0 0;
+#X connect 23 0 22 3;
+#X connect 24 0 22 0;
+#X connect 24 1 25 0;
+#X connect 25 0 22 2;
+#X connect 26 0 22 0;
+#X connect 26 1 22 1;
+#X connect 26 2 30 0;
+#X connect 27 0 11 0;
+#X connect 28 0 9 0;
+#X connect 29 0 6 0;
+#X connect 30 0 22 3;
+#X connect 30 0 22 2;
+#X connect 32 0 0 0;
+#X restore 609 193 pd gop-init;
+#X obj 609 223 list prepend pd- \$0 -gop;
+#X msg 609 248 traverse \$1\$2\$3 \, bang;
+#X obj 404 70 namecanvas \$0-ds-bng-abs;
+#X obj 404 121 t b b b b;
+#X obj 404 97 loadbang;
+#X obj 188 269 v \$0-f;
+#X obj 122 294 v \$0-b;
+#X obj 513 278 v \$0-b;
+#X text 607 70 2009 Jonathan Wilkes;
+#X obj 122 122 route set hold color;
+#X connect 0 0 2 0;
+#X connect 1 0 12 2;
+#X connect 2 0 7 0;
+#X connect 3 0 4 0;
+#X connect 3 0 21 0;
+#X connect 4 0 22 0;
+#X connect 6 0 25 0;
+#X connect 7 0 3 0;
+#X connect 7 0 5 0;
+#X connect 9 0 12 0;
+#X connect 10 0 12 1;
+#X connect 10 0 23 0;
+#X connect 12 0 8 0;
+#X connect 12 0 13 1;
+#X connect 16 0 17 0;
+#X connect 17 0 1 0;
+#X connect 19 0 9 0;
+#X connect 19 1 10 0;
+#X connect 19 2 16 0;
+#X connect 19 3 15 0;
+#X connect 20 0 19 0;
+#X connect 21 0 13 0;
+#X connect 22 0 13 0;
+#X connect 25 0 3 0;
+#X connect 25 1 4 1;
+#X connect 25 2 11 0;
+#X connect 25 3 7 0;
+#X coords 0 0 14 14 15 15 2 0 0;
diff --git a/ds-bng2.pd b/ds-bng2.pd
new file mode 100755
index 0000000..f15cafd
--- /dev/null
+++ b/ds-bng2.pd
@@ -0,0 +1,172 @@
+#N struct 1019-ds-bng float button float bg;
+#N canvas 13 177 967 416 12;
+#N canvas 0 85 1004 682 \$0-ds-bng 0;
+#X obj 107 64 outlet;
+#X obj 169 106 filledpolygon bg bg 1 0 0 13 0 13 13 0 13;
+#X obj 107 39 struct \$0-ds-bng float button float bg;
+#X obj 169 136 filledpolygon button 0 1 2 2 11 2 11 11 2 11;
+#X connect 2 0 0 0;
+#X restore 296 97 pd \$0-ds-bng;
+#X obj 609 273 pointer;
+#X obj 296 122 route click;
+#X obj 122 225 b;
+#X obj 122 269 del 250;
+#X obj 296 248 outlet;
+#X obj 122 97 inlet;
+#X obj 296 152 b;
+#X obj 404 331 s \$0-p;
+#X msg 404 248 999;
+#X msg 506 248 999;
+#N canvas 0 0 450 300 color 0;
+#X obj 16 7 inlet;
+#X obj 213 145 r \$0-p;
+#X obj 53 62 unpack f f f;
+#X obj 16 32 t b a;
+#X obj 5 62 t b b;
+#X obj 32 175 set \$0-ds-bng bg button;
+#X obj 99 137 v \$0-f;
+#X obj 146 111 v \$0-b;
+#X obj 32 147 f;
+#X connect 0 0 3 0;
+#X connect 1 0 5 2;
+#X connect 2 0 8 1;
+#X connect 2 1 6 0;
+#X connect 2 2 7 0;
+#X connect 3 0 4 0;
+#X connect 3 1 2 0;
+#X connect 4 0 8 0;
+#X connect 4 1 6 0;
+#X connect 4 1 7 0;
+#X connect 7 0 5 1;
+#X connect 8 0 5 0;
+#X restore 214 152 pd color;
+#X obj 404 306 append \$0-ds-bng bg button;
+#X obj 188 326 set \$0-ds-bng button;
+#N canvas 0 86 1004 682 \$0-gop 0;
+#X scalar 1019-ds-bng 999 999 \;;
+#X coords 0 0 13 13 13 13 1;
+#X restore 1 1 pd \$0-gop;
+#N canvas 0 0 1004 682 gop-init 0;
+#X obj 60 546 list prepend pd- \$0 -gop;
+#X obj 60 8 inlet;
+#X obj 60 111 symbol \$1-f;
+#X obj 168 111 makefilename $%d-f;
+#X obj 60 150 sel char;
+#X obj 438 111 makefilename $%d-f;
+#X obj 330 150 sel char;
+#X obj 60 255 +;
+#X obj 60 175 0;
+#X obj 121 200 1;
+#X obj 330 175 0;
+#X obj 391 201 1;
+#X obj 60 280 sel 0 1;
+#X obj 438 83 2;
+#X obj 168 85 1;
+#X obj 60 38 t b b b b;
+#X obj 172 400 \$1;
+#X obj 209 400 \$2;
+#X obj 172 370 t b b;
+#X obj 227 425 max 8;
+#X obj 172 427 max 8;
+#X obj 86 344 \$1;
+#X obj 172 509 pack f f f f;
+#X obj 265 456 + 2;
+#X obj 172 452 t a a;
+#X obj 234 479 + 2;
+#X obj 86 373 t a a a;
+#X obj 391 175 b;
+#X obj 121 174 b;
+#X obj 330 111 symbol \$2-f;
+#X obj 139 401 + 2;
+#X msg 60 582 \; \$1\$2\$3 clear \; \$1\$2\$3 donecanvasdialog 1 -1
+2 0 0 13 13 \$4 \$5 0 0 \; \$2-ds-bng-abs donecanvasdialog 1 -1 2 0
+0 14 14 \$6 \$7;
+#X msg 60 314 13 13 15 15;
+#X text 591 111 check for creation arguments;
+#X text 121 342 copy x-coord if there is only one creation argument
+;
+#X text 161 314 default size;
+#X connect 0 0 31 0;
+#X connect 1 0 15 0;
+#X connect 2 0 4 0;
+#X connect 3 0 4 1;
+#X connect 4 0 8 0;
+#X connect 4 1 28 0;
+#X connect 5 0 6 1;
+#X connect 6 0 10 0;
+#X connect 6 1 27 0;
+#X connect 7 0 12 0;
+#X connect 8 0 7 0;
+#X connect 9 0 7 0;
+#X connect 10 0 7 1;
+#X connect 11 0 7 1;
+#X connect 12 0 32 0;
+#X connect 12 1 21 0;
+#X connect 12 2 18 0;
+#X connect 13 0 5 0;
+#X connect 14 0 3 0;
+#X connect 15 0 2 0;
+#X connect 15 1 14 0;
+#X connect 15 2 29 0;
+#X connect 15 3 13 0;
+#X connect 16 0 20 0;
+#X connect 17 0 19 0;
+#X connect 18 0 16 0;
+#X connect 18 1 17 0;
+#X connect 19 0 23 0;
+#X connect 19 0 22 1;
+#X connect 20 0 24 0;
+#X connect 21 0 26 0;
+#X connect 22 0 0 0;
+#X connect 23 0 22 3;
+#X connect 24 0 22 0;
+#X connect 24 1 25 0;
+#X connect 25 0 22 2;
+#X connect 26 0 22 0;
+#X connect 26 1 22 1;
+#X connect 26 2 30 0;
+#X connect 27 0 11 0;
+#X connect 28 0 9 0;
+#X connect 29 0 6 0;
+#X connect 30 0 22 3;
+#X connect 30 0 22 2;
+#X connect 32 0 0 0;
+#X restore 609 193 pd gop-init;
+#X obj 609 223 list prepend pd- \$0 -gop;
+#X msg 609 248 traverse \$1\$2\$3 \, bang;
+#X obj 404 70 namecanvas \$0-ds-bng-abs;
+#X obj 404 121 t b b b b;
+#X obj 404 97 loadbang;
+#X obj 188 269 v \$0-f;
+#X obj 122 294 v \$0-b;
+#X obj 513 278 v \$0-b;
+#X text 607 70 2009 Jonathan Wilkes;
+#X obj 122 122 route set hold color;
+#X connect 0 0 2 0;
+#X connect 1 0 12 2;
+#X connect 2 0 7 0;
+#X connect 3 0 4 0;
+#X connect 3 0 21 0;
+#X connect 4 0 22 0;
+#X connect 6 0 25 0;
+#X connect 7 0 3 0;
+#X connect 7 0 5 0;
+#X connect 9 0 12 0;
+#X connect 10 0 12 1;
+#X connect 10 0 23 0;
+#X connect 12 0 8 0;
+#X connect 12 0 13 1;
+#X connect 16 0 17 0;
+#X connect 17 0 1 0;
+#X connect 19 0 9 0;
+#X connect 19 1 10 0;
+#X connect 19 2 16 0;
+#X connect 19 3 15 0;
+#X connect 20 0 19 0;
+#X connect 21 0 13 0;
+#X connect 22 0 13 0;
+#X connect 25 0 3 0;
+#X connect 25 1 4 1;
+#X connect 25 2 11 0;
+#X connect 25 3 7 0;
+#X coords 0 0 14 14 15 15 2 0 0;
diff --git a/ds-choice-list.pd b/ds-choice-list.pd
index 4312fce..15de01f 100644
--- a/ds-choice-list.pd
+++ b/ds-choice-list.pd
@@ -1,78 +1,81 @@
-#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;
+#N canvas 927 467 450 300 10;
+#N canvas 0 22 450 300 \$0.display 0;
+#X restore 234 247 pd \$0.display;
+#N canvas 650 261 450 348 make-list 0;
#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 269 t b a;
+#X obj 130 315 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 130 200 0 \$1;
#X msg 175 112 0;
-#X obj 130 160 * 40;
+#X obj 130 180 * 40;
#X obj 130 90 t b a;
#X obj 388 156 t a;
-#X obj 130 252 symbol;
+#X obj 130 292 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 obj 130 245 append \$0.list-item.template x y index;
+#X obj 130 220 list append;
+#X obj 130 160 t a a;
+#X connect 0 0 5 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 1 0 17 3;
+#X connect 2 0 12 0;
+#X connect 2 1 3 1;
+#X connect 4 0 10 0;
+#X connect 5 0 6 0;
+#X connect 5 0 19 0;
+#X connect 6 0 5 1;
+#X connect 7 0 18 0;
+#X connect 8 0 5 1;
+#X connect 9 0 7 0;
+#X connect 10 0 0 0;
+#X connect 10 1 11 0;
+#X connect 11 0 12 1;
+#X connect 12 0 3 0;
#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 connect 13 1 8 0;
+#X connect 13 2 14 0;
+#X connect 14 0 15 0;
+#X connect 16 0 13 0;
+#X connect 17 0 2 0;
+#X connect 18 0 17 0;
+#X connect 19 0 9 0;
+#X connect 19 1 18 1;
+#X restore 34 175 pd make-list;
+#N canvas 884 22 450 300 \$0.list-item.template 0;
#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;
+#X obj 44 169 filledpolygon 900 510 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 52 38 struct \$0.list-item.template float x float y symbol item-name
+symbol action-name float item-color float action-color float index
+;
+#X connect 1 0 2 0;
+#X connect 4 0 1 0;
+#X restore 234 225 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 obj 68 131 get \$0.list-item.template index item-name action-name
+;
+#X obj 68 163 pack f s s;
+#X obj 67 198 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 connect 1 1 2 1;
+#X connect 1 2 2 2;
+#X connect 2 0 3 0;
+#X restore 34 208 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;
+#X obj 34 236 outlet;
+#X obj 323 52 inlet;
+#X obj 323 117 s pd-\$0.display;
+#X connect 3 0 5 0;
+#X connect 4 0 1 0;
+#X connect 6 0 7 0;
diff --git a/pal/turnstile.txt b/pal/turnstile.txt
index 7273c0f..d81cc07 100755
--- a/pal/turnstile.txt
+++ b/pal/turnstile.txt
@@ -1 +1 @@
-25
+42