LMMS
Loading...
Searching...
No Matches
lmms::AutomationClip Class Reference

#include <AutomationClip.h>

Inheritance diagram for lmms::AutomationClip:
lmms::Clip lmms::Model lmms::JournallingObject lmms::SerializingObject

Public Types

enum class  ProgressionType { Discrete , Linear , CubicHermite }
using timeMap = QMap<int, AutomationNode>
using objectVector = std::vector<QPointer<AutomatableModel>>
using TimemapIterator = timeMap::const_iterator

Public Slots

void clear ()
void objectDestroyed (lmms::jo_id_t)
void flipY (int min, int max)
void flipY ()
void flipX (int start=-1, int end=-1)
Public Slots inherited from lmms::Clip
void toggleMute ()
 Mutes this Clip.

Public Member Functions

 AutomationClip (AutomationTrack *_auto_track)
 ~AutomationClip () override=default
bool addObject (AutomatableModel *_obj, bool _search_dup=true)
const AutomatableModelfirstObject () const
const objectVectorobjects () const
ProgressionType progressionType () const
void setProgressionType (ProgressionType _new_progression_type)
float getTension () const
void setTension (QString _new_tension)
TimePos timeMapLength () const
void updateLength () override
TimePos putValue (const TimePos &time, const float value, const bool quantPos=true, const bool ignoreSurroundingPoints=true)
 Puts an automation node on the timeMap with the given value. The inValue and outValue of the created node will be the same.
TimePos putValues (const TimePos &time, const float inValue, const float outValue, const bool quantPos=true, const bool ignoreSurroundingPoints=true)
 Puts an automation node on the timeMap with the given inValue and outValue.
void removeNode (const TimePos &time)
void removeNodes (const int tick0, const int tick1)
 Removes all automation nodes between the given ticks.
void resetNodes (const int tick0, const int tick1)
 Resets the outValues of all automation nodes between the given ticks.
void resetTangents (const int tick0, const int tick1)
 Resets the tangents from the nodes between the given ticks.
void recordValue (TimePos time, float value)
TimePos setDragValue (const TimePos &time, const float value, const bool quantPos=true, const bool controlKey=false)
 Set the position of the point that is being dragged. Calling this function will also automatically set m_dragging to true. When applyDragValue() is called, m_dragging is set back to false.
void applyDragValue ()
 After the point is dragged, this function is called to apply the change.
bool isDragging () const
const timeMapgetTimeMap () const
timeMapgetTimeMap ()
float getMin () const
float getMax () const
bool hasAutomation () const
bool canEditTangents () const
float valueAt (const TimePos &_time) const
float * valuesAfter (const TimePos &_time) const
QString name () const
void saveSettings (QDomDocument &_doc, QDomElement &_parent) override
void loadSettings (const QDomElement &_this) override
QString nodeName () const override
gui::ClipViewcreateView (gui::TrackView *_tv) override
bool isRecording () const
void setRecording (const bool b)
AutomationClipclone () override
void clearObjects ()
Public Member Functions inherited from lmms::Clip
 Clip (Track *track)
 Create a new Clip.
 ~Clip () override
 Destroy a Clip.
TrackgetTrack () const
const QString & name () const
void setName (const QString &name)
QString displayName () const override
const TimePosstartPosition () const
TimePos endPosition () const
const TimePoslength () const
bool hasTrackContainer () const
bool isInPattern () const
bool manuallyResizable () const
void setAutoResize (const bool r)
 Set whether a clip has been resized yet by the user or the knife tool.
bool getAutoResize () const
auto color () const -> const std::optional< QColor > &
void setColor (const std::optional< QColor > &color)
virtual void movePosition (const TimePos &pos)
 Move this Clip's position in time.
virtual void changeLength (const TimePos &length)
 Change the length of this Clip.
void selectViewOnCreate (bool select)
bool getSelectViewOnCreate ()
TimePos startTimeOffset () const
void setStartTimeOffset (const TimePos &startTimeOffset)
Public Member Functions inherited from lmms::Model
 Model (Model *parent, QString displayName=QString(), bool defaultConstructed=false)
 ~Model () override=default
bool isDefaultConstructed () const
ModelparentModel () const
virtual void setDisplayName (const QString &displayName)
virtual QString fullDisplayName () const
Public Member Functions inherited from lmms::JournallingObject
 JournallingObject ()
 ~JournallingObject () override
