cs-midi/MIDI_Interfaces/MIDI_Interface.cpp

55 lines
1.5 KiB
C++

#include "MIDI_Interface.hpp"
#include "MIDI_Callbacks.hpp"
BEGIN_CS_NAMESPACE
// -------------------------------------------------------------------------- //
// Managing the default MIDI interface
MIDI_Interface::~MIDI_Interface() {
if (getDefault() == this)
DefaultMIDI_Interface = nullptr;
}
void MIDI_Interface::setAsDefault() { DefaultMIDI_Interface = this; }
#define DOWN_CAST static_cast
MIDI_Interface *MIDI_Interface::getDefault() {
return DefaultMIDI_Interface == nullptr
? DOWN_CAST<MIDI_Interface *>(updatables.getLast())
: DefaultMIDI_Interface;
}
MIDI_Interface *MIDI_Interface::DefaultMIDI_Interface = nullptr;
// -------------------------------------------------------------------------- //
// Handling incoming MIDI events
void MIDI_Interface::onChannelMessage(ChannelMessage message) {
sourceMIDItoPipe(message);
if (callbacks)
callbacks->onChannelMessage(*this, message);
}
void MIDI_Interface::onSysExMessage(SysExMessage message) {
sourceMIDItoPipe(message);
if (callbacks)
callbacks->onSysExMessage(*this, message);
}
void MIDI_Interface::onSysCommonMessage(SysCommonMessage message) {
sourceMIDItoPipe(message);
if (callbacks)
callbacks->onSysCommonMessage(*this, message);
}
void MIDI_Interface::onRealTimeMessage(RealTimeMessage message) {
sourceMIDItoPipe(message);
if (callbacks)
callbacks->onRealTimeMessage(*this, message);
}
END_CS_NAMESPACE