TracktionEngine
|
#include <tracktion_CompManager.h>
Public Types | |
using | Ptr = juce::ReferenceCountedObjectPtr< CompManager > |
Public Member Functions | |
CompManager (Clip &, const juce::ValueTree &) | |
Creates a CompManager for a given clip. | |
~CompManager () override | |
Destructor. | |
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. | |
virtual void | flattenTake (int takeIndex, bool deleteSourceFiles)=0 |
Should flatten the comp and remove all other takes. | |
virtual juce::ValueTree | pasteComp (const juce::ValueTree &) |
Pastes an existing comp to this manager and returns the newly added tree. | |
Clip & | getClip () const noexcept |
virtual void | setStripToUpdate (juce::Component *) |
Sets a component to be updated during render processes. | |
bool | shouldDisplayWarning () const noexcept |
Returns true if the source should display a warning about using multi-tempo changes. | |
juce::ValueTree | getSection (int takeIndex, int sectionIndex) const |
Returns the section at the given index of a given take. | |
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. | |
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. | |
juce::Range< double > | getSectionTimes (const juce::ValueTree &) const |
Returns the time range a given section occupies for a given take. | |
juce::ValueTree | getTakesTree () |
void | setActiveTakeIndex (int index) |
Sets the active take index. | |
int | getActiveTakeIndex () const |
Returns the active take index. | |
juce::ValueTree | getActiveTakeTree () const |
Returns the active take tree. | |
int | getNumTakes () const |
Returns the number of takes that are not comps. | |
int | getNumComps () const |
Returns the number of comps that are comps. | |
int | getTotalNumTakes () const |
Returns the total number of takes including comp takes. | |
bool | isTakeComp (int takeIndex) const |
Returns true if the given take at an index is a comp. | |
bool | isTakeComp (const juce::ValueTree &takeTree) const |
Returns true if the given take is a comp. | |
bool | isCurrentTakeComp () const |
Returns true if the current take is a comp. | |
juce::String | getTakeName (int index) const |
Returns the name of a take. | |
virtual juce::ValueTree | addNewComp ()=0 |
Adds a new comp to the end of the takes list optionally making it active. | |
double | getMaxCompLength () const |
Returns the maximum length that a comp can be. | |
juce::Range< double > | getCompRange () const |
Returns the time range available for comping i.e. | |
double | getSpeedRatio () const |
Returns the effective speed ratio used for displaying waveforms. | |
double | getSourceTimeMultiplier () const |
Returns the current time multiplier in use by the source, either the speed ratio or auto tempo ratio. | |
HashCode | getTakeHash (int takeIndex) const |
Returns a hash code representing a take. | |
void | changeSectionIndexAtTime (double time, int takeIndex) |
Changes the index of the active comp's section at a given time. | |
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. | |
void | moveSectionEndTime (juce::ValueTree §ion, double newTime) |
Moves a section's end time to the new time specified. | |
void | moveSection (juce::ValueTree §ion, double timeDelta) |
Moves a section by the specified time delta also moving the previous section's end time by the same ammount. | |
void | moveSectionToEndAt (juce::ValueTree §ion, double newEndTime) |
Moves a section to an absolute end time also moving the previous section's end time by the same ammount. | |
juce::ValueTree | addSection (int takeIndex, double endTime) |
Adds a new section at a given time and returns the index of it. | |
void | removeSection (const juce::ValueTree §ionToRemove) |
Removes a section from the active comp if it is within range. | |
juce::ValueTree | splitSectionAtTime (double time) |
Find the current section at the given time and splits it in two ready for a new comp section. | |
void | removeSectionsWithinRange (juce::Range< double > timeRange, const juce::ValueTree §ionToKeep) |
Removes all sections which lie within the given time range. | |
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 |
using tracktion::engine::CompManager::Ptr = juce::ReferenceCountedObjectPtr<CompManager> |
tracktion::engine::CompManager::CompManager | ( | Clip & | , |
const juce::ValueTree & | |||
) |
Creates a CompManager for a given clip.
|
override |
Destructor.
|
virtual |
Reimplemented in tracktion::engine::MidiCompManager.
|
pure virtual |
Implemented in tracktion::engine::WaveCompManager, and tracktion::engine::MidiCompManager.
|
pure virtual |
Implemented in tracktion::engine::WaveCompManager, and tracktion::engine::MidiCompManager.
|
pure virtual |
Implemented in tracktion::engine::WaveCompManager, and tracktion::engine::MidiCompManager.
|
pure virtual |
Implemented in tracktion::engine::WaveCompManager, and tracktion::engine::MidiCompManager.
|
pure virtual |
Implemented in tracktion::engine::WaveCompManager, and tracktion::engine::MidiCompManager.
|
pure virtual |
Implemented in tracktion::engine::WaveCompManager, and tracktion::engine::MidiCompManager.
|
virtual |
Reimplemented in tracktion::engine::WaveCompManager, and tracktion::engine::MidiCompManager.
|
virtual |
Reimplemented in tracktion::engine::WaveCompManager, and tracktion::engine::MidiCompManager.
|
virtual |
Reimplemented in tracktion::engine::MidiCompManager.
|
pure virtual |
Triggers the render of the comp.
Call this when you change the comp in some way.
Implemented in tracktion::engine::WaveCompManager, and tracktion::engine::MidiCompManager.
|
pure virtual |
Should flatten the comp and remove all other takes.
Implemented in tracktion::engine::WaveCompManager, and tracktion::engine::MidiCompManager.
|
virtual |
Pastes an existing comp to this manager and returns the newly added tree.
Reimplemented in tracktion::engine::WaveCompManager.
|
noexcept |
|
virtual |
Sets a component to be updated during render processes.
Reimplemented in tracktion::engine::WaveCompManager.
|
noexcept |
Returns true if the source should display a warning about using multi-tempo changes.
juce::ValueTree tracktion::engine::CompManager::getSection | ( | int | takeIndex, |
int | sectionIndex | ||
) | const |
Returns the section at the given index of a given take.
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.
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.
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.
juce::ValueTree tracktion::engine::CompManager::getTakesTree | ( | ) |
References takesTree.
void tracktion::engine::CompManager::setActiveTakeIndex | ( | int | index | ) |
Sets the active take index.
This will also update the source.
int tracktion::engine::CompManager::getActiveTakeIndex | ( | ) | const |
Returns the active take index.
References tracktion::engine::Clip::getCurrentTake().
Referenced by getActiveTakeTree(), and isCurrentTakeComp().
juce::ValueTree tracktion::engine::CompManager::getActiveTakeTree | ( | ) | const |
Returns the active take tree.
References getActiveTakeIndex(), and takesTree.
int tracktion::engine::CompManager::getNumTakes | ( | ) | const |
Returns the number of takes that are not comps.
Referenced by getNumComps().
int tracktion::engine::CompManager::getNumComps | ( | ) | const |
Returns the number of comps that are comps.
References getNumTakes(), and takesTree.
int tracktion::engine::CompManager::getTotalNumTakes | ( | ) | const |
Returns the total number of takes including comp takes.
References takesTree.
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().
bool tracktion::engine::CompManager::isTakeComp | ( | const juce::ValueTree & | takeTree | ) | const |
Returns true if the given take is a comp.
bool tracktion::engine::CompManager::isCurrentTakeComp | ( | ) | const |
Returns true if the current take is a comp.
References getActiveTakeIndex(), and isTakeComp().
juce::String tracktion::engine::CompManager::getTakeName | ( | int | index | ) | const |
Returns the name of a take.
|
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::WaveCompManager, and tracktion::engine::MidiCompManager.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
juce::ValueTree tracktion::engine::CompManager::addSection | ( | int | takeIndex, |
double | endTime | ||
) |
Adds a new section at a given time and returns the index of it.
void tracktion::engine::CompManager::removeSection | ( | const juce::ValueTree & | sectionToRemove | ) |
Removes a section from the active comp if it is within range.
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.
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.
|
protected |
|
protected |
|
protected |
|
protected |
Referenced by getActiveTakeTree(), getNumComps(), getTakesTree(), getTotalNumTakes(), and isTakeComp().
|
protected |
|
protected |
|
protected |
Referenced by getMaxCompLength().
|
protected |
Referenced by getSourceTimeMultiplier().
|
protected |
|
protected |