Closed wraybowling closed 4 years ago
It seems that the most speed efficient way to handle this, especially with early beats, is to just use a big array of booleans. 24ppqn * 16 = 384. Depending on the quantizing setting, those beats may be summed up at different multiples of 2 (2, 4, 8, 16) or 3 (12, 24). There's no other way to slice up 12. An array will also allow subtracting from the index to look backwards for early beats. I think maybe 25% of quantized window should be early or 6 of the 24 pulses. This won't be configurable via the front panel controls, but perhaps could be adjusted in the source code as a compiler variable.
I think this has a solid solution that also includes the weight feature. Now effort then moved to optimization. See issue #7 which details the RAM limitations.
Instead of throwing out the slop completely, I'd like to meet qu-bit somewhere in-between completely sloppy beats and perfectly quantized beats. I think that the clock division input will be a good way of doing this. Internally, my plan is to create many beat grids with ever finer divisions. As you record, beats will be added to every layer which will result in finer detailed layers keeping slop and less detailed layers sounding time-quantized. This method will likely also greatly increase the quality of recorded slop since the memory grid can be scaled to match the incoming clock signals.