aboutsummaryrefslogtreecommitdiff
path: root/editor/msd-editor.pd
diff options
context:
space:
mode:
Diffstat (limited to 'editor/msd-editor.pd')
-rw-r--r--editor/msd-editor.pd1131
1 files changed, 1131 insertions, 0 deletions
diff --git a/editor/msd-editor.pd b/editor/msd-editor.pd
new file mode 100644
index 0000000..31ad552
--- /dev/null
+++ b/editor/msd-editor.pd
@@ -0,0 +1,1131 @@
+#N canvas 416 29 415 616 10;
+#X obj 9 50 cnv 15 400 200 empty empty EDIT 20 12 1 14 -233017 -66577
+0;
+#X obj 9 256 cnv 15 400 60 empty empty CREATE 20 12 1 14 -195568 -66577
+0;
+#X obj 10 321 cnv 15 400 140 empty empty CONTROL 20 12 1 14 -233017
+-66577 0;
+#N canvas 740 0 1022 952 data 0;
+#X restore 323 192 pd data;
+#X obj 221 276 bng 24 250 50 0 \$0-generate \$0-generate generate 0
+-6 0 8 -24198 -1 -1;
+#N canvas 366 103 781 748 generator 0;
+#N canvas 311 93 877 551 getter 0;
+#X obj 244 89 inlet;
+#X obj 330 145 outlet;
+#X text 91 57 First build masses \, then links!!;
+#X obj 234 285 outlet;
+#N canvas 629 18 551 784 fix-mass-ids 0;
+#X obj 43 72 t b b b b b b b;
+#X msg 79 168 traverse pd-data \, next;
+#X obj 79 200 pointer mass;
+#X obj 143 103 s \$0-reset-counter;
+#N canvas 331 520 708 349 counter 0;
+#X obj 156 125 f 0;
+#X msg 172 102 0;
+#X obj 172 74 r \$0-reset-counter;
+#X obj 188 125 + 1;
+#X obj 156 179 outlet;
+#X obj 156 50 inlet;
+#X connect 0 0 3 0;
+#X connect 0 0 4 0;
+#X connect 1 0 0 1;
+#X connect 2 0 1 0;
+#X connect 3 0 0 1;
+#X connect 5 0 0 0;
+#X restore 96 298 pd counter;
+#X obj 96 396 set mass mid;
+#X text 176 200 At end: fix links!;
+#X obj 186 300 get mass mid;
+#X obj 79 247 t b b b b p p;
+#X obj 211 375 pack 0 0;
+#X obj 211 404 tabwrite \$0-mid2msdid;
+#X text 125 434 Store a mapping mid => msdid for fixing links later
+;
+#X obj 43 24 inlet;
+#X obj 158 221 outlet;
+#X text 96 52 Avoid stack overflow lops;
+#X obj 85 23 r \$0-stack-delay;
+#X obj 16 228 ds-next;
+#X obj 43 51 del 0;
+#X text 122 470 This still is not prepared to handle symbolic IDs!!!
+;
+#X connect 0 5 1 0;
+#X connect 0 6 3 0;
+#X connect 1 0 2 0;
+#X connect 2 0 8 0;
+#X connect 2 1 16 0;
+#X connect 2 2 13 0;
+#X connect 4 0 9 0;
+#X connect 4 0 5 0;
+#X connect 7 0 9 1;
+#X connect 8 0 16 0;
+#X connect 8 1 4 0;
+#X connect 8 4 7 0;
+#X connect 8 5 5 1;
+#X connect 9 0 10 0;
+#X connect 12 0 17 0;
+#X connect 15 0 17 1;
+#X connect 16 0 2 0;
+#X connect 17 0 0 0;
+#X restore 244 173 pd fix-mass-ids;
+#N canvas 403 15 685 826 fix-links 0;
+#X obj 139 158 t b b b b b b b;
+#X msg 175 254 traverse pd-data \, next;
+#X obj 239 189 s \$0-reset-counter;
+#X obj 175 284 pointer liaison;
+#X text 293 285 At end: make links in msd*!;
+#X obj 192 420 tabread \$0-mid2msdid;
+#X obj 192 482 set liaison mid1 mid2;
+#X obj 343 418 tabread \$0-mid2msdid;
+#X obj 192 389 get liaison mid1 mid2;
+#X obj 175 333 t b b b b p p;
+#X obj 139 70 inlet;
+#X obj 275 312 outlet;
+#X text 192 106 Avoid stack overflow lops;
+#X obj 188 68 r \$0-stack-delay;
+#X obj 113 282 ds-next;
+#X obj 139 105 del 0;
+#X connect 0 5 1 0;
+#X connect 1 0 3 0;
+#X connect 3 0 9 0;
+#X connect 3 1 14 0;
+#X connect 3 2 11 0;
+#X connect 5 0 6 0;
+#X connect 7 0 6 1;
+#X connect 8 0 5 0;
+#X connect 8 1 7 0;
+#X connect 9 0 14 0;
+#X connect 9 4 8 0;
+#X connect 9 5 6 2;
+#X connect 10 0 15 0;
+#X connect 13 0 15 1;
+#X connect 14 0 3 0;
+#X connect 15 0 0 0;
+#X restore 244 196 pd fix-links;
+#N canvas 236 8 602 856 get-masses 0;
+#X obj 148 80 t b b b b b b b;
+#X msg 184 176 traverse pd-data \, next;
+#X obj 184 206 pointer mass;
+#X obj 325 385 select 0;
+#X msg 365 410 0;
+#X msg 324 409 1;
+#X obj 248 111 s \$0-reset-counter;
+#X msg 248 131 const 0;
+#X obj 248 152 s \$0-mid;
+#X obj 310 152 s \$0-msdid;
+#X text 44 397 At end: start 2nd pass;
+#X obj 148 31 inlet;
+#X obj 214 494 outlet;
+#X obj 81 435 outlet;
+#X obj 184 255 t b p;
+#X obj 214 402 scale-ds2msd;
+#X obj 120 251 ds-next;
+#X obj 214 362 get mass x y mid mob M sid;
+#X obj 214 444 pack 0 0 0 0 0 0;
+#X connect 0 5 1 0;
+#X connect 0 6 6 0;
+#X connect 0 6 7 0;
+#X connect 1 0 2 0;
+#X connect 2 0 14 0;
+#X connect 2 1 16 0;
+#X connect 2 2 13 0;
+#X connect 3 0 5 0;
+#X connect 3 1 4 0;
+#X connect 4 0 18 3;
+#X connect 5 0 18 3;
+#X connect 7 0 8 0;
+#X connect 7 0 9 0;
+#X connect 11 0 0 0;
+#X connect 14 0 16 0;
+#X connect 14 1 17 0;
+#X connect 15 0 18 0;
+#X connect 15 1 18 1;
+#X connect 16 0 2 0;
+#X connect 17 0 15 0;
+#X connect 17 1 15 1;
+#X connect 17 2 18 2;
+#X connect 17 3 3 0;
+#X connect 17 4 18 4;
+#X connect 17 5 18 5;
+#X connect 18 0 12 0;
+#X restore 244 115 pd get-masses;
+#N canvas 0 0 768 708 make-links 0;
+#X obj 316 252 pointer liaison;
+#X msg 354 227 traverse pd-data \, bang;
+#X obj 286 274 t b p;
+#X obj 364 418 outlet;
+#X obj 354 170 inlet;
+#X obj 192 389 outlet;
+#X text 142 412 Now set lid field of links.;
+#X text 407 200 Avoid stack overflow lops;
+#X obj 399 167 r \$0-stack-delay;
+#X obj 286 226 ds-next;
+#X obj 354 201 del 0;
+#X obj 316 298 get liaison sid mid1 mid2 K D P Lmin Lmax;
+#X obj 364 385 pack 0 0 0 0 0 0 0 0;
+#X connect 0 0 2 0;
+#X connect 0 1 9 0;
+#X connect 0 2 5 0;
+#X connect 1 0 0 0;
+#X connect 2 0 9 0;
+#X connect 2 1 11 0;
+#X connect 4 0 10 0;
+#X connect 8 0 10 1;
+#X connect 9 0 0 0;
+#X connect 10 0 1 0;
+#X connect 11 0 12 0;
+#X connect 11 1 12 1;
+#X connect 11 2 12 2;
+#X connect 11 3 12 3;
+#X connect 11 4 12 4;
+#X connect 11 5 12 5;
+#X connect 11 6 12 6;
+#X connect 11 7 12 7;
+#X connect 12 0 3 0;
+#X restore 148 257 pd make-links;
+#X text 284 418 TABLES USED:;
+#X text 364 174 Change DS mass ids to match msdIds \, store mid2msdid
+mapping;
+#X text 366 196 Fix mid1 and mid2 in links to match what msd2D thinks
+is right.;
+#X text 257 258 Create messages to msd2D to create links;
+#X text 317 325 Correct lids to match what msd2D tells us;
+#X obj 146 446 table \$0-mid2msdid 4000;
+#X text 354 111 First get masses positions \, send to msd2D;
+#X text 324 446 mass id as index \, msdid as value. Size 4000 taken
+from the #define in msd sources.;
+#N canvas 283 271 635 631 set-lid-alternative 0;
+#X obj 43 72 t b b b b b b b;
+#X msg 79 168 traverse pd-data \, next;
+#N canvas 331 520 708 349 counter 0;
+#X obj 156 125 f 0;
+#X msg 172 102 0;
+#X obj 172 74 r \$0-reset-counter;
+#X obj 188 125 + 1;
+#X obj 156 179 outlet;
+#X obj 156 50 inlet;
+#X connect 0 0 3 0;
+#X connect 0 0 4 0;
+#X connect 1 0 0 1;
+#X connect 2 0 1 0;
+#X connect 3 0 0 1;
+#X connect 5 0 0 0;
+#X restore 96 298 pd counter;
+#X obj 79 247 t b b b b p p;
+#X obj 43 24 inlet;
+#X text 96 52 Avoid stack overflow lops;
+#X obj 85 23 r \$0-stack-delay;
+#X obj 16 228 ds-next;
+#X obj 43 51 del 0;
+#X obj 79 200 pointer liaison;
+#X obj 96 396 set liaison lid;
+#X connect 0 5 1 0;
+#X connect 1 0 9 0;
+#X connect 2 0 10 0;
+#X connect 3 0 7 0;
+#X connect 3 1 2 0;
+#X connect 3 5 10 1;
+#X connect 4 0 8 0;
+#X connect 6 0 8 1;
+#X connect 7 0 9 0;
+#X connect 8 0 0 0;
+#X connect 9 0 3 0;
+#X connect 9 1 7 0;
+#X restore 148 329 pd set-lid-alternative;
+#X text 319 346 This is simpler and may work as well. It depends on
+sorted data structures.;
+#X connect 0 0 6 0;
+#X connect 4 0 5 0;
+#X connect 5 0 7 0;
+#X connect 6 0 4 0;
+#X connect 6 1 1 0;
+#X connect 7 0 16 0;
+#X connect 7 1 3 0;
+#X restore 131 221 pd getter;
+#X obj 131 369 s \$0-msd;
+#X msg 170 107 reset;
+#X obj 170 132 s \$0-msd;
+#X obj 112 80 t b b b b;
+#N canvas 338 182 781 563 make-setters 0;
+#X obj 262 451 s pd-setter;
+#X obj 136 109 t b b b b;
+#X obj 262 337 get mass x y mid;
+#X msg 262 404 obj \$1 \$2 mass-set \$3;
+#X obj 262 360 pack 0 0 0;
+#X obj 171 335 s mypointer;
+#X msg 194 135 clear;
+#X obj 194 160 s pd-setter;
+#X obj 136 68 inlet;
+#X obj 174 240 pointer mass liaison;
+#X obj 506 373 pack 0 0 0;
+#X obj 506 350 get liaison x1 y1 lid;
+#X msg 506 417 obj \$1 \$2 link-set \$3;
+#X obj 506 462 s pd-lsetter;
+#X obj 194 186 s pd-lsetter;
+#X obj 399 350 s myliapointer;
+#X obj 136 487 outlet;
+#X text 196 487 Post-Actions;
+#X obj 401 270 t b p p;
+#X obj 174 272 t b p p;
+#N canvas 0 0 450 300 next 0;
+#X obj 140 92 inlet;
+#X obj 140 215 outlet;
+#X msg 140 169 next;
+#X obj 140 134 del 0;
+#X connect 0 0 3 0;
+#X connect 2 0 1 0;
+#X connect 3 0 2 0;
+#X restore 37 267 pd next;
+#X msg 174 213 traverse pd-data;
+#X obj 136 443 del 1;
+#X connect 1 0 22 0;
+#X connect 1 1 20 0;
+#X connect 1 2 21 0;
+#X connect 1 3 6 0;
+#X connect 2 0 4 0;
+#X connect 2 1 4 1;
+#X connect 2 2 4 2;
+#X connect 3 0 0 0;
+#X connect 4 0 3 0;
+#X connect 6 0 7 0;
+#X connect 6 0 14 0;
+#X connect 8 0 1 0;
+#X connect 9 0 19 0;
+#X connect 9 1 18 0;
+#X connect 10 0 12 0;
+#X connect 11 0 10 0;
+#X connect 11 1 10 1;
+#X connect 11 2 10 2;
+#X connect 12 0 13 0;
+#X connect 18 0 20 0;
+#X connect 18 1 15 0;
+#X connect 18 2 11 0;
+#X connect 19 0 20 0;
+#X connect 19 1 5 0;
+#X connect 19 2 2 0;
+#X connect 20 0 9 0;
+#X connect 21 0 9 0;
+#X connect 22 0 16 0;
+#X restore 112 428 pd make-setters;
+#X obj 181 344 r pointer2msd;
+#N canvas 382 305 870 520 set-min-max 0;
+#X obj 98 80 r \$0-min-DS;
+#X obj 240 84 r \$0-max-DS;
+#X obj 468 80 r \$0-min-MSD;
+#X obj 605 108 r \$0-max-MSD;
+#X obj 98 131 s DS-xmin;
+#X obj 240 145 s DS-xmax;
+#X obj 98 111 f;
+#X obj 240 113 f;
+#X obj 468 109 f;
+#X obj 605 143 f;
+#X obj 340 13 inlet;
+#X obj 339 41 t b b;
+#X text 252 195 reverse!;
+#X text 95 177 reverse!;
+#X obj 241 176 s DS-ymin;
+#X obj 98 158 s DS-ymax;
+#X obj 468 135 s MSD-xmin;
+#X obj 605 174 s MSD-xmax;
+#X obj 469 157 s MSD-ymin;
+#X obj 605 198 s MSD-ymax;
+#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;
+#X connect 3 0 9 0;
+#X connect 6 0 4 0;
+#X connect 6 0 15 0;
+#X connect 7 0 5 0;
+#X connect 7 0 14 0;
+#X connect 8 0 16 0;
+#X connect 8 0 18 0;
+#X connect 8 0 23 1;
+#X connect 9 0 17 0;
+#X connect 9 0 19 0;
+#X connect 9 0 24 1;
+#X connect 10 0 11 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 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 obj 112 41 r \$0-generate;
+#X msg 189 275 mass \$6-m \$4 \$5 \$1 \$2;
+#X msg 341 275 mass \$6-m \$4 \$5 \$1 \$2 0;
+#X obj 150 187 s pd-data;
+#X msg 150 159 sort;
+#X msg 131 324 link \$1-l \$2 \$3 \$4 \$5 \$6 \$7 \$8;
+#X connect 0 0 18 0;
+#X connect 0 1 11 0;
+#X connect 2 0 3 0;
+#X connect 4 0 9 0;
+#X connect 4 1 0 0;
+#X connect 4 2 17 0;
+#X connect 4 3 2 0;
+#X connect 5 0 7 0;
+#X connect 6 0 1 0;
+#X connect 9 0 5 0;
+#X connect 10 0 5 0;
+#X connect 11 0 14 0;
+#X connect 11 1 15 0;
+#X connect 12 0 11 1;
+#X connect 13 0 4 0;
+#X connect 14 0 1 0;
+#X connect 15 0 1 0;
+#X connect 17 0 16 0;
+#X connect 18 0 1 0;
+#X restore 287 276 pd generator;
+#N canvas 0 0 718 819 activate 0;
+#X obj 233 238 r \$0-msd;
+#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 97 710 gemwin;
+#X msg 97 683 0 \, destroy;
+#X obj 249 354 s \$0-msd-out;
+#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
+;
+#X obj 233 421 spigot;
+#X obj 313 421 spigot;
+#X text 238 559 sent to the data struct pointers;
+#X obj 167 149 t b b;
+#X obj 197 193 s pollpos;
+#X obj 167 44 inlet data_only;
+#X obj 39 488 inlet GEM;
+#X obj 341 40 inlet speed;
+#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 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 obj 197 174 spigot 1;
+#X obj 248 150 r \$0-poll-ds;
+#X obj 346 469 r \$0-set-ds;
+#X obj 233 516 spigot 1;
+#X obj 313 496 spigot 1;
+#X obj 297 238 r \$0-save-msd;
+#X obj 257 286 s \$0-msd2save;
+#X obj 255 261 spigot 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 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 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 obj 357 676 gemhead;
+#X obj 357 699 world_light;
+#X obj 147 617 r \$0-fullscreen;
+#X obj 97 634 f 0;
+#X msg 97 659 reset \, lighting 1 \, fullscreen \$1 \, create \, 1
+;
+#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 48 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 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 33 0 18 0;
+#X connect 34 0 1 1;
+#X connect 35 0 2 1;
+#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 46 0;
+#X connect 47 0 48 1;
+#X connect 48 0 49 0;
+#X connect 49 0 6 0;
+#X restore 31 397 pd activate;
+#X obj 31 362 tgl 24 0 empty empty GEM 0 -6 0 8 -195568 -1 -1 0 1;
+#X obj 67 362 tgl 24 0 empty empty Datastructures 0 -6 0 8 -1 -262144
+-1 0 1;
+#X floatatom 103 377 5 10 1000 2 frequency - -;
+#N canvas 757 198 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;
+#X obj 295 174 tgl 24 0 empty empty constant? 0 -6 0 8 -262144 -1 -1
+0 1;
+#X obj 391 295 tgl 24 0 empty empty constant? 0 -6 0 8 -262144 -1 -1
+0 1;
+#X obj 295 205 metro 10;
+#X obj 391 326 metro 10;
+#X msg 455 325 0;
+#X msg 263 204 0;
+#X text 230 127 Add some forces to the system.;
+#X msg 63 158 forceX \$2 \$1;
+#X msg 63 272 forceY \$2 \$1;
+#X obj 63 137 pack 0 0;
+#X floatatom 114 114 5 0 0 2 Mass_ID - -;
+#X obj 63 249 pack 0 0;
+#X floatatom 63 115 5 0 0 0 forceX - -;
+#X floatatom 63 204 5 0 0 0 forceY - -;
+#X obj 63 299 s \$0-msd;
+#X obj 63 181 s \$0-msd;
+#X obj 63 224 * -1;
+#X obj 63 461 pack 0 0;
+#X floatatom 63 437 5 0 0 0 posY - -;
+#X obj 63 511 s \$0-msd;
+#X msg 63 484 posY \$2 \$1;
+#X obj 63 358 pack 0 0;
+#X floatatom 63 334 5 0 0 0 posX - -;
+#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 msg 295 388 forceY 0-m \$1;
+#X msg 391 388 forceX 0-m \$1;
+#X obj 324 600 s \$0-msd;
+#X obj 327 530 hsl 128 24 -5 5 0 0 empty empty empty -2 -6 0 8 -233017
+-1 -1 0 1;
+#X obj 324 470 tgl 24 0 empty empty constant? 0 -6 0 8 -262144 -1 -1
+0 1;
+#X obj 324 501 metro 10;
+#X msg 324 563 forceZ 0-m \$1;
+#X msg 393 501 0;
+#X connect 1 0 34 0;
+#X connect 2 0 33 0;
+#X connect 3 0 5 0;
+#X connect 4 0 6 0;
+#X connect 5 0 2 0;
+#X connect 6 0 1 0;
+#X connect 7 0 1 0;
+#X connect 8 0 2 0;
+#X connect 10 0 18 0;
+#X connect 11 0 17 0;
+#X connect 12 0 10 0;
+#X connect 13 0 12 1;
+#X connect 13 0 14 1;
+#X connect 13 0 20 1;
+#X connect 13 0 24 1;
+#X connect 13 0 29 1;
+#X connect 14 0 11 0;
+#X connect 15 0 12 0;
+#X connect 16 0 19 0;
+#X connect 19 0 14 0;
+#X connect 20 0 23 0;
+#X connect 21 0 20 0;
+#X connect 23 0 22 0;
+#X connect 24 0 27 0;
+#X connect 25 0 24 0;
+#X connect 27 0 26 0;
+#X connect 29 0 32 0;
+#X connect 30 0 29 0;
+#X connect 32 0 31 0;
+#X connect 33 0 0 0;
+#X connect 34 0 0 0;
+#X connect 36 0 39 0;
+#X connect 37 0 38 0;
+#X connect 38 0 36 0;
+#X connect 39 0 35 0;
+#X connect 40 0 36 0;
+#X restore 176 431 pd forces;
+#N canvas 113 581 450 300 props 0;
+#X obj 121 232 s \$0-msd;
+#X text 244 59 Edit properties of Links.;
+#X obj 77 36 inlet;
+#X obj 123 36 inlet;
+#X obj 169 36 inlet;
+#X obj 152 101 pack 0 0;
+#X obj 239 33 inlet lsid;
+#X msg 121 179 setD \$2-l \$1;
+#X msg 94 203 setK \$2-l \$1;
+#X obj 122 123 pack 0 0;
+#X obj 76 99 pack 0 0;
+#X msg 145 150 setL \$2-l \$1;
+#X connect 2 0 10 0;
+#X connect 3 0 9 0;
+#X connect 4 0 5 0;
+#X connect 5 0 11 0;
+#X connect 6 0 5 1;
+#X connect 6 0 10 1;
+#X connect 6 0 9 1;
+#X connect 7 0 0 0;
+#X connect 8 0 0 0;
+#X connect 9 0 7 0;
+#X connect 10 0 8 0;
+#X connect 11 0 0 0;
+#X restore 268 433 pd props;
+#X obj 242 209 s pd-data;
+#X msg 278 192 clear;
+#X msg 242 192 sort;
+#N canvas 702 626 136 139 minmax 0;
+#X obj 2 15 cnv 15 130 120 empty empty Min/Max 10 10 0 10 -195568 -1
+0;
+#X obj 6 37 nbx 5 14 -1e+37 1e+37 0 0 \$0-min-DS \$0-min-DS Min-DS
+60 8 0 10 -225271 -1 -1 0 256;
+#X obj 6 57 nbx 5 14 -1e+37 1e+37 0 0 \$0-max-DS \$0-max-DS Max-DS
+60 8 0 10 -225271 -1 -1 1000 256;
+#X obj 6 85 nbx 5 14 -1e+37 1e+37 0 0 \$0-min-MSD \$0-min-MSD Min-MSD
+60 8 0 10 -262131 -1 -1 -3 256;
+#X obj 6 105 nbx 5 14 -1e+37 1e+37 0 0 \$0-max-MSD \$0-max-MSD Max-MSD
+60 8 0 10 -262131 -1 -1 3 256;
+#N canvas 0 0 450 300 l 0;
+#X msg 35 78 0;
+#X msg 128 75 1000;
+#X obj 35 41 loadbang;
+#X obj 36 136 loadbang;
+#X msg 129 170 3;
+#X msg 36 173 -3;
+#X obj 35 100 s \$0-min-DS;
+#X obj 128 101 s \$0-max-DS;
+#X obj 36 195 s \$0-min-MSD;
+#X obj 129 196 s \$0-max-MSD;
+#X connect 0 0 6 0;
+#X connect 1 0 7 0;
+#X connect 2 0 0 0;
+#X connect 2 0 1 0;
+#X connect 3 0 5 0;
+#X connect 3 0 4 0;
+#X connect 4 0 9 0;
+#X connect 5 0 8 0;
+#X restore 82 19 pd l;
+#X coords 0 0 1 1 132 135 1;
+#X restore 242 50 pd minmax;
+#X obj 178 276 tgl 24 0 MSD-TYPE \$0-MSD-TYPE 2-D 0 -6 0 8 -233017
+-1 -1 0 1;
+#X obj 28 107 msd_append;
+#X obj 10 547 cnv 15 400 60 empty empty DOC 20 12 1 14 -233017 -66577
+0;
+#X obj 182 362 tgl 15 0 \$0-gem-masses-on empty gem_m 0 -6 0 8 -225280
+-1 -1 0 1;
+#X obj 218 362 tgl 15 0 \$0-gem-links-on empty gem_l 0 -6 0 8 -225271
+-1 -1 0 1;
+#X obj 182 397 tgl 15 0 \$0-poll-ds \$0-poll-ds poll-ds -10 -6 0 8
+-225280 -1 -1 0 1;
+#X obj 218 397 tgl 15 0 \$0-set-ds \$0-set-ds set-ds 0 -6 0 8 -225271
+-1 -1 0 1;
+#X text 29 286 MSD-TYPE (2D or 3D):;
+#X obj 9 9 cnv 15 400 30 empty empty MSD-EDITOR 20 14 1 14 -128992
+-262144 0;
+#X obj 10 466 cnv 15 400 75 empty empty PERSIST 20 12 1 14 -195568
+-66577 0;
+#N canvas 460 399 104 45 save 0;
+#X obj 2 3 cnv 15 100 40 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X obj 4 17 bng 20 250 50 0 empty empty load 0 -6 0 8 -258699 -1 -1
+;
+#X obj 34 17 bng 20 250 50 0 empty empty saveas 0 -6 0 8 -24198 -1
+-1;
+#X obj 101 60 savepanel;
+#X obj 50 168 s pd-data;
+#X msg 101 115 write \$1;
+#X obj 20 91 openpanel;
+#X msg 20 115 read \$1;
+#X obj 20 138 t b a;
+#X obj 20 195 s \$0-generate;
+#X obj 79 17 bng 20 250 50 0 empty empty save 0 -6 0 8 -241291 -1 -1
+;
+#X obj 100 91 symbol;
+#X connect 1 0 6 0;
+#X connect 2 0 3 0;
+#X connect 3 0 11 0;
+#X connect 5 0 4 0;
+#X connect 6 0 7 0;
+#X connect 6 0 11 1;
+#X connect 7 0 8 0;
+#X connect 8 0 9 0;
+#X connect 8 1 4 0;
+#X connect 10 0 11 0;
+#X connect 11 0 5 0;
+#X coords 0 0 1 1 102 44 1;
+#X restore 124 470 pd save;
+#N canvas 0 0 84 49 save 0;
+#X obj 2 3 cnv 15 75 40 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X obj 37 18 bng 20 250 50 0 empty empty saveas 0 -6 0 8 -24198 -1
+-1;
+#X obj 285 129 textfile;
+#X obj 285 64 r \$0-msd2save;
+#X obj 183 157 s \$0-generate;
+#X obj 166 270 s \$0-save-msd;
+#X msg 203 187 1;
+#X msg 138 193 0;
+#X obj 145 33 t b b b b;
+#X msg 213 55 clear;
+#X obj 285 88 prepend add;
+#X obj 138 126 del 500;
+#X obj 35 168 savepanel;
+#X msg 37 193 write \$1;
+#X obj 58 148 t b b;
+#X obj 292 202 s \$0-msd;
+#X msg 427 125 rewind;
+#X obj 7 18 bng 20 250 50 0 empty empty load 0 -6 0 8 -258699 -1 -1
+;
+#X obj 392 156 until;
+#X obj 396 102 t b b;
+#X obj 521 95 openpanel;
+#X msg 523 120 read \$1;
+#X obj 526 145 t b a;
+#X connect 1 0 8 0;
+#X connect 2 0 15 0;
+#X connect 2 1 18 1;
+#X connect 3 0 10 0;
+#X connect 6 0 5 0;
+#X connect 7 0 5 0;
+#X connect 8 1 11 0;
+#X connect 8 2 4 0;
+#X connect 8 3 6 0;
+#X connect 8 3 9 0;
+#X connect 9 0 2 0;
+#X connect 10 0 2 0;
+#X connect 11 0 14 0;
+#X connect 12 0 13 0;
+#X connect 13 0 2 0;
+#X connect 14 0 12 0;
+#X connect 14 1 7 0;
+#X connect 16 0 2 0;
+#X connect 17 0 20 0;
+#X connect 18 0 2 0;
+#X connect 19 0 18 0;
+#X connect 19 1 16 0;
+#X connect 20 0 21 0;
+#X connect 21 0 22 0;
+#X connect 22 0 19 0;
+#X connect 22 1 2 0;
+#X coords 0 0 1 1 77 44 1;
+#X restore 226 470 pd save;
+#X text 114 520 Save DS to disk;
+#X text 235 520 Save MSD messages;
+#X obj 285 355 vsl 15 64 0 10 0 0 empty empty D 0 -8 0 8 -195568 -1
+-1 0 1;
+#X obj 302 355 vsl 15 64 0 10 0 0 empty empty L 0 -8 0 8 -195568 -1
+-1 0 1;
+#X obj 268 355 vsl 15 64 0 100 0 0 empty empty K 0 -8 0 8 -195568 -1
+-1 0 1;
+#N canvas 504 489 531 315 TODO 0;
+#X text 146 11 TODO :: IDEAS;
+#X text 41 56 Oriented Links. It's best to create new data structures
+for this \, as the old link DS is quite loaded already.;
+#X text 37 99 Lmin/Lmax for standard links should be settable as well.
+The DS is already prepared. What are the defaults?;
+#X restore 197 554 pd TODO;
+#N canvas 307 452 509 305 NEWS 0;
+#X text 32 24 RecentChanges;
+#X text 43 67 Links: D2 was killed \, L was born.;
+#X text 43 100 SID for Links and masses: Symbolic ids can now be set.
+You supply a number \, which will get transformed into a symbol id
+(sid) #-m for masses and #-l for standard Links.;
+#X restore 146 554 pd NEWS;
+#N canvas 334 329 751 433 ignore 0;
+#X obj 46 264 print ToMSD;
+#X obj 46 234 spigot;
+#X obj 83 181 tgl 15 0 empty empty debug_ToMSD 0 -6 0 8 -262144 -1
+-1 0 1;
+#X obj 46 207 r \$0-msd;
+#X obj 147 237 spigot;
+#X obj 184 184 tgl 15 0 empty empty debug_FromMSD 0 -6 0 8 -262144
+-1 -1 0 1;
+#X obj 147 265 print FromMSD;
+#X obj 147 210 r \$0-msd-out;
+#N canvas 0 0 578 686 setter 0;
+#X restore 521 67 pd setter;
+#N canvas 0 0 822 675 lsetter 0;
+#X restore 520 90 pd lsetter;
+#X text 504 43 Automatic scripting targets;
+#X text 23 46 You can ignore this stuff here \, unless something goes
+wrong.;
+#X obj 269 233 spigot;
+#X obj 306 180 tgl 15 0 empty empty debug_AttrMSD 0 -6 0 8 -262144
+-1 -1 0 1;
+#X obj 269 206 r \$0-msd-attr;
+#X obj 269 264 print AttrMSD;
+#X obj 532 270 s \$0-msd;
+#X msg 544 247 infosL;
+#X obj 143 363 spigot;
+#X obj 180 310 tgl 15 0 empty empty global-send 0 -6 0 8 -262144 -1
+-1 0 1;
+#X obj 143 336 r \$0-msd-out;
+#X obj 143 391 s MSD-OUT-GLOBAL;
+#X msg 532 223 massesPosL;
+#X obj 532 199 metro 40;
+#X obj 532 177 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
+1;
+#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;
+#X obj 280 338 r MSD-IN-GLOBAL;
+#X obj 280 393 s \$0-msd;
+#X obj 630 201 metro 40;
+#X obj 630 179 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
+1;
+#X floatatom 683 180 5 0 0 0 - - -;
+#X obj 630 273 s \$0-msd;
+#X obj 531 322 metro 40;
+#X obj 531 300 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
+1;
+#X floatatom 584 301 5 0 0 0 - - -;
+#X obj 531 394 s \$0-msd;
+#X msg 625 70 clear;
+#X obj 625 97 s pd-setter;
+#X obj 625 117 s pd-lsetter;
+#X msg 531 346 massesForcesL;
+#X msg 630 225 massesPosYL;
+#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 673 282 553 343 camera 0;
+#X obj 161 31 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 232 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 obj 114 182 f 4;
+#X obj 181 237 +;
+#X obj 183 185 camera;
+#X connect 0 0 26 0;
+#X connect 1 0 13 0;
+#X connect 2 0 12 0;
+#X connect 3 0 5 0;
+#X connect 4 0 6 0;
+#X connect 5 0 26 0;
+#X connect 6 0 26 0;
+#X connect 7 0 10 0;
+#X connect 8 0 9 0;
+#X connect 9 0 26 0;
+#X connect 10 0 26 0;
+#X connect 11 0 26 0;
+#X connect 12 0 26 0;
+#X connect 13 0 26 0;
+#X connect 14 0 26 0;
+#X connect 15 0 14 0;
+#X connect 16 0 23 0;
+#X connect 17 0 26 0;
+#X connect 18 0 26 0;
+#X connect 19 0 26 0;
+#X connect 20 0 17 0;
+#X connect 21 0 19 0;
+#X connect 22 0 18 0;
+#X connect 23 0 26 0;
+#X connect 24 0 23 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;
+#X connect 4 0 6 0;
+#X connect 5 0 4 1;
+#X connect 7 0 4 0;
+#X connect 12 0 15 0;
+#X connect 13 0 12 1;
+#X connect 14 0 12 0;
+#X connect 17 0 16 0;
+#X connect 18 0 21 0;
+#X connect 19 0 18 1;
+#X connect 20 0 18 0;
+#X connect 22 0 16 0;
+#X connect 23 0 22 0;
+#X connect 24 0 23 0;
+#X connect 25 0 23 1;
+#X connect 26 0 29 0;
+#X connect 27 0 26 1;
+#X connect 28 0 26 0;
+#X connect 30 0 42 0;
+#X connect 31 0 30 0;
+#X connect 32 0 30 1;
+#X connect 34 0 41 0;
+#X connect 35 0 34 0;
+#X connect 36 0 34 1;
+#X connect 38 0 39 0;
+#X connect 38 0 40 0;
+#X connect 41 0 37 0;
+#X connect 42 0 33 0;
+#X restore 248 554 pd ignore this;
+#N canvas 0 0 489 250 help 0;
+#N canvas 0 0 450 300 visualize? 0;
+#X text 18 91 Visualization is done using either a GEM OpenGL window
+\, or just animate the data structure alone. Better don't use both
+at the same time. In GDS-mode you can set the frequency of the internal
+metro \, to accelerate or slow down the simulation.;
+#X text 19 172 In edit mode and while visualization is active \, you
+can move around the masses. The red masses will not receive any other
+forces from the model. Use the "forces" and "props" subpatches to change
+parameters of links and send forces.;
+#X text 56 39 Help on Visualization;
+#X restore 301 169 pd visualize?;
+#N canvas 0 0 450 300 append? 0;
+#X text 36 72 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.;
+#X text 29 29 Help on Mass creation;
+#X text 34 122 Use the greenish "geos" bang to open a subwindow for
+creating masses in geometric formations: circles and rectangles.;
+#X restore 303 70 pd append?;
+#N canvas 0 0 537 336 links? 0;
+#X text 47 77 Links are created by selecting at least two masses 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. :);
+#X text 32 26 Help on Link Creation;
+#X text 44 148 The keyboard shortcut "L" is only active \, if the green
+toggle "Keys" is set to on. Otherwise use the yellow "link" bang.;
+#X text 45 196 More ways to create links: left-to-right connects masses
+from left to right. The keyboard shortcut for this is "R" (for "Right"
+\, as "L" is for "Links"). one2many will connect one mass to many others
+and has no shortcuts. First select the first mass \, then set the toggle
+to 1 \, after that select the other masses and set toggle to 0;
+#X restore 302 94 pd links?;
+#N canvas 0 0 450 300 generate? 0;
+#X text 19 98 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 text 31 38 Help on MSD generation;
+#X restore 302 144 pd generate?;
+#N canvas 0 0 215 157 minmax? 0;
+#X text 38 35 Data structs and;
+#X text 38 49 GEM like different;
+#X text 38 63 coordinate systems.;
+#X text 38 87 Set the mapping;
+#X text 38 101 between both here.;
+#X restore 302 118 pd minmax?;
+#X text 39 18 HELP / USAGE;
+#X text 143 71 How to create masses:;
+#X text 143 94 How to create links:;
+#X text 102 118 Coordinates in MSD-Editor:;
+#X text 109 146 Generate the MSD-Network:;
+#X text 17 170 Visualize the network using GEM or DS:;
+#X restore 95 554 pd help;
+#X obj 32 431 tgl 16 0 \$0-fullscreen \$0-fullscreen fullscreen 0 -6
+0 8 -195568 -1 -1 0 1;
+#X obj 319 408 nbx 5 14 -1e+37 1e+37 0 0 empty empty link-sid 0 -6
+0 10 -195568 -1 -1 0 256;
+#X obj 95 582 structures;
+#X obj 110 50 morelinks;
+#X connect 6 0 7 0;
+#X connect 6 1 8 0;
+#X connect 7 0 6 0;
+#X connect 8 0 6 1;
+#X connect 9 0 6 2;
+#X connect 13 0 12 0;
+#X connect 14 0 12 0;
+#X connect 30 0 11 1;
+#X connect 31 0 11 2;
+#X connect 32 0 11 0;
+#X connect 38 0 11 3;