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 [email protected] http://createdigitalmusic.com | PhD Candidate, CUNY Graduate Center | Adjunct faculty, Parsons The New School for Design _______________________________________________ [email protected] mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
