Order of identical midi interfaces

I have three of the same midi interface (CME U6MIDI) running on BomeBox, through a USB hub. Aside from individually powering up the interfaces in the correct order, is there a way to ensure that the order of the interfaces will remain the same every time?

Although not a big deal to power them up in order, it becomes a bigger problem if one or more of the interfaces is not connected.

Currently, the ports show as U6MIDI 1, U6MIDI 1(2), U6MIDI 1(3), etc., and all ports have an alias for ease of identification.

If i run the setup without the first interface connected, for example, the second and third become the first and second, rendering my aliases incorrect and useless.

Is there a way around this?

As far as I know, there is no way around this. Although if you put them on the hub in the same order and power them up in the same order, the BomeBox should assign the same MIDI port names as before.

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz

@FlorianBome

Could you fact check me on this?

I also have the naming problem on the Mac, namely with devices with several MIDI ports. The Mac system and most applications show the names that are set by the manufacturer according to the audio MIDI setup. Not all the same, but at least with names. In MTB and BomeBox, the ports are just numbered. I’m never sure about the assignments, but (thanks to aliases) in operation it all seems to be consistent.

At my place, two devices with this problem are a LaunchPad Pro (3 ports) and a Fishman FC-1 controller (4 ports).

I think MTP and Bomebox should ask the system for the names, if that is possible. MTP should not have a problem with that but I am not sure about the BomeBox. They should work identically of course.

My issue isn’t a naming problem, though. I can use aliases for naming the ports. My problem is with using multiple identical interfaces.

No matter what I name an alias, there is no way to lock the alias to one of interfaces. The alias points to the correct port but on the wrong interface since the interfaces have the same name.

If it could use serial number or some other unique identifier provided by the driver it should be able to differentiate between the identical models.

Hopefully Florian will provide some enlightenment. :slight_smile:

I think the issue is that the hardware manufactures do not use unique names or serial number when reporting the attached controller.

For some MIDI controllers, however you can send an inquiry SysEX message and they will report some data. Some report just the controller type and others actually report serial number data.

Maybe on those that report serial number data when it returns it, we could set up a translator with an outgoing action that assigns a MIDI alias to the given port based on the serial number. Of course that would only work for manufactures that report serial number data for their controllers. Right now, there is no outgoing Action in Bome MIDI Translator Pro to assign a MIDI alias.

The SysEx message that some devices will answer is below:

F0 7E 7F 06 01 F7

Since the CME is a MIDI hub, it probably will not answer but some of the attached devices may.

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz

Interesting discussion, and something we’ve greatly improved over the years, but it’s still difficult.

In addition to the information given by Steve:

Re-identifying the correct order of multiple same USB-MIDI devices

MIDI Translator Pro, Bome Network, and the BomeBox use sophisticated algorithms to try to re-establish the same order of multiple same devices.

Our products order same -named devices in this order:

  1. name
  2. serial number
  3. location
  4. order reported by OS

Then, indexes in parenthesis are added in this order. That’s why you see U6MIDI 1, U6MIDI 1(2), and so on.

Now if a device exposes a USB serial number, the Bome products will number all units of that model in the exact same order (lowest serial number first). While the order may seem random, it is guaranteed to always be the same order, even if you replug in between, or plug them into a different USB port. Unfortunately, most (cheaper) USB devices do not have a stored serial number. MT Pro shows the serial number (if there is one) when you right-click on the name of a MIDI device.

The location is the path of the USB device, in terms of which USB plug and which USB hub port. The location is hierarchical, and second best to re-identify a device after a restart. Unfortunately, at this time, most OS’es do not allow us to see the location. On Windows, we get an approximation, but that depends on the order the devices are plugged in, too. We are preparing location detection for the BomeBox firmware.

If neither serial number, nor location can be retrieved for a given device, our products just use the original order of the devices as listed by the OS. Unfortunately, both Windows and MacOS are known to not maintain the same order of devices, so that last option will likely be just the order the devices got plugged in. This is worse at start-up of the computer, where the ordering will sometimes be entirely random. Unfortunately, at this time there is nothing we can do about it if the OS does not give us more information to re-identify individual units with same name.

