2 #include "serialmidi.h"
13 serialStream(serialPath),
15 status(MidiStatus::None)
17 serialStream.SetBaudRate(LibSerial::SerialStreamBuf::BAUD_38400);
18 serialStream.SetCharSize(LibSerial::SerialStreamBuf::CHAR_SIZE_8);
19 serialStream.SetNumOfStopBits(1);
20 serialStream.SetParity(LibSerial::SerialStreamBuf::PARITY_NONE);
21 serialStream.SetFlowControl(LibSerial::SerialStreamBuf::FLOW_CONTROL_NONE);
24 SerialMidi::~SerialMidi()
39 uint8_t bytesLeft = 0;
41 while(serialStream.good()) {
42 uint8_t c = serialStream.get();
56 if(!(status == MidiStatus::ProgramChange) &&
57 !(status == MidiStatus::ChannelPressure))
60 else if((c > 0x7F) && (c < 0xF0)) {
62 if((c & 0x0F) == channel) {
64 status = MidiStatus((c & 0xF0));
65 if((status == MidiStatus::ProgramChange) ||
66 (status == MidiStatus::ChannelPressure))
92 void SerialMidi::parseMessage()
95 case MidiStatus::NoteOff:
96 notes.removeNote(data[0]);
98 case MidiStatus::NoteOn:
100 notes.removeNote(data[0]);
102 notes.addNote(data[0], data[1]);