#N canvas 596 0 632 642 10;
#X text 21 37 a bang is emitted every time a grid transmission ends
;
#X obj 23 114 bng 15 250 50 0 empty empty empty 0 -6 0 8 -233017 -1
-1;
#X obj 23 85 #finished;
#X obj 0 0 doc_h;
#X obj 3 568 doc_i 1;
#X obj 3 632 doc_o 1;
#X obj 3 528 doc_c 0;
#X obj 14 664 doc_oo 0;
#X obj 14 600 doc_ii 0;
#X obj 97 600 doc_m i0 grid;
#X obj 97 664 doc_m o0 bang;
#X text 232 600 a bang is emitted every time a grid transmission ends.
;
#X obj 0 716 doc_f;
#X obj 23 66 t a a;
#X obj 89 66 #convolve (1 3 # 1 2 1);
#X text 90 85 this is a pattern where [t b a] doesn't cut it \, because
the bang would be output too early \, as it gets output at GRID_BEGIN
time (the time at which the grid message is sent). But [#convolve]
only outputs its contents after GRID_FLOW time \, which is what [#finished]
ensures. However you still need a [t a a] \, because [#finished]'s
GRID_FINISH time must happen after [#convolve]'s GRID_FINISH \, so
that you can be sure that [#convolve] is really finished with producing
its output.;
#X obj 3 696 doc_also;
#X obj 103 696 #t;
#X text 92 330 the third exception is that the GRID atom type is not
officially recognised by PureData because PureData provides no means
for externals to register new atom types. You can see the effect of
this in how GEM uses the POINTER atom type in an unstable way (which
is also how GridFlow used to do it);
#X text 93 419 the fourth exception is that GridInlets support multiple
selectors with quite peculiar autocasts \, meaning that [# +] can't
support the equivalent of the 'list' message in the [+] class.;
#X text 92 482 much of the text of this page should really go somewhere
else \, but there is no place for it yet.;
#X text 90 208 this is one of GridFlow's exceptions to how much grid-processing
is like normal pd message passing. there is also the [#t] class that
provides a shortcut for the most common use pattern of [#finished].
;
#X text 91 271 the 2nd exception is that it definitely doesn't support
any control-recursion (an object can't start processing a new message
before it has finished processing its current message). see also [norecurse].
;
#X obj 133 696 doc_link grid 1;
#X connect 2 0 1 0;
#X connect 9 1 11 0;
#X connect 13 0 2 0;
#X connect 13 1 14 0;
#X connect 16 1 17 0;
#X connect 16 1 23 0;

