| @@ -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); | |||||
| } | } | ||||
| @@ -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; | ||||
| } | } | ||||