TracktionEngine
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
tracktion::engine::TrackItem Class Referenceabstract

Base class for EditItems that live in a Track, e.g. More...

Inheritance diagram for tracktion::engine::TrackItem:

Public Types

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...
 
- Public Types inherited from tracktion::engine::Selectable
using WeakRef = juce::WeakReference< Selectable >
 

Public Member Functions

 TrackItem (Edit &, EditItemID, Type)
 Creates a TrackItem with an ID and type. More...
 
 ~TrackItem ()
 Destructor. More...
 
virtual TrackgetTrack () const =0
 Must return the track this item lives on. More...
 
virtual bool isGrouped () const
 Should return true if this clip is part of a group. More...
 
virtual TrackItemgetGroupParent () const
 If this clip is part of a group, this should return the parent item it belongs to. More...
 
virtual ClipPosition getPosition () const =0
 Must return the position of this item. More...
 
TimeRange getEditTimeRange () const
 Returns the time range of this item. More...
 
BeatRange getEditBeatRange () const
 Returns the beat range of this item. More...
 
BeatPosition getStartBeat () const
 Returns the start beat in the Edit of this item. More...
 
BeatPosition getContentStartBeat () const
 Returns the start beat of the content in the Edit of this item. More...
 
BeatPosition getEndBeat () const
 Returns the end beat in the Edit of this item. More...
 
BeatDuration getLengthInBeats () const
 Returns the duration in beats the of this item. More...
 
TimePosition getTimeOfRelativeBeat (BeatDuration) const
 Returns an Edit time point for a given number of beats from the start of this item. More...
 
BeatPosition getBeatOfRelativeTime (TimeDuration) const
 Returns an Edit beat point for a given number of seconds from the start of this item. More...
 
BeatDuration getOffsetInBeats () const
 Returns an the offset of this item in beats. More...
 
EditItemID getTrackID () const
 Returns the ID of the Track this item lives on. More...
 
- Public Member Functions inherited from tracktion::engine::EditItem
 EditItem (EditItemID, Edit &)
 
virtual ~EditItem ()=default
 
virtual juce::String getName () const =0
 
- Public Member Functions inherited from tracktion::engine::Selectable
 Selectable ()
 
virtual ~Selectable ()
 
virtual juce::String getSelectableDescription ()=0
 Subclasses must return a description of what they are. More...
 
virtual void selectionStatusChanged (bool isNowSelected)
 Can be overridden to tell this object that it has just been selected or deselected. More...
 
virtual void changed ()
 This should be called to send a change notification to any SelectableListeners that are registered with this object. More...
 
virtual void selectableAboutToBeDeleted ()
 Called just before the selectable is about to be deleted so any subclasses should still be valid at this point. More...
 
void addSelectableListener (SelectableListener *)
 
void removeSelectableListener (SelectableListener *)
 
void cancelAnyPendingUpdates ()
 If changed() has been called, this will cancel any pending async change notificaions. More...
 
void deselect ()
 
void propertiesChanged ()
 
void notifyListenersOfDeletion ()
 
WeakRef getWeakRef ()
 

Static Public Member Functions

static const char * typeToString (Type)
 Returns the string version of a TrackItem::Type. More...
 
static juce::Identifier clipTypeToXMLType (Type)
 Returns an Identifier version of a TrackItem::Type. More...
 
static TrackItem::Type xmlTagToType (juce::StringRef)
 Returns the TrackItem::Type of a type string. More...
 
static TrackItem::Type stringToType (const juce::String &)
 Returns the TrackItem::Type of a type string. More...
 
static juce::String getSuggestedNameForNewItem (Type)
 Returns a text string for a new clip of the given type. More...
 
template<typename ArrayType >
static void sortByTime (ArrayType &items)
 Helper function to sort an array of TrackItem[s] by their start time. More...
 
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. More...
 
- Static Public Member Functions inherited from tracktion::engine::Selectable
static void initialise ()
 
static bool isSelectableValid (const Selectable *) noexcept
 checks whether this object has been deleted. More...
 

Public Attributes

const Type type
 The type of this item. More...
 
- Public Attributes inherited from tracktion::engine::EditItem
Editedit
 
const EditItemID itemID
 Every EditItem has an ID which is unique within the edit. More...
 
- Public Attributes inherited from tracktion::engine::Selectable
WeakRef::Master masterReference
 

Detailed Description

Base class for EditItems that live in a Track, e.g.

clips

See also
WaveAudioClip, MidiClip, StepClip, MarkerClip, PitchSetting, TimeSigSetting

Member Enumeration Documentation

◆ Type

Defines the types of item that can live on Track[s].

Enumerator
unknown 

A placeholder for unknown items.

wave 

A wave clip.

See also
WaveAudioClip
midi 

A MIDI clip.

See also
MidiClip.
edit 

An Edit clip.

See also
EditClip.
step 

A MIDI step clip.

