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!
