File midi_parser.h¶
File List > external-docs > libDaisy > src > hid > midi_parser.h
Go to the documentation of this file
Source Code¶
#pragma once
#ifndef DSY_MIDI_PARSER_H
#define DSY_MIDI_PARSER_H
#include <stdint.h>
#include <stdlib.h>
#include "hid/MidiEvent.h"
namespace daisy
{
class MidiParser
{
public:
MidiParser(){};
~MidiParser() {}
inline void Init() { Reset(); }
bool Parse(uint8_t byte, MidiEvent *event_out);
void Reset();
private:
enum ParserState
{
ParserEmpty,
ParserHasStatus,
ParserHasData0,
ParserSysEx,
};
ParserState pstate_;
MidiEvent incoming_message_;
MidiMessageType running_status_;
// Masks to check for message type, and byte content
const uint8_t kStatusByteMask = 0x80;
const uint8_t kMessageMask = 0x70;
const uint8_t kDataByteMask = 0x7F;
const uint8_t kChannelMask = 0x0F;
const uint8_t kSystemRealTimeMask = 0x07;
};
} // namespace daisy
#endif