It would appear that there are several common USB MIDI controllers (e.g. those by Novation) that seem to present an INTERRUPT endpoint rather than a BULK endpoint. This means that they are ignored in usbmidi.cpp due to the check for just BULK endpoints.
It would appear that if this is changed to BULK or INTERRUPT then these controllers will work, but not really understanding how USB works, I don't know the implications of this change...
The check happens here: https://github.com/rsta2/circle/blob/master/lib/usb/usbmidi.cpp#L112
For more discussion and some details, see this thread as part of MiniDexed: probonopd/MiniDexed#258
Kevin