1 #ifndef RNBO_ParameterEventInterface_h
2 #define RNBO_ParameterEventInterface_h
5 #include "RNBO_ParameterInterface.h"
7 #include "RNBO_EventVariant.h"
8 #include "RNBO_UniquePtr.h"
9 #include "RNBO_EventList.h"
13 using ScheduleCallback = std::function<void(MillisecondTime)>;
37 virtual void scheduleEvent(EventVariant event) = 0;
41 #ifdef RNBO_NOMESSAGEEVENT
44 scheduleEvent(
MessageEvent(tag, eventTime, payload, objectId));
48 void sendMessage(MessageTag tag, UniqueListPtr payload, MessageTag objectId = 0, MillisecondTime eventTime = RNBOTimeNow)
50 #ifdef RNBO_NOMESSAGEEVENT
53 scheduleEvent(MessageEvent(tag, eventTime, std::move(payload), objectId));
57 void sendMessage(MessageTag tag, MessageTag objectId = 0, MillisecondTime eventTime = RNBOTimeNow)
59 #ifdef RNBO_NOMESSAGEEVENT
62 scheduleEvent(MessageEvent(tag, eventTime, objectId));
66 virtual void setScheduleCallback(ScheduleCallback callback)
78 virtual void drainEvents() = 0;
85 class ParameterEventInterfaceImpl :
public ParameterEventInterface {
89 virtual ~ParameterEventInterfaceImpl() { }
91 virtual void refreshParameterCountAndValues() = 0;
92 virtual void notifyParameterValueChanged(ParameterEvent sourceEvent, ParameterIndex index, ParameterValue value) = 0;
93 virtual void drainIncomingQueueToEventList(EventList<EventVariant>& eventList, MillisecondTime currentTime) = 0;
94 virtual void pushDirtyParameters(MillisecondTime currentTime) = 0;
95 virtual void pushOutgoingEvent(EventVariant event) = 0;
96 virtual void notifyOutgoingEvents() = 0;
98 virtual void drainEvents() = 0;
101 virtual bool isActive() = 0;
102 virtual void deactivate() = 0;
103 virtual void notifyParameterInterfaceDeleted() = 0;
107 bool _eventsPushed =
false;
124 virtual void eventsAvailable() = 0;
127 virtual void handleParameterEvent(
const ParameterEvent& event) { RNBO_UNUSED(event); }
128 virtual void handleMidiEvent(
const MidiEvent& event) { RNBO_UNUSED(event); }
129 virtual void handleMessageEvent(
const MessageEvent& event) { RNBO_UNUSED(event); }
130 virtual void handlePresetEvent(
const PresetEvent& event) { RNBO_UNUSED(event); }
131 virtual void handleTempoEvent(
const TempoEvent& event) { RNBO_UNUSED(event); }
132 virtual void handleTransportEvent(
const TransportEvent& event) { RNBO_UNUSED(event); }
133 virtual void handleBeatTimeEvent(
const BeatTimeEvent& event) { RNBO_UNUSED(event); }
134 virtual void handleTimeSignatureEvent(
const TimeSignatureEvent& event) { RNBO_UNUSED(event); }
135 virtual void handleStartupEvent(
const StartupEvent& event) { RNBO_UNUSED(event); }
136 virtual void handleBBUEvent(
const BBUEvent& event) { RNBO_UNUSED(event); }
147 RNBO_ASSERT(peInterface ==
nullptr || _peInterface ==
nullptr);
148 _peInterface = peInterface;
156 _peInterface->drainEvents();
162 ParameterEventInterface* _peInterface =
nullptr;
166 using ParameterEventInterfaceUniquePtr = UniquePtr<ParameterEventInterface>;
170 #endif // RNBO_ParameterEventInterface_h