11namespace tracktion {
inline namespace engine
77 void detachFromEdit (
Edit*);
79 bool isAttachedToEdit (
const Edit*)
const noexcept;
80 bool isAttachedToEdit (
const Edit&)
const noexcept;
91 void midiInOutDevicesChanged();
99 bool createCustomController (
const juce::String& name, Protocol);
108 void moveFader (
int channelNum,
float newSliderPos);
109 void moveMasterFader (
float newPos);
110 void movePanPot (
int channelNum,
float newPan);
111 void moveMasterPanPot (
float newPan);
112 void playStateChanged (
bool isPlaying);
114 void automationModeChanged (
bool isReading,
bool isWriting);
115 void channelLevelChanged (
int channel,
float l,
float r);
116 void masterLevelsChanged (
float leftLevel,
float rightLevel);
117 void timecodeChanged (
int barsOrHours,
int beatsOrMinutes,
int ticksOrSeconds,
118 int millisecs,
bool isBarsBeats,
bool isFrames);
122 void snapChanged (
bool isOn);
123 void loopChanged (
bool isOn);
124 void clickChanged (
bool isOn);
125 void auxSendLevelsChanged();
127 void updateMuteSoloLights (
bool onlyUpdateFlashingLights);
128 void soloCountChanged (
bool);
132 bool shouldTrackBeColoured (
int channelNum);
137 bool shouldPluginBeColoured (
Plugin*);
140 void updateAllDevices();
141 void updateParameters();
142 void updateMarkers();
143 void updateTrackRecordLights();
144 void updatePunchLights();
145 void updateScrollLights();
146 void updateUndoLights();
147 void updatePadColours();
149 int getNumChannelTracks()
const;
150 Track* getChannelTrack (
int channel)
const;
151 int mapTrackNumToChannelNum (
int channelNum)
const;
156 void refreshXTOrder();
160 void userMovedFader (
int channelNum,
float newSliderPos,
bool delta);
161 void userMovedMasterFader (
Edit*,
float newLevel,
bool delta);
162 void userMovedMasterPanPot (
Edit*,
float newLevel,
bool delta);
163 void userMovedPanPot (
int channelNum,
float newPan,
bool delta);
164 void userPressedSolo (
int channelNum);
165 void userPressedSoloIsolate (
int channelNum);
166 void userPressedMute (
int channelNum,
bool muteVolumeControl);
167 void userSelectedTrack (
int channelNum);
168 void userSelectedOneTrack (
int channelNum);
169 void userSelectedClipInTrack (
int channelNum);
170 void userSelectedPluginInTrack (
int channelNum);
171 void userMovedAux (
int channelNum,
int auxNum, AuxPosition ap,
float newPosition,
bool delta);
172 void userPressedAux (
int channelNum,
int auxNum);
173 void userMovedQuickParam (
float newLevel);
174 void userLaunchedClip (
int channelNum,
int clip);
175 void userStoppedClip (
int channelNum);
176 void userLaunchedScene (
int scene);
178 void updateDeviceState();
180 void repaintTrack (
int channelNum);
181 void repaintPlugin (
Plugin&);
182 void repaintSlots (
int channelNum);
184 #if TRACKTION_ENABLE_CONTROL_SURFACES
185 NovationAutomap* getAutomap() const noexcept {
return automap; }
194 ExternalControllerManager (
Engine&);
196 struct EditTreeWatcher;
200 NovationAutomap* automap =
nullptr;
203 Edit* currentEdit =
nullptr;
204 SelectionManager* currentSelectionManager =
nullptr;
206 struct BlinkTimer :
private Timer
208 BlinkTimer (ExternalControllerManager&);
209 void timerCallback()
override;
210 ExternalControllerManager& ecm;
211 bool isBright =
false;
216 LambdaTimer masterLevelsTimer;
218 ExternalController* addNewController (ControlSurface*);
222 void timerCallback()
override;
ChangeBroadcaster() noexcept
Represents a slot on a track that a Clip can live in to be played as a launched clip.
Base class for types of control surface.
The Tracktion Edit class!
Keeps a list of external controllers and keeps them connected to the right MIDI in/out devices.
std::function< bool(Edit &)> isScrollingEnabled
Callback that can be set allow surfaces to show the scroll status of an Edit.
std::function< void(Edit &, bool)> setScrollingEnabled
Callback that can be set allow surfaces to set the scroll status of an Edit.
std::function< void(Edit &, int)> launchScene
Launch scene by index.
std::function< void(Edit &, Track &, int)> launchClip
Launch clip by track and index.
std::function< int(Edit &, int)> mapEditTrackNumToControlSurfaceChannelNum
Optional callback that can be set to map an Edit track number to a control surface channel number.
std::function< void(Edit &, Track *)> stopClip
Stop all clips on track.
std::function< bool(const Track &)> isVisibleOnControlSurface
Callback that can be set to determine if a track is visible on a controller or not.
std::function< void(FolderTrack &, bool)> setFolderTrackOpen
Callback that can be set allow surfaces to open/close folders.
std::function< bool(FolderTrack &)> isFolderTrackOpen
Callback that can be set allow surfaces to show the open/close status of folders.
Acts as a holder for a ControlSurface object.
Manages a list of items that are currently selected.
Base class for tracks which contain clips and plugins and can be added to Edit[s].
The VCA plugin sits on a folder track to control the overall level of all the volume/pan plugins in i...
The built-in Tracktion volume/pan plugin.
bool isRecording(EditPlaybackContext &epc)
Returns true if any inputs are currently recording.
Represents a position in real-life time.
An area of the edit currently control by a control surface.