TracktionEngine
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
tracktion::engine::CompManager Class Referenceabstract
Inheritance diagram for tracktion::engine::CompManager:

Public Types

using Ptr = juce::ReferenceCountedObjectPtr< CompManager >
 

Public Member Functions

 CompManager (Clip &, const juce::ValueTree &)
 Creates a CompManager for a given clip. More...
 
 ~CompManager () override
 Destructor. More...
 
virtual void initialise ()
 
virtual HashCode getBaseTakeHash (int takeIndex) const =0
 
virtual double getTakeLength (int takeIndex) const =0
 
virtual double getOffset () const =0
 
virtual double getLoopLength () const =0
 
virtual bool getAutoTempo ()=0
 
virtual double getSourceTempo ()=0
 
virtual juce::String getWarning ()
 
virtual float getRenderProgress () const
 
virtual void discardCachedData ()
 
virtual void triggerCompRender ()=0
 Triggers the render of the comp. More...
 
virtual void flattenTake (int takeIndex, bool deleteSourceFiles)=0
 Should flatten the comp and remove all other takes. More...
 
virtual juce::ValueTree pasteComp (const juce::ValueTree &)
 Pastes an existing comp to this manager and returns the newly added tree. More...
 
ClipgetClip () const noexcept
 
virtual void setStripToUpdate (juce::Component *)
 Sets a component to be updated during render processes. More...
 
bool shouldDisplayWarning () const noexcept
 Returns true if the source should display a warning about using multi-tempo changes. More...
 
juce::ValueTree getSection (int takeIndex, int sectionIndex) const
 Returns the section at the given index of a given take. More...
 
juce::ValueTree findSectionAtTime (double time)
 Returns either the section for the current comp at a given time or if a whole take is being used the take. More...
 
int findSectionWithEndTime (juce::Range< double > range, int takeIndex, bool &timeFoundAtStartOfSection) const
 Returns the index of the section whose end lies within the given time range. More...
 
juce::Range< double > getSectionTimes (const juce::ValueTree &) const
 Returns the time range a given section occupies for a given take. More...
 
juce::ValueTree getTakesTree ()
 
void setActiveTakeIndex (int index)
 Sets the active take index. More...
 
int getActiveTakeIndex () const
 Returns the active take index. More...
 
juce::ValueTree getActiveTakeTree () const
 Returns the active take tree. More...
 
int getNumTakes () const
 Returns the number of takes that are not comps. More...
 
int getNumComps () const
 Returns the number of comps that are comps. More...
 
int getTotalNumTakes () const
 Returns the total number of takes including comp takes. More...
 
bool isTakeComp (int takeIndex) const
 Returns true if the given take at an index is a comp. More...
 
bool isTakeComp (const juce::ValueTree &takeTree) const
 Returns true if the given take is a comp. More...
 
bool isCurrentTakeComp () const
 Returns true if the current take is a comp. More...
 
juce::String getTakeName (int index) const
 Returns the name of a take. More...
 
virtual juce::ValueTree addNewComp ()=0
 Adds a new comp to the end of the takes list optionally making it active. More...
 
double getMaxCompLength () const
 Returns the maximum length that a comp can be. More...
 
juce::Range< double > getCompRange () const
 Returns the time range available for comping i.e. More...
 
double getSpeedRatio () const
 Returns the effective speed ratio used for displaying waveforms. More...
 
double getSourceTimeMultiplier () const
 Returns the current time multiplier in use by the source, either the speed ratio or auto tempo ratio. More...
 
HashCode getTakeHash (int takeIndex) const
 Returns a hash code representing a take. More...
 
void changeSectionIndexAtTime (double time, int takeIndex)
 Changes the index of the active comp's section at a given time. More...
 
void removeSectionIndexAtTime (double time, int takeIndex)
 Removes a section from the comp at the given time if the section is at the given take index. More...
 
void moveSectionEndTime (juce::ValueTree &section, double newTime)
 Moves a section's end time to the new time specified. More...
 
void moveSection (juce::ValueTree &section, double timeDelta)
 Moves a section by the specified time delta also moving the previous section's end time by the same ammount. More...
 
