sanitize MIDI port names on Windows/Linux

This commit is contained in:
tildearrow 2022-06-09 18:04:50 -05:00
parent 04bbffac13
commit eac4f50d92

View file

@ -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<String> TAMidiInRtMidi::listDevices() {
unsigned int count=port->getPortCount();
logD("got port count.");
for (unsigned int i=0; i<count; i++) {
String name=port->getPortName(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; i<count; i++) {
String portName=port->getPortName(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; i<count; i++) {
String portName=port->getPortName(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<String> TAMidiOutRtMidi::listDevices() {
try {
unsigned int count=port->getPortCount();
for (unsigned int i=0; i<count; i++) {
String name=port->getPortName(i);
String name=sanitizePortName(port->getPortName(i));
if (name!="") ret.push_back(name);
}
} catch (RtMidiError& e) {