|
|
@ -21,57 +21,6 @@ |
|
|
|
|
|
|
|
float DSY_SDRAM_BSS sdram_block1[4000000]; |
|
|
|
|
|
|
|
namespace Heck::OSP { |
|
|
|
struct MidiLoggerBuffered { |
|
|
|
|
|
|
|
void push(const ld::MidiEvent& msg) |
|
|
|
{ |
|
|
|
event_log_.PushBack(msg); |
|
|
|
} |
|
|
|
|
|
|
|
void print() |
|
|
|
{ |
|
|
|
u32 time_now{ 0 }; |
|
|
|
if (!event_log_.IsEmpty()) { |
|
|
|
auto msg = event_log_.PopFront(); |
|
|
|
switch (msg.type) { |
|
|
|
case ld::MidiMessageType::SystemRealTime: { |
|
|
|
if constexpr (Constants::Developer::LOG_MIDI_REALTIME) { |
|
|
|
char outstr[256]; |
|
|
|
char rttype_str[32]; |
|
|
|
dz::GetMidiRTTypeAsString(msg, rttype_str); |
|
|
|
sprintf(outstr, "RT: type: %s\n", rttype_str); |
|
|
|
if (msg.srt_type != ld::TimingClock) { |
|
|
|
seed.PrintLine("%s", outstr); |
|
|
|
} |
|
|
|
} |
|
|
|
} break; |
|
|
|
case ld::NoteOn: |
|
|
|
case ld::NoteOff: |
|
|
|
case ld::MidiMessageType::ControlChange: { |
|
|
|
if constexpr (Constants::Developer::LOG_MIDI_NOTESANDCC) { |
|
|
|
char outstr[256]; |
|
|
|
char type_str[32]; |
|
|
|
dz::GetMidiTypeAsString(msg, type_str); |
|
|
|
sprintf( |
|
|
|
outstr, |
|
|
|
"time-last:\t%ld\ttype: %s\tChannel: %d\tData MSB: " |
|
|
|
"%d\tData LSB: %d\n", |
|
|
|
time_now, |
|
|
|
type_str, |
|
|
|
msg.channel, |
|
|
|
msg.data[0], |
|
|
|
msg.data[1]); |
|
|
|
seed.PrintLine("%s", outstr); |
|
|
|
} |
|
|
|
} break; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
ld::FIFO<ld::MidiEvent, 128> event_log_{}; |
|
|
|
}; |
|
|
|
} // namespace Heck::OSP
|
|
|
|
namespace Heck::OSP { |
|
|
|
namespace State { |
|
|
|
bool record_mode{ false }; |
|
|
@ -191,7 +140,9 @@ namespace Heck::OSP { |
|
|
|
|
|
|
|
void midi_realtime_handler(const ld::MidiEvent& msg) |
|
|
|
{ |
|
|
|
logger_midi.push(msg); |
|
|
|
if constexpr (Constants::Developer::LOG_MIDI_REALTIME) { |
|
|
|
logger_midi.push(msg); |
|
|
|
} |
|
|
|
switch (msg.srt_type) { |
|
|
|
case ld::TimingClock: |
|
|
|
clock.tick_advance(); |
|
|
@ -282,7 +233,9 @@ namespace Heck::OSP { |
|
|
|
{ |
|
|
|
while (midi.HasEvents()) { |
|
|
|
ld::MidiEvent msg = midi.PopEvent(); |
|
|
|
logger_midi.push(msg); |
|
|
|
if constexpr (Constants::Developer::LOG_MIDI_REALTIME) { |
|
|
|
logger_midi.push(msg); |
|
|
|
} |
|
|
|
midi_dispatch(msg, false); |
|
|
|
} |
|
|
|
} |
|
|
|