diff --git a/src/audio/rtmidi.cpp b/src/audio/rtmidi.cpp index b431a89d8..31a3e66ae 100644 --- a/src/audio/rtmidi.cpp +++ b/src/audio/rtmidi.cpp @@ -21,6 +21,26 @@ #include "../ta-log.h" #include "taAudio.h" +String sanitizePortName(const String& name) { +#if defined(_WIN32) + // remove port number + size_t namePos=name.rfind(' '); + if (namePos!=String::npos) { + return name.substr(0,namePos); + } + return name; +#elif defined(__linux__) + // remove port location + size_t namePos=name.rfind(' '); + if (namePos!=String::npos) { + return name.substr(0,namePos); + } + return name; +#else + return name; +#endif +} + // --- IN --- bool TAMidiInRtMidi::gather() { @@ -56,7 +76,7 @@ std::vector TAMidiInRtMidi::listDevices() { unsigned int count=port->getPortCount(); logD("got port count."); for (unsigned int i=0; igetPortName(i); + String name=sanitizePortName(port->getPortName(i)); if (name!="") ret.push_back(name); } } catch (RtMidiError& e) { @@ -77,7 +97,7 @@ bool TAMidiInRtMidi::openDevice(String name) { unsigned int count=port->getPortCount(); logD("finding port %s...",name); for (unsigned int i=0; igetPortName(i); + String portName=sanitizePortName(port->getPortName(i)); logV("- %d: %s",i,portName); if (portName==name) { logD("opening port %d...",i); @@ -190,7 +210,7 @@ bool TAMidiOutRtMidi::openDevice(String name) { unsigned int count=port->getPortCount(); logD("finding port %s...",name); for (unsigned int i=0; igetPortName(i); + String portName=sanitizePortName(port->getPortName(i)); logV("- %d: %s",i,portName); if (portName==name) { logD("opening port %d...",i); @@ -230,7 +250,7 @@ std::vector TAMidiOutRtMidi::listDevices() { try { unsigned int count=port->getPortCount(); for (unsigned int i=0; igetPortName(i); + String name=sanitizePortName(port->getPortName(i)); if (name!="") ret.push_back(name); } } catch (RtMidiError& e) {