|
|
@ -169,21 +169,33 @@ namespace Heck::OSP { |
|
|
|
{ |
|
|
|
switch (msg.type) { |
|
|
|
case ld::MidiMessageType::NoteOn: { |
|
|
|
ld::DaisySeed::PrintLine( |
|
|
|
"MIDI from seq=%i : NOTE - ch: %i, nr: %i, val: %i", |
|
|
|
from_seq, |
|
|
|
msg.channel, |
|
|
|
msg.AsNoteOn().note, |
|
|
|
msg.AsNoteOn().velocity); |
|
|
|
if (msg.channel >= 0 && msg.channel < Constants::TRACK_COUNT) { |
|
|
|
tracks[msg.channel].trigger(); |
|
|
|
} |
|
|
|
} break; |
|
|
|
case ld::MidiMessageType::ControlChange: { |
|
|
|
ld::ControlChangeEvent cc = msg.AsControlChange(); |
|
|
|
ld::DaisySeed::PrintLine( |
|
|
|
"MIDI from seq=%i : CC - ch: %i, nr: %i, val: %i", |
|
|
|
from_seq, |
|
|
|
msg.channel, |
|
|
|
msg.AsControlChange().control_number, |
|
|
|
msg.AsControlChange().value); |
|
|
|
|
|
|
|
const ld::ControlChangeEvent cc = msg.AsControlChange(); |
|
|
|
if (State::clear_mode && !from_seq) { |
|
|
|
ld::ControlChangeEvent cc = msg.AsControlChange(); |
|
|
|
ld::DaisySeed::PrintLine("Clear: ch: %i, cc: %i", cc.channel, cc.control_number); |
|
|
|
sequencer.clear_track_cc(cc.channel, cc.control_number); |
|
|
|
} else { |
|
|
|
if (!from_seq) { |
|
|
|
sequencer.midi_in(msg); |
|
|
|
} |
|
|
|
float val_normalized = cc.value / 127.; |
|
|
|
const float val_normalized = cc.value / 127.; |
|
|
|
switch (cc.control_number) { |
|
|
|
// Pots
|
|
|
|
case Constants::MIDI_Mapping::TRACK_PITCH: |
|
|
@ -225,6 +237,10 @@ namespace Heck::OSP { |
|
|
|
} |
|
|
|
} break; |
|
|
|
default: { |
|
|
|
ld::DaisySeed::PrintLine( |
|
|
|
"UNHANDLED MIDI UNHANDLED MIDI from seq=%i : CC - ch: %i", |
|
|
|
from_seq, |
|
|
|
msg.channel); |
|
|
|
// Other MIDI message
|
|
|
|
} break; |
|
|
|
} |
|
|
@ -234,9 +250,6 @@ namespace Heck::OSP { |
|
|
|
{ |
|
|
|
while (midi.HasEvents()) { |
|
|
|
ld::MidiEvent msg = midi.PopEvent(); |
|
|
|
if constexpr (Constants::Developer::LOG_MIDI_UART_POLLING) { |
|
|
|
logger_midi.push(msg); |
|
|
|
} |
|
|
|
midi_dispatch(msg, false); |
|
|
|
} |
|
|
|
} |
|
|
|