50 bool shouldLogAction =
true, int32_t livePos = -1,
51 bool mayDeleteNodesInLinearRun =
true,
bool isMPE =
false);
53 bool mayInterpolate =
true,
bool mustUpdateValueAtEveryNode =
false);
55 ActionType actionType = ActionType::NOTE_EDIT);
57 int32_t length,
bool mayDeleteNodesInLinearRun =
true);
65 void generateRepeats(uint32_t oldLength, uint32_t newLength,
bool shouldPingpong);
66 void cloneFrom(AutoParam* otherParam,
bool copyAutomation);
67 Error beenCloned(
bool copyAutomation, int32_t reverseDirectionWithLength);
68 void copyOverridingFrom(AutoParam* otherParam);
71 void deleteAutomationBasicForSetup();
72 void writeToFile(
Serializer& writer,
bool writeAutomation, int32_t* valueForOverride =
nullptr);
73 Error readFromFile(
Deserializer& reader, int32_t readAutomationUpToPos);
74 bool containsSomething(uint32_t neutralValue = 0);
75 static bool containedSomethingBefore(
bool wasAutomatedBefore, uint32_t valueBefore, uint32_t neutralValue = 0);
76 void shiftValues(int32_t offset);
77 void shiftParamVolumeByDB(
float offset);
78 void shiftHorizontally(int32_t amount, int32_t effectiveLength);
80 void copy(int32_t startPos, int32_t endPos,
CopiedParamAutomation* copiedParamAutomation,
bool isPatchCable,
84 Error makeInterpolationGoodAgain(int32_t clipLength, int32_t quantizationRShift);
85 void transposeCCValuesToChannelPressureValues();
87 void insertTime(int32_t pos, int32_t lengthToInsert);
88 void appendParam(AutoParam* otherParam, int32_t oldLength, int32_t reverseThisRepeatWithLength,
89 bool pingpongingGenerally);
90 void nudgeNonInterpolatingNodesAtPos(int32_t pos, int32_t offset, int32_t lengthBeforeLoop,
Action* action,
92 void stealNodes(
ModelStackWithAutoParam const* modelStack, int32_t pos, int32_t regionLength, int32_t loopLength,
96 void moveRegionHorizontally(
ModelStackWithAutoParam const* modelStack, int32_t pos, int32_t length, int32_t offset,
97 int32_t lengthBeforeLoop,
Action* action);
108 int32_t
setNodeAtPos(int32_t pos, int32_t value,
bool shouldInterpolate);
110 int32_t startValue,
bool interpolateLeftNode,
bool interpolateRightNode,
111 int32_t effectiveLength,
bool reversed, int32_t posAtWhichClipWillCut = 2147483647);
115 inline int32_t getCurrentValue() {
return currentValue; }
117 void notifyPingpongOccurred();
119 inline void setCurrentValueBasicForSetup(int32_t value) {
currentValue = value; }
121 inline bool isAutomated() {
return (
nodes.getNumElements()); }
123 inline void cancelOverriding() {
124 renewedOverridingAtTime = 0;
132 int32_t valueIncrementPerHalfTick;
133 uint32_t renewedOverridingAtTime;
139 bool deleteRedundantNodeInLinearRun(int32_t lastNodeInRunI, int32_t effectiveLength,
140 bool mayLoopAroundBackToEnd =
true);
141 void setupInterpolation(
ParamNode* nextNode, int32_t effectiveLength, int32_t currentPos,
bool reversed);
142 void homogenizeRegionTestSuccess(int32_t pos, int32_t regionEnd, int32_t startValue,
bool interpolateStart,
143 bool interpolateEnd);
144 void deleteNodesBeyondPos(int32_t pos);