Been in touch with P.A. (he&#39;s my supervisor at Huddersfield) and he would be delighted to have a Pd version of iPoke~.  If we get a posse together, or if someone is happy to take it on, he&#39;s more than happy to share the source code with us/you/them/it.  There&#39;s also a new version (v.3) which hasn&#39;t been released yet and we can take it from that.<br>
<br>We/you should decide who&#39;s going to take this on and then we/you can get in touch with P.A.<br><br>Hope this helps,<br><br>Julian<br><br><br><br><div class="gmail_quote">On 14 June 2012 03:28, Matt Barber <span dir="ltr">&lt;<a href="mailto:brbrofsvl@gmail.com" target="_blank">brbrofsvl@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">&gt;&gt; Two points here. The last thing you said is not actually true -- each<br>
&gt;&gt; interpolation scheme has an associated convolution function, which can<br>
&gt;&gt; be calculated by imagining what the interpolation would look like for<br>
&gt;&gt; a single sample whose value was 1.0 surrounded by zeroes everywhere<br>
&gt;&gt; else. This 4-point piecewise function can be used to write four<br>
&gt;&gt; samples in its immediate vicinity the same way that the sinc does in<br>
&gt;&gt; the csound example.<br>
&gt;<br>
&gt; Meaning, there is also a convolution kernel for linear interpolation?<br>
&gt; How would it look like? Ah, it would be a simple dirac delta, but the<br>
&gt; point is, the kernel can be applied time-shifted with fractional<br>
&gt; delay, matching the fraction in the index. By the way, this also holds<br>
&gt; for sinc-interpolated resampling as described by Julius O. Smith: a<br>
&gt; linear interpolation in the sinc-table to make the result more<br>
&gt; precise. Interpolating the interpolation kernel...<br>
&gt;<br>
<br>
</div>The kernel for linear interpolation is a linear ramp from 0.0 to 1.0<br>
and then back down to 0.0. This means that if one were to do linear<br>
interpolation in the same way the csound opcode applies the sinc, you<br>
would center the peak of this ramp at the fractional index into the<br>
table, multiply it by the incoming sample, and then write the values<br>
of the ramp at the intersection points of the two nearby samples in<br>
the table to those samples.<br>
<br>
So, say the index is 126.78 and the incoming sample value was -0.45.<br>
You&#39;d in effect ramp down from 0.0 to -0.45 over indices 125.78 to<br>
126.78, and then back up to 0.0 from 126.78 to 127.78. As desired,<br>
this would intersect with samples at index 126 and 127, and the values<br>
would be -0.099 at 126 and -0.351 at 127.<br>
<br>
So, theoretically you could do the same with Pd&#39;s cubic lagrangian<br>
interpolation kernel, writing 4 points in the table for every incoming<br>
sample. This should work fine with a long interpolation kernel, but I<br>
foresee a lot of problems with doing this just for 4 points.<br>
<br>
Like, imagine you&#39;re going to write samples 0, 1, and 2 from the<br>
incoming signal to indices 2.3, 45.7, and 89.1. Doing it the way I<br>
described with a 4-point interpolator you&#39;d put some values at indices<br>
1-4, 44-47, and 88-91, and leave everything else at 0. Imagine you<br>
continued like this for a long time -- you&#39;d have the original signal,<br>
each sample of which would be interpolated into 4 points, and each of<br>
these little spots would be, separated by long strings of zeroes. This<br>
isn&#39;t going to play back as &quot;the same sound but lower,&quot; unless you ran<br>
it through a low-pass filter that smoothed this signal over the<br>
intervening samples, which I think would be pretty much like using the<br>
sinc for interpolating in the first place.<br>
<br>
I should mention that any time I&#39;ve ever heard of moving the write<br>
head to make a variable delay, it&#39;s always with a big interpolation<br>
kernel. I&#39;m going to look at a couple of other places - something like<br>
csound&#39;s spat3d opcode, or Richard Furse&#39;s old program &quot;vspace&quot; would<br>
be candidates for getting ideas.<br>
<br>
Hope this is all clear, and sorry if it&#39;s all obvious; sometimes it<br>
helps me to think about things to write out my thoughts.<br>
<span class="HOEnZb"><font color="#888888"><br>
Matt<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
_______________________________________________<br>
<a href="mailto:Pd-list@iem.at">Pd-list@iem.at</a> mailing list<br>
UNSUBSCRIBE and account-management -&gt; <a href="http://lists.puredata.info/listinfo/pd-list" target="_blank">http://lists.puredata.info/listinfo/pd-list</a><br>
</div></div></blockquote></div><br>