This fixes a race condition in the midi event processing. When a midi control
change is sent, it took effect immediately. Program changes occur
asynchronously.
This fix adds a map of booleans that indicate that a specific parameter should
not be overriden during a program change, thus effectively retaining
controller changes that occur while a program change is still pending.
This also replaces effect parameter numbers with symbolic constants (at least
in the midi event processing code). This originally seemed like a good way to
protect the parameter values from exceeding the size of the per-effect array,
though this didn't work out well in practice. I've retained this change
because the code is still more readable this way.
Finally, this adds "midicheck.py", a python script to verify that I haven't
changed any of the constants. This should probably be removed from this PR
prior to merging.
This fixes a race condition in the midi event processing. When a midi control change is sent, it took effect immediately. Program changes occur asynchronously.
This fix adds a map of booleans that indicate that a specific parameter should not be overriden during a program change, thus effectively retaining controller changes that occur while a program change is still pending.
This also replaces effect parameter numbers with symbolic constants (at least in the midi event processing code). This originally seemed like a good way to protect the parameter values from exceeding the size of the per-effect array, though this didn't work out well in practice. I've retained this change because the code is still more readable this way.
Finally, this adds "midicheck.py", a python script to verify that I haven't changed any of the constants. This should probably be removed from this PR prior to merging.