Inconsistent MIDI device name separator in MidiDeviceListConnectionBroadcaster

Hi Juce team,

In juce_MidiDeviceListConnectionBroadcaster.cpp, the same display name is built with two different separators:

computeInfo() (used by getAvailableDevices()):

const auto separator = endpoint->getName().isEmpty() || blockName->isEmpty() ? "" : " ";

findInfoForDeviceIdentifier() (used by getInfoForId() / openDevice()):

const auto separator = endpoint->getName().isEmpty() || blockName->isEmpty() ? "" : " : ";

So the same MIDI 2.0 device can appear as "My Synth Port 1" in the device list, but as "My Synth : Port 1" after opening. openDevice() still works (it matches by identifier), but any code comparing or saving the display name will break.

This is most visible on MIDI 2.0 / UMP devices where both endpoint and function block names are set. On legacy MIDI 1.0 proxies the block name is usually empty, so both paths return the same string.

I think this is a typo as a workaround, I changed the separator in getInfoForId() to match the one used in getAvailableDevices().

Thanks!

Thanks for reporting!

1 Like