Add track-based callback with shuffle per track
I created an issue with a feature request for essentially doing a track-based callback and shuffle while still tethered to the main clock, so as not to generate multiple instances of uClock and having to synchronize them.
This allows track-based sequencers which use uClock to have track-based control over step counting and shuffle settings. This enables things like applying microtiming/shuffle on steps for individual tracks, rather than microtiming/shuffle on steps for a pattern as a whole.
Another thing that would be nice is the ability for any negative shuffle amount on the first step to be triggered on the next bar of the pattern. So like, if the clock is running, and if the first step has a negative shuffle, trigger it the next time around.
I have noticed an issue sometimes when placing a negative shuffle on a step next to an adjacent step that has a positive shuffle, it seems to throw the timing off entirely. I can probably record an example at some point. Not really sure I can find the issue in the current code.
Ok, I think I fixed the issues mentioned in my comment above. I will apply it to the standard non-track-based API as well.
Hi @grayxr ,
Thank you for this contribution! i will try to review and make some tests asap on this PR.
Hi @grayxr ,
I saw another branch with multitrack shuffle implementation. Is there any significant difference that's worth integrating into this one for a later PR merge?
Also, could you please change the target merge repository from midilab:main to midilab:develop? Don't mind about the conflicts; I will resolve them.
My idea is to merge your multitrack shuffle code with the original global shuffle API for easier and cleaner setup.
multitrack shuffle merged with part of your code to a one integrated API for single and multitrack at develop branch. Soon to be merged into main for release.