void moveSectionToEndAt (juce::ValueTree &section, double newEndTime)
 Moves a section to an absolute end time also moving the previous section's end time by the same ammount. More...
 
juce::ValueTree addSection (int takeIndex, double endTime)
 Adds a new section at a given time and returns the index of it. More...
 
void removeSection (const juce::ValueTree &sectionToRemove)
 Removes a section from the active comp if it is within range. More...
 
juce::ValueTree splitSectionAtTime (double time)
 Find the current section at the given time and splits it in two ready for a new comp section. More...
 
void removeSectionsWithinRange (juce::Range< double > timeRange, const juce::ValueTree &sectionToKeep)
 Removes all sections which lie within the given time range. More...
 

Protected Member Functions

juce::UndoManager * getUndoManager () const
 
void keepSectionsSortedAndInRange ()
 
juce::ValueTree getNewCompTree () const
 

Protected Attributes

juce::ValueTree takesTree
 
int lastRenderedTake = -1
 
HashCode lastHash = 0
 
double maxCompLength
 
double effectiveTimeMultiplier
 
double lastOffset = 1.0
 
double lastTimeRatio = 1.0
 

Member Typedef Documentation

◆ Ptr

using tracktion::engine::CompManager::Ptr = juce::ReferenceCountedObjectPtr<CompManager>

Constructor & Destructor Documentation

◆ CompManager()

tracktion::engine::CompManager::CompManager ( Clip ,
const juce::ValueTree &   
)

Creates a CompManager for a given clip.

◆ ~CompManager()

tracktion::engine::CompManager::~CompManager ( )
override

Destructor.

Member Function Documentation

◆ initialise()

virtual void tracktion::engine::CompManager::initialise ( )
virtual

◆ getBaseTakeHash()

virtual HashCode tracktion::engine::CompManager::getBaseTakeHash ( int  takeIndex) const
pure virtual

◆ getTakeLength()

virtual double tracktion::engine::CompManager::getTakeLength ( int  takeIndex) const
pure virtual

◆ getOffset()

virtual double tracktion::engine::CompManager::getOffset ( ) const
pure virtual

◆ getLoopLength()

virtual double tracktion::engine::CompManager::getLoopLength ( ) const
pure virtual

◆ getAutoTempo()

virtual bool tracktion::engine::CompManager::getAutoTempo ( )
pure virtual

◆ getSourceTempo()

virtual double tracktion::engine::CompManager::getSourceTempo ( )
pure virtual

◆ getWarning()

virtual juce::String tracktion::engine::CompManager::getWarning ( )
virtual

◆ getRenderProgress()

virtual float tracktion::engine::CompManager::getRenderProgress ( ) const
virtual

◆ discardCachedData()

virtual void tracktion::engine::CompManager::discardCachedData ( )
virtual

◆ triggerCompRender()

virtual void tracktion::engine::CompManager::triggerCompRender ( )
pure virtual

Triggers the render of the comp.

Call this when you change the comp in some way.

Implemented in tracktion::engine::MidiCompManager, and tracktion::engine::WaveCompManager.

◆ flattenTake()

virtual void tracktion::engine::CompManager::flattenTake ( int  takeIndex,
bool  deleteSourceFiles 
)
pure virtual

Should flatten the comp and remove all other takes.

Implemented in tracktion::engine::MidiCompManager, and tracktion::engine::WaveCompManager.

◆ pasteComp()

virtual juce::ValueTree tracktion::engine::CompManager::pasteComp ( const juce::ValueTree &  )
virtual

Pastes an existing comp to this manager and returns the newly added tree.

Reimplemented in tracktion::engine::WaveCompManager.

◆ getClip()

Clip& tracktion::engine::CompManager::getClip ( ) const
noexcept

◆ setStripToUpdate()

virtual void tracktion::engine::CompManager::setStripToUpdate ( juce::Component *  )
virtual

Sets a component to be updated during render processes.

Reimplemented in tracktion::engine::WaveCompManager.

◆ shouldDisplayWarning()

