On 04/06/15 08:03, Jonathan Wilkes via Pd-list wrote:
On 06/03/2015 05:03 PM, IOhannes m zmölnig wrote:
On 06/03/2015 09:40 PM, Pierre Massat wrote:
Thank you both very much for the explanations. So if I got it right, the loop in itself was behaving as expected, but what was being printed in the console was not reflecting that. Instead print behaved like a list prepend. That's good to know, I candidly thought that print objects were printing out stuff in real time irrespective of what was going on in the rest of the patch.
no. everything was behaving as expected, and [print] was printing in "real time" (whatever that means).
but time in Pd is a fickle thing, and while things can happen in zero-time they also happen one after the other. [print] immediately prints any data it receives, but your patch was made in a way that would send the "last" message to [print] before it would send the "first" message. hence the reversion.
to re-iterate: [trigger] would have made this more obvious.
But the author of the patch was under the impression that the firing order didn't matter. In cases like this [trigger] won't help-- the user would still have the same 50% chance of making the connections in the wrong order.
Surely that confusion, and it is a common one, is not understanding properly what is being drawn when writing a pd patch, it is very important to understand that it is a depth first tree and a single iterative process run once each dsp block. Fanouts are ambiguous and obfuscate this critical aspect of pd, they suggest a kind of parallel implementation of dataflow which is not correct.
Sure, after this is fully understood then fanouts are a convenient shortcut when you know that the ambiguity is not important, and when you consistently read them as ambiguous triggers ... but too often they are used without understanding this, hence they are dangerous, hence the very sound advice to replace them with triggers (and consider carefully the choice of order) when a patch is not doing what you think it should. Hence also any beginner should be taught not to use fanouts until they are well familiar with the language.
Simon