aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--examples/03.persistent_properties.pd (renamed from examples/01.persistent_properties.pd)0
-rw-r--r--examples/04.moving_in_gem.pd32
-rw-r--r--examples/05.flies.pd24
-rw-r--r--examples/06.interacting_sound.pd50
-rw-r--r--examples/FM~.pd256
-rw-r--r--examples/disconnectme.pd23
-rw-r--r--examples/fly.pd39
-rw-r--r--examples/gemmover.pd35
-rw-r--r--examples/mover.pd26
-rw-r--r--examples/randomoffset.pd28
-rw-r--r--examples/randomwalk.pd43
-rw-r--r--examples/sink~.pd22
-rw-r--r--examples/valX~.pd187
-rw-r--r--examples/valY~.pd187
14 files changed, 952 insertions, 0 deletions
diff --git a/examples/01.persistent_properties.pd b/examples/03.persistent_properties.pd
index 3b84ee3..3b84ee3 100644
--- a/examples/01.persistent_properties.pd
+++ b/examples/03.persistent_properties.pd
diff --git a/examples/04.moving_in_gem.pd b/examples/04.moving_in_gem.pd
new file mode 100644
index 0000000..aefc746
--- /dev/null
+++ b/examples/04.moving_in_gem.pd
@@ -0,0 +1,32 @@
+#N canvas 0 59 600 373 10;
+#X declare -lib Gem;
+#X obj 297 266 gemmover sphere;
+#X obj 153 273 gemmover light;
+#N canvas 180 249 555 286 gemwin 0;
+#X obj 103 210 gemwin;
+#X obj 102 119 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X obj 101 141 select 1 0;
+#X msg 45 182 reset \, create \, 1 \, lighting 1;
+#X msg 169 209 destroy;
+#X obj 304 121 gemhead 1;
+#X obj 304 198 world_light;
+#X msg 382 151 0.5 0.5 0.5;
+#X obj 382 117 loadbang;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 2 1 4 0;
+#X connect 3 0 0 0;
+#X connect 4 0 0 0;
+#X connect 5 0 6 0;
+#X connect 7 0 6 1;
+#X connect 8 0 7 0;
+#X coords 0 -1 1 1 85 35 1 100 100;
+#X restore 461 33 pd gemwin;
+#X obj 155 199 gemmover teapot;
+#X text 60 14 moving Gem's Geos in an interactive way;
+#X obj 456 73 declare -lib Gem;
+#X text 80 102 change into edit-mode \, select the [gemmover] objects
+below and drag them around \; watch the Gem-window.;
+#X text 78 137 you can also add new [gemmover] objects;
+#X text 301 53 turn rendering on --->;
diff --git a/examples/05.flies.pd b/examples/05.flies.pd
new file mode 100644
index 0000000..9ca13ac
--- /dev/null
+++ b/examples/05.flies.pd
@@ -0,0 +1,24 @@
+#N canvas 0 0 776 456 10;
+#X obj 17 61 s tick;
+#X obj 17 41 metro 50;
+#X obj 17 23 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1
+;
+#X obj 557 363 fly;
+#X obj 544 255 fly;
+#X obj 385 407 fly;
+#X obj 293 332 fly;
+#X obj 460 356 fly;
+#X obj 269 244 fly;
+#X obj 291 397 fly;
+#X obj 152 265 fly;
+#X text 54 21 <-- turn me on!;
+#X text 304 31 moving objects!;
+#X text 255 68 when you turn on the toggle \, all the [fly] objects
+will start to move. once they reach the borders of the canvas \, they
+will bounce off.;
+#X text 253 132 if you resize the canvas \, you probably have to "save"
+the patch in order to make the [fly]s aware of the changed borders.
+;
+#X text 255 109 other objects will not be effected by the [fly]s.;
+#X connect 1 0 0 0;
+#X connect 2 0 1 0;
diff --git a/examples/06.interacting_sound.pd b/examples/06.interacting_sound.pd
new file mode 100644
index 0000000..4808cbc
--- /dev/null
+++ b/examples/06.interacting_sound.pd
@@ -0,0 +1,50 @@
+#N canvas 359 15 640 654 10;
+#X obj 15 88 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 1
+;
+#X obj 426 27 namecanvas \$0-canvas;
+#X obj 15 127 s tick;
+#X obj 15 107 metro 100;
+#X obj 197 324 valX~ \$0;
+#X obj 12 255 s automove;
+#X obj 12 234 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X msg 450 62 \; pd dsp 1;
+#X text 50 87 <-- turn auto-connect on;
+#X text 109 170 select a [FM~] object and move it around to see what
+it does.;
+#X text 49 237 <-- let the agents move around by themselves;
+#X text 81 202 see here for a description of the agents:;
+#N canvas 59 213 619 385 agents 0;
+#X obj 56 288 sink~;
+#X text 115 291 sends the incoming signal to the specified [dac~];
+#X text 36 108 sources:;
+#X obj 479 74 valX~;
+#X text 122 132 generates a signal which holds the horizontal position
+of the object;
+#X obj 410 68 valY~;
+#X text 122 162 generates a signal which holds the vertical position
+of the object;
+#X text 36 270 sinks:;
+#X text 32 208 effects:;
+#X obj 435 44 FM~;
+#X text 121 219 simple FM-modulator \; it's position determines the
+modulation index and the modulation frequency \; the inlet~ is the
+carrier \; if no signal is at the inlet~ \, a sine-wave with the specified
+frequency is generated as carrier.;
+#X text 24 6 available agents;
+#X text 112 59 the other arguments can be used to parameterize the
+agent.;
+#X text 110 23 the first argument of all agents MUST be "\$0" in order
+to communicate with the parent patch;
+#X restore 377 201 pd agents;
+#X obj 595 14 FM~ \$0 600;
+#X obj 271 555 sink~ \$0 1;
+#X text 109 111 when you turn "auto-connect" on \, each agent will
+try to connect itself (that is: its outlet~) with the nearest other
+agent (that is: its inlet~). Agents that are too far away cannot be
+connected too.;
+#X text 54 15 interacting sound agents;
+#X connect 0 0 3 0;
+#X connect 3 0 2 0;
+#X connect 4 0 14 0;
+#X connect 6 0 5 0;
diff --git a/examples/FM~.pd b/examples/FM~.pd
new file mode 100644
index 0000000..a49fc62
--- /dev/null
+++ b/examples/FM~.pd
@@ -0,0 +1,256 @@
+#N canvas 376 60 873 521 10;
+#X obj 314 163 parentposition;
+#X msg 314 131 bang;
+#X obj 314 189 t l l;
+#X obj 99 459 outlet~;
+#N canvas 555 32 725 619 connector 0;
+#X obj 26 46 symbol \$0-pos;
+#X obj 140 110 r \$0-pos;
+#X obj 140 248 pack;
+#X obj 26 4 inlet;
+#X obj 26 144 s \$1-getpos;
+#X obj 254 34 inlet currentposition;
+#N canvas 412 176 450 300 distance 0;
+#X obj 98 237 outlet;
+#X obj 220 59 inlet pos2;
+#X obj 89 68 inlet pos1;
+#X obj 89 93 unpack;
+#X obj 91 139 -;
+#X obj 91 159 t f f;
+#X obj 92 178 *;
+#X obj 141 141 -;
+#X obj 141 161 t f f;
+#X obj 138 179 *;
+#X obj 97 206 +;
+#X obj 221 93 unpack;
+#X connect 1 0 11 0;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 1 7 0;
+#X connect 4 0 5 0;
+#X connect 5 0 6 0;
+#X connect 5 1 6 1;
+#X connect 6 0 10 0;
+#X connect 7 0 8 0;
+#X connect 8 0 9 0;
+#X connect 8 1 9 1;
+#X connect 9 0 10 1;
+#X connect 10 0 0 0;
+#X connect 11 0 4 1;
+#X connect 11 1 7 1;
+#X restore 180 172 pd distance;
+#X obj 140 131 list split 1;
+#N canvas 62 346 450 300 getnearest 0;
+#X obj 163 112 min;
+#X obj 163 136 t f f;
+#X obj 163 206 f;
+#X obj 163 186 t b;
+#X msg 339 108 1e+09;
+#X obj 338 37 inlet reset;
+#X obj 163 245 outlet id;
+#X obj 163 91 unpack;
+#X obj 163 41 inlet <dist> <id>;
+#X obj 163 161 change;
+#X msg 344 141 set \$1;
+#X connect 0 0 1 0;
+#X connect 1 0 9 0;
+#X connect 1 1 0 1;
+#X connect 2 0 6 0;
+#X connect 3 0 2 0;
+#X connect 4 0 0 1;
+#X connect 4 0 10 0;
+#X connect 5 0 4 0;
+#X connect 7 0 0 0;
+#X connect 7 1 2 1;
+#X connect 8 0 7 0;
+#X connect 9 0 3 0;
+#X connect 10 0 9 0;
+#X restore 140 282 pd getnearest;
+#N canvas 0 0 666 372 connectme 0;
+#X obj 234 258 t a;
+#X obj 126 199 pack 0 0;
+#X obj 138 21 inlet <id>;
+#X obj 276 30 inlet <canvasid>;
+#X obj 234 288 outlet mess;
+#X msg 123 227 connect \$2 0 \$1 0;
+#X text 305 52 <myid>;
+#X connect 0 0 4 0;
+#X connect 1 0 5 0;
+#X connect 2 0 1 0;
+#X connect 3 0 1 1;
+#X connect 5 0 0 0;
+#X restore 182 456 pd connectme;
+#X obj 430 32 inlet canvasindex;
+#X obj 182 486 s \$1-canvas;
+#X obj 531 371 outlet spigot;
+#X text 436 64 <myid> <numids>;
+#X obj 338 462 disconnectme;
+#X obj 26 76 t s b b;
+#X obj 338 440 list;
+#X obj 317 125 t f l;
+#X obj 31 110 t b s b;
+#X msg 83 190 0;
+#X msg 54 189 1;
+#X obj 65 214 t f;
+#X obj 122 345 f;
+#X obj 122 366 change;
+#X obj 122 421 select -1;
+#X obj 32 24 t b b b;
+#X msg 99 26 -1;
+#X obj 140 198 swap;
+#X obj 123 392 t f b;
+#X obj 139 221 moses 150000;
+#X connect 0 0 15 0;
+#X connect 1 0 7 0;
+#X connect 2 0 8 0;
+#X connect 3 0 25 0;
+#X connect 5 0 6 1;
+#X connect 6 0 27 1;
+#X connect 7 0 27 0;
+#X connect 7 1 6 0;
+#X connect 8 0 22 1;
+#X connect 9 0 11 0;
+#X connect 10 0 17 0;
+#X connect 14 0 11 0;
+#X connect 15 0 18 0;
+#X connect 15 1 8 1;
+#X connect 16 0 14 0;
+#X connect 17 0 9 1;
+#X connect 17 1 16 1;
+#X connect 18 0 20 0;
+#X connect 18 1 4 0;
+#X connect 18 2 19 0;
+#X connect 19 0 21 0;
+#X connect 20 0 21 0;
+#X connect 21 0 12 0;
+#X connect 22 0 23 0;
+#X connect 23 0 28 0;
+#X connect 24 1 9 0;
+#X connect 25 0 22 0;
+#X connect 25 1 0 0;
+#X connect 25 2 26 0;
+#X connect 26 0 22 1;
+#X connect 27 0 29 0;
+#X connect 27 1 2 1;
+#X connect 28 0 24 0;
+#X connect 28 1 16 0;
+#X connect 29 0 2 0;
+#X restore 314 380 pd connector;
+#X obj 395 336 canvasindex;
+#X obj 395 359 pack;
+#X obj 314 302 t b l b;
+#X obj 100 389 osc~;
+#X obj 100 217 *~;
+#X obj 99 180 osc~;
+#N canvas 0 0 450 300 scale 0;
+#X obj 146 157 /;
+#X obj 177 156 /;
+#X obj 195 106 unpack;
+#X obj 136 115 unpack;
+#X obj 147 185 pack;
+#X obj 141 80 inlet;
+#X obj 191 80 inlet;
+#X obj 164 239 outlet;
+#X connect 0 0 4 0;
+#X connect 1 0 4 1;
+#X connect 2 0 0 1;
+#X connect 2 1 1 1;
+#X connect 3 0 0 0;
+#X connect 3 1 1 0;
+#X connect 4 0 7 0;
+#X connect 5 0 3 0;
+#X connect 6 0 2 0;
+#X restore 428 205 pd scale;
+#X obj 99 20 unpack;
+#X obj 99 71 * \$2;
+#X obj 99 46 * 4;
+#X obj 100 434 *~ 0.2;
+#X obj 98 120 line~;
+#X obj 99 97 pack 0 100;
+#X obj 138 215 line~;
+#X obj 139 192 pack 0 100;
+#X obj 671 81 parentposition;
+#X obj 648 226 s;
+#X obj 648 57 t b b s;
+#X obj 648 202 pack 0 0 0;
+#X obj 681 130 unpack;
+#X obj 648 104 canvasindex;
+#X obj 648 6 r \$1-getpos;
+#X obj 648 28 spigot 1;
+#X obj 343 27 r tick;
+#X obj 228 20 inlet~;
+#N canvas 0 0 450 300 default~ 0;
+#X obj 103 45 inlet~;
+#X obj 103 261 outlet~;
+#X obj 331 128 sig~ \$2;
+#X obj 128 85 env~;
+#X obj 128 119 != 0;
+#X obj 128 157 line~;
+#X obj 128 138 pack 0 50;
+#X obj 104 205 *~;
+#X obj 152 192 *~ -1;
+#X obj 152 213 +~ 1;
+#X obj 153 236 *~;
+#X connect 0 0 3 0;
+#X connect 0 0 7 0;
+#X connect 2 0 10 1;
+#X connect 3 0 4 0;
+#X connect 4 0 6 0;
+#X connect 5 0 7 1;
+#X connect 5 0 8 0;
+#X connect 6 0 5 0;
+#X connect 7 0 1 0;
+#X connect 8 0 9 0;
+#X connect 9 0 10 0;
+#X connect 10 0 1 0;
+#X restore 227 46 pd default~;
+#X obj 101 279 +~;
+#X obj 138 173 * 1000;
+#X obj 346 223 mover;
+#X obj 102 318 delwrite~ \$0-del 0;
+#X obj 101 337 delread~ \$0-del;
+#X connect 0 0 2 0;
+#X connect 0 0 11 0;
+#X connect 0 1 11 1;
+#X connect 0 1 33 1;
+#X connect 1 0 0 0;
+#X connect 2 0 7 0;
+#X connect 2 1 33 0;
+#X connect 4 0 27 1;
+#X connect 5 0 6 0;
+#X connect 5 1 6 1;
+#X connect 6 0 4 2;
+#X connect 7 0 4 0;
+#X connect 7 1 4 1;
+#X connect 7 2 5 0;
+#X connect 8 0 15 0;
+#X connect 9 0 31 0;
+#X connect 10 0 9 0;
+#X connect 11 0 12 0;
+#X connect 12 0 14 0;
+#X connect 12 1 32 0;
+#X connect 13 0 17 0;
+#X connect 14 0 13 0;
+#X connect 15 0 3 0;
+#X connect 16 0 10 0;
+#X connect 17 0 16 0;
+#X connect 18 0 9 1;
+#X connect 19 0 18 0;
+#X connect 20 0 24 0;
+#X connect 22 0 25 0;
+#X connect 22 1 20 0;
+#X connect 22 2 21 1;
+#X connect 23 0 21 0;
+#X connect 24 0 23 1;
+#X connect 24 1 23 2;
+#X connect 25 0 23 0;
+#X connect 26 0 27 0;
+#X connect 27 0 22 0;
+#X connect 28 0 1 0;
+#X connect 29 0 30 0;
+#X connect 30 0 31 1;
+#X connect 31 0 34 0;
+#X connect 32 0 19 0;
+#X connect 33 0 0 0;
+#X connect 35 0 8 0;
+#X coords 0 0 1 1 32 50 0;
diff --git a/examples/disconnectme.pd b/examples/disconnectme.pd
new file mode 100644
index 0000000..17ce4ad
--- /dev/null
+++ b/examples/disconnectme.pd
@@ -0,0 +1,23 @@
+#N canvas 0 0 450 300 10;
+#X obj 278 127 swap;
+#X obj 304 148 t b f;
+#X obj 272 208 pack;
+#X obj 260 150 until;
+#X obj 271 187 i;
+#X obj 301 188 + 1;
+#X msg 303 167 0;
+#X obj 279 96 inlet <myid> <numids>;
+#X obj 272 277 outlet;
+#X msg 272 234 disconnect \$2 0 \$1 0;
+#X connect 0 0 3 0;
+#X connect 0 1 1 0;
+#X connect 1 0 6 0;
+#X connect 1 1 2 1;
+#X connect 2 0 9 0;
+#X connect 3 0 4 0;
+#X connect 4 0 5 0;
+#X connect 4 0 2 0;
+#X connect 5 0 4 1;
+#X connect 6 0 4 1;
+#X connect 7 0 0 0;
+#X connect 9 0 8 0;
diff --git a/examples/fly.pd b/examples/fly.pd
new file mode 100644
index 0000000..b4dcf96
--- /dev/null
+++ b/examples/fly.pd
@@ -0,0 +1,39 @@
+#N canvas 267 53 673 475 10;
+#X obj 230 143 parentposition;
+#X msg 234 111 bang;
+#N canvas 0 0 478 440 mover 0;
+#X obj 230 167 unpack;
+#X obj 216 285 pack 0 0;
+#X obj 297 167 unpack;
+#X obj 269 245 randomwalk;
+#X obj 297 187 - 30;
+#X obj 337 187 - 30;
+#X obj 230 121 inlet;
+#X obj 296 122 inlet;
+#X obj 227 320 outlet;
+#X obj 230 225 randomwalk;
+#X connect 0 0 9 0;
+#X connect 0 1 3 0;
+#X connect 1 0 8 0;
+#X connect 2 0 4 0;
+#X connect 2 1 5 0;
+#X connect 3 0 1 1;
+#X connect 4 0 9 1;
+#X connect 5 0 3 1;
+#X connect 6 0 0 0;
+#X connect 7 0 2 0;
+#X connect 9 0 1 0;
+#X restore 249 202 pd mover;
+#X obj 224 169 t l l;
+#X obj 228 81 r tick;
+#X msg 294 118 \$1 100;
+#X floatatom 297 93 5 0 0 0 - - -;
+#X connect 0 0 3 0;
+#X connect 0 1 2 1;
+#X connect 1 0 0 0;
+#X connect 2 0 0 0;
+#X connect 3 1 2 0;
+#X connect 4 0 0 0;
+#X connect 5 0 0 0;
+#X connect 6 0 5 0;
+#X coords 0 0 1 1 32 50 0;
diff --git a/examples/gemmover.pd b/examples/gemmover.pd
new file mode 100644
index 0000000..8e4a636
--- /dev/null
+++ b/examples/gemmover.pd
@@ -0,0 +1,35 @@
+#N canvas 267 53 673 475 10;
+#X obj 168 144 parentposition;
+#X obj 115 90 gemhead;
+#X obj 115 116 t a b;
+#X obj 115 358 translateXYZ;
+#X obj 164 179 unpack;
+#X obj 214 179 unpack;
+#X obj 171 208 /;
+#X obj 221 208 /;
+#X obj 172 236 * 2;
+#X obj 175 261 - 1;
+#X obj 225 261 - 1;
+#X obj 176 286 * 4;
+#X obj 222 236 * 2;
+#X obj 226 285 * -4;
+#X obj 143 393 \$1;
+#X connect 0 0 4 0;
+#X connect 0 1 5 0;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 2 1 0 0;
+#X connect 3 0 14 0;
+#X connect 4 0 6 0;
+#X connect 4 1 7 0;
+#X connect 5 0 6 1;
+#X connect 5 1 7 1;
+#X connect 6 0 8 0;
+#X connect 7 0 12 0;
+#X connect 8 0 9 0;
+#X connect 9 0 11 0;
+#X connect 10 0 13 0;
+#X connect 11 0 3 1;
+#X connect 12 0 10 0;
+#X connect 13 0 3 2;
+#X coords 0 0 1 1 32 50 0;
diff --git a/examples/mover.pd b/examples/mover.pd
new file mode 100644
index 0000000..2633754
--- /dev/null
+++ b/examples/mover.pd
@@ -0,0 +1,26 @@
+#N canvas 0 0 470 427 10;
+#X obj 230 167 unpack;
+#X obj 216 285 pack 0 0;
+#X obj 230 225 randomwalk;
+#X obj 297 167 unpack;
+#X obj 269 245 randomwalk;
+#X obj 297 187 - 30;
+#X obj 337 187 - 30;
+#X obj 230 121 inlet;
+#X obj 296 122 inlet;
+#X obj 227 320 outlet;
+#X obj 215 146 spigot;
+#X obj 313 68 r automove;
+#X connect 0 0 2 0;
+#X connect 0 1 4 0;
+#X connect 1 0 9 0;
+#X connect 2 0 1 0;
+#X connect 3 0 5 0;
+#X connect 3 1 6 0;
+#X connect 4 0 1 1;
+#X connect 5 0 2 1;
+#X connect 6 0 4 1;
+#X connect 7 0 10 0;
+#X connect 8 0 3 0;
+#X connect 10 0 0 0;
+#X connect 11 0 10 1;
diff --git a/examples/randomoffset.pd b/examples/randomoffset.pd
new file mode 100644
index 0000000..518a7fb
--- /dev/null
+++ b/examples/randomoffset.pd
@@ -0,0 +1,28 @@
+#N canvas 203 115 450 300 10;
+#X obj 148 54 inlet;
+#X obj 148 253 outlet;
+#X obj 148 118 random 101;
+#X obj 148 88 b;
+#X obj 148 140 / 50;
+#X obj 148 165 - 1;
+#X obj 148 212 + 0.5;
+#X obj 148 232 i;
+#X obj 258 59 inlet;
+#X obj 315 57 loadbang;
+#X obj 315 80 f \$1;
+#X obj 251 142 t f;
+#X obj 315 103 select 0;
+#X obj 148 185 * 5;
+#X connect 0 0 3 0;
+#X connect 2 0 4 0;
+#X connect 3 0 2 0;
+#X connect 4 0 5 0;
+#X connect 5 0 13 0;
+#X connect 6 0 7 0;
+#X connect 7 0 1 0;
+#X connect 8 0 11 0;
+#X connect 9 0 10 0;
+#X connect 10 0 12 0;
+#X connect 11 0 13 1;
+#X connect 12 1 11 0;
+#X connect 13 0 6 0;
diff --git a/examples/randomwalk.pd b/examples/randomwalk.pd
new file mode 100644
index 0000000..b045b95
--- /dev/null
+++ b/examples/randomwalk.pd
@@ -0,0 +1,43 @@
+#N canvas 198 71 450 466 10;
+#X obj 171 140 randomoffset;
+#X obj 139 119 t f b;
+#X obj 139 167 +;
+#X obj 139 72 inlet;
+#X obj 310 61 inlet bound;
+#X obj 139 218 t f f;
+#X obj 246 239 t f f;
+#X obj 139 196 + 1;
+#X obj 139 266 outlet;
+#X obj 278 277 > 400;
+#X obj 246 277 < 0;
+#X obj 246 319 select 1;
+#X obj 246 300 change;
+#X obj 316 319 select 1;
+#X obj 316 300 change;
+#X msg 316 339 -1;
+#X obj 246 366 t f;
+#X floatatom 291 374 5 0 0 0 - - -;
+#X msg 246 337 1;
+#X obj 245 391 * 3;
+#X connect 0 0 2 1;
+#X connect 1 0 2 0;
+#X connect 1 1 0 0;
+#X connect 2 0 7 0;
+#X connect 3 0 1 0;
+#X connect 4 0 9 1;
+#X connect 5 0 8 0;
+#X connect 5 1 6 0;
+#X connect 6 0 10 0;
+#X connect 6 1 9 0;
+#X connect 7 0 5 0;
+#X connect 9 0 14 0;
+#X connect 10 0 12 0;
+#X connect 11 0 18 0;
+#X connect 12 0 11 0;
+#X connect 13 0 15 0;
+#X connect 14 0 13 0;
+#X connect 15 0 16 0;
+#X connect 16 0 19 0;
+#X connect 17 0 19 1;
+#X connect 18 0 16 0;
+#X connect 19 0 7 1;
diff --git a/examples/sink~.pd b/examples/sink~.pd
new file mode 100644
index 0000000..24c61f1
--- /dev/null
+++ b/examples/sink~.pd
@@ -0,0 +1,22 @@
+#N canvas 351 0 673 475 10;
+#X obj 99 60 inlet~;
+#X obj 461 121 parentposition;
+#X obj 438 266 s;
+#X obj 438 97 t b b s;
+#X obj 438 242 pack 0 0 0;
+#X obj 471 170 unpack;
+#X obj 438 144 canvasindex;
+#X obj 438 76 r \$1-getpos;
+#X obj 100 214 dac~ \$2;
+#X obj 98 331 outlet~;
+#X connect 0 0 8 0;
+#X connect 1 0 5 0;
+#X connect 3 0 6 0;
+#X connect 3 1 1 0;
+#X connect 3 2 2 1;
+#X connect 4 0 2 0;
+#X connect 5 0 4 1;
+#X connect 5 1 4 2;
+#X connect 6 0 4 0;
+#X connect 7 0 3 0;
+#X coords 0 0 1 1 32 50 0;
diff --git a/examples/valX~.pd b/examples/valX~.pd
new file mode 100644
index 0000000..b20f3ee
--- /dev/null
+++ b/examples/valX~.pd
@@ -0,0 +1,187 @@
+#N canvas 376 60 873 521 10;
+#X obj 320 163 parentposition;
+#X msg 324 131 bang;
+#X obj 314 189 t l l;
+#X obj 99 459 outlet~;
+#N canvas 555 32 725 619 connector 0;
+#X obj 26 46 symbol \$0-pos;
+#X obj 140 110 r \$0-pos;
+#X obj 140 248 pack;
+#X obj 26 4 inlet;
+#X obj 26 144 s \$1-getpos;
+#X obj 254 34 inlet currentposition;
+#N canvas 412 176 450 300 distance 0;
+#X obj 98 237 outlet;
+#X obj 220 59 inlet pos2;
+#X obj 89 68 inlet pos1;
+#X obj 89 93 unpack;
+#X obj 91 139 -;
+#X obj 91 159 t f f;
+#X obj 92 178 *;
+#X obj 141 141 -;
+#X obj 141 161 t f f;
+#X obj 138 179 *;
+#X obj 97 206 +;
+#X obj 221 93 unpack;
+#X connect 1 0 11 0;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 1 7 0;
+#X connect 4 0 5 0;
+#X connect 5 0 6 0;
+#X connect 5 1 6 1;
+#X connect 6 0 10 0;
+#X connect 7 0 8 0;
+#X connect 8 0 9 0;
+#X connect 8 1 9 1;
+#X connect 9 0 10 1;
+#X connect 10 0 0 0;
+#X connect 11 0 4 1;
+#X connect 11 1 7 1;
+#X restore 180 172 pd distance;
+#X obj 140 131 list split 1;
+#N canvas 62 346 450 300 getnearest 0;
+#X obj 163 112 min;
+#X obj 163 136 t f f;
+#X obj 163 206 f;
+#X obj 163 186 t b;
+#X msg 339 108 1e+09;
+#X obj 338 37 inlet reset;
+#X obj 163 245 outlet id;
+#X obj 163 91 unpack;
+#X obj 163 41 inlet <dist> <id>;
+#X obj 163 161 change;
+#X msg 344 141 set \$1;
+#X connect 0 0 1 0;
+#X connect 1 0 9 0;
+#X connect 1 1 0 1;
+#X connect 2 0 6 0;
+#X connect 3 0 2 0;
+#X connect 4 0 0 1;
+#X connect 4 0 10 0;
+#X connect 5 0 4 0;
+#X connect 7 0 0 0;
+#X connect 7 1 2 1;
+#X connect 8 0 7 0;
+#X connect 9 0 3 0;
+#X connect 10 0 9 0;
+#X restore 140 282 pd getnearest;
+#N canvas 0 0 666 372 connectme 0;
+#X obj 234 258 t a;
+#X obj 126 199 pack 0 0;
+#X obj 138 21 inlet <id>;
+#X obj 276 30 inlet <canvasid>;
+#X obj 234 288 outlet mess;
+#X msg 123 227 connect \$2 0 \$1 0;
+#X text 305 52 <myid>;
+#X connect 0 0 4 0;
+#X connect 1 0 5 0;
+#X connect 2 0 1 0;
+#X connect 3 0 1 1;
+#X connect 5 0 0 0;
+#X restore 182 456 pd connectme;
+#X obj 430 32 inlet canvasindex;
+#X obj 182 486 s \$1-canvas;
+#X obj 531 371 outlet spigot;
+#X text 436 64 <myid> <numids>;
+#X obj 338 462 disconnectme;
+#X obj 26 76 t s b b;
+#X obj 338 440 list;
+#X obj 317 125 t f l;
+#X obj 31 110 t b s b;
+#X msg 83 190 0;
+#X msg 54 189 1;
+#X obj 65 214 t f;
+#X obj 122 345 f;
+#X obj 122 366 change;
+#X obj 122 421 select -1;
+#X obj 32 24 t b b b;
+#X msg 99 26 -1;
+#X obj 140 198 swap;
+#X obj 123 392 t f b;
+#X obj 139 221 moses 150000;
+#X connect 0 0 15 0;
+#X connect 1 0 7 0;
+#X connect 2 0 8 0;
+#X connect 3 0 25 0;
+#X connect 5 0 6 1;
+#X connect 6 0 27 1;
+#X connect 7 0 27 0;
+#X connect 7 1 6 0;
+#X connect 8 0 22 1;
+#X connect 9 0 11 0;
+#X connect 10 0 17 0;
+#X connect 14 0 11 0;
+#X connect 15 0 18 0;
+#X connect 15 1 8 1;
+#X connect 16 0 14 0;
+#X connect 17 0 9 1;
+#X connect 17 1 16 1;
+#X connect 18 0 20 0;
+#X connect 18 1 4 0;
+#X connect 18 2 19 0;
+#X connect 19 0 21 0;
+#X connect 20 0 21 0;
+#X connect 21 0 12 0;
+#X connect 22 0 23 0;
+#X connect 23 0 28 0;
+#X connect 24 1 9 0;
+#X connect 25 0 22 0;
+#X connect 25 1 0 0;
+#X connect 25 2 26 0;
+#X connect 26 0 22 1;
+#X connect 27 0 29 0;
+#X connect 27 1 2 1;
+#X connect 28 0 24 0;
+#X connect 28 1 16 0;
+#X connect 29 0 2 0;
+#X restore 314 380 pd connector;
+#X obj 395 336 canvasindex;
+#X obj 395 359 pack;
+#X obj 314 302 t b l b;
+#X obj 671 81 parentposition;
+#X obj 648 226 s;
+#X obj 648 57 t b b s;
+#X obj 648 202 pack 0 0 0;
+#X obj 681 130 unpack;
+#X obj 648 104 canvasindex;
+#X obj 648 6 r \$1-getpos;
+#X obj 648 28 spigot 1;
+#X obj 343 27 r tick;
+#X obj 229 17 inlet~;
+#X obj 127 217 unpack;
+#X obj 100 353 line~;
+#X obj 100 323 pack 0 100;
+#X obj 346 212 mover;
+#X obj 100 398 delwrite~ \$0-del 0;
+#X obj 100 417 delread~ \$0-del;
+#X connect 0 0 2 0;
+#X connect 0 0 18 0;
+#X connect 0 1 21 1;
+#X connect 1 0 0 0;
+#X connect 2 0 7 0;
+#X connect 2 1 21 0;
+#X connect 4 0 15 1;
+#X connect 5 0 6 0;
+#X connect 5 1 6 1;
+#X connect 6 0 4 2;
+#X connect 7 0 4 0;
+#X connect 7 1 4 1;
+#X connect 7 2 5 0;
+#X connect 8 0 12 0;
+#X connect 10 0 13 0;
+#X connect 10 1 8 0;
+#X connect 10 2 9 1;
+#X connect 11 0 9 0;
+#X connect 12 0 11 1;
+#X connect 12 1 11 2;
+#X connect 13 0 11 0;
+#X connect 14 0 15 0;
+#X connect 15 0 10 0;
+#X connect 16 0 1 0;
+#X connect 18 0 20 0;
+#X connect 19 0 22 0;
+#X connect 20 0 19 0;
+#X connect 21 0 0 0;
+#X connect 23 0 3 0;
+#X coords 0 0 1 1 32 50 0;
diff --git a/examples/valY~.pd b/examples/valY~.pd
new file mode 100644
index 0000000..e16b9f8
--- /dev/null
+++ b/examples/valY~.pd
@@ -0,0 +1,187 @@
+#N canvas 376 60 873 521 10;
+#X obj 320 163 parentposition;
+#X msg 324 131 bang;
+#X obj 314 189 t l l;
+#X obj 99 459 outlet~;
+#N canvas 555 32 725 619 connector 0;
+#X obj 26 46 symbol \$0-pos;
+#X obj 140 110 r \$0-pos;
+#X obj 140 248 pack;
+#X obj 26 4 inlet;
+#X obj 26 144 s \$1-getpos;
+#X obj 254 34 inlet currentposition;
+#N canvas 412 176 450 300 distance 0;
+#X obj 98 237 outlet;
+#X obj 220 59 inlet pos2;
+#X obj 89 68 inlet pos1;
+#X obj 89 93 unpack;
+#X obj 91 139 -;
+#X obj 91 159 t f f;
+#X obj 92 178 *;
+#X obj 141 141 -;
+#X obj 141 161 t f f;
+#X obj 138 179 *;
+#X obj 97 206 +;
+#X obj 221 93 unpack;
+#X connect 1 0 11 0;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 1 7 0;
+#X connect 4 0 5 0;
+#X connect 5 0 6 0;
+#X connect 5 1 6 1;
+#X connect 6 0 10 0;
+#X connect 7 0 8 0;
+#X connect 8 0 9 0;
+#X connect 8 1 9 1;
+#X connect 9 0 10 1;
+#X connect 10 0 0 0;
+#X connect 11 0 4 1;
+#X connect 11 1 7 1;
+#X restore 180 172 pd distance;
+#X obj 140 131 list split 1;
+#N canvas 62 346 450 300 getnearest 0;
+#X obj 163 112 min;
+#X obj 163 136 t f f;
+#X obj 163 206 f;
+#X obj 163 186 t b;
+#X msg 339 108 1e+09;
+#X obj 338 37 inlet reset;
+#X obj 163 245 outlet id;
+#X obj 163 91 unpack;
+#X obj 163 41 inlet <dist> <id>;
+#X obj 163 161 change;
+#X msg 344 141 set \$1;
+#X connect 0 0 1 0;
+#X connect 1 0 9 0;
+#X connect 1 1 0 1;
+#X connect 2 0 6 0;
+#X connect 3 0 2 0;
+#X connect 4 0 0 1;
+#X connect 4 0 10 0;
+#X connect 5 0 4 0;
+#X connect 7 0 0 0;
+#X connect 7 1 2 1;
+#X connect 8 0 7 0;
+#X connect 9 0 3 0;
+#X connect 10 0 9 0;
+#X restore 140 282 pd getnearest;
+#N canvas 0 0 666 372 connectme 0;
+#X obj 234 258 t a;
+#X obj 126 199 pack 0 0;
+#X obj 138 21 inlet <id>;
+#X obj 276 30 inlet <canvasid>;
+#X obj 234 288 outlet mess;
+#X msg 123 227 connect \$2 0 \$1 0;
+#X text 305 52 <myid>;
+#X connect 0 0 4 0;
+#X connect 1 0 5 0;
+#X connect 2 0 1 0;
+#X connect 3 0 1 1;
+#X connect 5 0 0 0;
+#X restore 182 456 pd connectme;
+#X obj 430 32 inlet canvasindex;
+#X obj 182 486 s \$1-canvas;
+#X obj 531 371 outlet spigot;
+#X text 436 64 <myid> <numids>;
+#X obj 338 462 disconnectme;
+#X obj 26 76 t s b b;
+#X obj 338 440 list;
+#X obj 317 125 t f l;
+#X obj 31 110 t b s b;
+#X msg 83 190 0;
+#X msg 54 189 1;
+#X obj 65 214 t f;
+#X obj 122 345 f;
+#X obj 122 366 change;
+#X obj 122 421 select -1;
+#X obj 32 24 t b b b;
+#X msg 99 26 -1;
+#X obj 140 198 swap;
+#X obj 123 392 t f b;
+#X obj 139 221 moses 150000;
+#X connect 0 0 15 0;
+#X connect 1 0 7 0;
+#X connect 2 0 8 0;
+#X connect 3 0 25 0;
+#X connect 5 0 6 1;
+#X connect 6 0 27 1;
+#X connect 7 0 27 0;
+#X connect 7 1 6 0;
+#X connect 8 0 22 1;
+#X connect 9 0 11 0;
+#X connect 10 0 17 0;
+#X connect 14 0 11 0;
+#X connect 15 0 18 0;
+#X connect 15 1 8 1;
+#X connect 16 0 14 0;
+#X connect 17 0 9 1;
+#X connect 17 1 16 1;
+#X connect 18 0 20 0;
+#X connect 18 1 4 0;
+#X connect 18 2 19 0;
+#X connect 19 0 21 0;
+#X connect 20 0 21 0;
+#X connect 21 0 12 0;
+#X connect 22 0 23 0;
+#X connect 23 0 28 0;
+#X connect 24 1 9 0;
+#X connect 25 0 22 0;
+#X connect 25 1 0 0;
+#X connect 25 2 26 0;
+#X connect 26 0 22 1;
+#X connect 27 0 29 0;
+#X connect 27 1 2 1;
+#X connect 28 0 24 0;
+#X connect 28 1 16 0;
+#X connect 29 0 2 0;
+#X restore 314 380 pd connector;
+#X obj 395 336 canvasindex;
+#X obj 395 359 pack;
+#X obj 314 302 t b l b;
+#X obj 671 81 parentposition;
+#X obj 648 226 s;
+#X obj 648 57 t b b s;
+#X obj 648 202 pack 0 0 0;
+#X obj 681 130 unpack;
+#X obj 648 104 canvasindex;
+#X obj 648 6 r \$1-getpos;
+#X obj 648 28 spigot 1;
+#X obj 343 27 r tick;
+#X obj 229 17 inlet~;
+#X obj 127 217 unpack;
+#X obj 100 373 line~;
+#X obj 100 343 pack 0 100;
+#X obj 346 222 mover;
+#X obj 99 418 delwrite~ \$0-del 0;
+#X obj 99 437 delread~ \$0-del;
+#X connect 0 0 2 0;
+#X connect 0 0 18 0;
+#X connect 0 1 21 1;
+#X connect 1 0 0 0;
+#X connect 2 0 7 0;
+#X connect 2 1 21 0;
+#X connect 4 0 15 1;
+#X connect 5 0 6 0;
+#X connect 5 1 6 1;
+#X connect 6 0 4 2;
+#X connect 7 0 4 0;
+#X connect 7 1 4 1;
+#X connect 7 2 5 0;
+#X connect 8 0 12 0;
+#X connect 10 0 13 0;
+#X connect 10 1 8 0;
+#X connect 10 2 9 1;
+#X connect 11 0 9 0;
+#X connect 12 0 11 1;
+#X connect 12 1 11 2;
+#X connect 13 0 11 0;
+#X connect 14 0 15 0;
+#X connect 15 0 10 0;
+#X connect 16 0 1 0;
+#X connect 18 1 20 0;
+#X connect 19 0 22 0;
+#X connect 20 0 19 0;
+#X connect 21 0 0 0;
+#X connect 23 0 3 0;
+#X coords 0 0 1 1 32 50 0;