8 #ifndef _RNBO_PatcherEventSender_H_
9 #define _RNBO_PatcherEventSender_H_
12 #include "RNBO_EventSender.h"
13 #include "RNBO_DataRefEvent.h"
14 #include "RNBO_OutletEvent.h"
15 #include "RNBO_ParameterEvent.h"
16 #include "RNBO_MessageEvent.h"
26 : EventSender(fallbackTarget)
27 , _fallbackTarget(fallbackTarget)
28 , _currentTime(currentTime)
36 void sendEvent(
const EventVariant& ev)
const override {
37 Event::Type eventType = ev.getType();
40 case Event::DataRef: handleDataRefEvent(ev.getDataRefEvent());
break;
41 case Event::Outlet: handleOutletEvent(ev.getOutletEvent());
break;
42 case Event::Parameter: handleParameterEvent(ev.getParameterEvent());
break;
43 case Event::ParameterBang: handleParameterBangEvent(ev.getParameterBangEvent());
break;
44 case Event::Message: handleMessageEvent(ev.getMessageEvent());
break;
45 case Event::Tempo: handleTempoEvent(ev.getTempoEvent());
break;
46 case Event::Transport: handleTransportEvent(ev.getTransportEvent());
break;
47 case Event::BeatTime: handleBeatTimeEvent(ev.getBeatTimeEvent());
break;
48 case Event::TimeSignature: handleTimeSignatureEvent(ev.getTimeSignatureEvent());
break;
49 case Event::BBU: handleBBUEvent(ev.getBBUEvent());
break;
54 case Event::Universal:
56 default: EventSender::sendEvent(ev);
63 return time < _currentTime ? _currentTime : time;
68 PatcherEventTarget* eventTarget = de.getEventTarget() ? de.getEventTarget() : _fallbackTarget;
71 if (de.getAction() == DataRefEvent::UpdateDataRef) {
72 eventTarget->processDataViewUpdate(de.getDataRefIndex(), correctTime(de.getTime()));
76 void handleOutletEvent(
const OutletEvent& oe)
const {
77 PatcherEventTarget* eventTarget = oe.getEventTarget() ? oe.getEventTarget() : _fallbackTarget;
78 eventTarget->processOutletEvent(oe.getSender(), oe.getIndex(), oe.getValue(), correctTime(oe.getTime()));
82 PatcherEventTarget* eventTarget = pe.getEventTarget() ? pe.getEventTarget() : _fallbackTarget;
83 eventTarget->processParameterEvent(pe.getIndex(), pe.getValue(), correctTime(pe.getTime()));
87 PatcherEventTarget* eventTarget = pe.getEventTarget() ? pe.getEventTarget() : _fallbackTarget;
88 eventTarget->processParameterBangEvent(pe.getIndex(), correctTime(pe.getTime()));
92 #ifndef RNBO_NOMESSAGEEVENT
93 PatcherEventTarget* eventTarget = me.getEventTarget() ? me.getEventTarget() : _fallbackTarget;
94 if (me.getType() == MessageEvent::List) {
95 auto listValue = me.getListValue();
96 eventTarget->processListMessage(me.getTag(), me.getObjectId(), correctTime(me.getTime()), *listValue);
98 else if (me.getType() == MessageEvent::Number) {
99 eventTarget->processNumMessage(me.getTag(), me.getObjectId(), correctTime(me.getTime()), me.getNumValue());
101 else if (me.getType() == MessageEvent::Bang) {
102 eventTarget->processBangMessage(me.getTag(), me.getObjectId(), correctTime(me.getTime()));
110 void handleTempoEvent(
const TempoEvent& te)
const {
111 PatcherEventTarget* eventTarget = te.getEventTarget() ? te.getEventTarget() : _fallbackTarget;
112 eventTarget->processTempoEvent(correctTime(te.getTime()), te.getTempo());
116 PatcherEventTarget* eventTarget = te.getEventTarget() ? te.getEventTarget() : _fallbackTarget;
117 eventTarget->processTransportEvent(correctTime(te.getTime()), te.getState());
121 PatcherEventTarget* eventTarget = be.getEventTarget() ? be.getEventTarget() : _fallbackTarget;
122 eventTarget->processBeatTimeEvent(correctTime(be.getTime()), be.getBeatTime());
126 PatcherEventTarget* eventTarget = te.getEventTarget() ? te.getEventTarget() : _fallbackTarget;
127 eventTarget->processTimeSignatureEvent(correctTime(te.getTime()), te.getNumerator(), te.getDenominator());
130 void handleBBUEvent(
const BBUEvent& be)
const {
131 PatcherEventTarget* eventTarget = be.getEventTarget() ? be.getEventTarget() : _fallbackTarget;
132 eventTarget->processBBUEvent(correctTime(be.getTime()), be.getBars(), be.getBeats(), be.getUnits());
135 PatcherEventTarget* _fallbackTarget;
143 #endif // #ifndef _RNBO_PatcherEventSender_H_