9 #ifndef _RNBO_EventSender_H_
10 #define _RNBO_EventSender_H_
13 #include "RNBO_EventTarget.h"
14 #include "RNBO_EventVariant.h"
15 #include "RNBO_EmptyEvent.h"
16 #include "RNBO_ClockEvent.h"
17 #include "RNBO_MidiEvent.h"
28 virtual ~EventSender() { }
30 virtual void sendEvent(
const EventVariant& ev)
const {
31 Event::Type eventType = ev.getType();
34 case Event::Empty: handleEmptyEvent(ev.getEmptyEvent());
break;
35 case Event::Clock: handleClockEvent(ev.getClockEvent());
break;
36 case Event::Midi: handleMidiEvent(ev.getMidiEvent());
break;
39 case Event::Parameter:
40 case Event::ParameterBang:
41 case Event::Universal:
45 case Event::Transport:
47 case Event::TimeSignature:
56 EventSender(EventTarget* fallbackTarget)
57 : _fallbackTarget(fallbackTarget)
60 EventSender(
const EventSender& other) =
default;
61 EventSender& operator=(
const EventSender& other) =
default;
65 void handleEmptyEvent(
const EmptyEvent& ee)
const {
70 void handleClockEvent(
const ClockEvent& ce)
const {
71 EventTarget* eventTarget = ce.getEventTarget() ? ce.getEventTarget() : _fallbackTarget;
73 if (!eventTarget)
return;
74 eventTarget->processClockEvent(correctTime(ce.getTime()), ce.getClockIndex(), ce.hasValue(), ce.getValue());
77 void handleMidiEvent(
const MidiEvent& me)
const {
78 EventTarget* eventTarget = me.getEventTarget() ? me.getEventTarget() : _fallbackTarget;
80 if (!eventTarget)
return;
84 Index length = me.getLength();
85 int port = me.getPortIndex();
86 eventTarget->processMidiEvent(correctTime(me.getTime()), port, data, length);
94 EventTarget* _fallbackTarget;
101 #endif // #ifndef _RNBO_EventSender_H_