Interpolation AND non-contiguous buffer writing? (ipoke alternative)
So I'm working on a modulated delay/sampler based using poke/groove. (Based on a predecessor to this thing (which I own) : http://ciat-lonbarde.net/cocoquantus/index.html) Normally when using that combination I never oversample, and always undersample (so I usually use poke instead of ipoke), but since I'm working with modulation sources, I'm both under AND oversampling.
Now, I could just use ipoke and call it a day, but I'm also modulating direction change (no biggie) AND buffer position. That's the big one that breaks the ipoke-camel's back.
Now interpolation, by design, fills in the space between non-contiguous samples, but I'm jumping around all over the buffer. So something ideal would be ipoke, but if the sample that is being written next is greater than 10samples away, it doesn't interpolate, but rather writes, willy nilly.
Or more simply, interpolation only happens when the space being interpolated is less than 10 samples away.
Here is my patch as a point of reference:
I built it around a monome. If you drop me an email (rodrigo (dot) constanzo (at) gmail (dot) com) I'll email you the whole patch, tweaked with an onscreen matrixctrl to do all the patching.
I've been flirting with the idea of making one for many years, but finally got around to it. It actually sounds really good and convincing. The 'zipperyness' of oversampling then going back to normal speed doesn't sound great, but all the flip/skip stuff is awesome.
I did think I could oversample in general (88.2k), and then limit my modulation to +2, but that would mean taking a CPU hit, and I'd rather not do that.
I've read that you can upsample a poly only. Does that minimize/localize the cpu hit? Would I just wrap poke in a poly, or the whole area surrounding it?
Yeah I tried to do some stuff where I'm writing more samples than I want to hear, so I use [0.1] as my default play speed for groove, and then multiply the sync output by 10, so [*~ 441000], while increasing my buffer size by 10 as well (1000 to 10000) but that didn't seem to work like I thought it would.
I'm ok with the undersampled sound as it adds to the lofi-ness, but the oversampling sounds pretty crappy.
Trying to figure out how to do an upsampled poly for this is confusing me though. Not sure if the buffer should go in the poly with the poke, or just having the poke in there. Particularly since I'm using the 0-1. output of groove to drive poke using the *44.1k trick. Do I change that to 88.1k then send that into a poly with just poke in it? Or sent it a 44.1k into a poly, or just stick everything in the poly, etc....