I'm working right now to add the many callbacks the MIDI 4.3.1 has which Teensyduino's usbMIDI lacks.

Teensy has 2 callbacks which MIDI 4.3.1 doesn't.

We do a different sysex callback that provides partial results when the buffer fills, with a 3rd parameter telling you whether this is the last part of the message. MIDI 4.3.1 uses a 2 param callback and just truncates the message if larger than the buffer.

We have a single setHandleRealTimeSystem() handler for all 6 realtime messages, contributed some time ago by Sebastian Tomczak. While it consumes 24 bytes of RAM and a little more code space, I'm going to add MIDI's 6 individual handlers too. Seems a bit redundant, but at least it should allow programs written for MIDI 4.3.1 to "just work" with Teensy's usbMIDI.

My plan is to call the more specific realtime handlers, if they've been set, and otherwise fall back to the catch-all one.

Likewise for sysex, if the partial handler is set, it will be used. The MIDI 4.3.1 compatible one that truncates will be used only if the partial handler isn't defined.