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 : // -------------------------------------------------------------------------- // 17 : 18 : // Retrieving the received messages 19 : 20 3 : ChannelMessage StreamMIDI_Interface::getChannelMessage() const { 21 3 : return parser.getChannelMessage(); 22 : } 23 : 24 0 : SysCommonMessage StreamMIDI_Interface::getSysCommonMessage() const { 25 0 : return parser.getSysCommonMessage(); 26 : } 27 : 28 2 : RealTimeMessage StreamMIDI_Interface::getRealTimeMessage() const { 29 2 : return parser.getRealTimeMessage(); 30 : } 31 : 32 5 : SysExMessage StreamMIDI_Interface::getSysExMessage() const { 33 5 : return parser.getSysExMessage(); 34 : } 35 : 36 : // -------------------------------------------------------------------------- // 37 : 38 : // Sending MIDI 39 : 40 10 : void StreamMIDI_Interface::sendChannelMessageImpl(ChannelMessage msg) { 41 10 : stream.write(msg.header); 42 10 : stream.write(msg.data1); 43 10 : if (msg.hasTwoDataBytes()) 44 6 : stream.write(msg.data2); 45 10 : } 46 : 47 0 : void StreamMIDI_Interface::sendSysCommonImpl(SysCommonMessage msg) { 48 0 : stream.write(msg.header); 49 0 : if (msg.getNumberOfDataBytes() >= 1) 50 0 : stream.write(msg.data1); 51 0 : if (msg.getNumberOfDataBytes() >= 2) 52 0 : stream.write(msg.data2); 53 0 : } 54 : 55 1 : void StreamMIDI_Interface::sendSysExImpl(SysExMessage msg) { 56 1 : stream.write(msg.data, msg.length); 57 1 : } 58 : 59 1 : void StreamMIDI_Interface::sendRealTimeImpl(RealTimeMessage msg) { 60 1 : stream.write(msg.message); 61 1 : } 62 : 63 : END_CS_NAMESPACE