[PD] Sample-accurate sequencing techniques

Peter Kirn peter at createdigitalmedia.net
Tue Feb 8 01:13:32 CET 2011


Hi everybody,
Particularly now with work to re-implement its timing techniques for
the web API (Chris McCormick's WebPd) and to embed it as a DSP (and
sequencing) engine (libpd), I know there's a lot of interest in how
sample-accurate sequencing works in Pd.

It's been discussed on this list before, but I'm not sure that
discussion has ever been systematically documented, and changes since
mean now is probably an ideal time to revisit the question. This
started as a discussion between me and Chris and extended to Eric Lyon
and Hans, but Hans pointed out we should be having it on the list.

In short:
1. If one were working to build a sample-accurate (or close to it)
sequencer in Pd, what would the best technique be? Keep in mind that
actual calculation of the sequences themselves might occur outside the
Pd patch.

2. What timing objects in Pd are sample-accurate? Chris was toying
with the idea of using vline~ to trigger pre-calculated sample events
based on its envelopes, which is at least interesting. His assumption
was that not only are its ramps interpolated at sub-sample levels, but
that the calculations of the delays themselves are sample-accurate --
though that may or may not be correct.

3. (Related though maybe not essential...) What is quantized to block
boundaries, and what isn't? (And for that matter, at what point do you
think people should care?)

4. Have you looked at Eric Lyon's 2006 research? In it, he described
the Pd event engine thusly:
"The underlying Pd event scheduler is sub-sample-accurate using 64-bit
floating point numbers to represent time, though apparently at the
cost of a higher likelihood of interruption of the audio scheduler,
resulting in audible glitches. In both systems [Max and Pd] temporal
accuracy of control-level events can drift freely within the space of
a signal vector."

Is that still true?

Incidentally, I very much like the design of Eric's samm~, mask~, etc.
- to the point of considering a similar scheme for abstractions -- but
then the question is whether you want to rely on externals for this
kind of timing. I'm convinced by his approach, but for those wanting
to work inside vanilla, I'm not sure what the best approach and
associated costs may be.

I imagined writing this as a short query, but there you are. Have at
it. And since I'm paraphrasing some of my colleagues here, if they
want to jump in and correct me, please do...

Thanks,

Peter

PETER KIRN
peter at createdigitalmedia.net
http://createdigitalmusic.com | PhD Candidate, CUNY Graduate Center |
Adjunct faculty, Parsons The New School for Design



More information about the Pd-list mailing list