<html><head></head><body><div style="color:#000; background-color:#fff; font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;font-size:16px"><div id="yiv9354389958"><div id="yui_3_16_0_ym19_1_1475099473348_3158"><div id="yui_3_16_0_ym19_1_1475099473348_3157" style="color:#000;background-color:#fff;font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;font-size:16px;">> Thanks Jonathan.<br></div></div></div><div id="yui_3_16_0_ym19_1_1475099473348_3179" class=".yiv9354389958yahoo_quoted"><div id="yiv9354389958yui_3_16_0_ym19_1_1475094593298_4140" style="font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;font-size:16px;"><div id="yiv9354389958yui_3_16_0_ym19_1_1475094593298_4139" style="font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;font-size:16px;"><div class="yiv9354389958y_msg_container" id="yiv9354389958yui_3_16_0_ym19_1_1475094593298_4138"><br clear="none">> Also [readsf~] supports threading and so do [udpsend] and [udpreceive], for obvious reasons involving system calls.<br clear="none"><br clear="none">>> Can you guarantee that the revisions you've implemented generate the same output as Pd Vanilla, for all cases?<br clear="none"><br clear="none"><div id="yui_3_16_0_ym19_1_1475099473348_3225">> I'd rather say it does not, in all cases. At the very least there is going to be a delay involved. But, if this brings to a different behaviour, yet still deterministic, would that be bad? After all, the above mentioned objects are not deterministic themselves, yet they are widely used, with a very high success rate.</div><div id="yui_3_16_0_ym19_1_1475099473348_4416"><br clear="none"></div><div id="yui_3_16_0_ym19_1_1475099473348_4469" dir="ltr">udpsend and udpreceive are special cases because the protocol itself rules out the kind of determinism we're discussing. <br clear="none"></div><div id="yui_3_16_0_ym19_1_1475099473348_4523" dir="ltr"><div id="yui_3_16_0_ym19_1_1475099473348_4522"><br></div><div id="yui_3_16_0_ym19_1_1475099473348_4668">So let's focus on readsf~ instead.</div></div><div id="yui_3_16_0_ym19_1_1475099473348_4318" dir="ltr"><br clear="none"></div><div id="yui_3_16_0_ym19_1_1475099473348_4697" dir="ltr"><div id="yui_3_16_0_ym19_1_1475099473348_4696">Suppose readsf~ is reading a sound file and outputs 3 blocks-- block 1, block 2, and block 3.  The patch is outputting the sound file to the sound card, so we are <br></div><div id="yui_3_16_0_ym19_1_1475099473348_4823" dir="ltr">listening to the sound file as Pd is running.</div><div id="yui_3_16_0_ym19_1_1475099473348_4824" dir="ltr"><br></div><div id="yui_3_16_0_ym19_1_1475099473348_4898" dir="ltr">Now, imagine this happens:</div><div id="yui_3_16_0_ym19_1_1475099473348_4899" dir="ltr"><br></div><div id="yui_3_16_0_ym19_1_1475099473348_4905" dir="ltr">1st block: readsf~ perform routine finishes in time to output a block to the soundcard on schedule.<br></div><div id="yui_3_16_0_ym19_1_1475099473348_4906" dir="ltr">2nd block: perform routine takes longer to compute, and it misses the deadline set for the next block to be delivered to the soundcard.  So we hear a dropout.</div><div id="yui_3_16_0_ym19_1_1475099473348_4907" dir="ltr">3rd block: perform routine finishes in time to meet the deadline.</div><div id="yui_3_16_0_ym19_1_1475099473348_4956" dir="ltr"><br></div><div id="yui_3_16_0_ym19_1_1475099473348_4913" dir="ltr">Now, suppose we were debugging our patch by outputting each block of samples <br></div><div id="yui_3_16_0_ym19_1_1475099473348_4928" dir="ltr">to the console.  Here's the question, then: what gets printed for the 2nd block?  <br></div><div id="yui_3_16_0_ym19_1_1475099473348_4929" dir="ltr">Does Pd print out the samples from the sound file that missed the deadline, or <br></div><div id="yui_3_16_0_ym19_1_1475099473348_4930" dir="ltr">does it print out 64 zeroes?</div><div id="yui_3_16_0_ym19_1_1475099473348_5013" dir="ltr"><br></div><div id="yui_3_16_0_ym19_1_1475099473348_4932" dir="ltr">-Jonathan<br></div></div></div><div class="qtdSeparateBR"><br><br></div><div class="yiv9354389958yqt8853332613" id="yiv9354389958yqtfd99640"> </div></div><div class="yiv9354389958yqt8853332613" id="yiv9354389958yqtfd60275"> </div></div><div class="yiv9354389958yqt8853332613" id="yiv9354389958yqtfd39008">  </div></div></div></body></html>