27#ifndef LMMS_AUTOMATION_CLIP_H
28#define LMMS_AUTOMATION_CLIP_H
62 using timeMap = QMap<int, AutomationNode>;
80 void setProgressionType( ProgressionType _new_progression_type );
86 void setTension( QString _new_tension );
89 void updateLength()
override;
103 const bool quantPos =
true,
104 const bool ignoreSurroundingPoints =
true
117 const float outValue,
118 const bool quantPos =
true,
119 const bool ignoreSurroundingPoints =
true
122 void removeNode(
const TimePos & time);
127 void removeNodes(
const int tick0,
const int tick1);
132 void resetNodes(
const int tick0,
const int tick1);
137 void resetTangents(
const int tick0,
const int tick1);
139 void recordValue(
TimePos time,
float value);
154 const bool quantPos =
true,
155 const bool controlKey =
false
159 void applyDragValue();
203 float valueAt(
const TimePos & _time )
const;
204 float *valuesAfter(
const TimePos & _time )
const;
206 QString name()
const;
209 void saveSettings( QDomDocument & _doc, QDomElement & _parent )
override;
210 void loadSettings(
const QDomElement & _this )
override;
222 static std::vector<AutomationClip*> clipsForModel(
const AutomatableModel* _m);
225 static void resolveAllIDs();
243 void flipY(
int min,
int max );
245 void flipX(
int start = -1,
int end = -1);
252 void generateTangents();
253 void generateTangents(timeMap::iterator it,
int numToGenerate);
254 float valueAt( timeMap::const_iterator v,
int offset )
const;
263 static std::vector<Track*> combineAllTracks();
304 return it->getInValue();
309 return it->getOutValue();
314 return it->getValueOffset();
319 return it->getInTangent();
324 return it->getOutTangent();
329 return it->lockedTangents();
Definition AutomatableModel.h:77
Definition AutomationClip.h:52
static const float DEFAULT_MAX_VALUE
Definition AutomationClip.h:291
bool m_dragLockedTan
Definition AutomationClip.h:281
QRecursiveMutex m_clipMutex
Definition AutomationClip.h:267
bool addObject(AutomatableModel *_obj, bool _search_dup=true)
Definition AutomationClip.cpp:88
std::vector< jo_id_t > m_idsToResolve
Definition AutomationClip.h:270
QString nodeName() const override
Definition AutomationClip.h:213
~AutomationClip() override=default
AutomationTrack * m_autoTrack
Definition AutomationClip.h:269
timeMap m_oldTimeMap
Definition AutomationClip.h:273
bool isRecording() const
Definition AutomationClip.h:227
static int quantization()
Definition AutomationClip.h:230
static int s_quantization
Definition AutomationClip.h:288
AutomationClip * clone() override
Creates a copy of this clip.
Definition AutomationClip.h:233
bool canEditTangents() const
Definition AutomationClip.h:198
static void setQuantization(int q)
Definition AutomationClip.h:231
float m_lastRecordedValue
Definition AutomationClip.h:286
void clearObjects()
Definition AutomationClip.h:238
timeMap::const_iterator TimemapIterator
Definition AutomationClip.h:65
void setRecording(const bool b)
Definition AutomationClip.h:228
bool isDragging() const
Definition AutomationClip.h:162
timeMap m_timeMap
Definition AutomationClip.h:272
friend class AutomationNode
Definition AutomationClip.h:294
ProgressionType progressionType() const
Definition AutomationClip.h:76
AutomationClip(AutomationTrack *_auto_track)
Definition AutomationClip.cpp:48
bool m_dragging
Definition AutomationClip.h:278
static const QString classNodeName()
Definition AutomationClip.h:212
timeMap & getTimeMap()
Definition AutomationClip.h:172
float m_dragOutTan
Definition AutomationClip.h:283
float getMax() const
Definition AutomationClip.h:182
const timeMap & getTimeMap() const
Definition AutomationClip.h:167
const AutomatableModel * firstObject() const
Definition AutomationClip.cpp:152
std::vector< QPointer< AutomatableModel > > objectVector
Definition AutomationClip.h:63
static const float DEFAULT_MIN_VALUE
Definition AutomationClip.h:290
bool m_hasAutomation
Definition AutomationClip.h:275
QMap< int, AutomationNode > timeMap
Definition AutomationClip.h:62
ProgressionType
Definition AutomationClip.h:56
@ CubicHermite
Definition AutomationClip.h:59
bool m_isRecording
Definition AutomationClip.h:285
float m_dragOutValue
Definition AutomationClip.h:280
const objectVector & objects() const
Definition AutomationClip.cpp:166
bool m_dragKeepOutValue
Definition AutomationClip.h:279
float getMin() const
Definition AutomationClip.h:177
ProgressionType m_progressionType
Definition AutomationClip.h:276
bool hasAutomation() const
Definition AutomationClip.h:187
float getTension() const
Definition AutomationClip.h:82
objectVector m_objects
Definition AutomationClip.h:271
static bool supportsTangentEditing(ProgressionType pType)
Definition AutomationClip.h:192
float m_tension
Definition AutomationClip.h:274
float m_dragInTan
Definition AutomationClip.h:282
Definition AutomationTrack.h:36
Clip(Track *track)
Creates a new clip for the given track track.
Definition Clip.cpp:41
Definition AutomationClipView.h:42
Definition AutomationEditor.h:57
Definition TrackView.h:60
Definition AudioPortAudio.cpp:209
Definition RemotePluginBase.cpp:34
float INTAN(AutomationClip::TimemapIterator it)
Definition AutomationClip.h:317
float INVAL(AutomationClip::TimemapIterator it)
Definition AutomationClip.h:302
int POS(AutomationClip::TimemapIterator it)
Definition AutomationClip.h:332
std::uint32_t jo_id_t
Definition LmmsTypes.h:50
float OUTTAN(AutomationClip::TimemapIterator it)
Definition AutomationClip.h:322
float LOCKEDTAN(AutomationClip::TimemapIterator it)
Definition AutomationClip.h:327
float OUTVAL(AutomationClip::TimemapIterator it)
Definition AutomationClip.h:307
float OFFSET(AutomationClip::TimemapIterator it)
Definition AutomationClip.h:312