TracktionEngine
|
Base class for tracks which contain clips and plugins and can be added to Edit[s]. More...
#include <tracktion_Track.h>
Public Types | |
enum | FreezeType { groupFreeze = 0 , individualFreeze , anyFreeze } |
Determines the type of freeze. More... | |
enum | MuteAndSoloLightState { soloLit = 1 , soloFlashing = 2 , soloIsolate = 4 , muteLit = 8 , muteFlashing = 16 } |
Determines the status of the mute and solo indicators. More... | |
using | Ptr = juce::ReferenceCountedObjectPtr< Track > |
using | Array = juce::ReferenceCountedArray< Track > |
![]() | |
using | WeakRef = juce::WeakReference< Selectable > |
Public Member Functions | |
Track (Edit &, const juce::ValueTree &, bool hasModifierList) | |
Creates a track with a given state. | |
~Track () override | |
Destructor. | |
virtual void | initialise () |
Initialises the Track. | |
virtual void | flushStateToValueTree () |
Flushes all plugin states on the track to the state object. | |
void | refreshCurrentAutoParam () |
Updates the current parameter bases on the set IDs. | |
juce::String | getName () const override |
Returns the name of the Track. | |
void | setName (const juce::String &) |
Sets the name of the Track. | |
void | resetName () |
Sets the name of the Track to an empty string. | |
virtual void | sanityCheckName () |
Sub-classes can impliment this to avoid certain characters being used in a name. | |
virtual bool | isAudioTrack () const |
Returns true if this is an AudioTrack. | |
virtual bool | isAutomationTrack () const |
Returns true if this is an AutomationTrack. | |
virtual bool | isFolderTrack () const |
Returns true if this is a FolderTrack. | |
virtual bool | isMarkerTrack () const |
Returns true if this is a MarkerTrack. | |
virtual bool | isTempoTrack () const |
Returns true if this is a TempoTrack. | |
virtual bool | isChordTrack () const |
Returns true if this is a ChordTrack. | |
virtual bool | isArrangerTrack () const |
Returns true if this is an ArrangerTrack. | |
virtual bool | isMasterTrack () const |
Returns true if this is a MasterTrack. | |
bool | canContainMarkers () const |
Returns true if this Track can contain MarkerClip[s]. | |
bool | canContainMIDI () const |
Returns true if this Track can contain MidiClip[s]. | |
bool | canContainAudio () const |
Returns true if this Track can contain WaveAudioClip[s]. | |
bool | canContainEditClips () const |
Returns true if this Track can contain EditClip[s]. | |
bool | canContainPlugins () const |
Returns true if this Track can contain Plugin[s]. | |
bool | isMovable () const |
Returns true if this Track is movable. | |
bool | acceptsInput () const |
Returns true if this track can have inputs assigned to it. | |
bool | createsOutput () const |
Returns true if this track creates audible output. | |
bool | wantsAutomation () const |
Returns true if this track can show automation. | |
virtual bool | canContainPlugin (Plugin *) const =0 |
Returns true if this track can contain a specific Plugin. | |
virtual bool | isFrozen (FreezeType) const |
Returns true if this track is frozen using the given type. | |
virtual void | setFrozen (bool, FreezeType) |
Attempts to freeze or unfreeze the track using a given FreezeType. | |
bool | isHidden () const |
Returns true if this track should be hidden from view. | |
void | setHidden (bool h) |
Sets whether this track should be hidden from view. | |
bool | isProcessing (bool includeParents) const |
Returns true if this track should be included in playback. | |
void | setProcessing (bool p) |
Sets whether this track should be included in playback. | |
virtual bool | processAudioNodesWhileMuted () const |
Subclasses can override this to ensure track contents are still played even when the track is muted. | |
virtual juce::Array< Track * > | getInputTracks () const |
Should return any tracks which feed into this track. | |
juce::Array< Track * > | getAllSubTracks (bool recursive) const |
Returns all nested tracks. | |
juce::Array< AudioTrack * > | getAllAudioSubTracks (bool recursive) const |
Returns all nested AudioTrack[s]. | |
TrackList * | getSubTrackList () const |
Returns the TrackList if this Track has any sub-tracks. | |
bool | hasSubTracks () const |
Returns true if this track has any subtracks. | |
virtual Clip * | findClipForID (EditItemID) const |
Returns a clip one with a matching ID can be found on this Track. | |
Track * | getSiblingTrack (int delta, bool keepWithinSameParent) const |
Returns a sibling Track to this one. | |
virtual int | getNumTrackItems () const |
Should return the number of TrackItem[s] on this Track. | |
virtual TrackItem * | getTrackItem (int) const |
Should return the TrackItem at the given index. | |
virtual int | indexOfTrackItem (TrackItem *) const |
Should return the index of the given TrackItem. | |
virtual int | getIndexOfNextTrackItemAt (TimePosition) |
Should return the index of the TrackItem after this time. | |
virtual TrackItem * | getNextTrackItemAt (TimePosition) |
Should return the TrackItem after this time. | |
virtual void | insertSpaceIntoTrack (TimePosition, TimeDuration) |
Should insert empty space in to the track, shuffling down any items after the time. | |
juce::ValueTree | getParentTrackTree () const |
Returns the state of the parent Track. | |
Track * | getParentTrack () const |
Returns the parent Track if this is a nested track. | |
FolderTrack * | getParentFolderTrack () const |
Returns the parent FolderTrack if this is nested in one. | |
bool | isAChildOf (const Track &possibleParent) const |
Tests whether this is a child of a given Track. | |
bool | isPartOfSubmix () const |
Tests whether this nested within a submix FolderTrack. | |
int | getIndexInEditTrackList () const |
Returns the index of this track in a flat list of tracks contained in an Edit. | |
int | getTrackDepth () const |
Returns the number of parents within which this track is nested. | |
virtual bool | isMuted (bool) const |
Returns true if this track is muted. | |
virtual bool | isSolo (bool) const |
Returns true if this track is soloed. | |
virtual bool | isSoloIsolate (bool) const |
Returns true if this track is solo isolated. | |
virtual void | setMute (bool) |
Subclasses should implement this to mute themselves. | |
virtual void | setSolo (bool) |
Subclasses should implement this to solo themselves. | |
virtual void | setSoloIsolate (bool) |
Subclasses should implement this to solo isolate themselves. | |
MuteAndSoloLightState | getMuteAndSoloLightState () const |
Returns the mute a solo status. | |
bool | shouldBePlayed () const noexcept |
Tests whether this track should be audible in the playback graph i.e. | |
void | updateAudibility (bool areAnyTracksSolo) |
Updates the audibility state of the Track. | |
juce::Array< AutomatableParameter * > | getAllAutomatableParams () const |
Returns all the parameters for this track's Plugin[s] and Modifier[s]. | |
void | visitAllAutomatableParams (const std::function< void(AutomatableParameter &)> &) const |
Visits all the parameters for this track's Plugin[s] and Modifier[s]. | |
AutomatableParameter * | getCurrentlyShownAutoParam () const noexcept |
Returns the parameter whos curve should be shown on this Track. | |
void | setCurrentlyShownAutoParam (const AutomatableParameter::Ptr &) |
Sets a parameter to display on this Track. | |
void | hideAutomatableParametersForSource (EditItemID pluginOrParameterID) |
Hides a shown parameter if it matches the given ID. | |
virtual bool | containsPlugin (const Plugin *) const |
Tests whether this Track or a clip on it contains the given plugin. | |
bool | hasFreezePointPlugin () const |
Tests whether this Track contains a FreezePointPlugin. | |
juce::Array< AutomatableEditItem * > | getAllAutomatableEditItems () const |
Returns all AutomatableEditItem[s] on this Track. | |
virtual Plugin::Array | getAllPlugins () const |
Returns all pugins on this Track. | |
virtual void | sendMirrorUpdateToAllPlugins (Plugin &changedPlugin) const |
Sends a message to all plugins that the given plugin has changed. | |
void | flipAllPluginsEnablement () |
Toggles the Plugin::isEnabled state for all Plugin[s] on this Track. | |
ModifierList * | getModifierList () const |
Returns the ModifierList for this track, if it has one. | |
void | setColour (juce::Colour newColour) |
Sets a colour for this track to use. | |
juce::Colour | getColour () const |
Returns the the of this. | |
bool | canShowImage () const |
Tests whether this Track can show an image. | |
void | setTrackImage (const juce::String &idOrData) |
Sets some image data to use. | |
juce::String | getTrackImage () const |
Returns previously set image data. | |
bool | imageHasChanged () |
Tests and resets a flag internally kept when the image changes. | |
void | setTags (const juce::StringArray &) |
Sets an array of Strings to use as tags. | |
juce::String | getTags () const |
Returns the tags as a pipe-separated single String. | |
const juce::StringArray & | getTagsArray () const noexcept |
Returns the array of tags. | |
![]() | |
EditItem (EditItemID, Edit &) | |
EditItem (Edit &, const juce::ValueTree &) | |
virtual | ~EditItem ()=default |
![]() | |
Selectable () | |
virtual | ~Selectable () |
virtual juce::String | getSelectableDescription ()=0 |
Subclasses must return a description of what they are. | |
virtual void | selectionStatusChanged (bool isNowSelected) |
Can be overridden to tell this object that it has just been selected or deselected. | |
virtual void | changed () |
This should be called to send a change notification to any SelectableListeners that are registered with this object. | |
virtual void | selectableAboutToBeDeleted () |
Called just before the selectable is about to be deleted so any subclasses should still be valid at this point. | |
void | addListener (SelectableListener *) |
void | removeListener (SelectableListener *) |
void | addSelectableListener (SelectableListener *) |
void | removeSelectableListener (SelectableListener *) |
void | cancelAnyPendingUpdates () |
If changed() has been called, this will cancel any pending async change notificaions. | |
void | deselect () |
void | propertiesChanged () |
void | notifyListenersOfDeletion () |
WeakRef | getWeakRef () |
Public Attributes | |
juce::ValueTree | state |
The state of this Track. | |
PluginList | pluginList |
The Track's PluginList. | |
juce::CachedValue< AutomationMode > | automationMode |
The automation mode for parameters on this track to use. | |
![]() | |
Edit & | edit |
const EditItemID | itemID |
Every EditItem has an ID which is unique within the edit. | |
![]() | |
WeakRef::Master | masterReference |
Static Public Attributes | |
static const int | minTrackHeightForDetail = 10 |
The minimim height to show track contents at. | |
static const int | trackHeightForEditor = 180 |
The height at which inline editors should be shown. | |
static const int | frozenTrackHeight = 15 |
The height to show group frozen tracks. | |
Protected Member Functions | |
void | valueTreePropertyChanged (juce::ValueTree &, const juce::Identifier &) override |
void | valueTreeChildAdded (juce::ValueTree &, juce::ValueTree &) override |
void | valueTreeChildRemoved (juce::ValueTree &, juce::ValueTree &, int) override |
void | valueTreeChildOrderChanged (juce::ValueTree &, int, int) override |
void | valueTreeParentChanged (juce::ValueTree &) override |
void | handleAsyncUpdate () override |
virtual bool | isTrackAudible (bool areAnyTracksSolo) const |
Returns whether this Track should be audible. | |
Additional Inherited Members | |
![]() | |
static void | initialise () |
static bool | isSelectableValid (const Selectable *) noexcept |
checks whether this object has been deleted. | |
Base class for tracks which contain clips and plugins and can be added to Edit[s].
using tracktion::engine::Track::Ptr = juce::ReferenceCountedObjectPtr<Track> |
using tracktion::engine::Track::Array = juce::ReferenceCountedArray<Track> |
Creates a track with a given state.
|
override |
Destructor.
Initialises the Track.
You shouldn't need to call this directly, it will be called by the track creation methods.
Reimplemented in tracktion::engine::AudioTrack, tracktion::engine::ClipTrack, tracktion::engine::FolderTrack, and tracktion::engine::MasterTrack.
Flushes all plugin states on the track to the state object.
This is usually called automatically when an Edit is saved.
Reimplemented in tracktion::engine::ClipTrack.
void tracktion::engine::Track::refreshCurrentAutoParam | ( | ) |
Updates the current parameter bases on the set IDs.
This is usually called automatically by the Edit when the ID changes or an Edit is loaded.
|
overridevirtual |
Returns the name of the Track.
Implements tracktion::engine::EditItem.
void tracktion::engine::Track::resetName | ( | ) |
Sets the name of the Track to an empty string.
Base classes may then use this an an indication to return a name based on the track type and index
Sub-classes can impliment this to avoid certain characters being used in a name.
Reimplemented in tracktion::engine::AudioTrack, and tracktion::engine::FolderTrack.
Returns true if this is an AudioTrack.
Reimplemented in tracktion::engine::AudioTrack.
Referenced by acceptsInput(), canContainAudio(), canContainEditClips(), canContainMIDI(), canContainPlugins(), createsOutput(), and isMovable().
Returns true if this is an AutomationTrack.
Reimplemented in tracktion::engine::AutomationTrack.
Returns true if this is a FolderTrack.
Reimplemented in tracktion::engine::FolderTrack.
Referenced by canContainPlugins(), and isMovable().
Returns true if this is a MarkerTrack.
Reimplemented in tracktion::engine::MarkerTrack.
Referenced by canContainMarkers(), and wantsAutomation().
Returns true if this is a TempoTrack.
Reimplemented in tracktion::engine::TempoTrack.
Returns true if this is a ChordTrack.
Reimplemented in tracktion::engine::ChordTrack.
Referenced by wantsAutomation().
Returns true if this is an ArrangerTrack.
Reimplemented in tracktion::engine::ArrangerTrack.
Referenced by wantsAutomation().
Returns true if this is a MasterTrack.
Reimplemented in tracktion::engine::MasterTrack.
Referenced by canContainPlugins().
bool tracktion::engine::Track::canContainMarkers | ( | ) | const |
Returns true if this Track can contain MarkerClip[s].
References isMarkerTrack().
bool tracktion::engine::Track::canContainMIDI | ( | ) | const |
Returns true if this Track can contain MidiClip[s].
References isAudioTrack().
bool tracktion::engine::Track::canContainAudio | ( | ) | const |
Returns true if this Track can contain WaveAudioClip[s].
References isAudioTrack().
bool tracktion::engine::Track::canContainEditClips | ( | ) | const |
Returns true if this Track can contain EditClip[s].
References isAudioTrack().
bool tracktion::engine::Track::canContainPlugins | ( | ) | const |
Returns true if this Track can contain Plugin[s].
References isAudioTrack(), isFolderTrack(), and isMasterTrack().
bool tracktion::engine::Track::isMovable | ( | ) | const |
Returns true if this Track is movable.
References isAudioTrack(), and isFolderTrack().
bool tracktion::engine::Track::acceptsInput | ( | ) | const |
Returns true if this track can have inputs assigned to it.
References isAudioTrack().
bool tracktion::engine::Track::createsOutput | ( | ) | const |
bool tracktion::engine::Track::wantsAutomation | ( | ) | const |
Returns true if this track can show automation.
References isArrangerTrack(), isChordTrack(), and isMarkerTrack().
Returns true if this track can contain a specific Plugin.
Subclasses can override this to avoid specific plugins such as VCAPlugin[s] on AudioTrack[s].
Implemented in tracktion::engine::ArrangerTrack, tracktion::engine::AudioTrack, tracktion::engine::AutomationTrack, tracktion::engine::ChordTrack, tracktion::engine::FolderTrack, tracktion::engine::MarkerTrack, tracktion::engine::MasterTrack, and tracktion::engine::TempoTrack.
|
virtual |
Returns true if this track is frozen using the given type.
Reimplemented in tracktion::engine::AudioTrack, and tracktion::engine::FolderTrack.
|
virtual |
Attempts to freeze or unfreeze the track using a given FreezeType.
Reimplemented in tracktion::engine::AudioTrack.
bool tracktion::engine::Track::isHidden | ( | ) | const |
Returns true if this track should be hidden from view.
Sets whether this track should be hidden from view.
Returns true if this track should be included in playback.
Sets whether this track should be included in playback.
Subclasses can override this to ensure track contents are still played even when the track is muted.
This may be required if this track is a sidechain source or feeding an aux for example.
Reimplemented in tracktion::engine::AudioTrack.
Should return any tracks which feed into this track.
Reimplemented in tracktion::engine::AudioTrack, and tracktion::engine::FolderTrack.
Returns all nested tracks.
recursive | Whether to include all tracks recursively. |
juce::Array< AudioTrack * > tracktion::engine::Track::getAllAudioSubTracks | ( | bool | recursive | ) | const |
Returns all nested AudioTrack[s].
recursive | Whether to include all tracks recursively. |
TrackList * tracktion::engine::Track::getSubTrackList | ( | ) | const |
bool tracktion::engine::Track::hasSubTracks | ( | ) | const |
Returns true if this track has any subtracks.
|
virtual |
Returns a clip one with a matching ID can be found on this Track.
Reimplemented in tracktion::engine::ClipTrack.
Returns a sibling Track to this one.
delta | The offset from this track. 1 is the next track, -1 is the previous. |
keepWithinSameParent | Whether to include parent and sub tracks or only tracks at this level. |
Should return the number of TrackItem[s] on this Track.
Reimplemented in tracktion::engine::ClipTrack, tracktion::engine::FolderTrack, and tracktion::engine::TempoTrack.
Should return the TrackItem at the given index.
Reimplemented in tracktion::engine::ClipTrack, tracktion::engine::FolderTrack, and tracktion::engine::TempoTrack.
Should return the index of the given TrackItem.
Reimplemented in tracktion::engine::ClipTrack, tracktion::engine::FolderTrack, and tracktion::engine::TempoTrack.
|
virtual |
Should return the index of the TrackItem after this time.
Reimplemented in tracktion::engine::ClipTrack, tracktion::engine::FolderTrack, and tracktion::engine::TempoTrack.
|
virtual |
Should return the TrackItem after this time.
Reimplemented in tracktion::engine::ClipTrack, tracktion::engine::FolderTrack, and tracktion::engine::TempoTrack.
|
virtual |
Should insert empty space in to the track, shuffling down any items after the time.
time | The time point in seconds to insert at |
amountOfSpace | The duration of time to insert |
Reimplemented in tracktion::engine::ClipTrack, and tracktion::engine::TempoTrack.
juce::ValueTree tracktion::engine::Track::getParentTrackTree | ( | ) | const |
Returns the state of the parent Track.
Track * tracktion::engine::Track::getParentTrack | ( | ) | const |
Returns the parent Track if this is a nested track.
FolderTrack * tracktion::engine::Track::getParentFolderTrack | ( | ) | const |
Returns the parent FolderTrack if this is nested in one.
Tests whether this is a child of a given Track.
bool tracktion::engine::Track::isPartOfSubmix | ( | ) | const |
Tests whether this nested within a submix FolderTrack.
int tracktion::engine::Track::getIndexInEditTrackList | ( | ) | const |
Returns the index of this track in a flat list of tracks contained in an Edit.
Useful for naming Tracks.
int tracktion::engine::Track::getTrackDepth | ( | ) | const |
Returns the number of parents within which this track is nested.
Returns true if this track is muted.
includeMutingByDestination | If this is true, this will retrn true if any tracks this feeds in to are muted. |
Reimplemented in tracktion::engine::AudioTrack, and tracktion::engine::FolderTrack.
Returns true if this track is soloed.
includeIndirectSolo | If this is true, this will retrn true if any tracks this feeds in to are soloed. |
Reimplemented in tracktion::engine::AudioTrack, and tracktion::engine::FolderTrack.
Returns true if this track is solo isolated.
includeIndirectSolo | If this is true, this will retrn true if any tracks this feeds in to are solo isolated. |
Reimplemented in tracktion::engine::AudioTrack, and tracktion::engine::FolderTrack.
Subclasses should implement this to mute themselves.
Reimplemented in tracktion::engine::AudioTrack, and tracktion::engine::FolderTrack.
Subclasses should implement this to solo themselves.
Reimplemented in tracktion::engine::AudioTrack, and tracktion::engine::FolderTrack.
Subclasses should implement this to solo isolate themselves.
Reimplemented in tracktion::engine::AudioTrack, and tracktion::engine::FolderTrack.
MuteAndSoloLightState tracktion::engine::Track::getMuteAndSoloLightState | ( | ) | const |
Returns the mute a solo status.
|
noexcept |
Tests whether this track should be audible in the playback graph i.e.
explicitly or implicitly soloed or not muted.
juce::Array< AutomatableParameter * > tracktion::engine::Track::getAllAutomatableParams | ( | ) | const |
void tracktion::engine::Track::visitAllAutomatableParams | ( | const std::function< void(AutomatableParameter &)> & | ) | const |
|
noexcept |
Returns the parameter whos curve should be shown on this Track.
void tracktion::engine::Track::setCurrentlyShownAutoParam | ( | const AutomatableParameter::Ptr & | ) |
Sets a parameter to display on this Track.
void tracktion::engine::Track::hideAutomatableParametersForSource | ( | EditItemID | pluginOrParameterID | ) |
Hides a shown parameter if it matches the given ID.
Tests whether this Track or a clip on it contains the given plugin.
Reimplemented in tracktion::engine::ClipTrack.
bool tracktion::engine::Track::hasFreezePointPlugin | ( | ) | const |
Tests whether this Track contains a FreezePointPlugin.
juce::Array< AutomatableEditItem * > tracktion::engine::Track::getAllAutomatableEditItems | ( | ) | const |
Returns all AutomatableEditItem[s] on this Track.
|
virtual |
Returns all pugins on this Track.
Subclasses may implement this to also return Plugin[s] on Clip[s]
Reimplemented in tracktion::engine::ClipTrack.
|
virtual |
Sends a message to all plugins that the given plugin has changed.
Reimplemented in tracktion::engine::ClipTrack.
void tracktion::engine::Track::flipAllPluginsEnablement | ( | ) |
Toggles the Plugin::isEnabled state for all Plugin[s] on this Track.
ModifierList * tracktion::engine::Track::getModifierList | ( | ) | const |
Returns the ModifierList for this track, if it has one.
void tracktion::engine::Track::setColour | ( | juce::Colour | newColour | ) |
Sets a colour for this track to use.
juce::Colour tracktion::engine::Track::getColour | ( | ) | const |
Returns the the of this.
bool tracktion::engine::Track::canShowImage | ( | ) | const |
Tests whether this Track can show an image.
N.B. May be removed in a future version.
Sets some image data to use.
N.B. May be removed in a future version.
juce::String tracktion::engine::Track::getTrackImage | ( | ) | const |
Returns previously set image data.
N.B. May be removed in a future version.
bool tracktion::engine::Track::imageHasChanged | ( | ) |
Tests and resets a flag internally kept when the image changes.
N.B. May be removed in a future version.
Sets an array of Strings to use as tags.
N.B. May be removed in a future version.
juce::String tracktion::engine::Track::getTags | ( | ) | const |
Returns the tags as a pipe-separated single String.
N.B. May be removed in a future version.
|
noexcept |
Returns the array of tags.
N.B. May be removed in a future version.
|
overrideprotected |
|
overrideprotected |
|
overrideprotected |
|
overrideprotected |
|
overrideprotected |
|
overrideprotected |
|
protectedvirtual |
Returns whether this Track should be audible.
Subclasses can override for custom behaviour.
Reimplemented in tracktion::engine::AudioTrack.
The minimim height to show track contents at.
The height at which inline editors should be shown.
The height to show group frozen tracks.
juce::ValueTree tracktion::engine::Track::state |
The state of this Track.
PluginList tracktion::engine::Track::pluginList |
The Track's PluginList.
juce::CachedValue<AutomationMode> tracktion::engine::Track::automationMode |
The automation mode for parameters on this track to use.