jo_id_t id () const
void saveJournallingState (const bool newState)
void restoreJournallingState ()
void addJournalCheckPoint ()
QDomElement saveState (QDomDocument &_doc, QDomElement &_parent) override
void restoreState (const QDomElement &_this) override
bool isJournalling () const
void setJournalling (const bool _sr)
bool testAndSetJournalling (const bool newState)
bool isJournallingStateStackEmpty () const
Public Member Functions inherited from lmms::SerializingObject
 SerializingObject ()
virtual ~SerializingObject ()
void setHook (SerializingObjectHook *_hook)
SerializingObjectHookhook ()

Static Public Member Functions

static bool supportsTangentEditing (ProgressionType pType)
static const QString classNodeName ()
static bool isAutomated (const AutomatableModel *_m)
static std::vector< AutomationClip * > clipsForModel (const AutomatableModel *_m)
 returns a list of all the automation clips that are connected to a specific model
static AutomationClipglobalAutomationClip (AutomatableModel *_m)
static void resolveAllIDs ()
static int quantization ()
static void setQuantization (int q)
Static Public Member Functions inherited from lmms::Clip
static bool comparePosition (const Clip *a, const Clip *b)
 Returns true if and only if a->startPosition() < b->startPosition().
static void copyStateTo (Clip *src, Clip *dst)
 Copies the state of a Clip to another Clip.

Protected Member Functions

 AutomationClip (const AutomationClip &_clip_to_copy)
Protected Member Functions inherited from lmms::Clip
 Clip (const Clip &other)
 Copy a Clip.
Protected Member Functions inherited from lmms::JournallingObject
void changeID (jo_id_t _id)

Private Member Functions

void cleanObjects ()
void generateTangents ()
void generateTangents (timeMap::iterator it, int numToGenerate)
float valueAt (timeMap::const_iterator v, int offset) const

Static Private Member Functions

static std::vector< Track * > combineAllTracks ()
 This function combines the song tracks, pattern store tracks, and the global automation track all in one vector.

Private Attributes

QRecursiveMutex m_clipMutex
AutomationTrackm_autoTrack
std::vector< jo_id_tm_idsToResolve
objectVector m_objects
timeMap m_timeMap
timeMap m_oldTimeMap
float m_tension
bool m_hasAutomation
ProgressionType m_progressionType
bool m_dragging
bool m_dragKeepOutValue
float m_dragOutValue
bool m_dragLockedTan
float m_dragInTan
float m_dragOutTan
bool m_isRecording
float m_lastRecordedValue

Static Private Attributes

static int s_quantization = 1
static const float DEFAULT_MIN_VALUE = 0
static const float DEFAULT_MAX_VALUE = 1

Friends

class gui::AutomationClipView
class AutomationNode
class gui::AutomationEditor

Additional Inherited Members

Signals inherited from lmms::Clip
void lengthChanged ()
void positionChanged ()
void destroyedClip ()
void colorChanged ()
Signals inherited from lmms::Model
void dataChanged ()
void dataUnchanged ()
void propertiesChanged ()

Member Typedef Documentation

◆ objectVector

using lmms::AutomationClip::objectVector = std::vector<QPointer<AutomatableModel>>

◆ timeMap

◆ TimemapIterator

using lmms::AutomationClip::TimemapIterator = timeMap::const_iterator

Member Enumeration Documentation

◆ ProgressionType

Enumerator
Discrete 
Linear 
CubicHermite 

Constructor & Destructor Documentation

◆ AutomationClip() [1/2]

lmms::AutomationClip::AutomationClip ( AutomationTrack * _auto_track)

◆ ~AutomationClip()

lmms::AutomationClip::~AutomationClip ( )
overridedefault

◆ AutomationClip() [2/2]

lmms::AutomationClip::AutomationClip ( const AutomationClip & _clip_to_copy)
protected

Member Function Documentation

◆ addObject()

bool lmms::AutomationClip::addObject ( AutomatableModel * _obj,
bool _search_dup = true )

◆ applyDragValue()

void lmms::AutomationClip::applyDragValue ( )

After the point is dragged, this function is called to apply the change.

◆ canEditTangents()

bool lmms::AutomationClip::canEditTangents ( ) const
inline

◆ classNodeName()

const QString lmms::AutomationClip::classNodeName ( )
inlinestatic

◆ cleanObjects()

void lmms::AutomationClip::cleanObjects ( )
private

◆ clear

void lmms::AutomationClip::clear ( )
slot

◆ clearObjects()

void lmms::AutomationClip::clearObjects ( )
inline

◆ clipsForModel()

std::vector< AutomationClip * > lmms::AutomationClip::clipsForModel ( const AutomatableModel * _m)
static

