#N canvas 570 84 686 162 10; #X declare -lib Gem; #X obj 22 16 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #N canvas 596 150 954 737 synthese 0; #X msg -35 254 \$1 50; #X obj -35 276 line~; #X obj -75 280 *~; #X msg 60 254 \$1 50; #X obj 60 276 line~; #X obj 20 280 *~; #X msg 153 256 \$1 50; #X obj 153 278 line~; #X obj 113 282 *~; #X msg 245 254 \$1 50; #X obj 245 276 line~; #X obj 205 280 *~; #X obj 62 328 dac~; #X msg 346 257 \$1 50; #X obj 346 279 line~; #X obj 306 283 *~; #X msg 441 257 \$1 50; #X obj 441 279 line~; #X obj 401 283 *~; #X msg 534 259 \$1 50; #X obj 534 281 line~; #X obj 494 285 *~; #X msg 626 257 \$1 50; #X obj 626 279 line~; #X obj 586 283 *~; #X obj 443 331 dac~; #X obj -77 224 osc~ 55; #X obj 19 224 osc~ 110; #X obj 204 225 osc~ 222; #X obj -13 158 unpack f f; #X obj 176 164 unpack f f; #X obj 362 161 unpack f f; #X obj 553 168 unpack f f; #X msg -45 458 \$1 50; #X obj -45 480 line~; #X obj -85 484 *~; #X msg 50 458 \$1 50; #X obj 50 480 line~; #X obj 10 484 *~; #X msg 143 460 \$1 50; #X obj 143 482 line~; #X obj 103 486 *~; #X msg 235 458 \$1 50; #X obj 235 480 line~; #X obj 195 484 *~; #X obj 52 532 dac~; #X msg 336 461 \$1 50; #X obj 336 483 line~; #X obj 296 487 *~; #X msg 431 461 \$1 50; #X obj 431 483 line~; #X obj 391 487 *~; #X msg 524 463 \$1 50; #X obj 524 485 line~; #X obj 484 489 *~; #X msg 616 461 \$1 50; #X obj 616 483 line~; #X obj 576 487 *~; #X obj 433 535 dac~; #X obj 483 433 osc~ 1113; #X obj 575 431 osc~ 2229; #X obj -15 373 unpack f f; #X obj 166 368 unpack f f; #X obj 352 365 unpack f f; #X obj 543 372 unpack f f; #X obj 112 226 osc~ 165; #X obj 305 227 osc~ 267; #X obj 400 227 osc~ 311; #X obj 268 74 route 1 5 9 13 17 21 25 29; #X obj 493 229 osc~ 366; #X obj 585 227 osc~ 421; #X obj -87 428 osc~ 444; #X obj 9 428 osc~ 554; #X obj 102 430 osc~ 664; #X obj 194 428 osc~ 776; #X obj 295 431 osc~ 888; #X obj 390 431 osc~ 1000; #X obj -75 398 / 20; #X obj 52 404 / 20; #X obj 144 406 / 20; #X obj 240 404 / 50; #X obj 307 401 / 50; #X obj 434 407 / 50; #X obj 524 409 / 100; #X obj 621 407 / 100; #X obj 631 203 / 100; #X obj 532 206 / 100; #X obj 444 204 / 50; #X obj 317 197 / 50; #X obj 250 200 / 50; #X obj 153 202 / 20; #X obj 61 201 / 20; #X obj -64 194 / 20; #X obj 268 49 route massesSpeedsNo; #X obj 268 27 r \$0-pmpdout; #X connect 0 0 1 0; #X connect 1 0 2 1; #X connect 2 0 12 0; #X connect 3 0 4 0; #X connect 4 0 5 1; #X connect 5 0 12 0; #X connect 5 0 12 1; #X connect 6 0 7 0; #X connect 7 0 8 1; #X connect 8 0 12 0; #X connect 8 0 12 1; #X connect 9 0 10 0; #X connect 10 0 11 1; #X connect 11 0 12 1; #X connect 13 0 14 0; #X connect 14 0 15 1; #X connect 15 0 25 0; #X connect 16 0 17 0; #X connect 17 0 18 1; #X connect 18 0 25 0; #X connect 18 0 25 1; #X connect 19 0 20 0; #X connect 20 0 21 1; #X connect 21 0 25 0; #X connect 21 0 25 1; #X connect 22 0 23 0; #X connect 23 0 24 1; #X connect 24 0 25 1; #X connect 26 0 2 0; #X connect 27 0 5 0; #X connect 28 0 11 0; #X connect 29 0 92 0; #X connect 29 1 91 0; #X connect 30 0 90 0; #X connect 30 1 89 0; #X connect 31 0 88 0; #X connect 31 1 87 0; #X connect 32 0 86 0; #X connect 32 1 85 0; #X connect 33 0 34 0; #X connect 34 0 35 1; #X connect 35 0 45 0; #X connect 36 0 37 0; #X connect 37 0 38 1; #X connect 38 0 45 0; #X connect 38 0 45 1; #X connect 39 0 40 0; #X connect 40 0 41 1; #X connect 41 0 45 0; #X connect 41 0 45 1; #X connect 42 0 43 0; #X connect 43 0 44 1; #X connect 44 0 45 1; #X connect 46 0 47 0; #X connect 47 0 48 1; #X connect 48 0 58 0; #X connect 49 0 50 0; #X connect 50 0 51 1; #X connect 51 0 58 0; #X connect 51 0 58 1; #X connect 52 0 53 0; #X connect 53 0 54 1; #X connect 54 0 58 0; #X connect 54 0 58 1; #X connect 55 0 56 0; #X connect 56 0 57 1; #X connect 57 0 58 1; #X connect 59 0 54 0; #X connect 60 0 57 0; #X connect 61 0 77 0; #X connect 61 1 78 0; #X connect 62 0 79 0; #X connect 62 1 80 0; #X connect 63 0 81 0; #X connect 63 1 82 0; #X connect 64 0 83 0; #X connect 64 1 84 0; #X connect 65 0 8 0; #X connect 66 0 15 0; #X connect 67 0 18 0; #X connect 68 0 29 0; #X connect 68 1 30 0; #X connect 68 2 31 0; #X connect 68 3 32 0; #X connect 68 4 61 0; #X connect 68 5 62 0; #X connect 68 6 63 0; #X connect 68 7 64 0; #X connect 69 0 21 0; #X connect 70 0 24 0; #X connect 71 0 35 0; #X connect 72 0 38 0; #X connect 73 0 41 0; #X connect 74 0 44 0; #X connect 75 0 48 0; #X connect 76 0 51 0; #X connect 77 0 33 0; #X connect 78 0 36 0; #X connect 79 0 39 0; #X connect 80 0 42 0; #X connect 81 0 46 0; #X connect 82 0 49 0; #X connect 83 0 52 0; #X connect 84 0 55 0; #X connect 85 0 22 0; #X connect 86 0 19 0; #X connect 87 0 16 0; #X connect 88 0 13 0; #X connect 89 0 9 0; #X connect 90 0 6 0; #X connect 91 0 3 0; #X connect 92 0 0 0; #X connect 93 0 68 0; #X connect 94 0 93 0; #X restore 23 107 pd synthese; #X text 40 16 Reset; #N canvas 0 22 450 300 structure_creation 0; #X msg 195 86 reset; #X obj 52 15 loadbang; #X msg 156 145 Xmax 100 \, Xmin 0 \, Ymax 100 \, Ymin 0; #X text 238 112 Random positions and masses; #N canvas 557 309 487 357 masses 0; #X msg 245 215 mass mob 1 \$1 \$2 \$3; #X obj 417 165 random 100; #X msg 417 145 seed 1; #X obj 342 165 random 100; #X obj 239 146 random 100; #X msg 342 144 seed 2; #X msg 239 126 seed 3; #X obj 239 166 + 100; #X obj 245 194 pack f f f; #X obj 42 14 inlet; #X obj 246 283 outlet; #X obj 268 47 loadbang; #X text 284 101 M; #X text 356 106 X; #X text 437 106 Y; #X obj 223 68 t b b; #X obj 42 45 until; #X obj 42 78 f; #X obj 72 78 + 1; #X obj 72 100 mod 30; #X obj 90 45 sel 0; #X connect 0 0 10 0; #X connect 1 0 8 2; #X connect 2 0 1 0; #X connect 3 0 8 1; #X connect 4 0 7 0; #X connect 5 0 3 0; #X connect 6 0 4 0; #X connect 7 0 8 0; #X connect 8 0 0 0; #X connect 9 0 16 0; #X connect 11 0 6 0; #X connect 11 0 5 0; #X connect 11 0 2 0; #X connect 15 0 4 0; #X connect 15 1 3 0; #X connect 15 1 1 0; #X connect 16 0 17 0; #X connect 17 0 18 0; #X connect 17 0 15 0; #X connect 18 0 19 0; #X connect 19 0 17 1; #X connect 19 0 20 0; #X connect 20 0 16 1; #X restore 175 113 pd masses; #N canvas 0 22 450 300 links 0; #X obj 136 72 t b; #X obj 136 116 + 1; #X obj 130 191 f; #X obj 92 171 t f b; #X obj 91 211 pack f f; #X msg 91 233 link souple \$1 \$2 10 0.5; #X obj 136 23 inlet; #X obj 91 260 outlet; #X obj 136 48 until; #X obj 202 112 sel 0; #X obj 184 154 mod 29; #X obj 136 93 f 0; #X connect 0 0 11 0; #X connect 1 0 10 0; #X connect 1 0 2 1; #X connect 2 0 4 1; #X connect 3 0 4 0; #X connect 3 1 2 0; #X connect 4 0 5 0; #X connect 5 0 7 0; #X connect 6 0 8 0; #X connect 8 0 0 0; #X connect 9 0 8 1; #X connect 10 0 9 0; #X connect 10 0 11 1; #X connect 11 0 1 0; #X connect 11 0 3 0; #X restore 137 176 pd links; #X obj 137 62 t b b b b; #X obj 137 15 inlet; #X obj 137 211 s \$0-pmpdin; #X connect 0 0 8 0; #X connect 1 0 6 0; #X connect 2 0 8 0; #X connect 4 0 8 0; #X connect 5 0 8 0; #X connect 6 0 5 0; #X connect 6 1 2 0; #X connect 6 2 4 0; #X connect 6 3 0 0; #X connect 7 0 6 0; #X restore 22 39 pd structure_creation; #N canvas 0 22 763 327 gem_stuff 0; #X msg 137 179 0 \, destroy; #X obj 118 200 gemwin; #X obj 118 104 inlet; #X obj 118 129 sel 1 0; #X msg 118 156 reset \, create \, 1; #X obj 274 105 gemhead; #N canvas 311 224 413 534 gemmouse2 0; #X obj 114 29 gemmouse; #X obj 96 266 outlet; #X obj 114 83 - 0; #X obj 165 97 + 100; #X obj 114 60 / 5; #X obj 165 74 / -5; #X obj 32 81 t b; #X obj 32 37 inlet; #X obj 96 177 f; #X obj 96 206 pack 0 0 0; #X connect 0 0 4 0; #X connect 0 1 5 0; #X connect 0 2 9 2; #X connect 2 0 8 1; #X connect 3 0 9 1; #X connect 4 0 2 0; #X connect 5 0 3 0; #X connect 6 0 8 0; #X connect 7 0 6 0; #X connect 8 0 9 0; #X connect 9 0 1 0; #X restore 274 127 pd gemmouse2; #X msg 274 150 grabMass \$1 \$2 \$3; #N canvas 643 123 617 602 massrender 0; #X obj 127 22 inlet; #X obj 62 267 translateXYZ; #X obj 166 123 / 12.5; #X obj 166 146 - 4; #X obj 231 124 / 12.5; #X obj 231 147 - 4; #X obj 62 241 separator; #X obj 127 57 unpack f f f; #X msg 128 194 \$1; #X obj 62 219 colorRGB 1 1 1; #X obj 128 174 / 29; #X obj 127 85 t b f; #X obj 62 135 gemhead 45; #X obj 62 63 loadbang; #X msg 62 93 0; #X obj 62 314 circle 0.1; #X connect 0 0 7 0; #X connect 1 0 15 0; #X connect 2 0 3 0; #X connect 3 0 1 1; #X connect 4 0 5 0; #X connect 5 0 1 2; #X connect 6 0 1 0; #X connect 7 0 11 0; #X connect 7 1 2 0; #X connect 7 2 4 0; #X connect 8 0 9 2; #X connect 8 0 9 3; #X connect 9 0 6 0; #X connect 10 0 8 0; #X connect 11 0 12 0; #X connect 11 1 10 0; #X connect 12 0 9 0; #X connect 13 0 14 0; #X connect 14 0 12 0; #X restore 502 153 pd massrender; #N canvas 284 227 595 566 linkrender 0; #X obj 261 87 inlet; #X obj 261 179 / 12.5; #X obj 261 202 - 4; #X obj 315 180 / 12.5; #X obj 315 203 - 4; #X obj 189 288 separator; #X obj 261 226 t b f; #X obj 189 331 curve 2; #X obj 375 183 / 12.5; #X obj 375 206 - 4; #X obj 429 184 / 12.5; #X obj 429 207 - 4; #X obj 291 256 pack f f; #X msg 291 279 \$1 \$2 0; #X obj 375 255 pack f f; #X msg 375 278 \$1 \$2 0; #X obj 261 131 unpack f f f f f; #X obj 189 310 colorRGB 1 1 1; #X obj 189 262 gemhead 45; #X obj 189 180 loadbang; #X msg 189 229 0; #X connect 0 0 16 0; #X connect 1 0 2 0; #X connect 2 0 6 0; #X connect 3 0 4 0; #X connect 4 0 12 1; #X connect 5 0 17 0; #X connect 6 0 18 0; #X connect 6 1 12 0; #X connect 8 0 9 0; #X connect 9 0 14 0; #X connect 10 0 11 0; #X connect 11 0 14 1; #X connect 12 0 13 0; #X connect 13 0 7 1; #X connect 14 0 15 0; #X connect 15 0 7 2; #X connect 16 1 1 0; #X connect 16 2 3 0; #X connect 16 3 8 0; #X connect 16 4 10 0; #X connect 17 0 7 0; #X connect 18 0 5 0; #X connect 19 0 20 0; #X connect 20 0 18 0; #X restore 432 174 pd linkrender; #X obj 273 174 s \$0-pmpdin; #X obj 432 101 r \$0-pmpdout; #X obj 432 124 route linksPosNo massesPos; #X connect 0 0 1 0; #X connect 2 0 3 0; #X connect 3 0 4 0; #X connect 3 1 0 0; #X connect 4 0 1 0; #X connect 5 0 6 0; #X connect 6 0 7 0; #X connect 7 0 10 0; #X connect 11 0 12 0; #X connect 12 0 9 0; #X connect 12 1 8 0; #X restore 23 86 pd gem_stuff; #X obj 23 64 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1 ; #X text 43 63 gem on/off; #X text 196 54 1 Create window; #X text 196 74 2 Set dsp on; #N canvas 0 22 834 442 compute 0; #X obj 52 69 gemhead; #X obj 67 163 r \$0-pmpdin; #X obj 52 216 s \$0-pmpdout; #X obj 52 192 pmpd2d; #X msg 50 95 bang \, get massesPos \, get linksPos \, get massesSpeeds 1 \, get massesSpeeds 5 \, get massesSpeeds 9 \, get massesSpeeds 13 \, get massesSpeeds 17 \, get massesSpeeds 21 \, get massesSpeeds 25 \, get massesSpeeds 29; #X connect 0 0 4 0; #X connect 1 0 3 0; #X connect 3 0 2 0; #X connect 4 0 3 0; #X restore 23 129 pd compute; #X text 196 94 Drag red masses for bass and white ones for high tones... ; #X text 196 17 Additive synthesis example; #X obj 198 122 declare -lib Gem; #X connect 0 0 3 0; #X connect 5 0 4 0;