[PD] better tabread4~

Matt Barber brbrofsvl at gmail.com
Sun Jul 20 05:33:31 CEST 2008

> The interpolation function is a filter.  There would be no need to
> have an anti-aliasing filter and and interpolation function--there's
> just the one function.  We use the fast interpolating function at
> speeds <= 1.  But we need a general interpolation function as a
> function of speed that converges to the original function as the speed
> decreases to 1.  This would provide the needed generality and
> flexibility, while having the same general characteristics of the fast
> interpolating function on which it is based.  I'm open to any ideas on
> this thing... I think I need to take my eyes off of interpolation for
> a while, and stop beating up the pd list with tables :)

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?

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)

> 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?  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,


More information about the Pd-list mailing list