bool tracktion::engine::CompManager::shouldDisplayWarning ( ) const
noexcept

Returns true if the source should display a warning about using multi-tempo changes.

◆ getSection()

juce::ValueTree tracktion::engine::CompManager::getSection ( int  takeIndex,
int  sectionIndex 
) const

Returns the section at the given index of a given take.

◆ findSectionAtTime()

juce::ValueTree tracktion::engine::CompManager::findSectionAtTime ( double  time)

Returns either the section for the current comp at a given time or if a whole take is being used the take.

Check the type to find out which this is.

◆ findSectionWithEndTime()

int tracktion::engine::CompManager::findSectionWithEndTime ( juce::Range< double >  range,
int  takeIndex,
bool &  timeFoundAtStartOfSection 
) const

Returns the index of the section whose end lies within the given time range.

This is useful when finding out what edges to drag etc. If no section is found then -1 is returned.

◆ getSectionTimes()

juce::Range<double> tracktion::engine::CompManager::getSectionTimes ( const juce::ValueTree &  ) const

Returns the time range a given section occupies for a given take.

If there is no segment at the indexes this will return an empty range.

◆ getTakesTree()

juce::ValueTree tracktion::engine::CompManager::getTakesTree ( )

References takesTree.

◆ setActiveTakeIndex()

void tracktion::engine::CompManager::setActiveTakeIndex ( int  index)

Sets the active take index.

This will also update the source.

◆ getActiveTakeIndex()

int tracktion::engine::CompManager::getActiveTakeIndex ( ) const

Returns the active take index.

References tracktion::engine::Clip::getCurrentTake().

Referenced by getActiveTakeTree(), and isCurrentTakeComp().

◆ getActiveTakeTree()

juce::ValueTree tracktion::engine::CompManager::getActiveTakeTree ( ) const

Returns the active take tree.

References getActiveTakeIndex(), and takesTree.

◆ getNumTakes()

int tracktion::engine::CompManager::getNumTakes ( ) const

Returns the number of takes that are not comps.

Referenced by getNumComps().

◆ getNumComps()

int tracktion::engine::CompManager::getNumComps ( ) const

Returns the number of comps that are comps.

References getNumTakes(), and takesTree.

◆ getTotalNumTakes()

int tracktion::engine::CompManager::getTotalNumTakes ( ) const

Returns the total number of takes including comp takes.

References takesTree.

◆ isTakeComp() [1/2]

bool tracktion::engine::CompManager::isTakeComp ( int  takeIndex) const

Returns true if the given take at an index is a comp.

References isTakeComp(), and takesTree.

Referenced by isCurrentTakeComp(), and isTakeComp().

◆ isTakeComp() [2/2]

bool tracktion::engine::CompManager::isTakeComp ( const juce::ValueTree &  takeTree) const

Returns true if the given take is a comp.

◆ isCurrentTakeComp()

bool tracktion::engine::CompManager::isCurrentTakeComp ( ) const

Returns true if the current take is a comp.

References getActiveTakeIndex(), and isTakeComp().

◆ getTakeName()

juce::String tracktion::engine::CompManager::getTakeName ( int  index) const

Returns the name of a take.

◆ addNewComp()

virtual juce::ValueTree tracktion::engine::CompManager::addNewComp ( )
pure virtual

Adds a new comp to the end of the takes list optionally making it active.

This is essentially a new take with a new ProjectItemID and a single blank section.

Implemented in tracktion::engine::MidiCompManager, and tracktion::engine::WaveCompManager.

◆ getMaxCompLength()

double tracktion::engine::CompManager::getMaxCompLength ( ) const

Returns the maximum length that a comp can be.

This is effectively the length of the longest take.

References maxCompLength.

◆ getCompRange()

juce::Range<double> tracktion::engine::CompManager::getCompRange ( ) const

Returns the time range available for comping i.e.

taking into account any offset or looped regions.

◆ getSpeedRatio()

double tracktion::engine::CompManager::getSpeedRatio ( ) const

Returns the effective speed ratio used for displaying waveforms.

If the source is using auto-tempo with tempo changes this will use an averaged version of this.