returns a list of all the automation clips that are connected to a specific model

Parameters
_mthe model we want to look for

◆ clone()

AutomationClip * lmms::AutomationClip::clone ( )
inlineoverridevirtual

Creates a copy of this clip

Returns
pointer to the new clip object

Implements lmms::Clip.

◆ combineAllTracks()

std::vector< Track * > lmms::AutomationClip::combineAllTracks ( )
staticprivate

This function combines the song tracks, pattern store tracks, and the global automation track all in one vector.

Returns
std::vector<Track*>

◆ createView()

gui::ClipView * lmms::AutomationClip::createView ( gui::TrackView * _tv)
overridevirtual

Implements lmms::Clip.

◆ firstObject()

const AutomatableModel * lmms::AutomationClip::firstObject ( ) const

◆ flipX

void lmms::AutomationClip::flipX ( int start = -1,
int end = -1 )
slot

◆ flipY [1/2]

void lmms::AutomationClip::flipY ( )
slot

◆ flipY [2/2]

void lmms::AutomationClip::flipY ( int min,
int max )
slot

◆ generateTangents() [1/2]

void lmms::AutomationClip::generateTangents ( )
private

◆ generateTangents() [2/2]

void lmms::AutomationClip::generateTangents ( timeMap::iterator it,
int numToGenerate )
private

◆ getMax()

float lmms::AutomationClip::getMax ( ) const
inline

◆ getMin()

float lmms::AutomationClip::getMin ( ) const
inline

◆ getTension()

float lmms::AutomationClip::getTension ( ) const
inline

◆ getTimeMap() [1/2]

timeMap & lmms::AutomationClip::getTimeMap ( )
inline

◆ getTimeMap() [2/2]

const timeMap & lmms::AutomationClip::getTimeMap ( ) const
inline

◆ globalAutomationClip()

AutomationClip * lmms::AutomationClip::globalAutomationClip ( AutomatableModel * _m)
static

◆ hasAutomation()

bool lmms::AutomationClip::hasAutomation ( ) const
inline

◆ isAutomated()

bool lmms::AutomationClip::isAutomated ( const AutomatableModel * _m)
static

◆ isDragging()

bool lmms::AutomationClip::isDragging ( ) const
inline

◆ isRecording()

bool lmms::AutomationClip::isRecording ( ) const
inline

◆ loadSettings()

void lmms::AutomationClip::loadSettings ( const QDomElement & _this)
overridevirtual

◆ name()

QString lmms::AutomationClip::name ( ) const

◆ nodeName()

QString lmms::AutomationClip::nodeName ( void ) const
inlineoverridevirtual

◆ objectDestroyed

void lmms::AutomationClip::objectDestroyed ( lmms::jo_id_t _id)
slot

◆ objects()

const AutomationClip::objectVector & lmms::AutomationClip::objects ( ) const

◆ progressionType()

ProgressionType lmms::AutomationClip::progressionType ( ) const
inline

◆ putValue()

TimePos lmms::AutomationClip::putValue ( const TimePos & time,
const float value,
const bool quantPos = true,
const bool ignoreSurroundingPoints = true )

Puts an automation node on the timeMap with the given value. The inValue and outValue of the created node will be the same.

Parameters
TimePostime to add the node to
FloatinValue and outValue of the node
BooleanTrue to quantize the position (defaults to true)
BooleanTrue to ignore unquantized surrounding nodes (defaults to true)
Returns
TimePos of the recently added automation node

◆ putValues()

TimePos lmms::AutomationClip::putValues ( const TimePos & time,
const float inValue,
const float outValue,
const bool quantPos = true,
const bool ignoreSurroundingPoints = true )

Puts an automation node on the timeMap with the given inValue and outValue.

Parameters
TimePostime to add the node to
FloatinValue of the node
FloatoutValue of the node
BooleanTrue to quantize the position (defaults to true)
BooleanTrue to ignore unquantized surrounding nodes (defaults to true)
Returns
TimePos of the recently added automation node

◆ quantization()

int lmms::AutomationClip::quantization ( )
inlinestatic

◆ recordValue()

void lmms::AutomationClip::recordValue ( TimePos time,
float value )

◆ removeNode()

void lmms::AutomationClip::removeNode ( const TimePos & time)

◆ removeNodes()

void lmms::AutomationClip::removeNodes ( const int tick0,
const int tick1 )

Removes all automation nodes between the given ticks.

Parameters
Intfirst tick of the range
Intsecond tick of the range