Using MIDI Identity Request?

This is the Universal System Exclusive Identity Request. Devices that implement it will report back identifiers for manufacturer, model, version, etc. But not a serial number. So, multiple units of the same model will respond with the same response.

MIDI 2.0: Product Instance Id
In MIDI 2.0, devices have a so-called Product Instance Id (PIId). There are MIDI messages to query the PIId, so re-identifying a particular unit (instance) of the same model is possible there. We will upgrade our products to MIDI 2.0 (gradually), and will certainly use the PIId instead of the Serial Number above for same device numbering. That will ensure the same numbering.

Port Naming of Multi-Port MIDI devices

Another interesting naming topic. On Windows, the OS just gives us one single name for every MIDI port. So our software depends on Windows providing us a meaningful name. Sometimes, our software can fix weird mis-naming (e.g., prepended random numbers).
On MacOS, we have the opposite problem: the OS gives us the choice of about a dozen fields that can be used as name. Just using one of those fields is not a good idea (some devices would show up empty or just the name of the manufacturer or just ‘Control’). Blindly concatenating a few fields caused other problems (names like ‘Novation Control Novation Launchpad Control’). We use a sophisticated logic to assemble the presented name form a number of fields so that it provides a somewhat meaningful and reproducible name. For most devices, the name we use in our software works well. Maybe we can look into appending the sub-names for subdevices of multi-port MIDI devices.
On BomeBox the OS gives us a few names to choose from, and we use a similar logic as on MacOS to assemble the name.

Side topic: identifying Port Pairs

Related (even though not mentioned in the discussion above) is how our products can find a matching MIDI OUT port to a given MIDI IN port, and vice versa. In short: identifying pairs of ports. Again, our products try hard to find port pairs when needed (important in Bome Network), but if the OS does not provide device information to deduct that an IN port is on the same device as an OUT port, our products may need to guess (the same name, or appended suffixes like ‘In’ or ‘Out’), or, if no indication found, assume a MIDI port without a pair port.

I hope that sheds some light on these issues. In any case, we’re trying our best for many years here!

The APC MINI MK2 actually DOES report the serial number as well. I think a few others do as well but it is really controlled by the MIDI
controller manufacturer. Interesting discussion.

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz

Firstly, thank you for your responses. I absolutely love the BomeBox and MTP, and the functionality it makes possible is incredible. Thank you for all that you do!

Since I only have the interfaces connected to BomeBox, shouldn’t it retain the same order like you mention?

The U6MIDI serial number is reported in the UxMIDI software that comes with the interface, so I assume it is being reported. Am I correct?

I am not seeing this, but may not be clicking in the right place. Where would I right click?

I have seen them reordered without moving the location, just FYI. From a cold boot of BomeBox, they were reordered, which is a scenario I’m hoping to avoid when setting up for a gig. I am guessing this is what you are working on in the firmware.

I am mainly only concerned with how Bomebox deals with this, since I plan to use it stand-alone for gigs. In the studio, rearranging isn’t as time critical as it is at a gig. This does raise a question, though: If BomeBox is started with everything attached and it gets the order correct, does this then present them to a computer in the correct order when paired?

Offhand, I’m thinking something like this could be done using the MIDI Port and MIDI Router outgoing actions, but I’d have to wrap my head around the capabilities of these actions as I am still fairly new to MTP and BomeBox. I’m not sure how a translator would be affected by the reordering of the ports since the names are the same. It seems like this would be susceptible to the same problem.

I meant to mention, though, that where the solution my lie is not in the order of identical devices, but the identifying of these devices. Meaning, if I have three of the same interface and I boot up with only one attached, it would really need to know which one is attached, regardless of the order it would be in when connected with multiple others.

Unfortunately not. Manufacturer specific software can access hidden information of devices. If MT Pro on Windows displays a serial number, it is the USB one. The BomeBox can read the USB serial number.

