#include "utils.hh" namespace Heck::OSP { void GetMidiTypeAsString(const ld::MidiEvent& msg, char* str) { switch (msg.type) { case ld::NoteOff: strcpy(str, "NoteOff"); break; case ld::NoteOn: strcpy(str, "NoteOn"); break; case ld::PolyphonicKeyPressure: strcpy(str, "PolyKeyPres."); break; case ld::ControlChange: strcpy(str, "CC"); break; case ld::ProgramChange: strcpy(str, "Prog. Change"); break; case ld::ChannelPressure: strcpy(str, "Chn. Pressure"); break; case ld::PitchBend: strcpy(str, "PitchBend"); break; case ld::SystemCommon: strcpy(str, "Sys. Common"); break; case ld::SystemRealTime: strcpy(str, "Sys. Realtime"); break; case ld::ChannelMode: strcpy(str, "Chn. Mode"); break; default: strcpy(str, "Unknown"); break; } } void GetMidiRTTypeAsString(const ld::MidiEvent& msg, char* str) { switch (msg.srt_type) { case ld::TimingClock: strcpy(str, "TimingClock"); break; case ld::SRTUndefined0: strcpy(str, "SRTUndefined0"); break; case ld::Start: strcpy(str, "Start"); break; case ld::Continue: strcpy(str, "Continue"); break; case ld::Stop: strcpy(str, "Stop"); break; case ld::SRTUndefined1: strcpy(str, "SRTUndefined1"); break; case ld::ActiveSensing: strcpy(str, "ActiveSensing"); break; case ld::Reset: strcpy(str, "Reset"); break; case ld::SystemRealTimeLast: strcpy(str, "SystemRealTimeLast"); break; default: strcpy(str, "Unknown"); break; } } float scalen_min_max(float val, float min, float max) { float range = max - min; float ret = min + (val * range); return ret; } float scalen_center_range(float val, float center, float range) { float min = center - (range / 2); float ret = min + (val * range); return ret; } } // namespace Heck namespace Heck::OSP { void SWTimer::set_period(u32 time_units) { time_period_ = time_units; } void SWTimer::set_callback(const Callback& cb) { callback_ = cb; } bool SWTimer::is_it_already_time_again(u32 time_now) { if (time_now - time_last_exec_ >= time_period_) { time_last_exec_ = time_now; if (callback_) { //todo: constexpr if metrics callback_(time_now); } return true; } return false; } } // namespace Heck