|
|
@ -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); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|