◆ resetNodes()

void lmms::AutomationClip::resetNodes ( const int tick0,
const int tick1 )

Resets the outValues of all automation nodes between the given ticks.

Parameters
Intfirst tick of the range
Intsecond tick of the range

◆ resetTangents()

void lmms::AutomationClip::resetTangents ( const int tick0,
const int tick1 )

Resets the tangents from the nodes between the given ticks.

Parameters
Intfirst tick of the range
Intsecond tick of the range

◆ resolveAllIDs()

void lmms::AutomationClip::resolveAllIDs ( )
static

◆ saveSettings()

void lmms::AutomationClip::saveSettings ( QDomDocument & _doc,
QDomElement & _parent )
overridevirtual

◆ setDragValue()

TimePos lmms::AutomationClip::setDragValue ( const TimePos & time,
const float value,
const bool quantPos = true,
const bool controlKey = false )

Set the position of the point that is being dragged. Calling this function will also automatically set m_dragging to true. When applyDragValue() is called, m_dragging is set back to false.

Parameters
TimePosof the node being dragged
Floatwith the value to assign to the point being dragged
Boolean.True to snip x position
Boolean.True to ignore unquantized surrounding nodes
Returns
TimePos with current time of the dragged value

◆ setProgressionType()

void lmms::AutomationClip::setProgressionType ( ProgressionType _new_progression_type)

◆ setQuantization()

void lmms::AutomationClip::setQuantization ( int q)
inlinestatic

◆ setRecording()

void lmms::AutomationClip::setRecording ( const bool b)
inline

◆ setTension()

void lmms::AutomationClip::setTension ( QString _new_tension)

◆ supportsTangentEditing()

bool lmms::AutomationClip::supportsTangentEditing ( ProgressionType pType)
inlinestatic

◆ timeMapLength()

TimePos lmms::AutomationClip::timeMapLength ( ) const

◆ updateLength()

void lmms::AutomationClip::updateLength ( )
overridevirtual

Reimplemented from lmms::Clip.

◆ valueAt() [1/2]

float lmms::AutomationClip::valueAt ( const TimePos & _time) const

◆ valueAt() [2/2]

float lmms::AutomationClip::valueAt ( timeMap::const_iterator v,
int offset ) const
private

◆ valuesAfter()

float * lmms::AutomationClip::valuesAfter ( const TimePos & _time) const

◆ AutomationNode

friend class AutomationNode
friend

◆ gui::AutomationClipView

friend class gui::AutomationClipView
friend

◆ gui::AutomationEditor

friend class gui::AutomationEditor
friend

Member Data Documentation

◆ DEFAULT_MAX_VALUE

const float lmms::AutomationClip::DEFAULT_MAX_VALUE = 1
staticprivate

◆ DEFAULT_MIN_VALUE

const float lmms::AutomationClip::DEFAULT_MIN_VALUE = 0
staticprivate

◆ m_autoTrack

AutomationTrack* lmms::AutomationClip::m_autoTrack
private

◆ m_clipMutex

QRecursiveMutex lmms::AutomationClip::m_clipMutex
mutableprivate

◆ m_dragging

bool lmms::AutomationClip::m_dragging
private

◆ m_dragInTan

float lmms::AutomationClip::m_dragInTan
private

◆ m_dragKeepOutValue

bool lmms::AutomationClip::m_dragKeepOutValue
private

◆ m_dragLockedTan

bool lmms::AutomationClip::m_dragLockedTan
private

◆ m_dragOutTan

float lmms::AutomationClip::m_dragOutTan
private

◆ m_dragOutValue

float lmms::AutomationClip::m_dragOutValue
private

◆ m_hasAutomation

bool lmms::AutomationClip::m_hasAutomation
private

◆ m_idsToResolve

std::vector<jo_id_t> lmms::AutomationClip::m_idsToResolve
private

◆ m_isRecording

bool lmms::AutomationClip::m_isRecording
private

◆ m_lastRecordedValue

float lmms::AutomationClip::m_lastRecordedValue
private

◆ m_objects

objectVector lmms::AutomationClip::m_objects
private

◆ m_oldTimeMap

timeMap lmms::AutomationClip::m_oldTimeMap
private

◆ m_progressionType

ProgressionType lmms::AutomationClip::m_progressionType
private

◆ m_tension

float lmms::AutomationClip::m_tension
private

◆ m_timeMap

timeMap lmms::AutomationClip::m_timeMap
private

◆ s_quantization

int lmms::AutomationClip::s_quantization = 1
staticprivate

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