Browse Source

Fix: bug - Clear button clears everything

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

12
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<ld::MidiEvent> queue = sequencer.midi_out();
for (ld::MidiEvent msg : queue) {
midi_in_from_uart_polling(msg);
midi_in_from_uart_polling(msg, true);
}
}

Loading…
Cancel
Save