The "double register write" is a workaround, at least I would not rely on getting the registers written on the next try.
One could clock down the CPU on such access to slow peripherals. (Would require some (simple) programmable logic chip. Switching Clock should not be a problem for the CPU, as long as it is synchronous = glitch free. )
Quote:
Originally Posted by
tux99
➡️
If the above is purely firmware changes then wouldn't it be possible to do that with the stock cpu too (200hz and 1 in 4 times respectively)
That would not help much, as the slow sys-ex is a result of the CPU taking too long to process the midi data.
The CPU is barely capable of handling the matrix engine during musical use. What some expect here is to use a patch change in musical context - that would require a complete different firmware concept. The current firmware is made to have a fast part (using the matrix) and a slow part (changing the patch).
Another trick to get rid of the "stuck" midi might be a slight rearrangement of how the update works:
Now, a midi command is taken, the parameter value is updated in the patch storage, than the associated update subroutine is called.
There you might just set a flag for the required update. Than look if there is another midi byte pending. Process that midi byte first. Until the queue is empty, *now* clean out the doubles (an "update all" might cancel an "update some part") and process that.