Browse Source

Fix ignore types

tags/v0.5.0
ben 7 years ago
parent
commit
f347abbe8d
2 changed files with 13 additions and 16 deletions
  1. +7
    -7
      src/core/MidiIO.cpp
  2. +6
    -9
      src/core/MidiIO.hpp

+ 7
- 7
src/core/MidiIO.cpp View File

@@ -99,17 +99,17 @@ void MidiIO::openDevice(std::string deviceName) {
void MidiIO::setIgnores(bool ignoreSysex, bool ignoreTime, bool ignoreSense) { void MidiIO::setIgnores(bool ignoreSysex, bool ignoreTime, bool ignoreSense) {
bool sy = true, ti = true, se = true; bool sy = true, ti = true, se = true;


midiInMap[deviceName]->ignoresMap[id][0] = ignoreSysex;
midiInMap[deviceName]->ignoresMap[id][1] = ignoreTime;
midiInMap[deviceName]->ignoresMap[id][2] = ignoreSense;
midiInMap[deviceName]->ignoresMap[id].midiSysex = ignoreSysex;
midiInMap[deviceName]->ignoresMap[id].midiTime = ignoreTime;
midiInMap[deviceName]->ignoresMap[id].midiSense = ignoreSense;


for (auto kv : midiInMap[deviceName]->ignoresMap) { for (auto kv : midiInMap[deviceName]->ignoresMap) {
sy = sy && kv.second[0];
ti = ti && kv.second[1];
se = se && kv.second[2];
sy = sy && kv.second.midiSysex;
ti = ti && kv.second.midiTime;
se = se && kv.second.midiSense;
} }


midiInMap[deviceName]->ignoreTypes(se,ti,se);
midiInMap[deviceName]->ignoreTypes(se, ti, se);




} }


+ 6
- 9
src/core/MidiIO.hpp View File

@@ -5,6 +5,11 @@


using namespace rack; using namespace rack;


struct IgnoreFlags {
bool midiSysex = true;
bool midiTime = true;
bool midiSense = true;
};


/** /**
* This class allows to use one instance of rtMidiIn with * This class allows to use one instance of rtMidiIn with
@@ -13,13 +18,8 @@ using namespace rack;
*/ */


struct MidiInWrapper : RtMidiIn { struct MidiInWrapper : RtMidiIn {
std::unordered_map<int, std::list<std::vector<unsigned char>>> idMessagesMap;
std::unordered_map<int, std::list<double>> idStampsMap;


/* Stores Ignore settings for each instance in the following order:
* {ignore_midiSysex, ignore_midiTime, ignore_midiSense}
*/
std::unordered_map<int, bool[3]> ignoresMap;
std::unordered_map<int, IgnoreFlags> ignoresMap;


int uid_c = 0; int uid_c = 0;
int subscribers = 0; int subscribers = 0;
@@ -35,9 +35,6 @@ struct MidiInWrapper : RtMidiIn {
idMessagesMap[id] = {}; idMessagesMap[id] = {};
idStampsMap[id] = {}; idStampsMap[id] = {};


ignoresMap[id][0] = true;
ignoresMap[id][1] = true;
ignoresMap[id][2] = true;
return id; return id;
} }




Loading…
Cancel
Save