Breaking ground on MPE support
Captain's Log: Stardate 77976.4
Polyphony is working pretty dang well at this point. The visuals are now correctly updated (whichever voice instance was most recently used is what's displayed in 3D), and I've fixed some bugs relating to note ON/OFF behavior and voice assignment/stealing. There are a bunch of smaller issues I need to resolve, for example, in the GUI where you normally pick a specific MIDI note from a visual piano keyboard, if the instrument is in polyphony mode, this needs to be hidden since you no longer pick the note (just the channel). There are a few other small things like that.
I've decided to put of fixing all the small details, and to work on MPE support first. This is partly because some of the small details may have slightly different behaviors between regular polyphony and MPE and I want to handle both at once, but it is also partly because my ROLI Seaboard Rise 25 is going to be here next Wednesday, and I am super excited to be able to play Anukari with MPE when it gets here.
I'm pretty sure that I'll be able to get a rudimentary MPE implementation working-ish by then. I've read the MPE v1.1 spec a couple times now, and it's all pretty straightforward. There are some details that are fairly annoying, but I understand why they wrote the spec the way they did, and it's overall pretty reasonable. Of course when I get the Seaboard, I'll find out all the ways in which I read the spec wrong. 😄
One thing I do not look forward to is handling the MPE protocol for "auto-configuring" the MPE zones. I feel that this is all overly complicated and doubt that more than 2 human beings will use the MCM configuration messages at all. But in some cases, it really will simplify setup for some people, so I feel like I should implement it. And, technically, if you don't implement the MCM stuff your instrument doesn't truly support MPE, so...