See also
StepClip.
marker 

A marker clip.

See also
MarkerClip.
pitch 

A pitch setting.

See also
PitchSetting.
timeSig 

A time signature settings.

See also
TimeSigSetting.
collection 

A collection clip.

See also
CollectionClip.
video 

A video clip.

N.B. not yet imlemented.

recording 

A temporary recording clip.

chord 

A chord clip.

See also
ChordClip.
arranger 

An arranger clip.

See also
ArrangerClip.
container 

An container clip.

See also
ContainerClip.

Constructor & Destructor Documentation

◆ TrackItem()

tracktion::engine::TrackItem::TrackItem ( Edit ,
EditItemID  ,
Type   
)

Creates a TrackItem with an ID and type.

IDs should be unique within an Edit.

◆ ~TrackItem()

tracktion::engine::TrackItem::~TrackItem ( )

Destructor.

Member Function Documentation

◆ typeToString()

static const char* tracktion::engine::TrackItem::typeToString ( Type  )
static

Returns the string version of a TrackItem::Type.

◆ clipTypeToXMLType()

static juce::Identifier tracktion::engine::TrackItem::clipTypeToXMLType ( Type  )
static

Returns an Identifier version of a TrackItem::Type.

◆ xmlTagToType()

static TrackItem::Type tracktion::engine::TrackItem::xmlTagToType ( juce::StringRef  )
static

Returns the TrackItem::Type of a type string.

◆ stringToType()

static TrackItem::Type tracktion::engine::TrackItem::stringToType ( const juce::String &  )
static

Returns the TrackItem::Type of a type string.

◆ getSuggestedNameForNewItem()

static juce::String tracktion::engine::TrackItem::getSuggestedNameForNewItem ( Type  )
static

Returns a text string for a new clip of the given type.

E.g. "New Audio Clip" for Type::wave

◆ getTrack()

virtual Track* tracktion::engine::TrackItem::getTrack ( ) const
pure virtual

◆ isGrouped()

virtual bool tracktion::engine::TrackItem::isGrouped ( ) const
virtual

Should return true if this clip is part of a group.

Reimplemented in tracktion::engine::Clip.

◆ getGroupParent()

virtual TrackItem* tracktion::engine::TrackItem::getGroupParent ( ) const
virtual

If this clip is part of a group, this should return the parent item it belongs to.

Reimplemented in tracktion::engine::Clip.

◆ getPosition()

virtual ClipPosition tracktion::engine::TrackItem::getPosition ( ) const
pure virtual

◆ getEditTimeRange()

TimeRange tracktion::engine::TrackItem::getEditTimeRange ( ) const

Returns the time range of this item.

References getPosition(), and tracktion::engine::ClipPosition::time.

Referenced by tracktion::engine::TrackSection::merge().

◆ getEditBeatRange()

BeatRange tracktion::engine::TrackItem::getEditBeatRange ( ) const

Returns the beat range of this item.

◆ getStartBeat()

BeatPosition tracktion::engine::TrackItem::getStartBeat ( ) const

Returns the start beat in the Edit of this item.

◆ getContentStartBeat()

BeatPosition tracktion::engine::TrackItem::getContentStartBeat ( ) const

Returns the start beat of the content in the Edit of this item.

I.e. the beat index of (start - offset)

◆ getEndBeat()

BeatPosition tracktion::engine::TrackItem::getEndBeat ( ) const

Returns the end beat in the Edit of this item.

◆ getLengthInBeats()

BeatDuration tracktion::engine::TrackItem::getLengthInBeats ( ) const

Returns the duration in beats the of this item.

◆ getTimeOfRelativeBeat()

TimePosition tracktion::engine::TrackItem::getTimeOfRelativeBeat ( BeatDuration  ) const

Returns an Edit time point for a given number of beats from the start of this item.

◆ getBeatOfRelativeTime()

BeatPosition tracktion::engine::TrackItem::getBeatOfRelativeTime ( TimeDuration  ) const

Returns an Edit beat point for a given number of seconds from the start of this item.

◆ getOffsetInBeats()

BeatDuration tracktion::engine::TrackItem::getOffsetInBeats ( ) const

Returns an the offset of this item in beats.

◆ getTrackID()

EditItemID tracktion::engine::TrackItem::getTrackID ( ) const

Returns the ID of the Track this item lives on.

◆ sortByTime()

template<typename ArrayType >
static void tracktion::engine::TrackItem::sortByTime ( ArrayType &  items)
static

Helper function to sort an array of TrackItem[s] by their start time.

◆ stableSortByTime()

template<typename ArrayType >
static void tracktion::engine::TrackItem::stableSortByTime ( ArrayType &  items)
static

Helper function to sort an array of TrackItem[s] by their start time without changing the order of items at the same time.

Member Data Documentation

◆ type

const Type tracktion::engine::TrackItem::type

The type of this item.


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