diff --git a/src/main_osp.cc b/src/main_osp.cc index fdcc714..cc38cdd 100644 --- a/src/main_osp.cc +++ b/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) { case ld::MidiMessageType::NoteOn: { @@ -134,12 +134,14 @@ namespace Heck { } break; case ld::MidiMessageType::ControlChange: { ld::ControlChangeEvent cc = msg.AsControlChange(); - if (State::clear_mode) { + if (State::clear_mode && !from_seq) { ld::ControlChangeEvent cc = msg.AsControlChange(); seed.PrintLine("Clear: ch: %i, cc: %i", cc.channel, cc.control_number); sequencer.clear_track_cc(cc.channel, cc.control_number); } else { - sequencer.midi_in(msg); + if (!from_seq) { + sequencer.midi_in(msg); + } float val_normalized = cc.value / 127.; switch (cc.control_number) { // Pots @@ -190,7 +192,7 @@ namespace Heck { while (midi.HasEvents()) { ld::MidiEvent msg = midi.PopEvent(); 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 queue = sequencer.midi_out(); for (ld::MidiEvent msg : queue) { - midi_in_from_uart_polling(msg); + midi_in_from_uart_polling(msg, true); } }