◆ getSourceTimeMultiplier()

double tracktion::engine::CompManager::getSourceTimeMultiplier ( ) const

Returns the current time multiplier in use by the source, either the speed ratio or auto tempo ratio.

References effectiveTimeMultiplier.

◆ getTakeHash()

HashCode tracktion::engine::CompManager::getTakeHash ( int  takeIndex) const

Returns a hash code representing a take.

This can be used to check if a comp has changed since it was last generated.

◆ changeSectionIndexAtTime()

void tracktion::engine::CompManager::changeSectionIndexAtTime ( double  time,
int  takeIndex 
)

Changes the index of the active comp's section at a given time.

If the active comp is just a normal take this will change the active take.

◆ removeSectionIndexAtTime()

void tracktion::engine::CompManager::removeSectionIndexAtTime ( double  time,
int  takeIndex 
)

Removes a section from the comp at the given time if the section is at the given take index.

◆ moveSectionEndTime()

void tracktion::engine::CompManager::moveSectionEndTime ( juce::ValueTree &  section,
double  newTime 
)

Moves a section's end time to the new time specified.

If this crosses the boundry of another section the two sections will be merged.

Returns
the index of the section that was being dragged

◆ moveSection()

void tracktion::engine::CompManager::moveSection ( juce::ValueTree &  section,
double  timeDelta 
)

Moves a section by the specified time delta also moving the previous section's end time by the same ammount.

If this covers up another section the covered section will be removed. If this drags a section at either end either a new blank section will be created or the drag will be limited by the take's bounds. If any sections are removed due to an overlap this will return the new section index that this represents.

◆ moveSectionToEndAt()

void tracktion::engine::CompManager::moveSectionToEndAt ( juce::ValueTree &  section,
double  newEndTime 
)

Moves a section to an absolute end time also moving the previous section's end time by the same ammount.

If this covers up another section the covered section will be removed. If this drags a section at either end either a new blank section will be created or the drag will be limited by the take's bounds. If any sections are removed due to an overlap this will return the new section index that this represents.

◆ addSection()

juce::ValueTree tracktion::engine::CompManager::addSection ( int  takeIndex,
double  endTime 
)

Adds a new section at a given time and returns the index of it.

◆ removeSection()

void tracktion::engine::CompManager::removeSection ( const juce::ValueTree &  sectionToRemove)

Removes a section from the active comp if it is within range.

◆ splitSectionAtTime()

juce::ValueTree tracktion::engine::CompManager::splitSectionAtTime ( double  time)

Find the current section at the given time and splits it in two ready for a new comp section.

◆ removeSectionsWithinRange()

void tracktion::engine::CompManager::removeSectionsWithinRange ( juce::Range< double >  timeRange,
const juce::ValueTree &  sectionToKeep 
)

Removes all sections which lie within the given time range.

Useful when performing drag operations.

Returns
the number of sections removed removed.

◆ getUndoManager()

juce::UndoManager* tracktion::engine::CompManager::getUndoManager ( ) const
protected

◆ keepSectionsSortedAndInRange()

void tracktion::engine::CompManager::keepSectionsSortedAndInRange ( )
protected

◆ getNewCompTree()

juce::ValueTree tracktion::engine::CompManager::getNewCompTree ( ) const
protected

Member Data Documentation

◆ takesTree

juce::ValueTree tracktion::engine::CompManager::takesTree
protected

◆ lastRenderedTake

int tracktion::engine::CompManager::lastRenderedTake = -1
protected

◆ lastHash

HashCode tracktion::engine::CompManager::lastHash = 0
protected

◆ maxCompLength

double tracktion::engine::CompManager::maxCompLength
protected

Referenced by getMaxCompLength().

◆ effectiveTimeMultiplier

double tracktion::engine::CompManager::effectiveTimeMultiplier
protected

Referenced by getSourceTimeMultiplier().

◆ lastOffset

double tracktion::engine::CompManager::lastOffset = 1.0
protected

◆ lastTimeRatio

double tracktion::engine::CompManager::lastTimeRatio = 1.0
protected

The documentation for this class was generated from the following file: