Revision: 9632 http://pure-data.svn.sourceforge.net/pure-data/?rev=9632&view=rev Author: nimon Date: 2008-03-27 16:25:08 -0700 (Thu, 27 Mar 2008)
Log Message: -----------
Modified Paths: -------------- trunk/externals/nusmuk/msd/03_msdwave.pd
Added Paths: ----------- trunk/externals/nusmuk/msd/02_msdstring.pd
Removed Paths: ------------- trunk/externals/nusmuk/msd/02_imsdtest.pd
Deleted: trunk/externals/nusmuk/msd/02_imsdtest.pd =================================================================== --- trunk/externals/nusmuk/msd/02_imsdtest.pd 2008-03-27 22:21:58 UTC (rev 9631) +++ trunk/externals/nusmuk/msd/02_imsdtest.pd 2008-03-27 23:25:08 UTC (rev 9632) @@ -1,91 +0,0 @@ -#N canvas 489 48 887 847 10; -#X obj 53 15 loadbang; -#X obj 299 517 print msd; -#X obj 52 490 msd --------------------------------; -#X obj 52 243 tgl 25 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1 -; -#X text 83 242 ON / OFF; -#X obj 45 305 cnv 15 700 60 empty empty empty 20 12 0 14 -261689 -66577 -0; -#X obj 52 312 metro 50; -#X text 474 328 COMPUTE AND GET MASSES POSITIONS; -#X obj 151 28 cnv 15 595 270 empty empty empty 20 12 0 14 -262131 -66577 -0; -#X obj 167 274 t a; -#X obj 167 33 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262131 -1 --1; -#X msg 253 78 reset; -#X msg 218 153 mass mob 1 $1 $2; -#X msg 201 181 Xmax 100 , Xmin 0; -#X msg 235 104 mass fix 0 100 80; -#X msg 218 129 100 65 , 100 50 , 100 35 , 100 20; -#X obj 46 380 cnv 15 700 90 empty empty empty 20 12 0 14 -262131 -66577 -0; -#X text 455 399 SET RIGIDITY AND VISCOSITY OF LINKS; -#X text 455 438 ADD FORCE ON ALL MOBILE MASSES; -#X msg 184 153 0; -#X obj 45 576 cnv 15 300 200 empty empty empty 20 12 0 14 -261689 -66577 -0; -#X obj 88 590 vsl 15 128 0 100 0 0 empty empty empty 0 -8 0 8 -261689 --1 -1 6955 1; -#X obj 111 590 vsl 15 128 0 100 0 0 empty empty empty 0 -8 0 8 -261689 --1 -1 5050 1; -#X obj 66 590 vsl 15 128 0 100 0 0 empty empty empty 0 -8 0 8 -261689 --1 -1 8860 1; -#X msg 52 736 posX fix $1; -#X obj 156 590 vsl 15 128 0 100 0 0 empty empty empty 0 -8 0 8 -261689 --1 -1 1240 1; -#X obj 134 590 vsl 15 128 0 100 0 0 empty empty empty 0 -8 0 8 -261689 --1 -1 3145 1; -#X text 199 638 MOVE FIRST SLIDER; -#X text 182 662 TO MOVE THE FIXED MASS; -#X msg 66 438 forceX mob 300; -#X msg 180 438 forceX mob -300; -#X obj 167 55 t b b b b b b; -#X text 205 34 RESET; -#X obj 52 523 route massesPosL; -#X msg 52 335 bang , massesPosL; -#X obj 52 545 unpack f f f f f; -#X text 490 126 CREATION : 5 MASSES , 1 iLINK; -#X msg 66 384 setK inter 1; -#X msg 66 406 setK inter 2; -#X msg 176 385 setD inter 0.01; -#X msg 176 407 setD inter 1; -#X msg 184 223 link inter fix mob 10 10; -#X connect 0 0 31 0; -#X connect 2 0 33 0; -#X connect 2 1 1 0; -#X connect 3 0 6 0; -#X connect 6 0 34 0; -#X connect 9 0 2 0; -#X connect 10 0 31 0; -#X connect 11 0 9 0; -#X connect 12 0 9 0; -#X connect 13 0 9 0; -#X connect 14 0 9 0; -#X connect 15 0 12 0; -#X connect 19 0 3 0; -#X connect 23 0 24 0; -#X connect 24 0 2 0; -#X connect 29 0 2 0; -#X connect 30 0 2 0; -#X connect 31 0 3 0; -#X connect 31 1 19 0; -#X connect 31 1 41 0; -#X connect 31 2 13 0; -#X connect 31 3 15 0; -#X connect 31 4 14 0; -#X connect 31 5 11 0; -#X connect 33 0 35 0; -#X connect 33 1 1 0; -#X connect 34 0 2 0; -#X connect 35 0 23 0; -#X connect 35 1 21 0; -#X connect 35 2 22 0; -#X connect 35 3 26 0; -#X connect 35 4 25 0; -#X connect 37 0 2 0; -#X connect 38 0 2 0; -#X connect 39 0 2 0; -#X connect 40 0 2 0; -#X connect 41 0 9 0;
Copied: trunk/externals/nusmuk/msd/02_msdstring.pd (from rev 9628, trunk/externals/nusmuk/msd/02_imsdtest.pd) =================================================================== --- trunk/externals/nusmuk/msd/02_msdstring.pd (rev 0) +++ trunk/externals/nusmuk/msd/02_msdstring.pd 2008-03-27 23:25:08 UTC (rev 9632) @@ -0,0 +1,91 @@ +#N canvas 489 48 887 847 10; +#X obj 53 15 loadbang; +#X obj 299 517 print msd; +#X obj 52 490 msd --------------------------------; +#X obj 52 243 tgl 25 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1 +; +#X text 83 242 ON / OFF; +#X obj 45 305 cnv 15 700 60 empty empty empty 20 12 0 14 -261689 -66577 +0; +#X obj 52 312 metro 50; +#X text 474 328 COMPUTE AND GET MASSES POSITIONS; +#X obj 151 28 cnv 15 595 270 empty empty empty 20 12 0 14 -262131 -66577 +0; +#X obj 167 274 t a; +#X obj 167 33 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262131 -1 +-1; +#X msg 253 78 reset; +#X msg 218 153 mass mob 1 $1 $2; +#X msg 201 181 Xmax 100 , Xmin 0; +#X msg 235 104 mass fix 0 100 80; +#X msg 218 129 100 65 , 100 50 , 100 35 , 100 20; +#X obj 46 380 cnv 15 700 90 empty empty empty 20 12 0 14 -262131 -66577 +0; +#X text 455 399 SET RIGIDITY AND VISCOSITY OF LINKS; +#X text 455 438 ADD FORCE ON ALL MOBILE MASSES; +#X msg 184 153 0; +#X obj 45 576 cnv 15 300 200 empty empty empty 20 12 0 14 -261689 -66577 +0; +#X obj 88 590 vsl 15 128 0 100 0 0 empty empty empty 0 -8 0 8 -261689 +-1 -1 6955 1; +#X obj 111 590 vsl 15 128 0 100 0 0 empty empty empty 0 -8 0 8 -261689 +-1 -1 5050 1; +#X obj 66 590 vsl 15 128 0 100 0 0 empty empty empty 0 -8 0 8 -261689 +-1 -1 8860 1; +#X msg 52 736 posX fix $1; +#X obj 156 590 vsl 15 128 0 100 0 0 empty empty empty 0 -8 0 8 -261689 +-1 -1 1240 1; +#X obj 134 590 vsl 15 128 0 100 0 0 empty empty empty 0 -8 0 8 -261689 +-1 -1 3145 1; +#X text 199 638 MOVE FIRST SLIDER; +#X text 182 662 TO MOVE THE FIXED MASS; +#X msg 66 438 forceX mob 300; +#X msg 180 438 forceX mob -300; +#X obj 167 55 t b b b b b b; +#X text 205 34 RESET; +#X obj 52 523 route massesPosL; +#X msg 52 335 bang , massesPosL; +#X obj 52 545 unpack f f f f f; +#X text 490 126 CREATION : 5 MASSES , 1 iLINK; +#X msg 66 384 setK inter 1; +#X msg 66 406 setK inter 2; +#X msg 176 385 setD inter 0.01; +#X msg 176 407 setD inter 1; +#X msg 184 223 link inter fix mob 10 10; +#X connect 0 0 31 0; +#X connect 2 0 33 0; +#X connect 2 1 1 0; +#X connect 3 0 6 0; +#X connect 6 0 34 0; +#X connect 9 0 2 0; +#X connect 10 0 31 0; +#X connect 11 0 9 0; +#X connect 12 0 9 0; +#X connect 13 0 9 0; +#X connect 14 0 9 0; +#X connect 15 0 12 0; +#X connect 19 0 3 0; +#X connect 23 0 24 0; +#X connect 24 0 2 0; +#X connect 29 0 2 0; +#X connect 30 0 2 0; +#X connect 31 0 3 0; +#X connect 31 1 19 0; +#X connect 31 1 41 0; +#X connect 31 2 13 0; +#X connect 31 3 15 0; +#X connect 31 4 14 0; +#X connect 31 5 11 0; +#X connect 33 0 35 0; +#X connect 33 1 1 0; +#X connect 34 0 2 0; +#X connect 35 0 23 0; +#X connect 35 1 21 0; +#X connect 35 2 22 0; +#X connect 35 3 26 0; +#X connect 35 4 25 0; +#X connect 37 0 2 0; +#X connect 38 0 2 0; +#X connect 39 0 2 0; +#X connect 40 0 2 0; +#X connect 41 0 9 0;
Modified: trunk/externals/nusmuk/msd/03_msdwave.pd =================================================================== --- trunk/externals/nusmuk/msd/03_msdwave.pd 2008-03-27 22:21:58 UTC (rev 9631) +++ trunk/externals/nusmuk/msd/03_msdwave.pd 2008-03-27 23:25:08 UTC (rev 9632) @@ -1,152 +1,232 @@ -#N canvas 820 22 951 769 10; -#X obj 32 13 loadbang; -#X obj 603 265 gemwin; -#X msg 603 243 0 , destroy; -#X obj 602 291 gemhead; -#X obj 602 355 world_light; -#X obj 145 226 t a; -#X obj 145 12 bng 20 250 50 0 empty empty empty 0 -6 0 8 -262131 -1 +#N canvas 360 104 602 232 10; +#X obj 29 20 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; -#X msg 203 63 reset; -#X obj 33 298 gemhead; -#N canvas 721 124 609 594 massrender 0; -#X obj 127 22 inlet; -#X obj 48 203 translateXYZ; -#X obj 48 177 separator; -#X obj 127 136 t b f; -#X obj 127 57 unpack f f f; -#X obj 48 154 gemhead 45; -#X obj 48 283 cuboid 0.005 0.15 0.08; -#X obj 48 239 color 0.8 0.8 0.8; -#X obj 48 90 loadbang; -#X msg 48 118 0; -#X connect 0 0 4 0; -#X connect 1 0 7 0; -#X connect 2 0 1 0; -#X connect 3 0 5 0; -#X connect 3 1 1 1; -#X connect 4 0 3 0; -#X connect 4 1 1 2; -#X connect 4 2 6 3; -#X connect 5 0 2 0; -#X connect 7 0 6 0; +#X text 49 19 Reset; +#X obj 202 27 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#N canvas 0 22 981 585 structure_creation 0; +#X msg 681 243 mass filet 1 100 0; +#X msg 663 64 reset; +#X obj 690 527 s msdin; +#X obj 418 25 t b b b b b b b b b b b b; +#X obj 681 201 until; +#X msg 681 170 400; +#X msg 561 378 link fil $1 $2 10 1; +#X msg 561 174 380; +#X obj 561 206 until; +#X obj 561 245 f 0; +#X obj 609 261 + 1; +#X msg 618 226 0; +#X obj 636 312 + 20; +#X obj 561 339 pack f f; +#X obj 561 288 t f f; +#X msg 397 151 400; +#X obj 397 189 until; +#X obj 397 231 f 0; +#X obj 445 247 + 1; +#X msg 454 212 0; +#X obj 397 292 t f f; +#X obj 452 325 mod 20; +#X obj 452 355 != 19; +#X obj 397 393 spigot; +#X obj 397 475 pack f f; +#X obj 397 424 t f f; +#X obj 472 448 + 1; +#X msg 397 505 link fil $1 $2 10 1; +#X msg 403 107 setFixed 0 , setFixed 19 , setFixed 380 , setFixed +399; +#X obj 418 -8 inlet; +#X obj 326 61 loadbang; +#X connect 0 0 2 0; +#X connect 1 0 2 0; +#X connect 3 5 28 0; +#X connect 3 6 15 0; +#X connect 3 7 19 0; +#X connect 3 8 7 0; +#X connect 3 9 11 0; +#X connect 3 10 5 0; +#X connect 3 11 1 0; +#X connect 4 0 0 0; +#X connect 5 0 4 0; +#X connect 6 0 2 0; +#X connect 7 0 8 0; #X connect 8 0 9 0; -#X connect 9 0 5 0; -#X restore 274 531 pd massrender; -#X msg 203 83 symbol reset; -#X text 793 205 Select view; -#X obj 145 38 t b b b b; -#X obj 63 403 msd -------------; -#X obj 425 423 msd2D --------------------------------; -#X obj 305 254 route mass; -#X msg 305 275 mass msd1 $1 $2 $5; -#X obj 145 253 route mass; -#X msg 145 274 mass msd2 $1 $2 $3 $4; -#X obj 425 443 route massesPos; -#X msg 33 343 bang , get massesPos; -#X obj 33 321 t b b; -#X obj 274 506 pack f f f; -#X obj 63 427 route massesPosNo; -#X msg 421 523 get massesPos $1; -#X obj 602 334 rotateXYZ; -#X obj 56 547 vsl 15 128 0 4 0 0 empty empty empty 0 -8 0 8 -262131 --1 -1 6200 1; -#X obj 75 547 vsl 15 128 0 4 0 0 empty empty empty 0 -8 0 8 -262131 --1 -1 6500 1; -#X obj 94 547 vsl 15 128 0 4 0 0 empty empty empty 0 -8 0 8 -262131 --1 -1 7600 1; -#X obj 112 547 vsl 15 128 0 4 0 0 empty empty empty 0 -8 0 8 -262131 --1 -1 6800 1; -#X msg 56 682 posX 0 $1; -#X msg 603 138 reset , dimen 800 800 , create , lighting 1 , 1 +#X connect 9 0 10 0; +#X connect 9 0 14 0; +#X connect 10 0 9 1; +#X connect 11 0 9 1; +#X connect 12 0 13 1; +#X connect 13 0 6 0; +#X connect 14 0 13 0; +#X connect 14 1 12 0; +#X connect 15 0 16 0; +#X connect 16 0 17 0; +#X connect 17 0 18 0; +#X connect 17 0 20 0; +#X connect 18 0 17 1; +#X connect 19 0 17 1; +#X connect 20 0 23 0; +#X connect 20 1 21 0; +#X connect 21 0 22 0; +#X connect 22 0 23 1; +#X connect 23 0 25 0; +#X connect 24 0 27 0; +#X connect 25 0 24 0; +#X connect 25 1 26 0; +#X connect 26 0 24 1; +#X connect 27 0 2 0; +#X connect 28 0 2 0; +#X connect 29 0 3 0; +#X connect 30 0 3 0; +#X restore 29 39 pd structure_creation; +#N canvas 813 63 450 300 gem 0; +#X obj 114 171 gemwin; +#X msg 134 149 0 , destroy; +#X msg 114 125 reset , create , 1 , lighting 1; +#X obj 114 71 inlet; +#X obj 114 97 sel 1 0; +#X connect 1 0 0 0; +#X connect 2 0 0 0; +#X connect 3 0 4 0; +#X connect 4 0 2 0; +#X connect 4 1 1 0; +#X restore 30 85 pd gem; +#X obj 30 63 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1 ; -#X msg 145 173 Xmax 4 , Xmin -4 , Ymax 4 , Ymin -4; -#X msg 145 199 Xmax 4 , Xmin -4; -#X obj 603 161 t b; -#X msg 164 140 setFixed 0 , setFixed 39 , setFixed 760 , setFixed -799; -#X msg 603 204 view 0 5 0 0 0 0 0 0 1; -#X msg 75 702 posX 39 $1; -#X msg 94 722 posX 799 $1; -#X msg 112 742 posX 760 $1; -#X text 28 514 Move corners to send a wave!; -#X text 327 559 Each time a mass2D position is send , the corresponding -z is asked to the 1D model.; -#X text 389 35 X-Y : 2D model; -#X text 389 49 Z : 1D model; -#X text 146 300 If it's a mass message : send XY to ms2D and Z to msd +#X text 200 -6 send forces; +#X text 200 7 on a row; +#N canvas 0 22 450 300 damping 0; +#X msg 151 90 setD fil $1; +#X obj 151 113 s msdin; +#X obj 151 70 / 8; +#X obj 151 47 inlet; +#X connect 0 0 1 0; +#X connect 2 0 0 0; +#X connect 3 0 2 0; +#X restore 301 119 pd damping; +#X obj 304 100 hsl 128 15 0 127 0 0 empty empty empty -2 -8 0 10 -262144 +-1 -1 0 1; +#X text 300 79 change viscosity; +#N canvas 0 22 450 300 row 0; +#X msg 149 87 20; +#X obj 149 132 f 6; +#X obj 149 112 until; +#X obj 192 133 + 20; +#X msg 208 113 6; +#X obj 149 63 t b b; +#X msg 149 153 forceX $1 30; +#X obj 149 183 s msdin; +#X obj 149 38 inlet; +#X connect 0 0 2 0; +#X connect 1 0 3 0; +#X connect 1 0 6 0; +#X connect 2 0 1 0; +#X connect 3 0 1 1; +#X connect 4 0 1 1; +#X connect 5 0 0 0; +#X connect 5 1 4 0; +#X connect 6 0 7 0; +#X connect 8 0 5 0; +#X restore 202 51 pd row; +#X obj 201 105 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X text 199 70 send forces; +#X text 50 63 Gem on/off; +#X obj 305 38 hsl 128 15 0 127 0 0 empty empty empty -2 -8 0 10 -262144 +-1 -1 0 1; +#X text 300 17 change rigidity; +#N canvas 0 22 450 300 rigi 0; +#X obj 151 113 s msdin; +#X obj 151 47 inlet; +#X obj 151 70 / 4; +#X msg 151 90 setK fil $1; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 3 0 0 0; +#X restore 302 57 pd rigi; +#X text 199 83 on a point; +#N canvas 0 22 450 300 point 0; +#X obj 192 156 s msdin; +#X msg 192 123 forceX 10 100; +#X obj 193 95 inlet; +#X connect 1 0 0 0; +#X connect 2 0 1 0; +#X restore 201 126 pd point; +#X text 469 -9 move a corner; +#N canvas 0 22 450 300 corner 0; +#X msg 222 89 posX 0 $1; +#X obj 222 65 / 30; +#X obj 222 115 s msdin; +#X obj 223 32 inlet; +#X connect 0 0 2 0; +#X connect 1 0 0 0; +#X connect 3 0 1 0; +#X restore 471 155 pd corner; +#X obj 471 17 vsl 15 128 0 127 0 0 empty empty empty 0 -9 0 10 -262144 +-1 -1 0 1; +#N canvas 696 124 709 588 compute 0; +#X obj 301 215 print msd; +#X obj 141 153 r msdin; +#X msg 126 130 bang , get massesPos; +#X obj 126 27 gemhead; +#X obj 126 224 route massesPos; +#X obj 34 306 gemhead; +#X msg 34 268 0; +#X obj 126 290 unpack f f; +#X obj 34 539 translateXYZ; +#X obj 126 334 mod 20; +#X obj 126 389 - 3; +#X obj 126 363 * 0.3; +#X obj 126 257 t b a; +#X obj 197 326 / 20; +#X obj 197 356 int; +#X obj 197 383 * -0.3; +#X obj 197 410 + 3; +#X obj 34 238 loadbang; +#X obj 126 184 msd --------------; +#X obj 439 286 gemhead; +#X obj 439 349 light; +#X obj 439 318 translateXYZ 0 0 1; +#X obj 33 572 cube 0.08; +#X obj 126 58 t b b; +#X msg 171 97 bang , bang , bang , bang , bang , bang , bang ; -#X text 178 14 Reset; -#X text 304 228 800 masses / 1540 links for each model; -#X text 423 381 The 2D model is just here to help display masses and -test synchronization between msd objects; -#X obj 425 463 unpack f f f; -#X obj 91 462 unpack f f; -#X obj 481 502 f; -#X obj 425 485 t b f; -#X text 453 114 Filet abstraction : x0 y0 stepx stepy ny nx M; -#X msg 603 223 view 5 -1 0.5 0 0 0 0 0 1; -#X msg 621 311 45; -#X msg 650 311 45; -#X msg 603 185 view 0 0.5 6 0 0 0 0 1 0; -#X obj 183 113 filet -3.2 -3 0.1685 0.3 20 40 100; -#X connect 0 0 12 0; -#X connect 2 0 1 0; -#X connect 3 0 25 0; -#X connect 5 0 15 0; -#X connect 5 0 17 0; -#X connect 6 0 12 0; -#X connect 7 0 5 0; -#X connect 8 0 21 0; -#X connect 10 0 57 1; -#X connect 12 0 32 0; -#X connect 12 0 33 0; -#X connect 12 1 35 0; -#X connect 12 2 57 0; -#X connect 12 3 7 0; -#X connect 12 3 10 0; -#X connect 13 0 23 0; -#X connect 14 0 19 0; +#X obj 34 443 translateXYZ 0 0 -2; +#X obj 34 477 rotateXYZ 0 20 0; +#X connect 1 0 18 0; +#X connect 2 0 18 0; +#X connect 3 0 23 0; +#X connect 4 0 12 0; +#X connect 5 0 25 0; +#X connect 6 0 5 0; +#X connect 7 0 9 0; +#X connect 7 0 13 0; +#X connect 7 1 8 3; +#X connect 8 0 22 0; +#X connect 9 0 11 0; +#X connect 10 0 8 1; +#X connect 11 0 10 0; +#X connect 12 0 5 0; +#X connect 12 1 7 0; +#X connect 13 0 14 0; +#X connect 14 0 15 0; #X connect 15 0 16 0; -#X connect 15 1 13 0; -#X connect 16 0 13 0; -#X connect 17 0 18 0; -#X connect 17 1 14 0; -#X connect 18 0 14 0; -#X connect 19 0 48 0; -#X connect 20 0 14 0; +#X connect 16 0 8 2; +#X connect 17 0 6 0; +#X connect 18 0 4 0; +#X connect 18 1 0 0; +#X connect 19 0 21 0; #X connect 21 0 20 0; -#X connect 21 1 13 0; -#X connect 22 0 9 0; -#X connect 23 0 49 0; -#X connect 24 0 13 0; -#X connect 25 0 4 0; -#X connect 26 0 30 0; -#X connect 27 0 37 0; -#X connect 28 0 38 0; -#X connect 29 0 39 0; -#X connect 30 0 13 0; -#X connect 31 0 1 0; -#X connect 31 0 34 0; -#X connect 32 0 14 0; -#X connect 33 0 13 0; -#X connect 34 0 56 0; -#X connect 34 0 55 0; -#X connect 34 0 54 0; -#X connect 35 0 5 0; -#X connect 36 0 1 0; -#X connect 37 0 13 0; -#X connect 38 0 13 0; -#X connect 39 0 13 0; -#X connect 48 0 51 0; -#X connect 48 1 50 1; -#X connect 48 2 22 1; -#X connect 49 1 22 2; -#X connect 50 0 22 0; -#X connect 51 0 50 0; -#X connect 51 1 24 0; -#X connect 53 0 1 0; -#X connect 54 0 25 1; -#X connect 55 0 25 2; -#X connect 56 0 1 0; -#X connect 57 0 5 0; +#X connect 23 0 2 0; +#X connect 23 1 24 0; +#X connect 24 0 18 0; +#X connect 25 0 26 0; +#X connect 26 0 8 0; +#X restore 30 109 pd compute; +#X connect 0 0 3 0; +#X connect 2 0 11 0; +#X connect 5 0 4 0; +#X connect 9 0 8 0; +#X connect 12 0 19 0; +#X connect 15 0 17 0; +#X connect 22 0 21 0;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.