tracktion-engine 3.0-10-g034fdde4aa5
Tracktion Engine — High level data model for audio applications

« « « Anklang Documentation
Loading...
Searching...
No Matches
tracktion_FolderTrack.h
Go to the documentation of this file.
1 /*
2 ,--. ,--. ,--. ,--.
3 ,-' '-.,--.--.,--,--.,---.| |,-.,-' '-.`--' ,---. ,--,--, Copyright 2024
4 '-. .-'| .--' ,-. | .--'| /'-. .-',--.| .-. || \ Tracktion Software
5 | | | | \ '-' \ `--.| \ \ | | | |' '-' '| || | Corporation
6 `---' `--' `--`--'`---'`--'`--' `---' `--' `---' `--''--' www.tracktion.com
7
8 Tracktion Engine uses a GPL/commercial licence - see LICENCE.md for details.
9*/
10
11namespace tracktion { inline namespace engine
12{
13
15class FolderTrack : public Track
16{
17public:
19 ~FolderTrack() override;
20
22
23 //==============================================================================
25 bool isFolderTrack() const override;
26
27 void initialise() override;
28
29 void sanityCheckName() override;
30 juce::String getName() const override;
31
32 // not an index - values start from 1
33 int getFolderTrackNumber() const noexcept;
34
35 //==============================================================================
36 bool isSubmixFolder() const;
37
39 TrackOutput* getOutput() const noexcept;
40
41 juce::Array<Track*> getInputTracks() const override;
42
43 //==============================================================================
44 bool isFrozen (FreezeType) const override;
45
46 //==============================================================================
47 float getVcaDb (TimePosition);
48 VCAPlugin* getVCAPlugin();
49 VolumeAndPanPlugin* getVolumePlugin();
50
51 //==============================================================================
52 void generateCollectionClips (SelectionManager&);
53 CollectionClip* getCollectionClip (int index) const noexcept;
54 int getNumCollectionClips() const noexcept;
55 int indexOfCollectionClip (CollectionClip*) const;
56 int getIndexOfNextCollectionClipAt (TimePosition);
57 CollectionClip* getNextCollectionClipAt (TimePosition);
58 bool contains (CollectionClip*) const;
59
60 //==============================================================================
61 int getNumTrackItems() const override;
62 TrackItem* getTrackItem (int idx) const override;
63 int indexOfTrackItem (TrackItem*) const override;
66
67 //==============================================================================
68 bool isMuted (bool includeMutingByDestination) const override;
69 bool isSolo (bool includeIndirectSolo) const override;
70 bool isSoloIsolate (bool includeIndirectSolo) const override;
71
72 void setMute (bool) override;
73 void setSolo (bool) override;
74 void setSoloIsolate (bool) override;
75
76 //==============================================================================
77 void setDirtyClips();
78
79 bool canContainPlugin (Plugin*) const override;
80 bool willAcceptPlugin (Plugin&);
81
82private:
83 friend class Edit;
84
86 juce::CachedValue<bool> muted, soloed, soloIsolated;
87 bool dirtyClips = true;
88
89 std::mutex pluginMutex;
92 AsyncCaller pluginUpdater;
93
94 void updatePlugins();
95 TimeRange getClipExtendedBounds (Clip&);
96
97 void valueTreeChildAdded (juce::ValueTree&, juce::ValueTree&) override;
98 void valueTreeChildRemoved (juce::ValueTree&, juce::ValueTree&, int) override;
99 void valueTreeChildOrderChanged (juce::ValueTree&, int, int) override;
100};
101
102}} // namespace tracktion { inline namespace engine
A clip in an edit.
The Tracktion Edit class!
bool canContainPlugin(Plugin *) const override
Returns true if this track can contain a specific Plugin.
bool isFrozen(FreezeType) const override
Returns true if this track is frozen using the given type.
bool isFolderTrack() const override
Returns true if this is a FolderTrack.
TrackItem * getNextTrackItemAt(TimePosition) override
Should return the TrackItem after this time.
int indexOfTrackItem(TrackItem *) const override
Should return the index of the given TrackItem.
TrackItem * getTrackItem(int idx) const override
Should return the TrackItem at the given index.
void setSolo(bool) override
Subclasses should implement this to solo themselves.
void setSoloIsolate(bool) override
Subclasses should implement this to solo isolate themselves.
int getNumTrackItems() const override
Should return the number of TrackItem[s] on this Track.
bool isSolo(bool includeIndirectSolo) const override
Returns true if this track is soloed.
bool isMuted(bool includeMutingByDestination) const override
Returns true if this track is muted.
juce::Array< Track * > getInputTracks() const override
Should return any tracks which feed into this track.
int getIndexOfNextTrackItemAt(TimePosition) override
Should return the index of the TrackItem after this time.
void sanityCheckName() override
Sub-classes can impliment this to avoid certain characters being used in a name.
TrackOutput * getOutput() const noexcept
Returns the output if this track is a submix folder.
void initialise() override
Initialises the Track.
void setMute(bool) override
Subclasses should implement this to mute themselves.
bool isSoloIsolate(bool includeIndirectSolo) const override
Returns true if this track is solo isolated.
juce::String getSelectableDescription() override
Subclasses must return a description of what they are.
Manages a list of items that are currently selected.
Base class for EditItems that live in a Track, e.g.
Represents the destination output device(s) for a track.
Base class for tracks which contain clips and plugins and can be added to Edit[s].
FreezeType
Determines the type of freeze.
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.
Represents a position in real-life time.