#N canvas 102 54 864 638 10; #X obj 209 223 gemhead; #X obj 241 277 t a a a; #X obj 264 320 cube 1; #X obj 238 66 world_light; #X obj 238 41 gemhead; #X obj 37 226 gemhead; #X obj 37 321 sphere 1.3 33; #X obj 287 300 rotateXYZ 60 30 0; #X obj 37 300 rotateXYZ 60 30 0; #X text 36 184 #1:; #X text 209 181 #2:; #X obj 37 428 sphere 1.3 33; #X obj 37 407 rotateXYZ 60 30 0; #X obj 209 248 t a a; #X obj 595 288 gemlist; #X obj 595 223 gemhead; #X obj 595 250 t b b a; #X obj 37 202 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 1 1; #X obj 209 198 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 0 1; #X obj 595 198 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 0 1; #X obj 37 342 translateXYZ 2 0 0; #X obj 37 449 translateXYZ 2 0 0; #X obj 241 341 translateXYZ 2 0 0; #X obj 209 386 t a a a; #X obj 232 429 cube 1; #X obj 255 409 rotateXYZ 60 30 0; #X obj 209 450 translateXYZ 2 0 0; #X obj 595 410 rotateXYZ 60 30 0; #X obj 595 452 translateXYZ 2 0 0; #X obj 595 431 sphere 1.6 4; #X text 29 498 example #1 is the usual way to use Gem \, but the technique shown in example #2 can be more flexible...; #N canvas 186 321 446 463 more_interating_1 0; #X obj 22 64 gemhead; #X obj 22 351 rotateXYZ 0 0 12; #X obj 22 274 scaleXYZ 0.97 0.9 1; #X obj 22 296 translateXYZ 0.5 0 0; #X obj 22 376 circle 0.2; #X floatatom 131 331 5 0 0 0 - - -; #X obj 22 226 gemlist; #X obj 22 204 until; #X msg 22 180 100; #X obj 22 158 t b a; #X obj 22 111 translateXYZ -3 0 0; #X obj 22 43 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 0 1 ; #X text 85 198 "repeat" 100 times the same "gemlist"; #X connect 0 0 10 0; #X connect 1 0 4 0; #X connect 2 0 3 0; #X connect 3 0 1 0; #X connect 5 0 1 3; #X connect 6 0 2 0; #X connect 7 0 6 0; #X connect 8 0 7 0; #X connect 9 0 8 0; #X connect 9 1 6 1; #X connect 10 0 9 0; #X connect 11 0 0 0; #X restore 32 561 pd more_interating_1; #N canvas 178 159 464 582 more_interating_2 0; #X obj 22 69 gemhead; #X obj 22 377 scaleXYZ 0.97 0.9 1; #X obj 22 505 circle 0.2; #X obj 22 235 gemlist; #X obj 22 213 until; #X msg 22 189 100; #X obj 22 167 t b a; #X obj 185 322 f; #X obj 277 309 random 1000; #X obj 22 480 rotateXYZ 0 0 0; #X obj 185 420 *; #X obj 22 132 t a b; #X obj 22 264 t a b b; #X msg 277 283 seed \$1; #X obj 277 256 f; #X floatatom 295 234 5 0 0 0 - - -; #X obj 277 334 - 500; #X obj 185 441 / 1000; #X obj 22 400 translateXYZ -0.5 0 0; #X obj 22 103 translateXYZ 3 0 0; #X obj 22 42 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 0 1 ; #X text 343 233 <- change random; #X text 276 356 rotation angle is random; #X text 200 390 amplitude decrease; #X msg 203 296 100; #X obj 222 351 - 1; #X connect 0 0 19 0; #X connect 1 0 18 0; #X connect 3 0 12 0; #X connect 4 0 3 0; #X connect 5 0 4 0; #X connect 6 0 5 0; #X connect 6 1 3 1; #X connect 7 0 25 0; #X connect 7 0 10 0; #X connect 8 0 16 0; #X connect 9 0 2 0; #X connect 10 0 17 0; #X connect 11 0 6 0; #X connect 11 1 24 0; #X connect 11 1 14 0; #X connect 12 0 1 0; #X connect 12 1 7 0; #X connect 12 2 8 0; #X connect 13 0 8 0; #X connect 14 0 13 0; #X connect 15 0 14 1; #X connect 16 0 10 1; #X connect 17 0 9 3; #X connect 18 0 9 0; #X connect 19 0 11 0; #X connect 20 0 0 0; #X connect 24 0 7 1; #X connect 25 0 7 1; #X restore 32 581 pd more_interating_2; #X obj 445 223 gemhead; #X obj 445 198 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 0 1; #X text 443 178 #3:; #X obj 445 410 rotateXYZ 60 30 0; #X obj 445 452 translateXYZ 2 0 0; #X obj 445 271 t a a; #X text 593 178 #4:; #X text 611 314 [gemlist] stores the current state; #X text 613 330 and outputs it when banged; #X text 30 528 The example #4 can easily be extended to use many primitives. ; #X text 31 122 [gemhead]'s output is a special message describing the "state" of the system. This state is changed by the GEM objects. This means that the examples below are equivalent:; #X obj 445 431 teapot 1; #N canvas 340 107 682 322 gemwin 0; #X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144 -1 -1 0 1; #X obj 102 161 r \$0-gemstart; #X obj 102 182 select 1 0; #X msg 102 214 create \, 1; #X msg 177 215 destroy; #X obj 102 239 t a; #X obj 318 54 inlet; #X obj 318 255 gemwin; #X obj 318 100 t a a; #X obj 318 287 outlet; #X obj 350 128 route create destroy; #X obj 350 150 t b; #X msg 350 172 1; #X obj 390 150 t b; #X msg 390 172 0; #X obj 350 195 t f; #X msg 350 219 set \$1; #X text 118 122 rendering; #X connect 1 0 2 0; #X connect 2 0 3 0; #X connect 2 1 4 0; #X connect 3 0 5 0; #X connect 4 0 5 0; #X connect 5 0 8 0; #X connect 6 0 8 0; #X connect 7 0 9 0; #X connect 8 0 7 0; #X connect 8 1 10 0; #X connect 10 0 11 0; #X connect 10 1 13 0; #X connect 11 0 12 0; #X connect 12 0 15 0; #X connect 13 0 14 0; #X connect 14 0 15 0; #X connect 15 0 16 0; #X connect 16 0 0 0; #X coords 0 -1 1 1 85 40 1 100 100; #X restore 44 55 pd gemwin; #N canvas 0 0 450 300 Gem.init 0; #X obj 94 232 outlet; #X obj 94 183 loadbang; #X msg 94 208 lighting 1; #X connect 1 0 2 0; #X connect 2 0 0 0; #X restore 44 36 pd Gem.init; #X connect 0 0 13 0; #X connect 1 0 22 0; #X connect 1 1 2 0; #X connect 1 2 7 0; #X connect 4 0 3 0; #X connect 5 0 8 0; #X connect 6 0 20 0; #X connect 8 0 6 0; #X connect 11 0 21 0; #X connect 12 0 11 0; #X connect 13 0 23 0; #X connect 13 1 1 0; #X connect 14 0 27 0; #X connect 15 0 16 0; #X connect 16 0 14 0; #X connect 16 1 14 0; #X connect 16 2 14 1; #X connect 17 0 5 0; #X connect 18 0 0 0; #X connect 19 0 15 0; #X connect 20 0 12 0; #X connect 23 0 26 0; #X connect 23 1 24 0; #X connect 23 2 25 0; #X connect 27 0 29 0; #X connect 29 0 28 0; #X connect 33 0 38 0; #X connect 34 0 33 0; #X connect 36 0 44 0; #X connect 38 0 36 0; #X connect 38 1 36 0; #X connect 44 0 37 0; #X connect 46 0 45 0;