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) {
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) {
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;

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

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

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 subscribers = 0;
@@ -35,9 +35,6 @@ struct MidiInWrapper : RtMidiIn {
idMessagesMap[id] = {};
idStampsMap[id] = {};

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



Loading…
Cancel
Save