#N canvas 495 62 566 522 10;
#X obj 2 315 cnv 3 550 3 empty empty inlets 8 12 0 13 #dcdcdc #000000 0;
#X obj 2 371 cnv 3 550 3 empty empty outlets 8 12 0 13 #dcdcdc #000000 0;
#X obj 2 425 cnv 3 550 3 empty empty arguments 8 12 0 13 #dcdcdc #000000 0;
#X obj 85 325 cnv 17 3 37 empty empty 0 5 9 0 16 #dcdcdc #9c9c9c 0;
#X obj 84 379 cnv 17 3 17 empty empty n 5 9 0 16 #dcdcdc #9c9c9c 0;
#X obj 250 188 * 10;
#X floatatom 250 214 5 0 0 0 - - - 0;
#X floatatom 271 164 5 0 0 0 - - - 0;
#X obj 2 514 cnv 1 550 1 empty empty empty 0 0 0 4 #fcfcfc #fcfcfc 0;
#X obj 2 490 cnv 15 552 21 empty empty empty 20 12 0 14 #e0e0e0 #202020 0;
#X text 129 327 anything;
#X text 129 381 anything;
#X text 158 435 -;
#X text 158 455 -;
#X text 95 435 1) float;
#X obj 181 137 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 #dcdcdc #000000 #000000 0 256;
#X obj 181 209 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 #dcdcdc #000000 #000000 0 256;
#X obj 181 164 cyclone/grab;
#X obj 84 400 cnv 3 3 17 empty empty n+1 5 9 0 16 #dcdcdc #9c9c9c 0;
#X text 129 402 anything;
#X text 105 345 set <symbol>;
#X text 288 188 <= result goes to grab;
#X text 284 214 <= and is not output here;
#X text 95 455 2) symbol;
#X text 172 455 messages in the inlet are sent to receive objects named by this symbol. In this case \, there's no rightmost outlet.;
#X text 196 345 - sets the receive name (if a 2nd argument was given);
#X text 196 381 - anything that was grabbed from another object;
#X text 196 327 - a message to send an object whose output is grabbed;
#X text 196 402 - the message sent to an object whose output is grabbed;
#X text 70 195 grabbed from;
#X text 68 208 another object =>;
#X text 172 435 number of outlets besides the rightmost one., f 58;
#X text 64 89 [grab] sends a message to another object and "grabs" its output \, sending it through its outlet(s) isntead of the grabbed object.;
#N canvas 628 102 705 394 examples 0;
#X msg 92 36 length;
#X obj 92 62 cyclone/grab;
#X msg 419 247 set add;
#X msg 363 246 set mul;
#X obj 420 300 cyclone/grab 1 add;
#X obj 420 339 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 #dcdcdc #000000 #000000 0 256;
#X obj 432 273 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 #dcdcdc #000000 #000000 0 256;
#X obj 603 268 r add;
#X obj 553 268 r mul;
#X obj 161 166 cyclone/table;
#C restore;
#N canvas 1130 257 394 263 set_table 0;
#X obj 150 190 outlet;
#X obj 45 45 loadbang;
#X obj 144 109 t f b;
#X obj 171 132 random 128;
#X obj 45 81 cyclone/uzi 128 0;
#X obj 150 156 pack;
#X text 117 43 set table contents with random values;
#X obj 18 51 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000;
#X connect 1 0 4 0;
#X connect 2 0 5 0;
#X connect 2 1 3 0;
#X connect 3 0 5 1;
#X connect 4 2 2 0;
#X connect 5 0 0 0;
#X connect 7 0 4 0;
#X restore 170 134 pd set_table;
#X obj 59 112 random;
#X floatatom 92 87 5 0 0 0 - - - 0;
#X obj 59 75 bng 18 250 50 0 empty empty empty 17 7 0 10 #dcdcdc #000000 #000000;
#X floatatom 59 135 5 0 0 0 - - - 0;
#X floatatom 553 334 5 0 0 0 - - - 0;
#X floatatom 603 334 5 0 0 0 - - - 0;
#X obj 161 191 nbx 5 17 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 13 #dcdcdc #000000 #000000 0 256;
#X text 141 35 <= get length from table;
#X text 185 54 and send to random;
#X obj 161 217 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000;
#X msg 379 80 1 2 3;
#X obj 460 128 unpack f f f;
#X obj 379 106 cyclone/grab 3;
#X floatatom 433 129 2 0 0 0 - - - 0;
#X floatatom 406 129 2 0 0 0 - - - 0;
#X floatatom 379 129 2 0 0 0 - - - 0;
#X text 471 105 <= setting more than 1 output;
#X floatatom 275 313 5 0 0 0 - - - 0;
#X obj 206 261 nbx 3 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 #dcdcdc #000000 #000000 0 256;
#X obj 206 325 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 #dcdcdc #000000 #000000 0 256;
#X obj 206 289 cyclone/grab;
#X floatatom 275 334 5 0 0 0 - - - 0;
#X obj 181 260 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000;
#X text 41 259 grab value from GUI =>;
#X text 346 24 A 1st float argument sets the number of outputs \, so you can connect to an object that has more than one output and grab all of them., f 52;
#X obj 206 348 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000;
#X text 31 296 [grab] sets the value of GUIs but also grabs its ouotput. See how when you send it number values \, the number box is set but doesn't output anything., f 26;
#X text 347 177 A 2nd symbol argument sets the name of a corresponding receive object to send a message to. The "set" message can change the name. This way \, it grabs from the object connected to the [receive] object., f 54;
#X text 247 254 set and grab value, f 10;
#X obj 603 301 + 1000;
#X obj 553 301 * 100;
#X connect 0 0 1 0;
#X connect 1 0 12 0;
#X connect 1 1 9 0;
#X connect 2 0 4 0;
#X connect 3 0 4 0;
#X connect 4 0 5 0;
#X connect 6 0 4 0;
#X connect 7 0 40 0;
#X connect 8 0 41 0;
#X connect 9 0 17 0;
#X connect 10 0 9 0;
#X connect 11 0 14 0;
#X connect 12 0 11 1;
#X connect 13 0 11 0;
#X connect 14 0 9 0;
#X connect 17 0 20 0;
#X connect 21 0 23 0;
#X connect 23 0 26 0;
#X connect 23 1 25 0;
#X connect 23 2 24 0;
#X connect 23 3 22 0;
#X connect 28 0 32 0;
#X connect 29 0 31 0;
#X connect 30 0 36 0;
#X connect 31 0 30 0;
#X connect 31 1 28 0;
#X connect 33 0 31 0;
#X connect 40 0 16 0;
#X connect 41 0 15 0;
#X restore 470 157 pd examples;
#N canvas 699 55 430 525 built-in 0;
#X obj 75 170 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 #dcdcdc #000000 #000000 0 256;
#X floatatom 307 256 5 0 0 0 - - - 0;
#X obj 238 258 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 #dcdcdc #000000 #000000 0 256;
#X obj 238 232 cyclone/grab;
#X obj 213 203 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000;
#X obj 238 281 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000;
#X floatatom 75 109 5 0 0 0 - - - 0;
#X obj 261 163 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 #dcdcdc #000000 #000000 0 256;
#X obj 48 109 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000;
#X obj 75 192 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000;
#X floatatom 238 202 5 0 0 0 - - - 0;
#X obj 82 415 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 #dcdcdc #000000 #000000 0 256;
#X floatatom 82 354 5 0 0 0 - - - 0;
#X obj 268 387 nbx 5 14 -1e+37 1e+37 0 0 empty number-2 empty 0 -8 0 10 #dcdcdc #000000 #000000 0 256;
#X obj 55 354 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000;
#X obj 82 437 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000;
#X obj 82 386 cyclone/grab 1 number-2;
#X text 264 370 "number-2";
#X obj 261 139 receive number-1;
#X obj 75 141 cyclone/grab 1 number-1;
#X text 23 15 This is an extra feature for cyclone that is not available in MAX. Since Pd has built in receive names for atom boxes and other GUIs \, [grab] in cyclone can also grab values from them., f 62;
#X text 23 56 First \, let's have a look at how things work for GUIs without a built-in receive name \, but that are connected to a [receive] object., f 62;
#X text 78 239 The above behaves as the example to the right =>, f 24;
#X text 30 314 And now let's check how it is the same with a built-in receive name in the number box., f 62;
#X text 39 473 This works for all GUI objects in Pd Vanilla and can work even with GUI externals that have built-in receive names.;
#X connect 0 0 9 0;
#X connect 2 0 5 0;
#X connect 3 0 2 0;
#X connect 3 1 1 0;
#X connect 4 0 3 0;
#X connect 6 0 19 0;
#X connect 8 0 19 0;
#X connect 10 0 3 0;
#X connect 11 0 15 0;
#X connect 12 0 16 0;
#X connect 14 0 16 0;
#X connect 16 0 11 0;
#X connect 18 0 7 0;
#X connect 19 0 0 0;
#X restore 470 179 pd built-in \; receive;
#N canvas 775 187 388 376 presets 0;
#X obj 91 140 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 #dcdcdc #000000 #000000 0 256;
#X obj 91 111 cyclone/grab 1 slider-1;
#X obj 214 152 r slider-1;
#X obj 217 183 hsl 128 15 0 127 0 0 empty empty empty -2 -8 0 10 #fcfcfc #000000 #000000 0 1;
#X obj 91 83 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000;
#X obj 76 164 f;
#X obj 64 135 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000;
#X obj 76 190 s slider-1;
#X text 31 28 When used with receive names \, [grab] can be useful to retrieve and store data that can then be recalled as a preset.;
#X obj 202 322 hsl 128 15 0 127 0 0 empty slider-2 empty -2 -8 0 10 #fcfcfc #000000 #000000 0 1;
#X obj 83 281 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 #dcdcdc #000000 #000000 0 256;
#X obj 83 227 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000;
#X obj 68 305 f;
#X obj 56 276 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000;
#X obj 83 252 cyclone/grab 1 slider-2;
#X obj 68 331 s slider-2;
#X text 208 291 built in receive name "slider-2", f 16;
#X connect 0 0 5 1;
#X connect 1 0 0 0;
#X connect 2 0 3 0;
#X connect 4 0 1 0;
#X connect 5 0 7 0;
#X connect 6 0 5 0;
#X connect 10 0 12 1;
#X connect 11 0 14 0;
#X connect 12 0 15 0;
#X connect 13 0 12 0;
#X connect 14 0 10 0;
#X restore 470 212 pd presets;
#X obj 3 2 ./header grab;
#X text 22 61 Grabs the output of another object;
#X text 83 273 see also:;
#X obj 425 286 open-else;
#X text 485 264 click;
#X msg 425 264 retrieve;
#X text 153 263 Plugdata users or those with ELSE can also use [else/retrieve] as an alternative with limited functionality, f 42;
#X connect 5 0 6 0;
#X connect 7 0 5 1;
#X connect 15 0 17 0;
#X connect 17 0 16 0;
#X connect 17 1 5 0;
#X connect 41 0 39 0;
