TracktionEngine
|
#include <tracktion_MidiClip.h>
Classes | |
struct | ScopedEventsList |
Temporarily limits the notes to use. More... | |
Public Types | |
enum class | LoopedSequenceType : int { loopRangeDefinesAllRepetitions = 0 , loopRangeDefinesSubsequentRepetitions = 1 } |
using | Ptr = juce::ReferenceCountedObjectPtr< MidiClip > |
![]() | |
enum class | FollowActionDurationType { beats , loops } |
Defines the types of duration follow actions can use. More... | |
enum | SyncType { syncBarsBeats = 0 , syncAbsolute } |
Determines the clip sync type. More... | |
using | Ptr = juce::ReferenceCountedObjectPtr< Clip > |
using | Array = juce::ReferenceCountedArray< Clip > |
![]() | |
enum class | Type { unknown , wave , midi , edit , step , marker , pitch , timeSig , collection , video , recording , chord , arranger , container } |
Defines the types of item that can live on Track[s]. More... | |
![]() | |
using | WeakRef = juce::WeakReference< Selectable > |
Public Member Functions | |
MidiClip ()=delete | |
MidiClip (const juce::ValueTree &, EditItemID, ClipOwner &) | |
~MidiClip () override | |
void | cloneFrom (Clip *) override |
Clones the given clip to this clip. | |
AudioTrack * | getAudioTrack () const |
MidiList & | getSequence () const noexcept |
MidiList & | getSequenceLooped () |
std::unique_ptr< MidiList > | createSequenceLooped (MidiList &sourceSequence) |
const SelectedMidiEvents * | getSelectedEvents () const |
void | setUsesProxy (bool canUseProxy) noexcept |
Can be used to disable proxy sequence generation for this clip. | |
bool | canUseProxy () const noexcept |
Retuns true if this clip can use a proxy sequence. | |
std::shared_ptr< LaunchHandle > | getLaunchHandle () override |
void | setUsesGlobalLaunchQuatisation (bool useGlobal) override |
bool | usesGlobalLaunchQuatisation () override |
LaunchQuantisation * | getLaunchQuantisation () override |
FollowActions * | getFollowActions () override |
void | scaleVerticallyToFit () |
bool | hasValidSequence () const noexcept |
MidiChannel | getMidiChannel () const |
void | setMidiChannel (MidiChannel newChannel) |
void | setMPEMode (bool shouldUseMPE) |
Sets whether the clip should send MPE MIDI rather than single channel. | |
bool | getMPEMode () const noexcept |
bool | isRhythm () const noexcept |
Returns true if this clip represents a rhythm instrument (e.g. | |
QuantisationType & | getQuantisation () const noexcept |
void | setQuantisation (const QuantisationType &newType) |
juce::String | getGrooveTemplate () const noexcept |
void | setGrooveTemplate (const juce::String &templateName) |
bool | usesGrooveStrength () const |
float | getGrooveStrength () const |
void | setGrooveStrength (float g) |
void | mergeInMidiSequence (juce::MidiMessageSequence &, MidiList::NoteAutomationType) |
void | addTake (juce::MidiMessageSequence &, MidiList::NoteAutomationType) |
void | extendStart (TimePosition newStartTime) |
This will extend the start time backwards, moving the notes along if this takes the offset below 0.0. | |
void | trimBeyondEnds (bool beyondStart, bool beyondEnd, juce::UndoManager *) |
void | legatoNote (MidiNote ¬e, const juce::Array< MidiNote * > ¬esToUse, BeatPosition maxEndBeat, juce::UndoManager &) |
Lengthens or shortens a note to match the start of the next note in the given array. | |
float | getVolumeDb () const |
void | setVolumeDb (float v) |
bool | isSendingBankChanges () const noexcept |
void | setSendingBankChanges (bool sendBank) |
bool | isMuted () const override |
Returns true if the clip is muted. | |
void | setMuted (bool m) override |
Mutes or unmutes the clip. | |
LiveClipLevel | getLiveClipLevel () |
void | initialise () override |
Initialises the Clip. | |
bool | isMidi () const override |
Returns true if this is a MidiClip. | |
void | rescale (TimePosition pivotTimeInEdit, double factor) override |
stretches and scales this clip relative to a fixed point in the edit. | |
bool | canBeAddedTo (ClipOwner &) override |
Tests whether this clip can go on the given parent. | |
juce::String | getSelectableDescription () override |
Subclasses must return a description of what they are. | |
juce::Colour | getDefaultColour () const override |
Returns the default colour for this clip. | |
void | clearTakes () override |
Clears any takes this clip has. | |
bool | hasAnyTakes () const override |
Returns true if this clip has any takes. | |
int | getNumTakes (bool includeComps) override |
Returns the total number of takes. | |
juce::StringArray | getTakeDescriptions () const override |
Returns the descriptions of any takes. | |
void | setCurrentTake (int takeIndex) override |
Sets a given take index to be the current take. | |
int | getCurrentTake () const override |
Returns the current take index. | |
bool | isCurrentTakeComp () override |
Returns true if the current take is a comp. | |
void | deleteAllUnusedTakesConfirmingWithUser () |
Clip::Array | unpackTakes (bool toNewTracks) override |
Attempts to unpack the takes to new clips. | |
MidiList * | getTakeSequence (int takeIndex) const |
bool | canLoop () const override |
Returns true if this clip is capable of looping. | |
bool | isLooping () const override |
Returns true if this clip is currently looping. | |
bool | beatBasedLooping () const override |
Returns true if this clip's looping is based on beats or false if absolute time. | |
void | setNumberOfLoops (int) override |
Sets the clip looping a number of times. | |
void | disableLooping () override |
Disables all looping. | |
void | setLoopRange (TimeRange) override |
Sets the loop range the clip should use in seconds. | |
void | setLoopRangeBeats (BeatRange) override |
Sets the loop range the clip should use in beats. | |
BeatPosition | getLoopStartBeats () const override |
Returns the beat position of the loop start point. | |
BeatDuration | getLoopLengthBeats () const override |
Returns the length of loop in beats. | |
TimePosition | getLoopStart () const override |
Returns the start time of the loop start point. | |
TimeDuration | getLoopLength () const override |
Returns the length of loop in seconds. | |
MidiCompManager & | getCompManager () |
PatternGenerator * | getPatternGenerator () override |
Returns the PatternGenerator for this clip if it has one. | |
void | pitchTempoTrackChanged () override |
Called when there are pitch or tempo changes made which might require clips to adjust timing information. | |
![]() | |
Clip (const juce::ValueTree &, ClipOwner &, EditItemID, Type) | |
Creates a clip of a given type from a ValueTree state. | |
~Clip () override | |
Destructor. | |
virtual void | flushStateToValueTree () |
Can be overridden to ensure any state (e.g. | |
virtual void | sourceMediaChanged () |
Called when the source media file reference (attribute "source") has changed - i.e. | |
virtual juce::String | getName () const override |
Returns the name of the clip. | |
void | setName (const juce::String &newName) |
Sets a new name for a clip. | |
virtual bool | usesSourceFile () const |
True if it references a source file - i.e. | |
SourceFileReference & | getSourceFileReference () |
Returns the SourceFileReference of the Clip. | |
juce::File | getCurrentSourceFile () const |
Returns the current source file, this is different to the SourceFileReference as it could be a temporary comp file, clipFX, reverse render etc. | |
juce::Array< ReferencedItem > | getReferencedItems () override |
Returns an array of any ReferencedItem[s] e.g. | |
void | reassignReferencedItem (const ReferencedItem &, ProjectItemID, double) override |
Should be implemented to change the underlying source to a new ProjectItemID. | |
ClipPosition | getPosition () const override |
Returns the ClipPosition on the parent Track. | |
BeatPosition | getContentBeatAtTime (TimePosition) const |
Returns the beat number (with offset) at the given time. | |
TimePosition | getTimeOfContentBeat (BeatPosition) const |
Returns time of a beat number. | |
virtual TimeDuration | getMaximumLength () |
Returns the maximum length this clip can have. | |
virtual juce::Array< TimePosition > | getInterestingTimes () |
Returns times for snapping to, relative to the Edit. | |
TimePosition | getSpottingPoint () const |
Returns the first marked time in the source file which can be used for syncronising newly added clips. | |
TimeRange | getLoopRange () const |
Returns the loop range in seconds. | |
BeatRange | getLoopRangeBeats () const |
Returns the loop range in beats. | |
virtual void | setSyncType (SyncType sync) |
Sets the sync type for the clip. | |
SyncType | getSyncType () const |
Returns the sync type clip is using. | |
void | setPosition (ClipPosition newPosition) |
Sets the position of the clip. | |
void | setStart (TimePosition newStart, bool preserveSync, bool keepLength) |
Sets the start time of the clip. | |
void | setLength (TimeDuration newLength, bool preserveSync) |
Sets the length of the clip. | |
void | setEnd (TimePosition newEnd, bool preserveSync) |
Sets the end of the clip. | |
void | setOffset (TimeDuration newOffset) |
Sets the offset of the clip, i.e. | |
void | trimAwayOverlap (TimeRange editRangeToTrim) |
Trims away any part of the clip that overlaps this region. | |
void | removeFromParent () |
Removes this clip from the parent track or container clip. | |
bool | moveTo (ClipOwner &) |
Moves the clip to a new parent (if possible). | |
double | getSpeedRatio () const noexcept |
Returns the speed ratio i.e. | |
virtual void | setSpeedRatio (double) |
Sets a speed ratio i.e. | |
bool | isGrouped () const override |
Returns true if the clip is part of a group. | |
TrackItem * | getGroupParent () const override |
Returns the parent TrackItem if part of a group. | |
void | setGroup (EditItemID newGroupID) |
Sets the clip to be part of a group. | |
EditItemID | getGroupID () const noexcept |
Returns the ID of the group. | |
CollectionClip * | getGroupClip () const |
Returns this as a CollectionClip if it is one. | |
bool | isLinked () const |
Returns true if this clip is linked with any others. | |
void | setLinkGroupID (juce::String newLinkID) |
Sets the link ID to link this clip with others. | |
juce::String | getLinkGroupID () const |
Returns the link ID of this clip. | |
ClipOwner * | getParent () const |
Returns the parent ClipOwner this clip is on. | |
ClipTrack * | getClipTrack () const |
Returns the parent ClipTrack this clip is on (if any). | |
Track * | getTrack () const override |
Returns the parent Track this clip is on (if any). | |
ClipSlot * | getClipSlot () const |
Returns the parent ClipSlot this clip is on (if any). | |
virtual juce::Colour | getColour () const |
Returns the colour property of this clip. | |
void | setColour (juce::Colour col) |
Sets the colour property of this clip. | |
virtual void | removePlugin (const Plugin::Ptr &) |
Removes the given plugin from the clip if the clip supports plugins. | |
virtual bool | addClipPlugin (const Plugin::Ptr &, SelectionManager &) |
Adds a plugin to the clip. | |
virtual Plugin::Array | getAllPlugins () |
Returns all the plugins on the clip. | |
virtual void | sendMirrorUpdateToAllPlugins (Plugin &) const |
Sends an update to all plugins mirroing the one passed in. | |
virtual PluginList * | getPluginList () |
Returns the PluginList for this clip if it has one. | |
virtual void | setShowingTakes (bool shouldShow) |
Sets whether the clip should be showing takes. | |
virtual bool | isShowingTakes () const |
Returns true if the clip is showing takes. | |
void | updateLinkedClips () |
Triggers a call to cloneFrom for all clips with the same linkID. | |
void | addListener (Listener *) |
Adds a Listener. | |
void | removeListener (Listener *) |
Removes a Listener. | |
juce::ListenerList< Listener > & | getListeners () |
Returns the listener list so Nodes can manually call them. | |
void | changed () override |
juce::UndoManager * | getUndoManager () const |
Returns the UndoManager. | |
virtual void | setParent (ClipOwner *) |
![]() | |
TrackItem (Edit &, EditItemID, Type) | |
Creates a TrackItem with an ID and type. | |
~TrackItem () | |
Destructor. | |
TimeRange | getEditTimeRange () const |
Returns the time range of this item. | |
BeatRange | getEditBeatRange () const |
Returns the beat range of this item. | |
BeatPosition | getStartBeat () const |
Returns the start beat in the Edit of this item. | |
BeatPosition | getContentStartBeat () const |
Returns the start beat of the content in the Edit of this item. | |
BeatPosition | getEndBeat () const |
Returns the end beat in the Edit of this item. | |
BeatDuration | getLengthInBeats () const |
Returns the duration in beats the of this item. | |
TimePosition | getTimeOfRelativeBeat (BeatDuration) const |
Returns an Edit time point for a given number of beats from the start of this item. | |
BeatPosition | getBeatOfRelativeTime (TimeDuration) const |
Returns an Edit beat point for a given number of seconds from the start of this item. | |
BeatDuration | getOffsetInBeats () const |
Returns an the offset of this item in beats. | |
EditItemID | getTrackID () const |
Returns the ID of the Track this item lives on. | |
![]() | |
EditItem (EditItemID, Edit &) | |
EditItem (Edit &, const juce::ValueTree &) | |
virtual | ~EditItem ()=default |
![]() | |
Selectable () | |
virtual | ~Selectable () |
virtual void | selectionStatusChanged (bool isNowSelected) |
Can be overridden to tell this object that it has just been selected or deselected. | |
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 () |
![]() | |
virtual | ~Exportable ()=default |
Public Attributes | |
juce::CachedValue< LoopedSequenceType > | loopedSequenceType |
![]() | |
juce::CachedValue< FollowActionDurationType > | followActionDurationType |
The type of duration to use for when to trigger the follow action. | |
juce::CachedValue< BeatDuration > | followActionBeats |
Determines the time for which a launched clip will play before a follow action is taken. | |
juce::CachedValue< double > | followActionNumLoops |
Determines the number of loops for which a launched clip will play before a follow action is taken. | |
juce::ValueTree | state |
The ValueTree of the Clip state. | |
juce::CachedValue< juce::Colour > | colour |
The colour property. | |
juce::CachedValue< bool > | disabled |
Whether the Clip is disabled or not. | |
![]() | |
const Type | type |
The type of this item. | |
![]() | |
Edit & | edit |
const EditItemID | itemID |
Every EditItem has an ID which is unique within the edit. | |
![]() | |
WeakRef::Master | masterReference |
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 | setCurrentSourceFile (const juce::File &) |
Sets a new source file for this clip. | |
virtual juce::Array< TimePosition > | getRescaledMarkPoints () const |
Returns the mark points relative to the start of the clip, rescaled to the current speed. | |
void | valueTreePropertyChanged (juce::ValueTree &, const juce::Identifier &) override |
void | valueTreeParentChanged (juce::ValueTree &) override |
Additional Inherited Members | |
![]() | |
static bool | isClipState (const juce::ValueTree &) |
Checks whether a ValueTree is some kind of clip state. | |
static bool | isClipState (const juce::Identifier &) |
Checks whether a ValueTree type is some kind of clip state. | |
static Ptr | createClipForState (const juce::ValueTree &, ClipOwner &targetParent) |
Creates a clip for a given ValueTree representation. | |
![]() | |
static const char * | typeToString (Type) |
Returns the string version of a TrackItem::Type. | |
static juce::Identifier | clipTypeToXMLType (Type) |
Returns an Identifier version of a TrackItem::Type. | |
static TrackItem::Type | xmlTagToType (juce::StringRef) |
Returns the TrackItem::Type of a type string. | |
static TrackItem::Type | stringToType (const juce::String &) |
Returns the TrackItem::Type of a type string. | |
static juce::String | getSuggestedNameForNewItem (Type) |
Returns a text string for a new clip of the given type. | |
template<typename ArrayType > | |
static void | sortByTime (ArrayType &items) |
Helper function to sort an array of TrackItem[s] by their start time. | |
template<typename ArrayType > | |
static void | stableSortByTime (ArrayType &items) |
Helper function to sort an array of TrackItem[s] by their start time without changing the order of items at the same time. | |
![]() | |
static void | initialise () |
static bool | isSelectableValid (const Selectable *) noexcept |
checks whether this object has been deleted. | |
![]() | |
static juce::Array< Exportable * > | addAllExportables (Edit &) |
Returns all the Exportables contained in an Edit. | |
![]() | |
bool | isInitialised = false |
bool | cloneInProgress = false |
juce::CachedValue< juce::String > | clipName |
ClipOwner * | parent = nullptr |
juce::CachedValue< TimePosition > | clipStart |
juce::CachedValue< TimeDuration > | length |
juce::CachedValue< TimeDuration > | offset |
juce::CachedValue< double > | speedRatio |
SourceFileReference | sourceFileReference |
juce::CachedValue< EditItemID > | groupID |
juce::CachedValue< juce::String > | linkID |
juce::File | currentSourceFile |
juce::CachedValue< SyncType > | syncType |
juce::CachedValue< bool > | showingTakes |
std::unique_ptr< PatternGenerator > | patternGenerator |
AsyncCaller | updateLinkedClipsCaller |
juce::ListenerList< Listener > | listeners |
using tracktion::engine::MidiClip::Ptr = juce::ReferenceCountedObjectPtr<MidiClip> |
|
delete |
tracktion::engine::MidiClip::MidiClip | ( | const juce::ValueTree & | , |
EditItemID | , | ||
ClipOwner & | |||
) |
|
override |
Clones the given clip to this clip.
Reimplemented from tracktion::engine::Clip.
AudioTrack * tracktion::engine::MidiClip::getAudioTrack | ( | ) | const |
|
noexcept |
Referenced by getMidiChannel(), and setMidiChannel().
MidiList & tracktion::engine::MidiClip::getSequenceLooped | ( | ) |
std::unique_ptr< MidiList > tracktion::engine::MidiClip::createSequenceLooped | ( | MidiList & | sourceSequence | ) |
const SelectedMidiEvents * tracktion::engine::MidiClip::getSelectedEvents | ( | ) | const |
Can be used to disable proxy sequence generation for this clip.
N.B. If disabled, the audio engine will perform quantisation and groove adjustments in real time which may use more CPU.
References canUseProxy().
|
noexcept |
Retuns true if this clip can use a proxy sequence.
Referenced by setUsesProxy().
|
overridevirtual |
Reimplemented from tracktion::engine::Clip.
Reimplemented from tracktion::engine::Clip.
|
overridevirtual |
Reimplemented from tracktion::engine::Clip.
|
overridevirtual |
Reimplemented from tracktion::engine::Clip.
|
overridevirtual |
Reimplemented from tracktion::engine::Clip.
void tracktion::engine::MidiClip::scaleVerticallyToFit | ( | ) |
|
noexcept |
Referenced by getMidiChannel().
MidiChannel tracktion::engine::MidiClip::getMidiChannel | ( | ) | const |
References tracktion::engine::MidiList::getMidiChannel(), getSequence(), and hasValidSequence().
Referenced by isRhythm().
void tracktion::engine::MidiClip::setMidiChannel | ( | MidiChannel | newChannel | ) |
References getSequence(), and tracktion::engine::MidiList::setMidiChannel().
Sets whether the clip should send MPE MIDI rather than single channel.
|
noexcept |
|
noexcept |
Returns true if this clip represents a rhythm instrument (e.g.
MIDI channel 10)
References tracktion::engine::MidiChannel::getChannelNumber(), and getMidiChannel().
|
noexcept |
void tracktion::engine::MidiClip::setQuantisation | ( | const QuantisationType & | newType | ) |
|
noexcept |
bool tracktion::engine::MidiClip::usesGrooveStrength | ( | ) | const |
float tracktion::engine::MidiClip::getGrooveStrength | ( | ) | const |
void tracktion::engine::MidiClip::mergeInMidiSequence | ( | juce::MidiMessageSequence & | , |
MidiList::NoteAutomationType | |||
) |
void tracktion::engine::MidiClip::addTake | ( | juce::MidiMessageSequence & | , |
MidiList::NoteAutomationType | |||
) |
void tracktion::engine::MidiClip::extendStart | ( | TimePosition | newStartTime | ) |
This will extend the start time backwards, moving the notes along if this takes the offset below 0.0.
void tracktion::engine::MidiClip::trimBeyondEnds | ( | bool | beyondStart, |
bool | beyondEnd, | ||
juce::UndoManager * | |||
) |
void tracktion::engine::MidiClip::legatoNote | ( | MidiNote & | note, |
const juce::Array< MidiNote * > & | notesToUse, | ||
BeatPosition | maxEndBeat, | ||
juce::UndoManager & | |||
) |
Lengthens or shortens a note to match the start of the next note in the given array.
If the note is the last in the sequence, it will use the maxEndBeat as its end.
float tracktion::engine::MidiClip::getVolumeDb | ( | ) | const |
|
noexcept |
|
overridevirtual |
Returns true if the clip is muted.
Implements tracktion::engine::Clip.
Mutes or unmutes the clip.
Reimplemented from tracktion::engine::Clip.
LiveClipLevel tracktion::engine::MidiClip::getLiveClipLevel | ( | ) |
|
overridevirtual |
Initialises the Clip.
Called once automatically after construction.
Reimplemented from tracktion::engine::Clip.
|
overridevirtual |
Returns true if this is a MidiClip.
Implements tracktion::engine::Clip.
|
overridevirtual |
stretches and scales this clip relative to a fixed point in the edit.
pivotTimeInEdit | The time to keep fixed |
factor | The scale factor |
Reimplemented from tracktion::engine::Clip.
Tests whether this clip can go on the given parent.
Implements tracktion::engine::Clip.
|
overridevirtual |
Subclasses must return a description of what they are.
Implements tracktion::engine::Selectable.
|
overridevirtual |
Returns the default colour for this clip.
Implements tracktion::engine::Clip.
|
overridevirtual |
Clears any takes this clip has.
Reimplemented from tracktion::engine::Clip.
|
overridevirtual |
Returns true if this clip has any takes.
Reimplemented from tracktion::engine::Clip.
Returns the total number of takes.
includeComps | Whether comps should be included in the count |
Reimplemented from tracktion::engine::Clip.
|
overridevirtual |
Returns the descriptions of any takes.
Reimplemented from tracktion::engine::Clip.
Sets a given take index to be the current take.
Reimplemented from tracktion::engine::Clip.
|
overridevirtual |
Returns the current take index.
Reimplemented from tracktion::engine::Clip.
|
overridevirtual |
Returns true if the current take is a comp.
Reimplemented from tracktion::engine::Clip.
void tracktion::engine::MidiClip::deleteAllUnusedTakesConfirmingWithUser | ( | ) |
|
overridevirtual |
Attempts to unpack the takes to new clips.
toNewTracks | If true this will create new tracks for the new clips, otherwise they'll be placed on existing tracks |
Reimplemented from tracktion::engine::Clip.
|
overridevirtual |
Returns true if this clip is capable of looping.
Reimplemented from tracktion::engine::Clip.
|
overridevirtual |
Returns true if this clip is currently looping.
Reimplemented from tracktion::engine::Clip.
Referenced by beatBasedLooping().
|
overridevirtual |
Returns true if this clip's looping is based on beats or false if absolute time.
Reimplemented from tracktion::engine::Clip.
References isLooping().
Sets the clip looping a number of times.
Reimplemented from tracktion::engine::Clip.
|
overridevirtual |
Disables all looping.
Reimplemented from tracktion::engine::Clip.
Sets the loop range the clip should use in seconds.
Reimplemented from tracktion::engine::Clip.
Sets the loop range the clip should use in beats.
Reimplemented from tracktion::engine::Clip.
|
overridevirtual |
Returns the beat position of the loop start point.
Reimplemented from tracktion::engine::Clip.
|
overridevirtual |
Returns the length of loop in beats.
Reimplemented from tracktion::engine::Clip.
|
overridevirtual |
Returns the start time of the loop start point.
Reimplemented from tracktion::engine::Clip.
|
overridevirtual |
Returns the length of loop in seconds.
Reimplemented from tracktion::engine::Clip.
MidiCompManager & tracktion::engine::MidiClip::getCompManager | ( | ) |
|
overridevirtual |
Returns the PatternGenerator for this clip if it has one.
Reimplemented from tracktion::engine::Clip.
|
overridevirtual |
Called when there are pitch or tempo changes made which might require clips to adjust timing information.
Reimplemented from tracktion::engine::Clip.
|
overrideprotected |
|
overrideprotected |
|
overrideprotected |
juce::CachedValue<LoopedSequenceType> tracktion::engine::MidiClip::loopedSequenceType |