aboutsummaryrefslogtreecommitdiff
path: root/editor/msd-editor.pd
blob: eb6b9ce32c8a7b37d35f713a7d07f1b617183af7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
#N struct liaison float x1 float y1 float x2 float y2 float mid1 float
mid2 float lid float K float D float P float Lmin float Lmax float
sid;
#N struct mass float x float y float mid float mob float M float sid
;
#N canvas 249 108 419 631 10;
#X obj 9 50 cnv 15 400 220 empty empty EDIT 20 12 1 14 -233017 -66577
0;
#X obj 9 275 cnv 15 400 60 empty empty CREATE 20 12 1 14 -195568 -66577
0;
#X obj 10 340 cnv 15 400 140 empty empty CONTROL 20 12 1 14 -233017
-66577 0;
#X obj 211 295 bng 24 250 50 0 \$0-generate \$0-generate generate 0
-6 0 8 -24198 -1 -1;
#N canvas 392 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 obj 177 113 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 279 192 s pollpos;
#X obj 165 22 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 415 439 r \$0-gem-links-on;
#X obj 279 171 spigot 1;
#X obj 330 145 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 obj 535 568 pack 0 0 0;
#X obj 540 699 s \$0-msd;
#X msg 537 594 grabMass \$1 \$2 \$3;
#X obj 602 540 t b f;
#X obj 535 540 - 4;
#X obj 572 539 + 4;
#X obj 538 506 gemmouse 8 -8;
#X obj 537 652 spigot 1;
#X obj 591 630 r \$0-gemgrab;
#X obj 353 175 s GEMBANG-GLOBAL;
#X msg 432 671 0.6 0.8 0.4;
#X obj 167 137 t b b b b;
#X msg 167 216 get massesPos \, get linksPos \, get massesSpeeds;
#X floatatom 265 121 5 0 0 0 - - -;
#X msg 293 85 frame \$1;
#X floatatom 331 67 5 0 0 0 - - -;
#X obj 547 394 r \$0-show-mids;
#X connect 0 0 41 0;
#X connect 0 0 42 0;
#X connect 3 0 59 0;
#X connect 4 0 14 0;
#X connect 4 0 37 0;
#X connect 4 1 15 0;
#X connect 4 1 38 0;
#X connect 6 0 5 0;
#X connect 8 0 46 0;
#X connect 8 1 6 0;
#X connect 9 0 8 0;
#X connect 9 0 14 1;
#X connect 9 0 15 1;
#X connect 9 0 28 0;
#X connect 13 0 27 0;
#X connect 13 0 31 0;
#X connect 14 0 1 0;
#X connect 15 0 2 0;
#X connect 18 0 26 0;
#X connect 19 0 23 0;
#X connect 20 0 31 1;
#X connect 21 0 22 0;
#X connect 22 0 13 0;
#X connect 23 0 9 0;
#X connect 23 1 21 0;
#X connect 24 0 25 0;
#X connect 25 0 9 0;
#X connect 26 0 13 0;
#X connect 26 1 24 0;
#X connect 27 0 29 0;
#X connect 28 0 30 0;
#X connect 31 0 59 0;
#X connect 32 0 1 1;
#X connect 33 0 2 1;
#X connect 34 0 17 0;
#X connect 35 0 34 1;
#X connect 36 0 38 1;
#X connect 36 0 37 1;
#X connect 37 0 11 0;
#X connect 38 0 12 0;
#X connect 39 0 41 1;
#X connect 41 0 40 0;
#X connect 42 0 7 0;
#X connect 42 0 4 0;
#X connect 42 1 10 0;
#X connect 43 0 44 0;
#X connect 45 0 46 1;
#X connect 46 0 47 0;
#X connect 47 0 5 0;
#X connect 48 0 50 0;
#X connect 50 0 55 0;
#X connect 51 0 48 0;
#X connect 51 1 48 2;
#X connect 52 0 48 0;
#X connect 53 0 48 1;
#X connect 54 0 52 0;
#X connect 54 1 53 0;
#X connect 54 2 51 0;
#X connect 55 0 49 0;
#X connect 56 0 55 1;
#X connect 58 0 44 1;
#X connect 59 0 60 0;
#X connect 59 1 42 0;
#X connect 59 2 34 0;
#X connect 59 3 57 0;
#X connect 60 0 42 0;
#X connect 62 0 3 0;
#X connect 63 0 62 0;
#X connect 64 0 1 2;
#X restore 31 416 pd activate;
#X obj 31 381 tgl 24 0 empty empty GEM 0 -6 0 8 -195568 -1 -1 0 1;
#X obj 67 381 tgl 24 0 empty empty Datastructures 0 -6 0 8 -1 -262144
-1 0 1;
#X floatatom 103 396 5 10 1000 2 frequency - -;
#N canvas 602 189 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 4000 1;
#X obj 295 230 vsl 24 128 -5 5 0 1 empty empty empty 0 -8 0 8 -262144
-1 -1 8496 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 450 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 452 pd props;
#X obj 342 218 s pd-data;
#X msg 342 194 clear;
#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 800 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 -4 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 4 256;
#N canvas 0 0 450 300 l 0;
#X msg 35 78 0;
#X obj 35 41 loadbang;
#X obj 36 136 loadbang;
#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 msg 128 75 800;
#X msg 36 173 -4;
#X msg 129 170 4;
#X connect 0 0 3 0;
#X connect 1 0 0 0;
#X connect 1 0 7 0;
#X connect 2 0 8 0;
#X connect 2 0 9 0;
#X connect 7 0 4 0;
#X connect 8 0 5 0;
#X connect 9 0 6 0;
#X restore 82 19 pd l;
#X coords 0 0 1 1 132 135 1;
#X restore 252 50 pd minmax;
#X obj 177 295 tgl 24 0 MSD-TYPE \$0-MSD-TYPE 3-D 0 -6 0 8 -233017
-1 -1 1 1;
#X obj 28 96 msd_append;
#X obj 10 566 cnv 15 400 60 empty empty DOC 20 12 1 14 -233017 -66577
0;
#X obj 182 381 tgl 15 0 \$0-gem-masses-on empty gem_m 0 -6 0 8 -225280
-1 -1 0 1;
#X obj 218 381 tgl 15 0 \$0-gem-links-on empty gem_l 0 -6 0 8 -225271
-1 -1 0 1;
#X obj 182 416 tgl 15 0 \$0-poll-ds \$0-poll-ds poll-ds -10 -6 0 8
-225280 -1 -1 0 1;
#X obj 218 416 tgl 15 0 \$0-set-ds \$0-set-ds set-ds 0 -6 0 8 -225271
-1 -1 0 1;
#X text 28 305 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 485 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 116 489 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 222 489 pd save;
#X obj 285 374 vsl 15 64 0 10 0 0 empty empty D 0 -8 0 8 -195568 -1
-1 0 1;
#X obj 302 374 vsl 15 64 0 1 0 0 empty empty L 0 -8 0 8 -195568 -1
-1 0 1;
#X obj 268 374 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 restore 197 573 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 573 pd NEWS;
#N canvas 387 277 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 obj 73 654 mass-set 0;
#X obj 109 596 mass-set 1;
#X obj 130 639 mass-set 2;
#X obj 188 434 mass-set 3;
#X restore 523 45 pd setter;
#N canvas 0 0 1257 922 lsetter 0;
#X obj 130 639 link-set 0;
#X obj 109 596 link-set 1;
#X obj 109 596 link-set 2;
#X obj 73 654 link-set 3;
#X obj 73 654 link-set 4;
#X obj 73 654 link-set 5;
#X restore 522 68 pd lsetter;
#X text 506 21 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 627 48 clear;
#X obj 627 75 s pd-setter;
#X obj 627 95 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 415 123 pd msd-type;
#N canvas 6 378 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;
#N canvas 0 0 450 300 msynth 0;
#X restore 522 89 pd msynth;
#N canvas 0 0 1257 922 lsynth 0;
#X restore 521 109 pd lsynth;
#X obj 627 117 s pd-msynt;
#X obj 627 137 s pd-lsynth;
#X obj 63 101 tgl 16 0 \$0-gensynth \$0-gensynth l-synthesis 0 -6 0
8 -262144 -1 -1 0 1;
#X symbolatom 96 105 10 0 0 1 link-synth - #0-lsynth-name;
#X symbolatom 99 138 10 0 0 1 masses-synth - #0-msynth-name;
#X obj 62 137 tgl 16 0 \$0-gensynth-m \$0-gensynth-m m-synthesis 0
-6 0 8 -262144 -1 -1 0 1;
#X obj 420 381 netsend;
#X obj 420 354 prepend send;
#X msg 419 407 connect localhost 7777;
#N canvas 0 0 582 592 save-trans 0;
#X obj 28 53 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 28 72 savepanel;
#X obj 28 121 s \$0-mid2msdid;
#X msg 28 95 write \$1;
#X text 118 84 Save mis2msdid table to disk.;
#X obj 76 42 inlet;
#X connect 0 0 1 0;
#X connect 1 0 3 0;
#X connect 3 0 2 0;
#X connect 5 0 1 0;
#X restore 413 180 pd save-trans;
#X msg 413 157 bang;
#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 38 0 47 0;
#X connect 38 0 48 0;
#X connect 41 0 37 0;
#X connect 42 0 33 0;
#X connect 54 0 53 0;
#X connect 55 0 53 0;
#X connect 57 0 56 0;
#X restore 248 573 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 573 pd help;
#X obj 32 450 tgl 16 0 \$0-fullscreen \$0-fullscreen fullscreen 0 -6
0 8 -195568 -1 -1 0 1;
#X obj 319 427 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 601 structures;
#X obj 252 194 cnv 15 84 42 empty empty empty 2 8 1 10 -1 -66577 0
;
#X obj 253 195 cnv 15 82 40 empty empty EDIT_AREA 2 8 1 10 -225271
-66577 0;
#N canvas 0 35 1022 952 data 0;
#X scalar liaison 130.917 639.836 188 434 2 3 0 10 2.5 1 0 1e+10 0
\;;
#X scalar liaison 109.715 596.152 188 434 1 3 1 10 2.5 1 0 1e+10 0
\;;
#X scalar liaison 109.715 596.152 130.917 639.836 1 2 2 10 2.5 1 0
1e+10 0 \;;
#X scalar liaison 73.418 654.69 188 434 0 3 3 10 2.5 1 0 1e+10 0 \;
;
#X scalar liaison 73.418 654.69 130.917 639.836 0 2 4 10 2.5 1 0 1e+10
0 \;;
#X scalar liaison 73.418 654.69 109.715 596.152 0 1 5 10 2.5 1 0 1e+10
0 \;;
#X scalar mass 73.418 654.69 0 0 100 0 \;;
#X scalar mass 109.715 596.152 1 0 100 0 \;;
#X scalar mass 130.917 639.836 2 0 100 0 \;;
#X scalar mass 188 434 3 900 100 0 \;;
#X restore 269 214 pd data;
#X obj 265 295 bng 24 250 50 0 \$0-set-from-ds \$0-set-from-ds set-from-ds
0 -6 0 8 -225271 -1 -1;
#N canvas 0 0 450 300 testing 0;
#N canvas 39 482 450 300 mass-lines 0;
#X text 26 19 Paint a line of masses between two masses. First select
two masses \, then press this bang:;
#X obj 41 86 bng 20 250 50 0 \$0-massline \$0-massline massline 0 -6
0 8 -262144 -1 -1;
#N canvas 65 73 818 854 make-ml 0;
#X obj 254 188 pointer mass;
#X msg 254 156 traverse pd-data \, vnext 1;
#X obj 455 170 s pd-data;
#X msg 455 149 sort;
#X text 489 149 first sort left to right;
#X obj 254 132 t b b b;
#X obj 301 111 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 141 186 ds-vnext;
#X obj 380 390 get mass x y;
#X obj 252 394 get mass x y;
#X obj 341 531 -;
#X obj 265 529 -;
#X obj 344 585 / 5;
#X obj 263 588 / 5;
#X obj 48 368 - 1;
#X obj 33 271 inlet;
#X obj 28 393 f 4;
#X obj 185 722 pack 0 0 0;
#X obj 91 275 inlet;
#X obj 87 296 select 0 1;
#X msg 90 322 0;
#X msg 123 321 900;
#X obj 214 98 t b b;
#X obj 219 68 r \$0-massline;
#X obj 185 777 s \$0-newmass;
#X obj 276 271 f 0;
#X obj 306 271 + 1;
#X msg 289 244 0;
#X obj 280 332 route 1 0;
#X obj 254 211 t b b p;
#X obj 280 300 pack 0 p;
#X obj 322 70 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 31 483 countto;
#X obj 33 456 pack 1 0;
#X obj 30 420 t b f;
#X obj 91 572 f 0;
#X obj 147 591 *;
#X obj 109 621 +;
#X obj 193 641 f 0;
#X obj 243 646 *;
#X obj 211 674 +;
#X obj 107 647 t b f;
#X obj 124 693 f;
#X obj 30 751 print countto;
#X obj 607 632 inlet linkit;
#X obj 543 727 link2masses;
#X obj 615 677 r \$0-link-param;
#X obj 622 479 pointer;
#X obj 495 477 pointer;
#X text 548 479 first;
#X text 686 477 last mass;
#X obj 69 514 t f b b f;
#X obj 536 617 pack p p;
#X obj 526 513 r \$0-lastmass;
#X obj 482 545 pointer;
#X obj 413 488 t b b;
#X obj 225 355 t b a a;
#X obj 415 458 select 1;
#X obj 577 366 select 1;
#X obj 476 511 t b;
#X obj 525 592 t p p;
#X obj 610 426 t b b b;
#X obj 557 671 spigot;
#X connect 0 0 29 0;
#X connect 0 1 7 0;
#X connect 1 0 0 0;
#X connect 3 0 2 0;
#X connect 5 0 1 0;
#X connect 5 2 3 0;
#X connect 5 2 27 0;
#X connect 6 0 5 0;
#X connect 7 0 0 0;
#X connect 8 0 11 1;
#X connect 8 0 35 1;
#X connect 8 1 10 1;
#X connect 8 1 38 1;
#X connect 9 0 11 0;
#X connect 9 1 10 0;
#X connect 10 0 12 0;
#X connect 11 0 13 0;
#X connect 12 0 39 1;
#X connect 13 0 36 1;
#X connect 14 0 16 1;
#X connect 15 0 13 1;
#X connect 15 0 12 1;
#X connect 15 0 14 0;
#X connect 16 0 34 0;
#X connect 17 0 24 0;
#X connect 18 0 19 0;
#X connect 19 0 20 0;
#X connect 19 1 21 0;
#X connect 20 0 42 1;
#X connect 21 0 42 1;
#X connect 22 1 5 0;
#X connect 23 0 22 0;
#X connect 25 0 26 0;
#X connect 25 0 30 0;
#X connect 26 0 25 1;
#X connect 27 0 25 1;
#X connect 28 0 56 0;
#X connect 28 1 8 0;
#X connect 28 1 48 1;
#X connect 29 0 7 0;
#X connect 29 1 25 0;
#X connect 29 2 30 1;
#X connect 30 0 28 0;
#X connect 31 0 22 0;
#X connect 32 0 43 0;
#X connect 32 0 51 0;
#X connect 33 0 32 0;
#X connect 34 0 33 0;
#X connect 34 1 33 1;
#X connect 34 1 58 1;
#X connect 35 0 37 0;
#X connect 36 0 37 1;
#X connect 37 0 41 0;
#X connect 38 0 40 0;
#X connect 39 0 40 1;
#X connect 40 0 17 2;
#X connect 41 0 42 0;
#X connect 41 1 17 1;
#X connect 42 0 17 0;
#X connect 44 0 62 1;
#X connect 46 0 45 1;
#X connect 47 0 52 1;
#X connect 48 0 52 1;
#X connect 51 0 57 0;
#X connect 51 1 35 0;
#X connect 51 2 38 0;
#X connect 51 3 39 0;
#X connect 51 3 36 0;
#X connect 52 0 62 0;
#X connect 53 0 54 1;
#X connect 54 0 60 0;
#X connect 55 0 54 0;
#X connect 55 1 48 0;
#X connect 56 0 16 0;
#X connect 56 1 9 0;
#X connect 56 2 47 1;
#X connect 57 0 55 0;
#X connect 57 1 58 0;
#X connect 58 0 61 0;
#X connect 58 1 59 0;
#X connect 59 0 54 0;
#X connect 60 0 52 1;
#X connect 60 1 52 0;
#X connect 61 0 54 0;
#X connect 61 1 47 0;
#X connect 61 2 59 0;
#X connect 62 0 45 0;
#X restore 108 92 pd make-ml;
#X obj 173 69 tgl 15 0 empty empty fix/mob 0 -6 0 8 -262144 -1 -1 0
1;
#X floatatom 108 71 5 0 0 2 howmany - -;
#X obj 73 89 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
;
#X connect 3 0 2 1;
#X connect 4 0 2 0;
#X connect 5 0 2 2;
#X restore 40 32 pd mass-lines;
#N canvas 14 85 865 862 mousepaint 0;
#X obj 45 97 tot data;
#X obj 99 136 route motion mouseup mouse key;
#X msg 45 69 capture \$1;
#X obj 45 46 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
;
#X obj 106 258 pack 0 0 0;
#X obj 106 293 s \$0-newmass;
#X obj 455 410 link2masses;
#X obj 527 360 r \$0-link-param;
#X obj 457 192 r \$0-lastmass;
#X obj 407 190 t b;
#X obj 456 271 t p p;
#X obj 204 194 print mouse;
#X obj 592 194 r \$0-lastmass;
#X obj 548 226 pointer;
#X msg 134 232 \$1;
#X msg 160 232 \$2;
#X obj 455 318 pack p p;
#X obj 413 224 pointer;
#X msg 96 228 900;
#X obj 134 166 t b a a;
#X msg 49 183 \$3;
#X obj 51 205 select 1 2;
#X msg 41 229 0;
#X obj 100 33 inlet;
#X connect 0 2 1 0;
#X connect 1 2 11 0;
#X connect 1 2 19 0;
#X connect 2 0 0 0;
#X connect 3 0 2 0;
#X connect 4 0 5 0;
#X connect 7 0 6 1;
#X connect 8 0 17 1;
#X connect 9 0 17 0;
#X connect 10 0 16 1;
#X connect 10 1 16 0;
#X connect 12 0 13 1;
#X connect 14 0 4 1;
#X connect 15 0 4 2;
#X connect 16 0 6 0;
#X connect 17 0 10 0;
#X connect 18 0 4 0;
#X connect 19 0 17 0;
#X connect 19 1 20 0;
#X connect 19 2 14 0;
#X connect 19 2 15 0;
#X connect 20 0 21 0;
#X connect 21 0 22 0;
#X connect 21 1 18 0;
#X connect 22 0 4 0;
#X connect 23 0 2 0;
#X restore 31 97 pd mousepaint;
#X obj 31 74 tgl 15 0 empty empty capture 0 -6 0 8 -262144 -1 -1 0
1;
#X connect 2 0 1 0;
#X restore 175 601 pd testing;
#X obj 24 79 r \$0-newmass;
#X obj 17 226 s \$0-lastmass;
#X obj 110 250 s \$0-link-param;
#X obj 110 50 morelinks;
#N canvas 0 0 450 300 guts 0;
#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;
#N canvas 0 0 859 632 1002-make-lsynth 0;
#X obj 190 186 pack 0 0 0 s;
#X obj 190 121 spigot;
#X obj 283 149 r \$0-lsynth-name;
#X msg 190 209 obj \$1 \$2 \$4 \$3;
#X obj 190 77 inlet;
#X obj 190 153 unpack 0 0 0;
#X obj 234 66 r \$0-gensynth;
#X obj 190 234 s pd-lsynth;
#X connect 0 0 3 0;
#X connect 1 0 5 0;
#X connect 2 0 0 3;
#X connect 3 0 7 0;
#X connect 4 0 1 0;
#X connect 5 0 0 0;
#X connect 5 1 0 1;
#X connect 5 2 0 2;
#X connect 6 0 1 1;
#X restore 590 397 pd \$0-make-lsynth;
#N canvas 0 0 859 632 1002-make-msynth 0;
#X obj 190 186 pack 0 0 0 s;
#X msg 190 209 obj \$1 \$2 \$4 \$3;
#X obj 190 77 inlet;
#X obj 190 153 unpack 0 0 0;
#X obj 192 232 s pd-msynth;
#X obj 285 149 r \$0-msynth-name;
#X obj 236 66 r \$0-gensynth-m;
#X obj 190 121 spigot;
#X connect 0 0 1 0;
#X connect 1 0 4 0;
#X connect 2 0 7 0;
#X connect 3 0 0 0;
#X connect 3 1 0 1;
#X connect 3 2 0 2;
#X connect 5 0 0 3;
#X connect 6 0 7 1;
#X connect 7 0 3 0;
#X restore 290 383 pd \$0-make-msynth;
#X obj 328 126 spigot 0;
#X obj 329 167 s pd-msynth;
#X obj 419 167 s pd-lsynth;
#X msg 329 144 clear;
#X obj 418 126 spigot 0;
#X msg 419 144 clear;
#X obj 469 99 r \$0-gensynth;
#X obj 379 76 r \$0-gensynth-m;
#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 1 3 25 0;
#X connect 1 3 29 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 4 0 24 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 10 0 23 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 connect 25 0 28 0;
#X connect 28 0 26 0;
#X connect 29 0 30 0;
#X connect 30 0 27 0;
#X connect 31 0 29 1;
#X connect 32 0 25 1;
#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 106 127 pd generator;
#N canvas 444 101 836 641 set 0;
#N canvas 311 93 877 551 getter 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 148 31 inlet;
#X obj 214 494 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;
#X obj 214 444 pack 0 0 0;
#X connect 0 5 1 0;
#X connect 1 0 2 0;
#X connect 2 0 5 0;
#X connect 2 1 7 0;
#X connect 3 0 0 0;
#X connect 5 0 7 0;
#X connect 5 1 8 0;
#X connect 6 0 9 0;
#X connect 6 1 9 1;
#X connect 7 0 2 0;
#X connect 8 0 6 0;
#X connect 8 1 6 1;
#X connect 8 2 9 2;
#X connect 9 0 4 0;
#X restore 228 102 pd getter;
#X obj 228 179 s \$0-msd;
#X msg 213 140 posX \$3 \$1;
#X msg 309 137 posY \$3 \$2;
#X obj 227 80 r \$0-set-from-ds;
#X connect 0 0 2 0;
#X connect 0 0 3 0;
#X connect 2 0 1 0;
#X connect 3 0 1 0;
#X connect 4 0 0 0;
#X restore 148 105 pd set;
#N canvas 410 39 529 725 edits 0;
#N canvas 203 212 450 300 1002-show 0;
#X obj 101 125 makefilename pd-%s;
#X obj 50 153 pack 0 s;
#X obj 50 63 t f b;
#X msg 50 202 \; \$2 vis \$1;
#X obj 50 33 inlet;
#X obj 101 95 symbol \$0-edit-mass;
#X connect 0 0 1 1;
#X connect 1 0 3 0;
#X connect 2 0 1 0;
#X connect 2 1 5 0;
#X connect 4 0 2 0;
#X connect 5 0 0 0;
#X restore 234 58 pd \$0-show;
#X obj 234 34 tgl 20 0 empty \$0-show-masseditor edit_mass 0 -6 0 8
-262144 -1 -1 0 1;
#N canvas 786 268 360 441 1002-edit-mass 0;
#X obj 48 68 nbx 5 14 -1e+37 1e+37 0 0 \$0-mob-set \$0-mob-get mob_(900=fixed)
0 -8 1 10 -262144 -1 -1 0 256;
#X obj 48 31 nbx 5 15 -1e+37 1e+37 0 0 \$0-mid-set \$0-mid-get mass-id
0 -6 1 10 -1 -233017 -1 0 256;
#X obj 48 106 nbx 5 14 -1e+37 1e+37 0 0 \$0-M-set \$0-M-get Mass 0
-6 1 10 -262144 -1 -1 0 256;
#X obj 48 146 nbx 5 14 -1e+37 1e+37 0 0 \$0-sid-set \$0-sid-get SymbolicID
0 -6 1 10 -262144 -1 -1 0 256;
#X obj 39 403 s \$0-edit-mass;
#X msg 39 379 vnext 1;
#X obj 48 174 nbx 5 14 -1e+37 1e+37 0 0 \$0-mx-set \$0-mx-get x 0 -6
1 10 -262144 -1 -1 0 256;
#X obj 48 202 nbx 5 14 -1e+37 1e+37 0 0 \$0-my-set \$0-my-get y 0 -6
1 10 -262144 -1 -1 0 256;
#X msg 40 356 traverse pd-data;
#X obj 218 29 nbx 5 15 -1e+37 1e+37 0 0 \$0-set-l-lid \$0-get-l-lid
link-id 0 -6 1 10 -1 -233017 -1 0 256;
#X msg 215 378 vnext 1;
#X obj 215 401 s \$0-edit-link;
#X obj 218 63 nbx 5 15 -1e+37 1e+37 0 0 \$0-set-l-mid1 \$0-get-l-mid1
mass1 0 -6 1 10 -262144 -1 -1 0 256;
#X obj 218 95 nbx 5 15 -1e+37 1e+37 0 0 \$0-set-l-mid2 \$0-get-l-mid2
mass2 0 -6 1 10 -262144 -1 -1 0 256;
#X obj 218 131 nbx 5 15 -1e+37 1e+37 0 0 \$0-set-l-sid \$0-get-l-sid
SymbolicID 0 -6 1 10 -262144 -1 -1 0 256;
#X obj 218 171 nbx 5 15 -1e+37 1e+37 0 0 \$0-set-l-K \$0-get-l-K K
0 -6 1 10 -262144 -1 -1 0 256;
#X obj 218 201 nbx 5 15 -1e+37 1e+37 0 0 \$0-set-l-D \$0-get-l-D D
0 -6 1 10 -262144 -1 -1 0 256;
#X obj 218 233 nbx 5 15 -1e+37 1e+37 0 0 \$0-set-l-P \$0-get-l-P P
0 -6 1 10 -262144 -1 -1 0 256;
#X obj 218 265 nbx 5 15 -1e+37 1e+37 0 0 \$0-set-l-Lmin \$0-get-l-Lmin
Lmin 0 -6 1 10 -262144 -1 -1 0 256;
#X obj 218 301 nbx 5 15 -1e+37 1e+37 0 0 \$0-set-l-Lmax \$0-get-l-Lmax
Lmax 0 -6 1 10 -262144 -1 -1 0 256;
#X msg 216 354 traverse pd-data;
#X text 39 331 Next mass:;
#X text 215 326 Next link:;
#X connect 5 0 4 0;
#X connect 8 0 4 0;
#X connect 10 0 11 0;
#X connect 20 0 11 0;
#X restore 42 33 pd \$0-edit-mass;
#N canvas 0 0 589 777 1002-editmass-guts 0;
#X obj 80 289 s \$0-mob-get;
#X obj 45 318 s \$0-mid-get;
#X obj 115 258 s \$0-M-get;
#X obj 151 230 s \$0-sid-get;
#X msg 84 175 vnext 1;
#X obj 20 63 r \$0-edit-mass;
#X obj 45 83 loadbang;
#X obj 45 148 pointer mass;
#X obj 79 382 r \$0-mob-set;
#X obj 41 411 r \$0-mid-set;
#X obj 153 323 r \$0-sid-set;
#X obj 115 351 r \$0-M-set;
#X obj 14 175 t p p;
#X obj 267 435 set mass M;
#X obj 350 435 set mass sid;
#X obj 170 436 set mass mob;
#X obj 41 439 set mass mid;
#X obj 252 322 pointer mass;
#X msg 45 110 traverse pd-data;
#X obj 45 201 get mass mid mob M sid x y;
#X obj 193 258 s \$0-mx-get;
#X obj 244 234 s \$0-my-get;
#X obj 99 515 set mass x;
#X obj 253 519 set mass y;
#X obj 99 487 r \$0-mx-set;
#X obj 252 495 r \$0-my-set;
#X connect 4 0 7 0;
#X connect 5 0 7 0;
#X connect 6 0 18 0;
#X connect 7 0 12 0;
#X connect 7 1 4 0;
#X connect 7 2 18 0;
#X connect 8 0 15 0;
#X connect 9 0 16 0;
#X connect 10 0 14 0;
#X connect 11 0 13 0;
#X connect 12 0 19 0;
#X connect 12 1 17 0;
#X connect 17 0 16 1;
#X connect 17 0 15 1;
#X connect 17 0 13 1;
#X connect 17 0 14 1;
#X connect 17 0 23 1;
#X connect 17 0 22 1;
#X connect 18 0 7 0;
#X connect 19 0 1 0;
#X connect 19 1 0 0;
#X connect 19 2 2 0;
#X connect 19 3 3 0;
#X connect 19 4 20 0;
#X connect 19 5 21 0;
#X connect 24 0 22 0;
#X connect 25 0 23 0;
#X restore 43 59 pd \$0-editmass-guts;
#N canvas 599 247 589 777 1002-editlinks-guts 0;
#X msg 84 175 vnext 1;
#X obj 45 83 loadbang;
#X obj 14 175 t p p;
#X msg 45 110 traverse pd-data;
#X obj 20 63 r \$0-edit-link;
#X obj 45 148 pointer liaison;
#X obj 325 279 s \$0-get-l-sid;
#X obj 289 308 s \$0-get-l-Lmax;
#X obj 249 338 s \$0-get-l-Lmin;
#X obj 211 370 s \$0-get-l-P;
#X obj 178 398 s \$0-get-l-D;
#X obj 130 419 s \$0-get-l-K;
#X obj 10 226 get liaison mid1 mid2 lid K D P Lmin Lmax sid;
#X obj 17 544 s \$0-get-l-mid1;
#X obj 52 493 s \$0-get-l-mid2;
#X obj 92 469 s \$0-get-l-lid;
#N canvas 266 70 710 834 1002-lset 0;
#X obj 31 44 inlet;
#X obj 41 65 s \$0-current-set-link;
#X obj 483 69 r \$0-current-set-link;
#X obj 372 38 r \$0-set-l-mid2;
#X obj 379 98 set liaison mid2;
#X obj 169 547 r \$0-current-set-link;
#X obj 64 550 r \$0-set-l-lid;
#X obj 65 576 set liaison lid;
#X obj 170 493 r \$0-current-set-link;
#X obj 65 496 r \$0-set-l-K;
#X obj 66 522 set liaison K;
#X obj 164 443 r \$0-current-set-link;
#X obj 67 440 r \$0-set-l-D;
#X obj 158 371 r \$0-current-set-link;
#X obj 68 468 set liaison D;
#X obj 64 398 set liaison P;
#X obj 61 368 r \$0-set-l-P;
#X obj 169 316 r \$0-current-set-link;
#X obj 56 311 r \$0-set-l-Lmin;
#X obj 59 339 set liaison Lmin;
#X obj 171 248 r \$0-current-set-link;
#X obj 59 271 set liaison Lmax;
#X obj 56 243 r \$0-set-l-Lmax;
#X obj 174 178 r \$0-current-set-link;
#X obj 69 181 r \$0-set-l-sid;
#X obj 70 207 set liaison sid;
#X obj 408 179 pointer mass;
#X msg 409 142 traverse pd-data \, next;
#X msg 362 180 next;
#X obj 408 226 get mass mid;
#X obj 399 273 select;
#X obj 406 202 t p p;
#X obj 402 298 pointer;
#X obj 402 337 get mass x y;
#X obj 374 67 t f b f;
#X obj 503 360 r \$0-current-set-link;
#X obj 397 386 set liaison x2 y2;
#X obj 504 449 r \$0-current-set-link;
#X obj 429 559 pointer mass;
#X msg 438 528 traverse pd-data \, next;
#X msg 383 560 next;
#X obj 429 606 get mass mid;
#X obj 420 653 select;
#X obj 427 582 t p p;
#X obj 423 678 pointer;
#X obj 423 717 get mass x y;
#X obj 395 447 t f b f;
#X obj 524 740 r \$0-current-set-link;
#X obj 391 418 r \$0-set-l-mid1;
#X obj 400 478 set liaison mid1;
#X obj 418 766 set liaison x1 y1;
#X obj 401 501 t b b;
#X obj 396 529 until;
#X obj 363 117 t b b;
#X obj 358 145 until;
#X connect 0 0 1 0;
#X connect 2 0 4 1;
#X connect 3 0 34 0;
#X connect 5 0 7 1;
#X connect 6 0 7 0;
#X connect 8 0 10 1;
#X connect 9 0 10 0;
#X connect 11 0 14 1;
#X connect 12 0 14 0;
#X connect 13 0 15 1;
#X connect 16 0 15 0;
#X connect 17 0 19 1;
#X connect 18 0 19 0;
#X connect 20 0 21 1;
#X connect 22 0 21 0;
#X connect 23 0 25 1;
#X connect 24 0 25 0;
#X connect 26 0 31 0;
#X connect 26 1 28 0;
#X connect 26 2 54 1;
#X connect 27 0 26 0;
#X connect 28 0 26 0;
#X connect 29 0 30 0;
#X connect 30 0 32 0;
#X connect 31 0 29 0;
#X connect 31 1 32 1;
#X connect 32 0 33 0;
#X connect 33 0 36 0;
#X connect 33 1 36 1;
#X connect 34 0 4 0;
#X connect 34 1 53 0;
#X connect 34 2 30 1;
#X connect 35 0 36 2;
#X connect 37 0 49 1;
#X connect 38 0 43 0;
#X connect 38 1 40 0;
#X connect 38 2 52 1;
#X connect 39 0 38 0;
#X connect 40 0 38 0;
#X connect 41 0 42 0;
#X connect 42 0 44 0;
#X connect 43 0 41 0;
#X connect 43 1 44 1;
#X connect 44 0 45 0;
#X connect 45 0 50 0;
#X connect 45 1 50 1;
#X connect 46 0 49 0;
#X connect 46 1 51 0;
#X connect 46 2 42 1;
#X connect 47 0 50 2;
#X connect 48 0 46 0;
#X connect 51 0 52 0;
#X connect 51 1 39 0;
#X connect 52 0 40 0;
#X connect 53 0 54 0;
#X connect 53 1 27 0;
#X connect 54 0 28 0;
#X restore 46 201 pd \$0-lset;
#X msg 19 521 set \$1;
#X msg 50 286 set \$1;
#X msg 84 314 set \$1;
#X msg 124 288 set \$1;
#X msg 168 320 set \$1;
#X msg 202 278 set \$1;
#X msg 242 302 set \$1;
#X msg 278 272 set \$1;
#X msg 321 251 set \$1;
#X connect 0 0 5 0;
#X connect 1 0 3 0;
#X connect 2 0 12 0;
#X connect 2 1 16 0;
#X connect 3 0 5 0;
#X connect 4 0 5 0;
#X connect 5 0 2 0;
#X connect 5 1 0 0;
#X connect 5 2 3 0;
#X connect 12 0 17 0;
#X connect 12 1 18 0;
#X connect 12 2 19 0;
#X connect 12 3 20 0;
#X connect 12 4 21 0;
#X connect 12 5 22 0;
#X connect 12 6 23 0;
#X connect 12 7 24 0;
#X connect 12 8 25 0;
#X connect 17 0 13 0;
#X connect 18 0 14 0;
#X connect 19 0 15 0;
#X connect 20 0 11 0;
#X connect 21 0 10 0;
#X connect 22 0 9 0;
#X connect 23 0 8 0;
#X connect 24 0 7 0;
#X connect 25 0 6 0;
#X restore 43 87 pd \$0-editlinks-guts;
#X connect 1 0 0 0;
#X restore 118 156 pd edits;
#X restore 348 573 pd guts;
#X obj 29 249 tgl 18 0 \$0-show-masseditor empty EditParam 22 9 0 8
-1 -233017 -1 0 1;
#X obj 181 355 nbx 2 14 0 99 0 0 \$0-show-mids \$0-show-mids show-mids
0 -6 0 8 -225280 -1 -1 0 256;
#N canvas 0 0 106 49 obj 0;
#X obj 2 3 cnv 15 100 40 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 7 18 bng 20 250 50 0 empty empty load 0 -6 0 8 -258699 -1 -1
;
#X obj 38 17 tgl 15 0 RENDER-PRIMTRI RENDER-PRIMTRI TRI 0 -6 0 8 -262131
-1 -1 0 1;
#X obj 110 6 obj-render;
#X obj 62 17 tgl 15 0 \$0-gen-tri \$0-gen-tri Gen-TRI 0 -6 0 8 -261681
-1 -1 0 1;
#X obj 111 26 s \$0-msd;
#X connect 1 0 3 0;
#X connect 3 0 5 0;
#X connect 4 0 3 1;
#X coords 0 0 1 1 102 44 1;
#X restore 304 489 pd obj;
#X text 229 537 Save MSD;
#X text 314 538 Load *.obj;
#X text 112 537 Save or Load DS;
#X connect 4 0 5 0;
#X connect 4 1 6 0;
#X connect 5 0 4 0;
#X connect 6 0 4 1;
#X connect 7 0 4 2;
#X connect 11 0 10 0;
#X connect 14 0 41 0;
#X connect 25 0 9 1;
#X connect 26 0 9 2;
#X connect 27 0 9 0;
#X connect 33 0 9 3;
#X connect 40 0 14 2;
#X connect 43 0 42 0;