oh, but that is just trivial:
messages and signals are always calculated one after each other (first all messages; once they are done, signals are processed).
so an even easier way would be to use a latch ([f]) and [bang~]+[del 0] to do the calculation in msg-domain. [bang~] will output a bang before each signal block (or after; it really will trigger a bang before the *next* signal block). unfortunately, this bang can happen before or after the events sent out by [env~], so we need to make sure to get an event *after* all [env~]s have triggered. the simplest way to achieve this is by using an additional [delay 0], which will schedule an event at the same logical time NOW but after all events already scheduled for NOW (e.g. those from [env~]).
see attached patch. (in the attached patch i wasn't able to trigger an undesired behaviour without the [delay 0]; however i haven't tried hard and i'm pretty sure that you *can*; thus you should use [del 0])
thanks ! yes, with [delay 0] it ensures to get the good result (same block)... (also tried to get an undesired behaviour without [del 0], but didn't succeed !)
i already used [delay 0] sometimes, but i don't see where it's role is documented
i already knew [bang~] but with this object my doubt was always : "i know that it will happen *every* block during message-domain computation, but *when* in that block ? relatively to other "not-triggerred" objects like [env~]..."
well, maybe i'm going too far with this... since you gave me a working solution :-)
however, also sent this to the pd-list because i wonder if i'm the only one to feel that this issue isn't very intuitive to solve...
cheers,
Raphaël