Hi JUCE team,
Since JUCE 8.0.11, virtual MIDI devices created with with MidiOutput::createNewDevice() and MidiInput::createNewDevice() return empty identifiers.
It seems that the issue was introduced in commit ba7593df26.
JUCE 8.0.10 (with ID)
// modules/juce_audio_devices/native/juce_CoreMidi_mac.mm
std::unique_ptr<MidiOutput> MidiOutput::createNewDevice (const String& deviceName)
{
auto deviceIdentifier = createUniqueIDForMidiPort (deviceName, false);
// ...
auto midiOutput = rawToUniquePtr (new MidiOutput (deviceName, String (deviceIdentifier)));
}
JUCE 8.0.11 (without ID)
// modules/juce_audio_devices/midi_io/juce_MidiDevices.cpp, line ~250
std::unique_ptr<MidiOutput> MidiOutput::createNewDevice (const String& name)
{
// ...
return rawToUniquePtr (new MidiOutput (session, std::move (connection), 0,
{ name, {} }, // <-- empty identifier!
std::move (port)));
}
This happen with MidiInput too.
As a workaround, I can compare virtual devices by name instead of by identifier.
However, I’d like to confirm whether this change was intentional or if it could be addressed on your side.
Thanks in advance.
Best,
Samuele
