Sub-milisecond tapin/out?

I’ve got a working looper using tapin/out. And it works great, click free etc….but I want additional loops to be fractions of the length of the first, some longer, some shorter, all based on the length of the first recorded loop.

However, subsequent loops are drifting by a milisecond at a time because tapin/out doesn’t interpolate.

It’s working so smoothly apart from that, and I really don’t want to go down the ~groove ~buffer ~rec route unless I have to – it’s been a big headache in the past for me!

Could someone tell me if buffer recording is the only way? Or is there a synching thing I need to read about?

I was surprised to learn this, but it does look like tapin~/tapout~ doesn’t interpolate with delay times < signal vector size. It does for those greater than the signal vector length, so I don't think this is the source of your problem. There may be some drift caused by the interpolation, however, since fractional delays are a compromise solution. It does take a while to manifest (depending on delay lengths), however, since the shift shouldn’t exceed 1 sample per cycle. If that’s still too much, calculate your delay in samples, convert it to an int, then multiply and reconvert to ms. You should get a non-fractional delay (or very minimally fractional depending upon some vagaries of floating point math? — let’s see if that summons Peter Castine) that will not drift. (the example on the right)

From your description, I think the drift may have a different source: I’m guessing you may be converting some of your delay times to ints accidentally via something like this: "* 2" (or "/ 2") instead of this "* 2." That would account for it happening in ms rather than in samples.

<code>

— Pasted Max Patch, click to expand. —

Copy all of the following text. Then, in Max, select New From Clipboard.

yeah, I’m having a blast of a time looping with tapin~ + tapout~. My performance patch goes from tuned comb-style sounds up to a four-bar loop, and it’s really incredibly tight, I have no perceivable drift so far.