Windows 10 midi device naming problem

Status
Not open for further replies.
I have 2 teensy LC midi interfaces connected to my setup. I used the name.c feature to name each of them. One is called DRAWBARS, and one is called PEDALS. They are both working correctly.

Problem is, when windows starts up, it seems to give the second teensy the same name as the first, i.e. what I see in my MIDI software (tested with several different DAWs) is:

DRAWBARS(1) and DRAWBARS(2) or, randomly instead: PEDALS(1) and PEDALS(2).

Seems like which ever one windows scans first, it gives the other one the same name?

I've found that if I unplug PEDALS, open my DAW, rescan the MIDI devices, (so DRAWBARS(1) becomes DRAWBARS) plug the pedals back in, and rescan again, I can usually get the correct names for the interfaces to show up, and then I can enable them. I'd rather not have to do this every time I start up!

I'm wondering if there is something beyond the name.c file that I should add to my build to make the naming more robust?? Can I give the teensies different IDs? I note the IDs are the same in the Arduino list... I did change them to COM+MIDI so they had different port numbers, and I could tell which was which, but that doesn't seem to help windows.

I found a post about Windows MIDI interface mis-naming, but that had to do with plugging interfaces into different usb ports. My 2 teensies have only been plugged into one port each, ever. I did download USBDeview, and there is only one entry for each teensy, and they are correctly named there....

Any thoughts? Anyone else had this problem? Thanks in advance!
 
Nope. Changing the serial number did not help either....

This is the code I used:
Code:
// To give your project a unique name, this code must be
// placed into a .c file (its own tab).  It can not be in
// a .cpp file or your main sketch (the .ino file).

#include "usb_names.h"

// Edit these lines to create your own name.  The length must
// match the number of characters in your custom name.

#define MANUFACTURER_NAME   {'M','o','o','n',' ','L','a','b','s'}
#define MANUFACTURER_NAME_LEN  9
#define MIDI_NAME   {'P','E','D','A''L','S'}
#define MIDI_NAME_LEN  6
#define SERIAL_NUM {'P','e','d','a','l','s','M','o','o','n'}
#define SERIAL_NUM_LEN 10

// Do not change this part.  This exact format is required by USB.

struct usb_string_descriptor_struct usb_string_manufacturer_name = {
        2 + MANUFACTURER_NAME_LEN * 2,
        3,
        MANUFACTURER_NAME
};

struct usb_string_descriptor_struct usb_string_product_name = {
        2 + MIDI_NAME_LEN * 2,
        3,
        MIDI_NAME
};


struct usb_string_descriptor_struct usb_string_serial_number = {
        2 + SERIAL_NUM_LEN * 2,
        3,
        SERIAL_NUM
};

I used a different serial for the other interface, but it didn't help.

Precisely the same issue as before...
 
Status
Not open for further replies.
Back
Top