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
|