File MIDI_UART_Input.cpp¶
File List > examples > MIDI_UART_Input > MIDI_UART_Input.cpp
Go to the documentation of this file
Source Code¶
#include "daisy_seed.h"
using namespace daisy;
DaisySeed hw;
MidiUartHandler midi;
FIFO<MidiEvent, 128> event_log;
int main(void)
{
hw.Init();
hw.StartLog();
MidiUartHandler::Config midi_config;
midi.Init(midi_config);
midi.StartReceive();
uint32_t now = System::GetNow();
uint32_t log_time = System::GetNow();
while(1)
{
now = System::GetNow();
midi.Listen();
while(midi.HasEvents())
{
MidiEvent msg = midi.PopEvent();
switch(msg.type)
{
case NoteOn:
// Do something on Note On events
{
uint8_t bytes[3] = {0x90, 0x00, 0x00};
bytes[1] = msg.data[0];
bytes[2] = msg.data[1];
midi.SendMessage(bytes, 3);
}
break;
default: break;
}
event_log.PushBack(msg);
}
if(now - log_time > 5)
{
log_time = now;
if(!event_log.IsEmpty())
{
auto msg = event_log.PopFront();
char outstr[128];
const char* type_str = MidiEvent::GetTypeAsString(msg);
sprintf(outstr,
"time:\t%ld\ttype: %s\tChannel: %d\tData MSB: "
"%d\tData LSB: %d\n",
now,
type_str,
msg.channel,
msg.data[0],
msg.data[1]);
hw.PrintLine(outstr);
}
}
}
}