Teensy 3.6 USB MIDI host development status

Status
Not open for further replies.
It seems that it finds the endpoint correctly, but doesn't create it's pipe because MAX_PACKET_SIZE is too small. In USBHost_t36.h I changed MAX_PACKET_SIZE to 512 and RX_QUEUE_SIZE to 256 and all Elektron devices + OP-1 get detected. Not sure if these are the perfect values as I don't know much about USB/midi. It was just a lot of trial and error. :)

I am also trying to connect my OP-1, but can't get the Teensy to receive MIDI from the OP-1.
I tried to change the two values in the USBHost_t36.h file as suggested by flocked, but it didn't resolve the issue.

Activated debug mode, and this is what I get when connecting the OP-1 to the USB Host:

Code:
15:32:55.223 -> USB Host Testing
15:32:55.223 -> sizeof Device = 36
15:32:55.223 -> sizeof Pipe = 96
15:32:55.223 -> sizeof Transfer = 64
15:32:55.223 -> power up USBHS PHY
15:32:55.267 -> port change: 10001803
15:32:55.267 ->     connect
15:32:55.343 ->   begin reset
15:32:55.416 -> port change: 18001205
15:32:55.416 ->   port enabled
15:32:55.416 ->   end recovery
15:32:55.416 -> new_Device: 480 Mbit/sec
15:32:55.416 -> new_Pipe

Other devices like the AKAI LPK25 do work perfectly, and also I receive MIDI from the OP-1 when connected to a computer.

Maybe anyone can help me? Thanks a lot!
 
There's also functions to query the vendor and product ID numbers, and manufacturer, product and serial number strings. These are also in the base class, so they work on MIDI, keyboards, joystick, etc.

I see this working when I enable DEBUG... but how do I get the Manufacturer and Product strings into my sketch?

22:26:27.186 -> Manufacturer: Focusrite A.E. Ltd
22:26:27.186 -> enumeration:
22:26:27.186 -> Product: Launchpad Mini
 
You can call midi1.manufacturer() and midi1.product() to get the names, since MIDIDevice inherits the public functions of the USBDriver base class. These return NULL if no device is connected or if the device didn't provide a string descriptor, so be sure to check for NULL before using the string.
 
Thanks so much

I'm doing this... is this the most efficient way to it?

Code:
void myNoteOn(byte channel, byte note, byte velocity) {
  if (midi1.manufacturer() != NULL && midi1.product() != NULL) {
    String make = (char*)midi1.manufacturer();
    String model = (char*)midi1.product();
    Serial.print(String(make) + " " +  model + " ");
  }
 
Status
Not open for further replies.
Back
Top