Line data Source code
1 : #include "MIDI_Interface.hpp" 2 : #include "MIDI_Callbacks.hpp" 3 : 4 : BEGIN_CS_NAMESPACE 5 : 6 : // -------------------------------------------------------------------------- // 7 : 8 : // Managing the default MIDI interface 9 : 10 135 : MIDI_Interface::~MIDI_Interface() { 11 135 : if (getDefault() == this) 12 135 : DefaultMIDI_Interface = nullptr; 13 135 : } 14 : 15 0 : void MIDI_Interface::setAsDefault() { DefaultMIDI_Interface = this; } 16 : 17 : #ifndef ARDUINO 18 : #define DOWN_CAST dynamic_cast 19 : #else 20 : #define DOWN_CAST static_cast 21 : #endif 22 : 23 174 : MIDI_Interface *MIDI_Interface::getDefault() { 24 174 : return DefaultMIDI_Interface == nullptr 25 174 : ? DOWN_CAST<MIDI_Interface *>(updatables.getLast()) 26 174 : : DefaultMIDI_Interface; 27 : } 28 : 29 : MIDI_Interface *MIDI_Interface::DefaultMIDI_Interface = nullptr; 30 : 31 : // -------------------------------------------------------------------------- // 32 : 33 : // Handling incoming MIDI events 34 : 35 25 : void MIDI_Interface::onChannelMessage(ChannelMessage message) { 36 25 : sourceMIDItoPipe(message); 37 25 : if (callbacks) 38 22 : callbacks->onChannelMessage(*this, message); 39 25 : } 40 : 41 11 : void MIDI_Interface::onSysExMessage(SysExMessage message) { 42 11 : sourceMIDItoPipe(message); 43 11 : if (callbacks) 44 5 : callbacks->onSysExMessage(*this, message); 45 11 : } 46 : 47 0 : void MIDI_Interface::onSysCommonMessage(SysCommonMessage message) { 48 0 : sourceMIDItoPipe(message); 49 0 : if (callbacks) 50 0 : callbacks->onSysCommonMessage(*this, message); 51 0 : } 52 : 53 4 : void MIDI_Interface::onRealTimeMessage(RealTimeMessage message) { 54 4 : sourceMIDItoPipe(message); 55 4 : if (callbacks) 56 3 : callbacks->onRealTimeMessage(*this, message); 57 4 : } 58 : 59 : END_CS_NAMESPACE