In any MIDI list in MT Pro, e.g. in the project properties (click on the MIDI icon at top right):
image

This is a clear indication that the device does not have a USB serial number.
And currently, the BomeBox cannot use the location.

Yes, Bome Network gets the same port names from BomeBox as used on the BomeBox itself.

I don’t have one here, would you mind posting the full response (in hex) from the APC MINI? As an aside, I am pretty sure that the APC devices do report a USB serial number, too.

Actually, I’ve just found a way to do this :wink: : the MIDI Port outgoing action allows assigning aliases:

If the device returns the serial number via MIDI, you can set up translators to always maintain the same alias (e.g. ‘Launchpad Left’) for a given device. It’s not exactly straight forward, but will work. Note, you will not need to dynamically adjust MIDI routes.
The down side is that this would really hard code a physical unit to the project. If you need to replace the unit, you will have to adapt the project (or implement a fall back…).

I forgot about the Outgoing Action of Alias assign. This is great!

Here is what my APC-MINI Returns

 F0 7E 00 06 02 47 4F 00 19 05 21 00 00 7F 00 00 00 00 0A 04 32 34 30 35 32 35 36 30 34 30 39 30 34 30 F7

The serial number starts at 0A (which is A on the sticker of the unit then 04. Then 32=2 34=4 etc. (ASCII characters) so my serial number is A424052560409040.

I found this out when I had to replace my APC MINI MK2 (Led out). I had programmed it to ignore MIDI from that device if it didn’t report the right serial number when queried.)

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz

So you can send a unique MIDI message from a given controller as an input trigger and assign it to a predefined MIDI Alias. I guess you would have to be listening on all open ports for this to work. I will play around with this and see what can be done.

So if after your open the project, you move a given control on a controller, then maybe it would be possible, even if it doesn’t reply to an inquiry message.

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz

I have been away and unable to give your replies my full attention. I will look it over, experiment and report back. Thanks so much for your time and assistance so far. One thing is for sure, the customer support available from Bome through this forum is remarkable!

Florian and Steve, it’s always impressive which problems you find solutions for.
Hats off to you!

Actually, these problems shouldn’t even exist, they are a matter for the operating systems and peripherals. It’s all the more refreshing to meet innovative people who don’t just think until lunchtime.

(I don’t know if this was English, DeepL translated from German :slight_smile: )

1 Like

Thanks for the nice words!

Or you could create a preset for ‘assignment mode’, activated by pressing a particular button or button combination on any controller. Then, touch the controllers in the order you need them. Interesting!

Or, any time a device is (re-)plugged in, the assignment mode is activated, which allows you to assign which device is which.

On Launchpads, you can even display text (using Sys-Ex). So in assignment mode, the text could read ‘press button on Launchpad LEFT’, then ‘press button on Launchpad RIGHT’.

Great ideas, I hadn’t thought of these other triggers that would do this.

And yes, thank you for your kind words and making us think out of the box!

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz

Below is the preset I created based on the suggestions in this thread. Although I have not tested, it seems like it should do what I need it to do, which is to ensure that the 3 devices on each interface are assigned to the correct interface.

The two interfaces are CME U6MIDI Pro, so the ports and their aliases when correctly assigned are as follows:

Interface 1:
BomeBox: U6MIDI Pro 1, Alias: BB:U1 DP4a
BomeBox: U6MIDI Pro 2, Alias: BB:U2 DP4b
BomeBox: U6MIDI Pro 3, Alias: BB:U3 Orville
Interface 2:
BomeBox: U6MIDI Pro 1 [2], Alias: BB:U12 LXP5
BomeBox: U6MIDI Pro 2 [2], Alias: BB:U22 AxeFX
BomeBox: U6MIDI Pro 3 [2], Alias: BB:U32 FCB1010

I know that the Ensoniq DP4 (DP4a) will reply with F0 7E 00 06 02 0F 40 00 00 00 00 00 01 0F F7 when it receives the ID request F0 7E 7F 06 01 F7.

