62 virtual void initialiseDevice ([[maybe_unused]]
bool connect) {}
63 virtual void shutDownDevice() {}
67 virtual bool wantsDevice (
const MidiID&) {
return false; }
70 virtual void updateOSCSettings (
int ,
int ,
juce::String ) {}
74 virtual void updateMiscFeatures() {}
77 virtual void numExtendersChanged ([[maybe_unused]]
int num, [[maybe_unused]]
int main) {}
82 virtual void acceptMidiMessage ([[maybe_unused]]
int idx,
const juce::MidiMessage&) {}
89 virtual void moveFader (
int channelNum,
float newSliderPos);
93 virtual void moveMasterLevelFader (
float newPos);
98 virtual void movePanPot ([[maybe_unused]]
int channelNum, [[maybe_unused]]
float newPan);
102 virtual void moveMasterPanPot (
float newPan);
104 virtual void moveAux ([[maybe_unused]]
int channel, [[maybe_unused]]
int auxNum, [[maybe_unused]]
const char* bus, [[maybe_unused]]
float newPos);
106 virtual void clearAux ([[maybe_unused]]
int channel, [[maybe_unused]]
int auxNum) {}
112 virtual void soloCountChanged ([[maybe_unused]]
bool anySoloTracks) {}
116 virtual void playStateChanged ([[maybe_unused]]
bool isPlaying) {}
117 virtual void recordStateChanged ([[maybe_unused]]
bool isRecording) {}
120 virtual void automationReadModeChanged ([[maybe_unused]]
bool isReading) {}
121 virtual void automationWriteModeChanged ([[maybe_unused]]
bool isWriting) {}
131 virtual void faderBankChanged ([[maybe_unused]]
int newStartChannelNumber, [[maybe_unused]]
const juce::StringArray& trackNames) {}
139 virtual void padStateChanged ([[maybe_unused]]
int channelNumber, [[maybe_unused]]
int sceneNumber, [[maybe_unused]]
int colourIdx, [[maybe_unused]]
int state) {}
142 virtual void clipsPlayingStateChanged ([[maybe_unused]]
int channel, [[maybe_unused]]
bool isPlaying) {}
148 virtual void channelLevelChanged ([[maybe_unused]]
int channel, [[maybe_unused]]
float l, [[maybe_unused]]
float r) {}
151 virtual void trackSelectionChanged ([[maybe_unused]]
int channel, [[maybe_unused]]
bool isSelected) {}
153 virtual void trackRecordEnabled ([[maybe_unused]]
int channel, [[maybe_unused]]
bool isEnabled) {}
156 virtual void masterLevelsChanged ([[maybe_unused]]
float leftLevel,
157 [[maybe_unused]]
float rightLevel) {}
168 virtual void timecodeChanged ([[maybe_unused]]
int barsOrHours,
169 [[maybe_unused]]
int beatsOrMinutes,
170 [[maybe_unused]]
int ticksOrSeconds,
171 [[maybe_unused]]
int millisecs,
172 [[maybe_unused]]
bool isBarsBeats,
173 [[maybe_unused]]
bool isFrames) {}
176 virtual void clickOnOffChanged ([[maybe_unused]]
bool isClickOn) {}
178 virtual void snapOnOffChanged ([[maybe_unused]]
bool isSnapOn) {}
180 virtual void loopOnOffChanged ([[maybe_unused]]
bool isLoopOn) {}
182 virtual void slaveOnOffChanged ([[maybe_unused]]
bool isSlaving) {}
183 virtual void punchOnOffChanged ([[maybe_unused]]
bool isPunching) {}
184 virtual void scrollOnOffChanged ([[maybe_unused]]
bool isScroll) {}
185 virtual void undoStatusChanged ([[maybe_unused]]
bool canUundo,
186 [[maybe_unused]]
bool canReo) {}
192 virtual void parameterChanged ([[maybe_unused]]
int parameterNumber, [[maybe_unused]]
const ParameterSetting& newValue);
193 virtual void clearParameter ([[maybe_unused]]
int parameterNumber) {}
195 virtual void markerChanged ([[maybe_unused]]
int parameterNumber, [[maybe_unused]]
const MarkerSetting& newValue) {}
196 virtual void clearMarker ([[maybe_unused]]
int parameterNumber) {}
198 virtual void auxBankChanged (
int) {}
201 virtual bool eatsAllMessages() {
return true; }
202 virtual bool canSetEatsAllMessages() {
return false; }
203 virtual void setEatsAllMessages(
bool) {}
204 virtual bool canChangeSelectedPlugin() {
return true; }
209 virtual bool showingPluginParams() {
return false; }
210 virtual bool showingMarkers() {
return false; }
211 virtual bool showingTracks() {
return true; }
212 virtual bool showingClipSlots() {
return true; }
214 virtual void deleteController() {}
215 virtual void pluginBypass (
bool) {}
216 virtual bool isPluginSelected (
Plugin*) {
return false; }
218 virtual void currentEditChanged (
Edit* e) { edit = e; }
220 Edit* getEdit()
const noexcept {
return edit; }
223 virtual void currentSelectionManagerChanged (
SelectionManager* sm) { selectionManager = sm; }
234 bool isSafeRecording()
const;
239 int getMarkerBankOffset()
const;
240 int getFaderBankOffset()
const;
241 int getAuxBankOffset()
const;
242 int getParamBankOffset()
const;
243 int getClipSlotOffset()
const;
246 void sendMidiCommandToController (
int idx,
const void* midiData,
int numBytes);
249 template <
size_t size>
250 void sendMidiArray (
int idx,
const uint8_t (&rawData)[size]) { sendMidiCommandToController (idx, rawData, (
int) size); }
256 void userMovedFader (
int channelNum,
float newFaderPosition,
bool delta =
false);
262 void userMovedPanPot (
int channelNum,
float newPanPosition,
bool delta =
false);
265 void userMovedMasterLevelFader (
float newLevel,
bool delta =
false);
266 void userMovedMasterPanPot (
float newLevel,
bool delta =
false);
268 void userMovedAux (
int channelNum,
int auxNum,
float newPosition,
bool delta =
false);
269 void userPressedAux (
int channelNum,
int auxNum);
270 void userMovedQuickParam (
float newLevel);
273 void userPressedSolo (
int channelNum);
274 void userPressedSoloIsolate (
int channelNum);
275 void userPressedMute (
int channelNum,
bool muteVolumeControl);
276 void userSelectedTrack (
int channelNum);
277 void userSelectedOneTrack (
int channelNum);
278 void userSelectedClipInTrack (
int channelNum);
279 void userSelectedPluginInTrack (
int channelNum);
280 void userPressedRecEnable (
int channelNum,
bool enableEtoE);
281 void userLaunchedClip (
int channelNum,
int sceneNum);
282 void userStoppedClip (
int channelNum);
283 void userLaunchedScene (
int sceneNum);
284 void userPressedPlay();
285 void userPressedRecord();
286 void userPressedStop();
287 void userPressedHome();
288 void userPressedEnd();
289 void userPressedMarkIn();
290 void userPressedMarkOut();
291 void userPressedAutomationReading();
292 void userPressedAutomationWriting();
293 void userToggledBeatsSecondsMode();
294 void userPressedSave();
295 void userPressedSaveAs();
296 void userPressedArmAll();
297 void userPressedJumpToMarkIn();
298 void userPressedJumpToMarkOut();
299 void userPressedZoomIn();
300 void userPressedZoomOut();
301 void userPressedZoomToFit();
302 void userPressedCreateMarker();
303 void userPressedNextMarker();
304 void userPressedPreviousMarker();
305 void userPressedRedo();
306 void userPressedUndo();
307 void userPressedAbort();
308 void userPressedAbortRestart();
309 void userPressedCut();
310 void userPressedCopy();
311 void userPressedPaste (
bool insert);
312 void userPressedDelete (
bool marked);
313 void userPressedZoomFitToTracks();
314 void userPressedInsertTempoChange();
315 void userPressedInsertPitchChange();
316 void userPressedInsertTimeSigChange();
317 void userToggledVideoWindow();
318 void userToggledMixerWindow (
bool fullscreen);
319 void userToggledMidiEditorWindow (
bool fullscreen);
320 void userToggledTrackEditorWindow (
bool zoomed);
321 void userToggledBrowserWindow();
322 void userToggledActionsWindow();
323 void userPressedUserAction (
int);
324 void userPressedFreeze();
326 void userPressedClearAllSolo();
327 void userPressedClearAllMute();
329 void userToggledLoopOnOff();
330 void userToggledPunchOnOff();
331 void userToggledClickOnOff();
332 void userToggledSnapOnOff();
333 void userToggledSlaveOnOff();
334 void userToggledEtoE();
335 void userToggledScroll();
337 void userSkippedToNextMarkerLeft();
338 void userSkippedToNextMarkerRight();
339 void userNudgedLeft();
340 void userNudgedRight();
342 void userZoomedOut();
343 void userScrolledTracksUp();
344 void userScrolledTracksDown();
345 void userScrolledTracksLeft();
346 void userScrolledTracksRight();
347 void userZoomedTracksIn();
348 void userZoomedTracksOut();
349 void selectOtherObject (SelectableClass::Relationship,
bool moveFromCurrentPlugin);
350 void muteOrUnmutePluginsInTrack();
355 void userChangedFaderBanks (
int channelNumDelta);
360 void userChangedPadBanks (
int padDelta);
366 void userMovedJogWheel (
float amount);
371 void userChangedRewindButton (
bool isButtonDown);
372 void userChangedFastForwardButton (
bool isButtonDown);
374 void userMovedParameterControl (
int parameter,
float newValue,
bool delta =
false);
375 void userPressedParameterControl (
int paramNumber);
377 void userChangedParameterBank (
int deltaParams);
378 void userChangedMarkerBank (
int deltaMarkers);
379 void userPressedGoToMarker (
int marker);
381 void userChangedAuxBank (
int delta);
382 void userSetAuxBank (
int num);
384 void updateDeviceState();
386 void redrawSelectedPlugin();
387 void redrawSelectedTracks();
389 Edit* getEditIfOnEditScreen()
const;
396 int supportedExtenders = 0;
399 bool needsMidiChannel =
true;
406 bool needsMidiBackChannel =
false;
412 bool needsOSCSocket =
false;
415 bool wantsClock =
false;
418 bool deletable =
false;
421 int numberOfFaderChannels = 0;
422 int numCharactersForTrackNames = 0;
425 int numberOfTrackPads = 0;
428 bool allowBankingOffEnd =
false;
431 bool wantsDummyParams =
true;
432 int numParameterControls = 0;
433 int numCharactersForParameterLabels = 0;
437 int numCharactersForMarkerLabels = 0;
441 bool pickUpMode =
false;
444 bool limitedPadColours =
false;
447 int numCharactersForAuxLabels = 0;
448 bool wantsAuxBanks =
false;
449 bool followsTrackSelection =
false;
450 AuxPosition auxMode = AuxPosition::byBus;
452 void setFollowsTrackSelection (
bool f);
473 bool pickedUp =
false;
475 float lastOut = 0.0f;
478 Edit* edit =
nullptr;
481 void performIfNotSafeRecording (
const std::function<
void()>&);
483 bool pickedUp (ControlType,
int index,
float value);
484 bool pickedUp (ControlType,
float value);