Hi Frank,
xgroove~ handles this according to the loop mode. In forward loop mode, points needed for interpolation will wrap over (according to the loop bounds), in no-loop or bidirectional loop mode, the interpolation order will be reduced according to the number of points available to the end (or beginning) of the loop. In no event, points outside the loop are used - i hope so at least ;-) I haven't thought a lot about that - if someone finds this is not the method of choice, i'm open for other ideas. The algorithm is in inter.h
best greetings, Thomas
Frank Barknecht schrieb:
Hi,
I'm not quite sure how xgroove~ handles 4-point interpolation compared to tabread4~ in regard to table length. tabread4~ requires indices from 1 to size-2, so if I want to tabread4~ some table from m to n then the whole table must be at least "1 + |n-m| + 2" elements big, IIR.
Is the same required for xgroove~i in 4-point mode? Or can I skip for example the first sample or the last two? And if the table is then just as big as the range set in xgroove~ (say by using the "all" message): How will xgroove~ interpolate at the ends? By just wrapping around to the other end?
Some kind of wrapping interpolation actually is what I'm after, as I'm in need of an interpolation dynamic wavetable oscillator and xgroove~ handles dynamically changing wave-table contents much better than tabread4~. If someone has suggestions for alternative approaches to dynamic wavetable oscs, I would welcome them, too.
Ciao