MIDI Device information

Dear community,

I want to create an application that can communicate with audio hardware via Sysex over USB MIDI.
Open questions I do not find answers to are:

  1. Can I filter the in and out device list by manufacturer id?
  2. Can I filter the in and out device list by product/model id?
  3. Can I read properties from the device such as a serial number in case I have multiple devices of the same model connected?

Well… it depends what you mean by “can I”

The MIDI device system certainly won’t tell you any of those things - all it does is to give you a list of named MIDI interface ports, it has no idea what kind of device (if any) is connected to that port at any given time.

If your device responds to requests for its name, manufacturer, ID, etc by sending some kind of sysex with that info in it, then you can open a pair of input/output ports, fire out whatever ping messages are appropriate, and listen for a response.

But if you’re expecting there to be any kind of higher-level layer that understands the thing that’s connected, then sorry, the MIDI protocol is from the wrong decade!

I don’t expect the latter. I was just fiddling around with a cross platform library called “libusb” and that let me read a so called device descriptor that has a manufacturer and model id so I could filter out devices not matching my search criteria before even opening a connection. That was the reason I thought that it may be implemented in JUCE.


Well no, our stuff doesn’t talk to USB ports directly. That’d make no sense with MIDI because when you open a device it could be USB, bluetooth, serial, MIDI-over-ethernet, a fake internal driver like MIDI OX, or an OSX app that’s created its own midi port etc etc.

Thanks for clarification!