Upon loading of the project, a timer is created to send a request out on all ports, every second, looking for a reply from the DP4. If the reply is received on the correct port, it kills the timer and disables the preset. If it is received on the wrong port, it reassigns aliases appropriately. Upon the next elapsed second, the DP4 should be found on the correct port, killing the timer and disabling the preset.

Preset 1: Check Device Port Order

Translator 1.0: Start Timer
Incoming: Project Opened
Outgoing: Periodic timer ‘Device_Port_Order’: 1000 ms (initial delay: 1000 ms)

Translator 1.1: Find DP4
Incoming: On timer ‘Device_Port_Order’
Outgoing: MIDI F0 7E 7F 06 01 F7, to ports BB:U1 DP4a, BB:U12 LXP5, BB:U2 DP4b, BB:U22 AxeFX, BB:U3 Orville, BB:U32 FCB1010

Translator 1.2: Found on Wrong Port
Options: swallow
Incoming: MIDI F0 7E 00 06 02 0F 40 00 00 00 00 00 01 0F F7, on port BB:U12 LXP5
Outgoing: Perform ‘Swap_Device_Order’ with 0 parameters

Translator 1.3: Found on Correct Port
Options: swallow
Incoming: MIDI F0 7E 00 06 02 0F 40 00 00 00 00 00 01 0F F7, on port BB:U1 DP4a
Outgoing: Perform ‘Device_Order_Correct’ with 0 parameters

Translator 1.4: Assign DP4a Port
Incoming: On Perform ‘Swap_Device_Order’ with 0 parameters
Outgoing: Assign MIDI OUTPUT alias ‘BB:U1 DP4a’ to ‘BomeBox: U6MIDI Pro [1] (2)’

Translator 1.5: Assign DP4b Port
Incoming: On Perform ‘Swap_Device_Order’ with 0 parameters
Outgoing: Assign MIDI OUTPUT alias ‘BB:U2 DP4b’ to ‘BomeBox: U6MIDI Pro [2] (2)’

Translator 1.6: Assign Orville Port
Incoming: On Perform ‘Swap_Device_Order’ with 0 parameters
Outgoing: Assign MIDI OUTPUT alias ‘BB:U3 Orville’ to ‘BomeBox: U6MIDI Pro [3] (2)’

Translator 1.7: Assign LXP5 Port
Incoming: On Perform ‘Swap_Device_Order’ with 0 parameters
Outgoing: Assign MIDI OUTPUT alias ‘BB:U12 LXP5’ to ‘BomeBox: U6MIDI Pro [1]’

Translator 1.8: Assign AxeFX Port
Incoming: On Perform ‘Swap_Device_Order’ with 0 parameters
Outgoing: Assign MIDI OUTPUT alias ‘BB:U22 AxeFX’ to ‘BomeBox: U6MIDI Pro [2]’

Translator 1.9: Assign FCB1010 Port
Incoming: On Perform ‘Swap_Device_Order’ with 0 parameters
Outgoing: Assign MIDI OUTPUT alias ‘BB:U32 FCB1010’ to ‘BomeBox: U6MIDI Pro [3]’

Translator 1.10: Kill Timer
Incoming: On Perform ‘Device_Order_Correct’ with 0 parameters
Outgoing: Kill timer ‘Device_Port_Order’

Translator 1.11: Disable Preset
Incoming: On Perform ‘Device_Order_Correct’ with 0 parameters
Outgoing: deactivate preset ‘Device Port Order’

If there are any other recommendations, let me know. Otherwise, thank you so much for the discussion and suggestions! In the end, it is a very easy solution. Just have to think inside the (Bome) Box! :smile:

I don’t see a perform ‘Device_Order_Wrong’ so maybe 1.2 should be perform ‘Swap_Device_Order’.

Also, maybe if a device gets disconnected you should have an outgoing action to enable the preset again and restart the timer.

The actual testing will prove whether it works or not.

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz

Ah, yeah, duh… I forgot I changed the name of the perform and didn’t change it in all places. Thanks. I edited the post to reflect that.

Good idea about the outgoing action. Will put that in.