[PD] timing question

Mathieu Bouchard matju at artengine.ca
Mon Dec 17 19:17:17 CET 2007

On Mon, 17 Dec 2007, Frank Barknecht wrote:

> Though, even in Pd, GUI messages are treated special: If you click on
> a [bang( message, this will only be evaluated every 64 samples. But
> you probably cannot click the mouse repeatedly with a constant 1 msec
> period anyways, so it shouldn't matter.

There is no special code for handling GUI in this case. It just works the 
same as the rest does: each thing must be finished before you move to 
doing the next thing. This includes the GUI vs DSP interaction that you 
are talking about, which is only special to the extent that *you* look at 
it in a special way.

> The second thing, people need to learn then is, that most signal objects 
> can only be scheduled on block boundaries. So if you send a new 
> frequency to an [osc~] as a float message, the osc~ will not respond 
> immediatly, as it has already calculated the next block of samples. So 
> the new frequency can only be taken into account for the next block 
> after that. IIR block here means 64 samples always, regardless of block~ 
> size. But I may be wrong about that.

I don't think that it would make sense that anything else than the 
object's effective block size would ever be used in that case. The point 
is to avoid the trouble of making a setting change during a block, 
because it requires remembering the old setting, the new setting, 
and the time at which it occurred, and it could change several 
times during the same block and the object would have to remember 
all of that. I can only suppose that it's not about 64, it's about the 
block size in use by the object in question.

I haven't tried it though.

AFAIK, the only restriction to 64 samples is a limitation of [dac~] and 
[adc~], so any objects you want to have more precision on, have to be in a 
different subpatch, because [block~] only operates on complete subpatches.

BTW, to add subblock precision to any float&signal inlet, change the inlet 
mode from float to signal (e.g. change [*~ 1] to [*~]) and use [vline~] to 
do a higher-precision kind of [signal~].

  _ _ __ ___ _____ ________ _____________ _____________________ ...
| Mathieu Bouchard - tél:+1.514.383.3801, Montréal QC Canada

More information about the Pd-list mailing list