celtera / libremidi

A modern C++ MIDI 1 / MIDI 2 real-time & file I/O library. Supports Windows, macOS, Linux and WebMIDI.
Other
455 stars 50 forks source link

Windows: SysEx (at least MMC ones) are mostly being missed #66

Closed JSandusky closed 1 year ago

JSandusky commented 1 year ago

Using https://www.midimonitor.com/ I've confirmed that the device is sending the MMC messages it claims to. However, in LibreMidi - those messages mostly aren't coming through.

~Seems to be timing sensitive as if I fiddle some breakpoints in the process of messages being pumped into the queue they'll squeeze through here and there.~ Scratch that, I was just lightly bumping my pitch-wheel without noticing.

I'm getting all other messages I'm expecting. Keys and CC.

To reproduce: run qmidiin test and clack some controls that send MMC messages. Specific keyboard I'm using here is Nektar GX61 on USB Mode 3 (use MMC instead of Mode 0 which sends CCs).

JSandusky commented 1 year ago

From investigating it looks like only the WinRT+ MIDI libraries (but amusingly not the most recent UWP MIDI libraries) emit the full set of MMC messages.

~So I guess I've got to write a WinRT backend and give it a whirl.~ Oh hey, one already there just called UWP.

No MMC messages there either.

JSandusky commented 1 year ago

I'm going to close for now as after reading the MMC specs https://midi.org/specifications/midi1-specifications/midi-1-0-core-specifications/rp-013-v1-0-midi-machine-control-specification-96-1-4 it's on me to do some extra work using the device as both in and output to get MMC messages circulating.

I'm assuming that's the problem and it's on me instead of the library (except maybe in helper-class / example form) to deal with it.