A quick update on this… it’s getting close.
The biggest change I’ve made here is how changes to the real-time graph are applied.
In the current releases most changes are applied synchronously. This means unless Cantabile explicitly batches operations changes are applied in sequence, one after the other each waiting for the previous to be applied before proceeding.
While Cantabile could often batch updates together (eg: during a state switch) some operations could not - in particular binding based updates.
As an example, consider a set of bindings like this. Basically one CC button that enables 2 routes and disables another 2 and vice versa when the button released:
This is how these update in the current series - watch video. Notice the rolling flickering as each binding has to wait for the next to finish before updating the next. Also, the state of the bindings at the end is wrong - this is because if the bindings trigger again before the current set of updates finishes it results in a corrupted state.
This is how this looks with the new updates - watch video. Notice things are much more controlled, they’re snappier and they don’t end up corrupted.
I’m still testing this, but it’s basically finished and I hope to be rolling out an experimental release soon.
