I'm trying to confirm if Teensy 3.6 can host USB Midi devices that have more than one virtual MIDI cable, and if so how to tell how many ports a given device has. I believe this bolded modification to the 16x16 example code will return the virtual cable:

  // Next read messages arriving from the (up to) 10 USB devices plugged into the USB Host port
  for (int port=0; port < 10; port++) {
    if (midilist[port]->read()) {
      uint8_t type =       midilist[port]->getType();
      uint8_t data1 =      midilist[port]->getData1();
      uint8_t data2 =      midilist[port]->getData2();
      uint8_t channel =    midilist[port]->getChannel();
      const uint8_t *sys = midilist[port]->getSysExArray();
      sendToComputer(type, data1, data2, channel, sys, 6 + port);
      uint8_t cable =      midilist[port]->getCable();   // should return the virtual cable of this device
      activity = true;
Is there a limitation to the number of virtual cables that a hosted USB MIDI device can have? 16? And how can I identify how many virtual cables a device has when it is connected?

Also, in the 16x16 example there are 10 hosted USB MIDI devices. Is this the max number or could you host more? If I connected (16) Teensy 3.6 devices, all set to 16x16 Midi mode, to a master Teensy 3.6 with USB hubs, would I have a 64x64 matrix?

And finally, I've found some manufacturer's don't assign serial numbers to their MIDI devices. For instance the Akai LPK25 keyboard controller. If I had two of these, and connected them to the host port on a teensy 3.6, would there be a way to differentiate between the two and recognize which is which when they are disconnected and reconnected?

Very impressed and grateful for all the hard work and open source code provided by Paul for this product.