|
|
@@ -161,14 +161,15 @@ void QuadMIDIToCVInterface::processMidi(std::vector<unsigned char> msg) { |
|
|
|
if (data1 == 0x40) { // pedal |
|
|
|
pedal = (data2 >= 64); |
|
|
|
if (!pedal) { |
|
|
|
open.clear(); |
|
|
|
for (int i = 0; i < 4; i++) { |
|
|
|
if (activeKeys[i].pedal_gate_released) { |
|
|
|
activeKeys[i].pedal_gate_released = false; |
|
|
|
continue; |
|
|
|
activeKeys[i].gate = false; |
|
|
|
activeKeys[i].pedal_gate_released = false; |
|
|
|
if (std::find(open.begin(), open.end(), i) != open.end()) { |
|
|
|
open.remove(i); |
|
|
|
} |
|
|
|
open.push_front(i); |
|
|
|
} |
|
|
|
activeKeys[i].gate = false; |
|
|
|
open.push_back(i); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
@@ -179,11 +180,11 @@ void QuadMIDIToCVInterface::processMidi(std::vector<unsigned char> msg) { |
|
|
|
|
|
|
|
if (pedal && !gate) { |
|
|
|
for (int i = 0; i < 4; i++) { |
|
|
|
if (activeKeys[i].pitch == data1) { |
|
|
|
if (activeKeys[i].pitch == data1 && activeKeys[i].gate) { |
|
|
|
activeKeys[i].pedal_gate_released = true; |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
if (!gate) { |
|
|
@@ -240,10 +241,12 @@ void QuadMIDIToCVInterface::processMidi(std::vector<unsigned char> msg) { |
|
|
|
|
|
|
|
open.push_front(i); |
|
|
|
activeKeys[i].gate = false; |
|
|
|
activeKeys[i].pedal_gate_released = false; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
activeKeys[next].gate = true; |
|
|
|
activeKeys[next].pedal_gate_released = false; |
|
|
|
activeKeys[next].pitch = data1; |
|
|
|
activeKeys[next].vel = data2; |
|
|
|
} |
|
|
|