[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,
Matt
More information about the Pd-list
mailing list