|
|
@@ -119,7 +119,7 @@ std::string MidiIO::getDeviceName() { |
|
|
|
} |
|
|
|
|
|
|
|
double MidiIO::getMessage(std::vector<unsigned char> *msg) { |
|
|
|
std::vector<unsigned char> next_msg; |
|
|
|
MidiMessage next_msg = MidiMessage(); |
|
|
|
|
|
|
|
MidiInWrapper *mw = midiInMap[deviceName]; |
|
|
|
|
|
|
@@ -128,24 +128,23 @@ double MidiIO::getMessage(std::vector<unsigned char> *msg) { |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
double stamp = midiInMap[deviceName]->getMessage(&next_msg); |
|
|
|
next_msg.timeStamp = midiInMap[deviceName]->getMessage(&next_msg.bytes); |
|
|
|
if (next_msg.bytes.size() > 0) { |
|
|
|
for (auto &kv : mw->idMessagesMap) { |
|
|
|
|
|
|
|
if (next_msg.size() > 0) { |
|
|
|
for (auto kv : mw->idMessagesMap) { |
|
|
|
mw->idMessagesMap[kv.first].push_back(next_msg); |
|
|
|
mw->idStampsMap[kv.first].push_back(stamp); |
|
|
|
kv.second.push_back(next_msg); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if (mw->idMessagesMap[id].size() <= 0) { |
|
|
|
*msg = next_msg; |
|
|
|
return stamp; |
|
|
|
|
|
|
|
if (mw->idMessagesMap[id].size() > 0) { |
|
|
|
next_msg = mw->idMessagesMap[id].front(); |
|
|
|
mw->idMessagesMap[id].pop_front(); |
|
|
|
} |
|
|
|
|
|
|
|
*msg = mw->idMessagesMap[id].front(); |
|
|
|
stamp = mw->idStampsMap[id].front(); |
|
|
|
mw->idMessagesMap[id].pop_front(); |
|
|
|
return stamp; |
|
|
|
*msg = next_msg.bytes; |
|
|
|
|
|
|
|
return next_msg.timeStamp; |
|
|
|
} |
|
|
|
|
|
|
|
bool MidiIO::isPortOpen() { |
|
|
@@ -165,7 +164,7 @@ void MidiIO::close() { |
|
|
|
|
|
|
|
mw->erase(id); |
|
|
|
|
|
|
|
if (mw->subscribers == 0) { |
|
|
|
if (mw->idMessagesMap.size() == 0) { |
|
|
|
mw->closePort(); |
|
|
|
midiInMap.erase(deviceName); |
|
|
|
} |
|
|
|