[PD] better tabread4~

Charles Henry czhenry at gmail.com
Thu Jul 24 06:06:58 CEST 2008

On Sat, Jul 19, 2008 at 10:33 PM, Matt Barber <brbrofsvl at gmail.com> wrote:
> Right -- wouldn't this be equivalent to doing the (defined)
> interpolation and the anti-aliasing as a filter in one step?  You're
> modulating the interpolating function to include the effects of the
> appropriate anti-aliasing filter -- like a one-step sample rate
> converter.  Except, the ratio between the source and target rates is
> variable.  Is this an inappropriate way to be thinking about it?

Yes, that's it.

> I guess one problem is how "speed" is measured -- do you just use
> absolute value of the index delta from one sample to the next (what
> happens when the index is not a linear function of time)?  Or could
> you fill something like a delay line with past index positions and
> then use those to find speed as a three- or five-point approximation
> of the first derivative -- this would add a few samples of delay but
> might give a better estimate of "speed."  Sorry to be dense with the
> questions, but I want to keep up the best I can. =o)

Yes, that's exactly right, also.  The input is a sequence of table
indexes, so the speed is the first derivative of the input.
There is something problematic, when the user wants to jump between
different positions in the table.  Those instances shouldn't be
treated as playing at high speed--it would just be glitchy.  I would
suggest a look-ahead method to figure out the speed, when there are
rapid changes, to avoid having an error.

>> I've got two basic ideas that I'm playing with.
>> The first is to modify the interpolation function continuously adding
>> a series of "bumps" that are spaced exponentially outward from the
>> original function.  If there's some good spectral properties, there
>> could be a way to make a smooth transition and hold the number of
>> calculations to O(log(speed)) instead of O(speed)
>> My second idea is to replace the points and their derivatives, with
>> filters (low-pass filters for the points and band-pass filters for the
>> derivatives).  Then, fit a polynomial as before and interpolate.  Like
>> existing schemes, this could be turned into continuous functions for
>> impulse response, which vary as functions of speed.
>> Any ideas?
> Can you give a quick example of the form of each idea?

Not particularly... I'm only working with intuition for the idea so
far.  It's going to take some insight or inspiration.  Do you have any

> In the first,
> are you adding "bumps" to the interpolator's impulse response?  In the
> second are you saying you would replace a point with the impulse
> response of a low-pass filter (e.g.  in a 5th-degree polynomial with
> coefficients a0 a1 a2 a3 a4 and a5,   instead of matching
> a0+a1+a2+a3+a4+a5 with y[1] you'd match it with an impulse response
> centered on y[1])?  Would the algebra still be such that you could
> keep the form for derivatives of the polynomials (in the last example,
> 2*a2+6*a3+12*a4+20*a5 as the 2nd derivative at y[1]) even though
> you're matching them with something other than an approximation?
> Feeling my way through,
> Matt

More information about the Pd-list mailing list