Control Surface
main
MIDI Control Surface library for Arduino
Toggle main menu visibility
Loading...
Searching...
No Matches
src
MIDI_Interfaces
MIDI_Interface.cpp
Go to the documentation of this file.
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
MIDI_Interface::~MIDI_Interface
() {
11
if
(
getDefault
() ==
this
)
12
DefaultMIDI_Interface
=
nullptr
;
13
}
14
15
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
MIDI_Interface
*
MIDI_Interface::getDefault
() {
24
return
DefaultMIDI_Interface
==
nullptr
25
?
DOWN_CAST<MIDI_Interface *>
(
updatables
.getLast())
26
:
DefaultMIDI_Interface
;
27
}
28
29
MIDI_Interface
*
MIDI_Interface::DefaultMIDI_Interface
=
nullptr
;
30
31
// -------------------------------------------------------------------------- //
32
33
// Handling incoming MIDI events
34
35
void
MIDI_Interface::onChannelMessage
(
ChannelMessage
message) {
36
sourceMIDItoPipe
(message);
37
if
(
callbacks
)
38
callbacks
->onChannelMessage(*
this
, message);
39
}
40
41
void
MIDI_Interface::onSysExMessage
(
SysExMessage
message) {
42
sourceMIDItoPipe
(message);
43
if
(
callbacks
)
44
callbacks
->onSysExMessage(*
this
, message);
45
}
46
47
void
MIDI_Interface::onSysCommonMessage
(
SysCommonMessage
message) {
48
sourceMIDItoPipe
(message);
49
if
(
callbacks
)
50
callbacks
->onSysCommonMessage(*
this
, message);
51
}
52
53
void
MIDI_Interface::onRealTimeMessage
(
RealTimeMessage
message) {
54
sourceMIDItoPipe
(message);
55
if
(
callbacks
)
56
callbacks
->onRealTimeMessage(*
this
, message);
57
}
58
59
END_CS_NAMESPACE
MIDI_Callbacks.hpp
DOWN_CAST
#define DOWN_CAST
Definition
MIDI_Interface.cpp:20
MIDI_Interface.hpp
END_CS_NAMESPACE
#define END_CS_NAMESPACE
Definition
Settings/NamespaceSettings.hpp:14
BEGIN_CS_NAMESPACE
#define BEGIN_CS_NAMESPACE
Definition
Settings/NamespaceSettings.hpp:11
AH::Updatable< MIDI_Interface >::updatables
static DoublyLinkedList< Updatable< NormalUpdatable > > updatables
Definition
Updatable.hpp:152
MIDI_Interface
An abstract class for MIDI interfaces.
Definition
MIDI_Interface.hpp:23
MIDI_Interface::onSysCommonMessage
void onSysCommonMessage(SysCommonMessage message)
Call the System Common message callback and send the message to the sink pipe.
Definition
MIDI_Interface.cpp:47
MIDI_Interface::MIDI_Interface
MIDI_Interface()=default
MIDI_Interface::~MIDI_Interface
virtual ~MIDI_Interface()
Destructor.
Definition
MIDI_Interface.cpp:10
MIDI_Interface::setAsDefault
void setAsDefault()
Set this MIDI interface as the default interface.
Definition
MIDI_Interface.cpp:15
MIDI_Interface::callbacks
MIDI_Callbacks * callbacks
Definition
MIDI_Interface.hpp:129
MIDI_Interface::onSysExMessage
void onSysExMessage(SysExMessage message)
Call the SysEx message callback and send the message to the sink pipe.
Definition
MIDI_Interface.cpp:41
MIDI_Interface::onRealTimeMessage
void onRealTimeMessage(RealTimeMessage message)
Call the real-time message callback and send the message to the sink pipe.
Definition
MIDI_Interface.cpp:53
MIDI_Interface::DefaultMIDI_Interface
static MIDI_Interface * DefaultMIDI_Interface
Definition
MIDI_Interface.hpp:132
MIDI_Interface::onChannelMessage
void onChannelMessage(ChannelMessage message)
Call the channel message callback and send the message to the sink pipe.
Definition
MIDI_Interface.cpp:35
MIDI_Interface::getDefault
static MIDI_Interface * getDefault()
Return the default MIDI interface.
Definition
MIDI_Interface.cpp:23
MIDI_Source::sourceMIDItoPipe
void sourceMIDItoPipe(ChannelMessage)
Send a MIDI Channel Message down the pipe.
Definition
MIDI_Pipes.cpp:133
ChannelMessage
Definition
MIDI_MessageTypes.hpp:205
RealTimeMessage
Definition
MIDI_MessageTypes.hpp:354
SysCommonMessage
Definition
MIDI_MessageTypes.hpp:263
SysExMessage
Definition
MIDI_MessageTypes.hpp:305
Generated by
1.17.0