aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrank Barknecht <fbar@users.sourceforge.net>2005-05-11 09:09:47 +0000
committerFrank Barknecht <fbar@users.sourceforge.net>2005-05-11 09:09:47 +0000
commit4320ffda8665dea49e81aa79bd414a1885bee6ed (patch)
treef5a22577831f2ed34287dc4195b26cf4382d6bda
parentd1250118bee96de3ce0395ce672c49d4187e0577 (diff)
Support for msd3D added.
svn path=/trunk/externals/nusmuk/; revision=2943
-rw-r--r--msd2D/editor/README14
-rw-r--r--msd2D/editor/gem_links.pd46
-rw-r--r--msd2D/editor/gem_masses.pd41
-rw-r--r--msd2D/editor/link-set.pd46
-rw-r--r--msd2D/editor/mass-set.pd8
-rw-r--r--msd2D/editor/msd-editor.pd (renamed from msd2D/editor/msd2d-editor.pd)389
-rw-r--r--msd2D/editor/msd_append.pd40
7 files changed, 463 insertions, 121 deletions
diff --git a/msd2D/editor/README b/msd2D/editor/README
index 12e4ad0..e6253db 100644
--- a/msd2D/editor/README
+++ b/msd2D/editor/README
@@ -1,10 +1,14 @@
-msd2d-editor
+msd-editor
------------
patched by Frank Barknecht <fbar@footils.org> with a big hand from Nicolas
-Montgermont <montgermont@la-kitchen.fr> who wrote the msd2D external required
-for using this patch. GEM is used to provide an alternative visualization, but
-it is not required for the patch to work.
+Montgermont <montgermont@la-kitchen.fr> who wrote the msd2D and msd3D externals
+required for using this patch. GEM is used to provide an alternative
+visualization, but it is not required for the patch to work.
+
+If you want to export the messages to msd2d, that are created, you also need a
+[prepend] external, preferably the one from the Cyclone library.
+
Thanks Nicolas for a great external colletion.
-msd2d-editor.pd is the patch to open, further documentation is inside.
+msd-editor.pd is the patch to open, further documentation is inside.
diff --git a/msd2D/editor/gem_links.pd b/msd2D/editor/gem_links.pd
index 99a138c..6c9f1b0 100644
--- a/msd2D/editor/gem_links.pd
+++ b/msd2D/editor/gem_links.pd
@@ -6,13 +6,38 @@
#X obj 147 166 t b f;
#X obj 156 432 curve 2;
#X obj 178 210 pack 0 0 0;
-#X obj 255 189 pack 0 0 0;
-#X obj 141 62 unpack 0 0 0 0 0;
-#X obj 248 322 inlet;
+#X obj 269 213 pack 0 0 0;
+#X obj 141 97 unpack 0 0 0 0 0;
+#X obj 282 324 inlet;
#X obj 109 364 spigot;
-#X msg 247 300 1;
-#X obj 247 275 loadbang;
-#X connect 0 0 8 0;
+#X msg 281 302 1;
+#X obj 281 277 loadbang;
+#N canvas 0 0 450 300 demux 0;
+#X obj 91 69 inlet;
+#X obj 255 73 inlet;
+#X obj 223 106 select 0;
+#X obj 73 213 spigot 1;
+#X obj 165 219 spigot 0;
+#X obj 141 188 unpack 1 0;
+#X obj 96 255 outlet;
+#X obj 173 257 outlet;
+#X msg 174 140 1 0;
+#X msg 216 140 0 1;
+#X connect 0 0 3 0;
+#X connect 0 0 4 0;
+#X connect 1 0 2 0;
+#X connect 2 0 8 0;
+#X connect 2 1 9 0;
+#X connect 3 0 6 0;
+#X connect 4 0 7 0;
+#X connect 5 0 3 1;
+#X connect 5 1 4 1;
+#X connect 8 0 5 0;
+#X connect 9 0 5 0;
+#X restore 141 64 pd demux;
+#X obj 192 37 r MSD-TYPE;
+#X obj 280 97 unpack 0 0 0 0 0 0 0;
+#X connect 0 0 13 0;
#X connect 1 0 3 1;
#X connect 2 0 5 0;
#X connect 3 0 10 0;
@@ -28,3 +53,12 @@
#X connect 10 0 2 0;
#X connect 11 0 10 1;
#X connect 12 0 11 0;
+#X connect 13 0 8 0;
+#X connect 13 1 15 0;
+#X connect 14 0 13 1;
+#X connect 15 1 4 0;
+#X connect 15 2 6 1;
+#X connect 15 3 6 2;
+#X connect 15 4 7 0;
+#X connect 15 5 7 1;
+#X connect 15 6 7 2;
diff --git a/msd2D/editor/gem_masses.pd b/msd2D/editor/gem_masses.pd
index bd0c3d3..094be63 100644
--- a/msd2D/editor/gem_masses.pd
+++ b/msd2D/editor/gem_masses.pd
@@ -7,13 +7,38 @@
#X obj 166 162 t b f;
#X msg 47 325 draw line;
#X obj 48 300 loadbang;
-#X obj 141 61 unpack 0 0 0;
+#X obj 141 104 unpack 0 0 0;
#X obj 150 453 circle 0.05;
-#X obj 240 311 inlet;
+#X obj 338 297 inlet;
#X obj 150 362 spigot;
-#X msg 239 289 1;
-#X obj 239 264 loadbang;
-#X connect 0 0 8 0;
+#X msg 337 275 1;
+#X obj 337 250 loadbang;
+#N canvas 0 0 450 300 demux 0;
+#X obj 91 69 inlet;
+#X obj 255 73 inlet;
+#X obj 223 106 select 0;
+#X obj 73 213 spigot 1;
+#X obj 165 219 spigot 0;
+#X obj 141 188 unpack 1 0;
+#X obj 96 255 outlet;
+#X obj 173 257 outlet;
+#X msg 174 140 1 0;
+#X msg 216 140 0 1;
+#X connect 0 0 3 0;
+#X connect 0 0 4 0;
+#X connect 1 0 2 0;
+#X connect 2 0 8 0;
+#X connect 2 1 9 0;
+#X connect 3 0 6 0;
+#X connect 4 0 7 0;
+#X connect 5 0 3 1;
+#X connect 5 1 4 1;
+#X connect 8 0 5 0;
+#X connect 9 0 5 0;
+#X restore 141 71 pd demux;
+#X obj 192 44 r MSD-TYPE;
+#X obj 238 104 unpack 0 0 0 0;
+#X connect 0 0 14 0;
#X connect 1 0 9 0;
#X connect 2 0 4 1;
#X connect 3 0 1 0;
@@ -28,3 +53,9 @@
#X connect 11 0 3 0;
#X connect 12 0 11 1;
#X connect 13 0 12 0;
+#X connect 14 0 8 0;
+#X connect 14 1 16 0;
+#X connect 15 0 14 1;
+#X connect 16 1 5 0;
+#X connect 16 2 1 2;
+#X connect 16 3 1 3;
diff --git a/msd2D/editor/link-set.pd b/msd2D/editor/link-set.pd
index 3e9646f..ec9edda 100644
--- a/msd2D/editor/link-set.pd
+++ b/msd2D/editor/link-set.pd
@@ -1,4 +1,4 @@
-#N canvas 511 393 574 502 10;
+#N canvas 449 81 747 726 10;
#X obj 251 159 pack 0 p;
#X obj 251 187 route \$1;
#X obj 251 100 t p p;
@@ -12,11 +12,38 @@
#X text 81 137 lid \, x1 \, y1 \, x2 \, y2;
#X obj 251 131 get liaison lid;
#X text 261 220 Select pointer with lid matching \$1;
-#X obj 90 349 set liaison x1 y1 x2 y2;
+#X obj 90 526 set liaison x1 y1 x2 y2;
#X obj 251 73 r myliapointer;
-#X obj 90 292 unpack 0 0 0 0;
-#X obj 92 320 scale-msd2ds;
-#X obj 183 319 scale-msd2ds;
+#X obj 90 337 unpack 0 0 0 0;
+#X obj 90 497 scale-msd2ds;
+#X obj 181 496 scale-msd2ds;
+#N canvas 0 0 450 300 demux 0;
+#X obj 91 69 inlet;
+#X obj 255 73 inlet;
+#X obj 223 106 select 0;
+#X obj 73 213 spigot 1;
+#X obj 165 219 spigot 0;
+#X obj 141 188 unpack 1 0;
+#X obj 96 255 outlet;
+#X obj 173 257 outlet;
+#X msg 174 140 1 0;
+#X msg 216 140 0 1;
+#X connect 0 0 3 0;
+#X connect 0 0 4 0;
+#X connect 1 0 2 0;
+#X connect 2 0 8 0;
+#X connect 2 1 9 0;
+#X connect 3 0 6 0;
+#X connect 4 0 7 0;
+#X connect 5 0 3 1;
+#X connect 5 1 4 1;
+#X connect 8 0 5 0;
+#X connect 9 0 5 0;
+#X restore 90 292 pd demux;
+#X obj 272 340 unpack 0 0 0 0 0 0;
+#X text 198 336 msd2D;
+#X text 410 338 msd3D: skip Z;
+#X obj 157 255 r MSD-TYPE;
#X connect 0 0 1 0;
#X connect 1 0 5 0;
#X connect 2 0 10 0;
@@ -26,7 +53,7 @@
#X connect 4 0 7 0;
#X connect 5 0 4 0;
#X connect 5 1 12 4;
-#X connect 6 0 14 0;
+#X connect 6 0 17 0;
#X connect 8 0 3 0;
#X connect 10 0 0 0;
#X connect 13 0 2 0;
@@ -38,3 +65,10 @@
#X connect 15 1 12 1;
#X connect 16 0 12 2;
#X connect 16 1 12 3;
+#X connect 17 0 14 0;
+#X connect 17 1 18 0;
+#X connect 18 0 15 0;
+#X connect 18 1 15 1;
+#X connect 18 3 16 0;
+#X connect 18 4 16 1;
+#X connect 21 0 17 1;
diff --git a/msd2D/editor/mass-set.pd b/msd2D/editor/mass-set.pd
index 1f036b3..1c53605 100644
--- a/msd2D/editor/mass-set.pd
+++ b/msd2D/editor/mass-set.pd
@@ -1,7 +1,7 @@
#N canvas 471 153 686 707 10;
#X obj 251 159 pack 0 p;
#X obj 251 187 route \$1;
-#X obj 130 347 set mass x y;
+#X obj 118 383 set mass x y;
#X obj 251 100 t p p;
#X obj 251 131 get mass mid;
#X text 261 220 Select pointer with mid matching \$1;
@@ -29,8 +29,9 @@
;
#X msg 307 536 posX \$2 \$3;
#X msg 327 562 posY \$2 \$4;
-#X obj 51 319 scale-msd2ds;
+#X obj 39 355 scale-msd2ds;
#X obj 337 422 scale-ds2msd;
+#X msg 95 323 \$1 \$2;
#X connect 0 0 1 0;
#X connect 1 0 8 0;
#X connect 3 0 4 0;
@@ -44,7 +45,7 @@
#X connect 8 1 2 2;
#X connect 8 1 14 1;
#X connect 9 0 6 0;
-#X connect 11 0 27 2;
+#X connect 11 0 29 0;
#X connect 13 0 3 0;
#X connect 14 0 22 0;
#X connect 16 1 11 0;
@@ -64,3 +65,4 @@
#X connect 27 2 2 0;
#X connect 28 0 21 2;
#X connect 28 1 21 3;
+#X connect 29 0 27 2;
diff --git a/msd2D/editor/msd2d-editor.pd b/msd2D/editor/msd-editor.pd
index 72b07f0..2925052 100644
--- a/msd2D/editor/msd2d-editor.pd
+++ b/msd2D/editor/msd-editor.pd
@@ -1,5 +1,5 @@
-#N canvas 191 137 866 562 10;
-#N canvas 565 411 1222 870 data 0;
+#N canvas 33 84 866 562 10;
+#N canvas 0 64 1222 870 data 0;
#X restore 719 42 pd data;
#X obj 24 523 structures;
#X obj 30 314 bng 24 250 50 0 empty \$0-generate generate 0 -6 0 8
@@ -361,12 +361,16 @@ from the #define in msd sources.;
#X obj 605 174 s MSD-xmax;
#X obj 469 157 s MSD-ymin;
#X obj 605 198 s MSD-ymax;
-#X msg 339 306 Xmin \$1 \, Xmax \$2 \, Ymin \$1 \, Ymax \$2;
#X obj 339 207 t b b;
#X obj 339 344 s \$0-msd;
#X obj 339 280 pack 0 0;
#X obj 339 239 f -3;
#X obj 376 245 f 3;
+#X obj 745 82 f 0;
+#X obj 761 54 r MSD-TYPE;
+#X obj 746 109 s MSD-TYPE;
+#X msg 339 306 Xmin \$1 \, Xmax \$2 \, Ymin \$1 \, Ymax \$2 \, Zmin
+\$1 \, Zmax \$2;
#X connect 0 0 6 0;
#X connect 1 0 7 0;
#X connect 2 0 8 0;
@@ -377,30 +381,58 @@ from the #define in msd sources.;
#X connect 7 0 14 0;
#X connect 8 0 16 0;
#X connect 8 0 18 0;
-#X connect 8 0 24 1;
+#X connect 8 0 23 1;
#X connect 9 0 17 0;
#X connect 9 0 19 0;
-#X connect 9 0 25 1;
+#X connect 9 0 24 1;
#X connect 10 0 11 0;
-#X connect 11 0 21 0;
+#X connect 11 0 20 0;
#X connect 11 1 6 0;
#X connect 11 1 7 0;
#X connect 11 1 8 0;
#X connect 11 1 9 0;
-#X connect 20 0 22 0;
-#X connect 21 0 24 0;
-#X connect 21 1 25 0;
-#X connect 23 0 20 0;
-#X connect 24 0 23 0;
-#X connect 25 0 23 1;
+#X connect 11 1 25 0;
+#X connect 20 0 23 0;
+#X connect 20 1 24 0;
+#X connect 22 0 28 0;
+#X connect 23 0 22 0;
+#X connect 24 0 22 1;
+#X connect 25 0 27 0;
+#X connect 26 0 25 1;
+#X connect 28 0 21 0;
#X restore 112 468 pd set-min-max;
#X text 283 344 <== messages coming from the data structure setters
;
#X obj 112 399 del 200;
#X obj 172 399 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
+#N canvas 0 0 450 300 demux 0;
+#X obj 91 69 inlet;
+#X obj 255 73 inlet;
+#X obj 223 106 select 0;
+#X obj 73 213 spigot 1;
+#X obj 165 219 spigot 0;
+#X obj 141 188 unpack 1 0;
+#X obj 96 255 outlet;
+#X obj 173 257 outlet;
+#X msg 174 140 1 0;
+#X msg 216 140 0 1;
+#X connect 0 0 3 0;
+#X connect 0 0 4 0;
+#X connect 1 0 2 0;
+#X connect 2 0 8 0;
+#X connect 2 1 9 0;
+#X connect 3 0 6 0;
+#X connect 4 0 7 0;
+#X connect 5 0 3 1;
+#X connect 5 1 4 1;
+#X connect 8 0 5 0;
+#X connect 9 0 5 0;
+#X restore 189 246 pd demux;
+#X obj 240 219 r MSD-TYPE;
+#X msg 341 275 mass id \$4 \$5 \$1 \$2 0;
#X connect 0 0 8 0;
-#X connect 0 1 9 0;
+#X connect 0 1 14 0;
#X connect 2 0 3 0;
#X connect 4 0 12 0;
#X connect 4 1 0 0;
@@ -412,21 +444,24 @@ from the #define in msd sources.;
#X connect 9 0 1 0;
#X connect 12 0 5 0;
#X connect 13 0 5 0;
+#X connect 14 0 9 0;
+#X connect 14 1 16 0;
+#X connect 15 0 14 1;
+#X connect 16 0 1 0;
#X restore 30 343 pd generator;
#N canvas 0 0 718 819 activate 0;
-#X obj 233 307 msd2D;
#X obj 233 238 r \$0-msd;
-#X obj 233 449 gem_masses;
+#X obj 233 453 gem_masses;
#X obj 313 445 gem_links;
#X msg 167 216 bang \, get massesPos \, get linksPos;
#X obj 177 125 gemhead;
#X obj 233 396 route massesPos linksPos;
-#X obj 99 496 gemwin;
-#X msg 99 469 0 \, destroy;
+#X obj 97 670 gemwin;
+#X msg 97 643 0 \, destroy;
#X obj 249 354 s \$0-msd-out;
-#X obj 99 423 select 1 0;
-#X obj 99 395 tgl 24 0 empty empty GEM 0 -6 0 8 -262144 -1 -1 0 1;
-#X obj 279 324 s \$0-msd-attr;
+#X obj 97 597 select 1 0;
+#X obj 97 569 tgl 24 0 empty empty GEM 0 -6 0 8 -262144 -1 -1 0 1;
+#X obj 275 330 s \$0-msd-attr;
#X obj 211 541 s masspositions;
#X obj 313 515 s linkspositions;
#X obj 167 69 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
@@ -437,22 +472,21 @@ from the #define in msd sources.;
#X obj 167 149 t b b;
#X obj 197 193 s pollpos;
#X obj 167 44 inlet data_only;
-#X obj 41 314 inlet GEM;
+#X obj 39 488 inlet GEM;
#X obj 341 40 inlet speed;
-#X obj 22 376 select 1;
-#X msg 22 401 0;
-#X obj 40 338 t f f;
+#X obj 20 550 select 1;
+#X msg 20 575 0;
+#X obj 38 512 t f f;
#X obj 54 90 select 1;
#X msg 54 115 0;
#X obj 72 52 t f f;
-#X msg 124 585 set \$1;
-#X msg 16 465 set \$1;
-#X obj 130 611 outlet;
-#X obj 17 491 outlet;
+#X msg 135 283 set \$1;
+#X msg 14 639 set \$1;
+#X obj 141 309 outlet;
+#X obj 15 665 outlet;
#X obj 167 92 metro 20;
#X obj 413 395 r \$0-gem-masses-on;
#X obj 413 417 r \$0-gem-links-on;
-#X msg 99 445 reset \, create \, 1;
#X obj 197 174 spigot 1;
#X obj 248 150 r \$0-poll-ds;
#X obj 346 469 r \$0-set-ds;
@@ -461,61 +495,156 @@ from the #define in msd sources.;
#X obj 297 238 r \$0-save-msd;
#X obj 257 286 s \$0-msd2save;
#X obj 255 261 spigot 0;
-#X connect 0 0 6 0;
+#N canvas 0 0 788 568 msd 0;
+#N canvas 0 0 450 300 demux 0;
+#X obj 91 69 inlet;
+#X obj 255 73 inlet;
+#X obj 223 106 select 0;
+#X obj 73 213 spigot 1;
+#X obj 165 219 spigot 0;
+#X obj 141 188 unpack 1 0;
+#X obj 96 255 outlet;
+#X obj 173 257 outlet;
+#X msg 174 140 1 0;
+#X msg 216 140 0 1;
+#X connect 0 0 3 0;
+#X connect 0 0 4 0;
+#X connect 1 0 2 0;
+#X connect 2 0 8 0;
+#X connect 2 1 9 0;
+#X connect 3 0 6 0;
+#X connect 4 0 7 0;
+#X connect 5 0 3 1;
+#X connect 5 1 4 1;
+#X connect 8 0 5 0;
+#X connect 9 0 5 0;
+#X restore 195 170 pd demux;
+#X obj 262 133 r MSD-TYPE;
+#N canvas 0 0 450 300 demux 0;
+#X obj 91 69 inlet;
+#X obj 255 73 inlet;
+#X obj 223 106 select 0;
+#X obj 73 213 spigot 1;
+#X obj 165 219 spigot 0;
+#X obj 141 188 unpack 1 0;
+#X obj 96 255 outlet;
+#X obj 173 257 outlet;
+#X msg 174 140 1 0;
+#X msg 216 140 0 1;
+#X connect 0 0 3 0;
+#X connect 0 0 4 0;
+#X connect 1 0 2 0;
+#X connect 2 0 8 0;
+#X connect 2 1 9 0;
+#X connect 3 0 6 0;
+#X connect 4 0 7 0;
+#X connect 5 0 3 1;
+#X connect 5 1 4 1;
+#X connect 8 0 5 0;
+#X connect 9 0 5 0;
+#X restore 198 305 pd demux;
+#X obj 261 282 r MSD-TYPE;
+#X obj 195 136 inlet;
+#X obj 198 366 outlet;
+#N canvas 0 0 450 300 demux 0;
+#X obj 91 69 inlet;
+#X obj 255 73 inlet;
+#X obj 223 106 select 0;
+#X obj 73 213 spigot 1;
+#X obj 165 219 spigot 0;
+#X obj 141 188 unpack 1 0;
+#X obj 96 255 outlet;
+#X obj 173 257 outlet;
+#X msg 174 140 1 0;
+#X msg 216 140 0 1;
+#X connect 0 0 3 0;
+#X connect 0 0 4 0;
+#X connect 1 0 2 0;
+#X connect 2 0 8 0;
+#X connect 2 1 9 0;
+#X connect 3 0 6 0;
+#X connect 4 0 7 0;
+#X connect 5 0 3 1;
+#X connect 5 1 4 1;
+#X connect 8 0 5 0;
+#X connect 9 0 5 0;
+#X restore 377 303 pd demux;
+#X obj 442 280 r MSD-TYPE;
+#X obj 377 371 outlet;
+#X obj 200 233 msd2D;
+#X obj 350 233 msd3D;
#X connect 0 0 9 0;
-#X connect 0 1 12 0;
-#X connect 1 0 0 0;
-#X connect 1 0 45 0;
+#X connect 0 1 10 0;
+#X connect 1 0 0 1;
+#X connect 2 0 5 0;
+#X connect 2 1 5 0;
+#X connect 3 0 2 1;
#X connect 4 0 0 0;
-#X connect 5 0 19 0;
-#X connect 6 0 16 0;
-#X connect 6 0 41 0;
-#X connect 6 1 17 0;
-#X connect 6 1 42 0;
-#X connect 8 0 7 0;
-#X connect 10 0 37 0;
-#X connect 10 1 8 0;
-#X connect 11 0 10 0;
-#X connect 11 0 16 1;
-#X connect 11 0 17 1;
-#X connect 11 0 31 0;
-#X connect 15 0 30 0;
-#X connect 15 0 34 0;
+#X connect 6 0 8 0;
+#X connect 6 1 8 0;
+#X connect 7 0 6 1;
+#X connect 9 0 2 0;
+#X connect 9 1 6 0;
+#X connect 10 0 2 0;
+#X connect 10 1 6 0;
+#X restore 233 308 pd msd;
+#X msg 97 619 reset \, lighting 1 \, create \, 1;
+#X obj 357 676 gemhead;
+#X obj 357 699 world_light;
+#X connect 0 0 43 0;
+#X connect 0 0 44 0;
+#X connect 3 0 44 0;
+#X connect 4 0 18 0;
+#X connect 5 0 15 0;
+#X connect 5 0 39 0;
+#X connect 5 1 16 0;
+#X connect 5 1 40 0;
+#X connect 7 0 6 0;
+#X connect 9 0 45 0;
+#X connect 9 1 7 0;
+#X connect 10 0 9 0;
+#X connect 10 0 15 1;
+#X connect 10 0 16 1;
+#X connect 10 0 30 0;
+#X connect 14 0 29 0;
+#X connect 14 0 33 0;
+#X connect 15 0 1 0;
#X connect 16 0 2 0;
-#X connect 17 0 3 0;
-#X connect 19 0 4 0;
-#X connect 19 1 38 0;
-#X connect 21 0 29 0;
-#X connect 22 0 26 0;
-#X connect 23 0 34 1;
-#X connect 24 0 25 0;
-#X connect 25 0 15 0;
-#X connect 26 0 11 0;
-#X connect 26 1 24 0;
-#X connect 27 0 28 0;
-#X connect 28 0 11 0;
-#X connect 29 0 15 0;
-#X connect 29 1 27 0;
+#X connect 18 0 3 0;
+#X connect 18 1 36 0;
+#X connect 20 0 28 0;
+#X connect 21 0 25 0;
+#X connect 22 0 33 1;
+#X connect 23 0 24 0;
+#X connect 24 0 14 0;
+#X connect 25 0 10 0;
+#X connect 25 1 23 0;
+#X connect 26 0 27 0;
+#X connect 27 0 10 0;
+#X connect 28 0 14 0;
+#X connect 28 1 26 0;
+#X connect 29 0 31 0;
#X connect 30 0 32 0;
-#X connect 31 0 33 0;
-#X connect 34 0 19 0;
+#X connect 33 0 18 0;
+#X connect 34 0 1 1;
#X connect 35 0 2 1;
-#X connect 36 0 3 1;
-#X connect 37 0 7 0;
-#X connect 38 0 20 0;
-#X connect 39 0 38 1;
-#X connect 40 0 42 1;
-#X connect 40 0 41 1;
-#X connect 41 0 13 0;
-#X connect 42 0 14 0;
-#X connect 43 0 45 1;
-#X connect 45 0 44 0;
+#X connect 36 0 19 0;
+#X connect 37 0 36 1;
+#X connect 38 0 40 1;
+#X connect 38 0 39 1;
+#X connect 39 0 12 0;
+#X connect 40 0 13 0;
+#X connect 41 0 43 1;
+#X connect 43 0 42 0;
+#X connect 44 0 8 0;
+#X connect 44 0 5 0;
+#X connect 44 1 11 0;
+#X connect 45 0 6 0;
+#X connect 46 0 47 0;
#X restore 29 420 pd activate;
#X obj 29 384 tgl 24 0 empty empty GEM 0 -6 0 8 -233017 -1 -1 0 1;
#X obj 65 384 tgl 24 0 empty empty Graphical_Datastructures 0 -6 0
8 -1 -262144 -1 0 1;
-#X text 243 312 Press "generate" to generate messages to msd2D and
-create the physical model inside.;
#N canvas 334 329 751 433 ignore 0;
#X obj 46 264 print ToMSD;
#X obj 46 234 spigot;
@@ -553,7 +682,7 @@ wrong.;
#X floatatom 585 178 5 0 0 0 - - -;
#X obj 280 365 spigot;
#X obj 317 312 tgl 15 0 empty empty global-receive 0 -6 0 8 -262144
--1 -1 0 1;
+-1 -1 1 1;
#X obj 280 338 r MSD-IN-GLOBAL;
#X obj 280 393 s \$0-msd;
#X obj 630 201 metro 40;
@@ -571,10 +700,75 @@ wrong.;
#X obj 625 117 s pd-lsetter;
#X msg 531 346 massesForcesL;
#X msg 630 225 massesPosYL;
-#X obj 28 133 nbx 5 14 -1e+37 1e+37 0 0 \$0-delay-stack empty delay-stack
-0 -6 0 10 -262144 -1 -1 0 256;
-#X text 25 92 If you experience stack overflows \, try setting this
-larger than 10;
+#N canvas 0 0 450 300 msd-type 0;
+#X obj 94 78 r MSD-TYPE;
+#X obj 89 201 s \$0-MSD-TYPE;
+#X obj 98 136 select 0;
+#X msg 89 168 label 2-D;
+#X msg 185 170 label 3-D;
+#X connect 0 0 2 0;
+#X connect 2 0 3 0;
+#X connect 2 1 4 0;
+#X connect 3 0 1 0;
+#X connect 4 0 1 0;
+#X restore 524 126 pd msd-type;
+#N canvas 244 458 450 300 camera 0;
+#X obj 183 185 camera;
+#X obj 179 45 gemhead;
+#X obj 162 82 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X obj 185 63 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X obj 234 108 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
+1;
+#X obj 260 86 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X msg 234 124 left \$1;
+#X msg 260 102 right \$1;
+#X obj 75 120 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X obj 101 98 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X msg 101 114 up \$1;
+#X msg 75 136 down \$1;
+#X msg 267 58 reset;
+#X msg 185 80 forward \$1;
+#X msg 162 98 reverse \$1;
+#X msg 66 252 speed \$1;
+#X floatatom 66 234 5 0 0 0 - - -;
+#X floatatom 67 195 5 0 0 0 - - -;
+#X msg 379 150 lookX \$1;
+#X msg 379 187 lookY \$1;
+#X msg 379 223 lookZ \$1;
+#X floatatom 379 134 5 0 0 0 - - -;
+#X floatatom 379 207 5 0 0 0 - - -;
+#X floatatom 379 170 5 0 0 0 - - -;
+#X msg 67 213 distance \$1;
+#X connect 1 0 0 0;
+#X connect 2 0 14 0;
+#X connect 3 0 13 0;
+#X connect 4 0 6 0;
+#X connect 5 0 7 0;
+#X connect 6 0 0 0;
+#X connect 7 0 0 0;
+#X connect 8 0 11 0;
+#X connect 9 0 10 0;
+#X connect 10 0 0 0;
+#X connect 11 0 0 0;
+#X connect 12 0 0 0;
+#X connect 13 0 0 0;
+#X connect 14 0 0 0;
+#X connect 15 0 0 0;
+#X connect 16 0 15 0;
+#X connect 17 0 24 0;
+#X connect 18 0 0 0;
+#X connect 19 0 0 0;
+#X connect 20 0 0 0;
+#X connect 21 0 18 0;
+#X connect 22 0 20 0;
+#X connect 23 0 19 0;
+#X connect 24 0 0 0;
+#X restore 416 83 pd camera;
#X connect 1 0 0 0;
#X connect 2 0 1 1;
#X connect 3 0 1 0;
@@ -615,12 +809,12 @@ metro \, to accelerate or slow down the simulation.;
in edit mode \, then press "L" to connect those with a link. If you
select more than two masses \, then all possible links between those
masses will get created. Use this to mass-connect masses. :);
-#N canvas 423 517 576 613 forces 0;
+#N canvas 405 181 584 687 forces 0;
#X obj 295 415 s \$0-msd;
#X obj 394 355 hsl 128 24 -5 5 0 1 empty empty empty -2 -6 0 8 -262144
-1 -1 6350 1;
#X obj 295 230 vsl 24 128 -5 5 0 1 empty empty empty 0 -8 0 8 -262144
--1 -1 6350 1;
+-1 -1 6650 1;
#X msg 295 388 forceY id \$1;
#X msg 391 388 forceX id \$1;
#X obj 295 174 tgl 24 0 empty empty constant? 0 -6 0 8 -262144 -1 -1
@@ -651,6 +845,10 @@ masses will get created. Use this to mass-connect masses. :);
#X obj 63 408 s \$0-msd;
#X msg 63 381 posX \$2 \$1;
#X text 31 74 Modify one mass:;
+#X obj 63 560 pack 0 0;
+#X floatatom 63 536 5 0 0 0 posZ - -;
+#X obj 63 610 s \$0-msd;
+#X msg 63 583 posZ \$2 \$1;
#X connect 1 0 4 0;
#X connect 2 0 3 0;
#X connect 3 0 0 0;
@@ -668,6 +866,7 @@ masses will get created. Use this to mass-connect masses. :);
#X connect 15 0 16 1;
#X connect 15 0 22 1;
#X connect 15 0 26 1;
+#X connect 15 0 31 1;
#X connect 16 0 13 0;
#X connect 17 0 14 0;
#X connect 18 0 21 0;
@@ -678,19 +877,22 @@ masses will get created. Use this to mass-connect masses. :);
#X connect 26 0 29 0;
#X connect 27 0 26 0;
#X connect 29 0 28 0;
+#X connect 31 0 34 0;
+#X connect 32 0 31 0;
+#X connect 34 0 33 0;
#X restore 28 463 pd forces;
#X obj 254 524 tgl 15 0 \$0-gem-masses-on empty gem_m 0 -6 0 8 -225280
-1 -1 0 1;
#X obj 296 524 tgl 15 0 \$0-gem-links-on empty gem_l 0 -6 0 8 -225271
-1 -1 0 1;
-#N canvas 779 673 450 300 props 0;
+#N canvas 113 581 450 300 props 0;
#X obj 117 204 s \$0-msd;
#X obj 117 46 vsl 15 64 0 10 0 0 empty empty D 0 -8 0 8 -262144 -1
--1 0 1;
+-1 3000 1;
#X obj 141 46 vsl 15 64 0 10 0 0 empty empty D2 0 -8 0 8 -262144 -1
--1 0 1;
+-1 3800 1;
#X obj 90 46 vsl 15 64 0 100 0 0 empty empty K 0 -8 0 8 -262144 -1
--1 0 1;
+-1 1000 1;
#X msg 90 175 setK ml \$1;
#X msg 117 151 setD ml \$1;
#X msg 141 122 setD2 ml \$1;
@@ -709,7 +911,6 @@ forces from the model. Use the "forces" and "props" subpatches to change
parameters of links and send forces.;
#X text 685 122 Save network to disk:;
#X obj 24 120 morelinks;
-#X obj 25 14 msd_append;
#X text 242 29 First create structure inside [pd data] using msd_append.
Add mobile masses with black bang \, add fixed masses with the red
bang. Set weight of mass with the "M" number box.;
@@ -845,11 +1046,19 @@ when creating lots of masses.;
#X coords 0 0 1 1 77 44 1;
#X restore 703 208 pd save;
#X text 683 188 Save MSD messages:;
+#X obj 92 315 tgl 24 0 MSD-TYPE \$0-MSD-TYPE 3-D 0 -6 0 8 -233017 -1
+-1 1 1;
+#X text 120 320 MSD-TYPE;
+#X obj 25 14 msd_append;
+#X text 240 304 Press "generate" to generate messages to the msd object
+and create the physical model inside. You can select which type of
+msd* to use as well: msd2D or msd3D. With 3-D \, the Z-coordinate will
+default to a value of zero.;
#X connect 2 0 6 0;
#X connect 7 0 8 0;
#X connect 7 1 9 0;
#X connect 8 0 7 0;
#X connect 9 0 7 1;
-#X connect 12 0 7 2;
-#X connect 26 0 25 0;
-#X connect 27 0 25 0;
+#X connect 11 0 7 2;
+#X connect 24 0 23 0;
+#X connect 25 0 23 0;
diff --git a/msd2D/editor/msd_append.pd b/msd2D/editor/msd_append.pd
index b8a6a1b..78d8e07 100644
--- a/msd2D/editor/msd_append.pd
+++ b/msd2D/editor/msd_append.pd
@@ -29,7 +29,7 @@
#X obj 296 425 s \$0-counter-in;
#X obj 66 203 + 20;
#X obj 105 148 + 20;
-#X obj 192 177 r \$0-M;
+#X obj 208 133 r \$0-M;
#X obj 68 231 append mass x y mid mob M;
#X obj 553 175 f \$1;
#X obj 553 199 select 0;
@@ -38,6 +38,9 @@
#X obj 558 152 loadbang;
#X obj 21 135 r \$0-geos;
#X obj 252 77 r \$0-start-traverse;
+#X obj 179 204 f 0;
+#X obj 21 158 t a b;
+#X obj 195 173 r \$0-mfds;
#X connect 0 0 24 5;
#X connect 1 0 21 0;
#X connect 2 0 0 0;
@@ -68,13 +71,17 @@
#X connect 26 1 27 0;
#X connect 28 0 27 0;
#X connect 29 0 25 0;
-#X connect 30 0 24 0;
+#X connect 30 0 33 0;
#X connect 31 0 2 0;
+#X connect 32 0 24 3;
+#X connect 33 0 24 0;
+#X connect 33 1 32 0;
+#X connect 34 0 32 1;
#X restore 105 79 pd guts;
#X obj 126 6 inlet;
#X obj 169 5 inlet;
#X obj 25 59 nbx 5 14 -1e+37 1e+37 0 0 \$0-counter \$0-counter-in id
--22 8 0 10 -262144 -1 -1 0 256;
+-22 8 0 10 -262144 -1 -1 400 256;
#X obj 2 77 cnv 15 80 30 empty empty empty 10 10 0 10 -195568 -1 0
;
#X obj 26 85 nbx 5 14 -1e+37 1e+37 0 0 \$0-M \$0-M M -12 8 0 10 -225271
@@ -85,7 +92,7 @@
#X obj 93 188 s \$0-counter-bng;
#X obj 48 33 r \$0-make-rect;
#X msg 93 67 bang;
-#N canvas 449 480 450 300 1016-geos 1;
+#N canvas 449 480 450 300 6969-geos 0;
#X obj 48 82 bng 24 250 50 0 \$0-make-rect empty make-rect 0 -6 0 8
-24198 -1 -1;
#X floatatom 151 76 5 0 0 0 x0 - #0-x0;
@@ -104,6 +111,10 @@
#X floatatom 251 166 5 0 0 0 radius - #0-radius;
#X floatatom 251 184 5 0 0 0 masses_# - #0-masses-circ;
#X text 107 266 All coords as used by data structs.;
+#X obj 54 233 hradio 15 1 0 2 \$0-mf \$0-mf Mobile/Fix 0 -6 0 8 -262144
+-1 -1 0;
+#X obj 91 234 cnv 15 60 15 \$0-mobfix \$0-mobfix mobile 2 6 0 10 -233017
+-66577 0;
#X restore 518 165 pd \$0-geos;
#X msg 519 125 \; \$1 vis 1;
#X obj 518 96 makefilename pd-%s;
@@ -111,7 +122,7 @@
#X msg 516 22 bang;
#X obj 48 66 t b b;
#X obj 78 226 s \$0-start-traverse;
-#N canvas 0 0 930 534 1016-sixpack 0;
+#N canvas 0 0 930 534 6969-sixpack 0;
#X obj 250 282 r \$0-x0;
#X text 452 208 Args;
#X obj 320 310 sixpack --------------------;
@@ -132,7 +143,7 @@
#X obj 93 128 t b a;
#X obj 524 45 r \$0-show-geos;
#X obj 63 322 r \$0-make-circ;
-#N canvas 0 0 930 534 1016-fourpack 0;
+#N canvas 0 0 930 534 6969-fourpack 0;
#X text 452 208 Args;
#X obj 320 310 sixpack --------------------;
#X obj 319 390 outlet;
@@ -154,6 +165,14 @@
#X obj 93 505 s \$0-start-traverse;
#X obj 106 407 t b a;
#X obj 63 370 make_circ 300 300 100 8;
+#X obj 368 266 select 0;
+#X msg 368 306 label mobile;
+#X obj 368 329 s \$0-mobfix;
+#X msg 420 288 label fix;
+#X obj 368 236 r \$0-mf;
+#X obj 507 332 s \$0-mfds;
+#X msg 508 301 0;
+#X msg 544 299 900;
#X connect 0 0 13 0;
#X connect 3 0 10 0;
#X connect 4 0 0 0;
@@ -173,6 +192,15 @@
#X connect 21 0 18 0;
#X connect 21 1 17 0;
#X connect 22 0 21 0;
+#X connect 23 0 24 0;
+#X connect 23 0 29 0;
+#X connect 23 1 26 0;
+#X connect 23 1 30 0;
+#X connect 24 0 25 0;
+#X connect 26 0 25 0;
+#X connect 27 0 23 0;
+#X connect 29 0 28 0;
+#X connect 30 0 28 0;
#X restore 113 41 pd geos;
#X obj 59 29 bng 15 250 50 0 \$0-show-geos \$0-show-geos geos 0 -6
0 8 -225271 -1 -1;