Line data Source code
1 : #include "SerialMIDI_Interface.hpp" 2 : #include <MIDI_Parsers/StreamPuller.hpp> 3 : 4 : BEGIN_CS_NAMESPACE 5 : 6 : // -------------------------------------------------------------------------- // 7 : 8 : // Reading MIDI 9 : 10 15 : MIDIReadEvent StreamMIDI_Interface::read() { 11 15 : return parser.pull(StreamPuller(stream)); 12 : } 13 : 14 5 : void StreamMIDI_Interface::update() { MIDI_Interface::updateIncoming(this); } 15 : 16 1 : void StreamMIDI_Interface::handleStall() { MIDI_Interface::handleStall(this); } 17 : 18 : // -------------------------------------------------------------------------- // 19 : 20 : // Retrieving the received messages 21 : 22 3 : ChannelMessage StreamMIDI_Interface::getChannelMessage() const { 23 3 : return parser.getChannelMessage(); 24 : } 25 : 26 0 : SysCommonMessage StreamMIDI_Interface::getSysCommonMessage() const { 27 0 : return parser.getSysCommonMessage(); 28 : } 29 : 30 2 : RealTimeMessage StreamMIDI_Interface::getRealTimeMessage() const { 31 2 : return parser.getRealTimeMessage(); 32 : } 33 : 34 5 : SysExMessage StreamMIDI_Interface::getSysExMessage() const { 35 5 : return parser.getSysExMessage(); 36 : } 37 : 38 : // -------------------------------------------------------------------------- // 39 : 40 : // Sending MIDI 41 : 42 10 : void StreamMIDI_Interface::sendChannelMessageImpl(ChannelMessage msg) { 43 10 : stream.write(msg.header); 44 10 : stream.write(msg.data1); 45 10 : if (msg.hasTwoDataBytes()) 46 6 : stream.write(msg.data2); 47 10 : } 48 : 49 0 : void StreamMIDI_Interface::sendSysCommonImpl(SysCommonMessage msg) { 50 0 : stream.write(msg.header); 51 0 : if (msg.getNumberOfDataBytes() >= 1) 52 0 : stream.write(msg.data1); 53 0 : if (msg.getNumberOfDataBytes() >= 2) 54 0 : stream.write(msg.data2); 55 0 : } 56 : 57 1 : void StreamMIDI_Interface::sendSysExImpl(SysExMessage msg) { 58 1 : stream.write(msg.data, msg.length); 59 1 : } 60 : 61 1 : void StreamMIDI_Interface::sendRealTimeImpl(RealTimeMessage msg) { 62 1 : stream.write(msg.message); 63 1 : } 64 : 65 : END_CS_NAMESPACE