#N canvas 476 32 518 614 12;
#X floatatom 126 477 5 0 0 0 - - - 0;
#X obj 126 447 snapshot~;
#X obj 34 15 throw~;
#X obj 34 39 catch~;
#X obj 38 392 metro 200;
#X obj 230 447 snapshot~;
#X obj 100 584 send~;
#X text 27 583 see also:;
#X floatatom 230 477 5 0 0 0 - - - 0;
#X obj 38 364 loadbang;
#X msg 379 384 \; pd dsp 1;
#X text 411 351 DSP on/off;
#X floatatom 160 220 5 0 0 0 - - - 0;
#X floatatom 62 224 5 0 0 0 - - - 0;
#X text 87 17 - summing signal bus and;
#X text 101 34 non-local connection, f 22;
#X obj 230 213 f \$0;
#X obj 230 188 bng 19 250 50 0 empty empty empty 17 7 0 10 #dfdfdf #000000 #000000;
#N canvas 525 216 510 156 execution-order 0;
#X obj 115 95 ../3.audio.examples/G05.execution.order;
#X text 46 30 You have to get the throw~ sorted before the catch~ or else you'll never get less than a block's delay. You can use the strategy given in the example below to control this.;
#X restore 346 455 pd execution-order;
#N canvas 611 127 576 445 reference 0;
#X obj 8 53 cnv 5 550 5 empty empty INLET: 8 18 0 13 #202020 #000000 0;
#X obj 8 114 cnv 2 550 2 empty empty OUTLETS: 8 12 0 13 #202020 #000000 0;
#X obj 8 151 cnv 2 550 2 empty empty ARGUMENT: 8 12 0 13 #202020 #000000 0;
#X obj 7 190 cnv 5 550 5 empty empty empty 8 18 0 13 #202020 #000000 0;
#X obj 8 321 cnv 2 550 2 empty empty OUTLET: 8 12 0 13 #202020 #000000 0;
#X obj 9 363 cnv 2 550 2 empty empty ARGUMENTS: 8 12 0 13 #202020 #000000 0;
#X obj 9 420 cnv 5 550 5 empty empty empty 8 18 0 13 #202020 #000000 0;
#X text 146 123 NONE;
#X obj 8 281 cnv 5 550 5 empty empty INLET: 8 18 0 13 #202020 #000000 0;
#X obj 24 15 throw~ y;
#X obj 24 245 catch~ y;
#X text 107 376 1) symbol -;
#X text 107 393 2) number -;
#X text 190 392 number of channels (default: one).;
#X text 91 294 channels <float> - set number of channels to output.;
#X text 162 332 symbol - signal from matching [throw~] object(s).;
#X text 95 15 - throw signal to a matching [catch~] object.;
#X text 139 65 signal - signal to throw to a matching [catch~] object.;
#X text 114 159 1) symbol - throw symbol name (default: empty symbol).;
#X text 99 245 - catch signal from one or more [throw~] objects.;
#X text 190 376 catch name symbol (default: empty symbol).;
#X text 97 84 set <symbol> - set throw name (just 'set' unsets the object)., f 61;
#X restore 329 26 pd reference;
#X text 426 27 <= click;
#X obj 4 68 cnv 1 510 1 empty empty empty 8 12 0 13 #000000 #000000 0;
#X obj 4 568 cnv 1 510 1 empty empty empty 8 12 0 13 #000000 #000000 0;
#X obj 146 584 tabsend~;
#X text 324 238 You can redirect [throw~] via a "set" message., f 16;
#X text 268 189 <- \$0 needs to be expanded from objects., f 23;
#N canvas 680 88 505 390 multichannel 0;
#X obj 304 247 metro 200;
#X obj 193 284 snapshot~;
#X floatatom 193 314 5 0 0 0 - - - 0;
#X obj 304 219 loadbang;
#X obj 273 284 snapshot~;
#X floatatom 273 314 5 0 0 0 - - - 0;
#X floatatom 44 208 5 0 0 0 - - - 0;
#X floatatom 118 207 5 0 0 0 - - - 0;
#X text 47 11 A [catch~] object may be directed to output multichannel signals via its second optional argument. A [throw~] object automatically uses as many channels as its input signal provides. If the matching [catch~] has fewer channels than that the extras are ignored. If the [throw~] object has fewer than the catch the extra output channels are left unchanged.;
#X obj 44 244 snake~ in 2;
#X obj 192 223 snake~ out 2;
#X text 274 354 see also:;
#X obj 352 355 snake~;
#X obj 410 355 clone;
#X msg 192 129 channels 1;
#X msg 206 158 channels 2;
#X text 298 130 message to set number of channels, f 18;
#X obj 44 282 throw~ bus3;
#X obj 192 187 catch~ bus3 2;
#X connect 0 0 1 0;
#X connect 0 0 4 0;
#X connect 1 0 2 0;
#X connect 3 0 0 0;
#X connect 4 0 5 0;
#X connect 6 0 9 0;
#X connect 7 0 9 1;
#X connect 9 0 17 0;
#X connect 10 0 1 0;
#X connect 10 1 4 0;
#X connect 14 0 18 0;
#X connect 15 0 18 0;
#X connect 18 0 10 0;
#X restore 346 481 pd multichannel;
#X obj 379 346 set-dsp-tgl;
#X msg 230 242 set \$1-bus2;
#X msg 242 272 set bus1;
#X obj 230 380 catch~ \$0-bus2;
#X obj 62 288 throw~ bus1;
#X obj 126 381 catch~ bus1;
#X obj 230 333 throw~ bus1;
#X obj 160 246 sig~ 25;
#X obj 62 251 sig~ 50;
#X text 277 583 updated for Pd version 0.55-0;
#X msg 257 302 set;
#X text 290 303 unset;
#X text 66 511 A pair of [throw~]/[catch~] objects must have matching block sizes \, but they may be in different windows or even different patches., f 54;
#X text 38 81 A [throw~] object copies its input to a local buffer which a [catch~] object of the same name reads from. Any number of [throw~] objects can add into one [catch~] object (but two [catch~] objects cannot share the same name). The [throw~] object takes "set" messages with address names to switch between different [catch~] objects (just 'set' unsets the object).;
#X connect 1 0 0 0;
#X connect 4 0 1 0;
#X connect 4 0 5 0;
#X connect 5 0 8 0;
#X connect 9 0 4 0;
#X connect 12 0 34 0;
#X connect 13 0 35 0;
#X connect 16 0 28 0;
#X connect 17 0 16 0;
#X connect 27 0 10 0;
#X connect 28 0 33 0;
#X connect 29 0 33 0;
#X connect 30 0 5 0;
#X connect 32 0 1 0;
#X connect 34 0 33 0;
#X connect 35 0 31 0;
#X connect 37 0 33 0;
