Browse Source

Fix: bug - Clear button clears everything

master
heck 9 months ago
parent
commit
63ed5834b1
  1. 10
      src/main_osp.cc

10
src/main_osp.cc

@ -124,7 +124,7 @@ namespace Heck {
} }
} }
void midi_in_from_uart_polling(ld::MidiEvent msg) void midi_in_from_uart_polling(ld::MidiEvent msg, bool from_seq)
{ {
switch (msg.type) { switch (msg.type) {
case ld::MidiMessageType::NoteOn: { case ld::MidiMessageType::NoteOn: {
@ -134,12 +134,14 @@ namespace Heck {
} break; } break;
case ld::MidiMessageType::ControlChange: { case ld::MidiMessageType::ControlChange: {
ld::ControlChangeEvent cc = msg.AsControlChange(); ld::ControlChangeEvent cc = msg.AsControlChange();
if (State::clear_mode) { if (State::clear_mode && !from_seq) {
ld::ControlChangeEvent cc = msg.AsControlChange(); ld::ControlChangeEvent cc = msg.AsControlChange();
seed.PrintLine("Clear: ch: %i, cc: %i", cc.channel, cc.control_number); seed.PrintLine("Clear: ch: %i, cc: %i", cc.channel, cc.control_number);
sequencer.clear_track_cc(cc.channel, cc.control_number); sequencer.clear_track_cc(cc.channel, cc.control_number);
} else { } else {
if (!from_seq) {
sequencer.midi_in(msg); sequencer.midi_in(msg);
}
float val_normalized = cc.value / 127.; float val_normalized = cc.value / 127.;
switch (cc.control_number) { switch (cc.control_number) {
// Pots // Pots
@ -190,7 +192,7 @@ namespace Heck {
while (midi.HasEvents()) { while (midi.HasEvents()) {
ld::MidiEvent msg = midi.PopEvent(); ld::MidiEvent msg = midi.PopEvent();
event_log.PushBack(msg); event_log.PushBack(msg);
midi_in_from_uart_polling(msg); midi_in_from_uart_polling(msg, false);
} }
} }
@ -198,7 +200,7 @@ namespace Heck {
{ {
std::vector<ld::MidiEvent> queue = sequencer.midi_out(); std::vector<ld::MidiEvent> queue = sequencer.midi_out();
for (ld::MidiEvent msg : queue) { for (ld::MidiEvent msg : queue) {
midi_in_from_uart_polling(msg); midi_in_from_uart_polling(msg, true);
} }
} }

Loading…
Cancel
Save