Browse Source

Move: MidiLogger into osp_utils

master
heck 8 months ago
parent
commit
3c40f99020
  1. 59
      src/main_osp.cc
  2. 49
      src/osp_utils.hh

59
src/main_osp.cc

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

49
src/osp_utils.hh

@ -1,6 +1,7 @@
#ifndef HECK_OSP_UTILS_HH
#define HECK_OSP_UTILS_HH
#include "dizzy.hh"
#include "daisy_seed.h"
#include "utils.hh"
@ -77,4 +78,52 @@ namespace Heck::OSP {
} // namespace Sig
} // namespace Heck::OSP
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: {
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) {
ld::DaisySeed::PrintLine("%s", outstr);
}
} break;
case ld::NoteOn:
case ld::NoteOff:
case ld::MidiMessageType::ControlChange: {
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]);
ld::DaisySeed::PrintLine("%s", outstr);
} break;
}
}
}
ld::FIFO<ld::MidiEvent, 128> event_log_{};
};
} // namespace Heck::OSP
#endif // HECK_DAISY_UTILS_HH
Loading…
Cancel
Save