Starting work for full MIDI support

Captain's Log: Stardate 77738.9

Regarding the last bit of my previous update, about reducing dependencies on the super-central model.h header, I actually was fairly successful here. I did manage to use the "pimpl" strategy, and I solved the issues I was having with {fmt} by splitting apart model.h into model_base.h and model.h, where the former includes only the most essential types that are used everywhere, like entity IDs, etc. So now the headers that are included in the most files are much leaner, and for example, changing the modulator.h header no longer requires a bunch of irrelevant recompilation.

But mostly what I've been working on the last couple of days was the MIDI routing implementation, which is now done. There's a general type representing the ID of a MIDI event (note on/off, aftertouch, pressure, pitch, CC, etc), and entities that implement the MidiRoutable interface can subscribe to the MIDI event ID of their choosing, after which they'll see any such MIDI events. The reasons it was important to do this in a general way has to do with the preset file serialization, copy & paste, and my general sanity.

This means that now it's finally "trivial" to add Modulator sub-types for all possible MIDI events. Today only CC is supported, but over the next few days I plan to add coverage for all the other events. This is mostly GUI work at this point, with a tiny bit of wiring to hook things up in the simulator. For the moment I'll probably let each sub-type just look like a 3D knob, but later I would like to visually distinguish all of them.

There's still a long ways to go, but having full MIDI support will be a nice milestone. This will open up a LOT of crazy stuff that Anukari can do.


© 2024 Anukari LLC, All Rights Reserved
Contact Us|Legal