100 NoteRow(int16_t newY = -32768);
103 bool allowNoteTails, int32_t imageWidth, int32_t xScroll, uint32_t xZoom, int32_t xStart = 0,
104 int32_t xEnd = kDisplayWidth,
bool drawRepeats =
false);
107 Note* note =
nullptr);
109 int32_t numRepeatsRounded,
Action* action);
116 inline int32_t getNoteCode() {
return y; }
119 uint32_t getNumNotes();
122 bool backupOldParamManager =
true);
124 int32_t getDistanceToNextNote(int32_t pos,
ModelStackWithNoteRow const* modelStack,
bool reversed =
false);
128 bool mutedBeforeStemExport;
131 int32_t loopLengthIfIndependent;
132 int32_t lastProcessedPosIfIndependent;
133 int32_t repeatCountIfIndependent;
136 bool currentlyPlayingReversedIfIndependent;
138 SequenceDirection sequenceDirectionMode;
140 bool hasIndependentPlayPos();
147 uint8_t probabilityValue;
168 int32_t getDefaultProbability();
171 int32_t attemptNoteAdd(int32_t pos, int32_t length, int32_t velocity, int32_t probability,
Iterance iterance,
174 bool allowingNoteTails);
175 Error addCorrespondingNotes(int32_t pos, int32_t length, uint8_t velocity,
ModelStackWithNoteRow* modelStack,
176 bool allowNoteTails,
Action* action);
179 void initRowSquareInfo(
SquareInfo rowSquareInfo[kDisplayWidth],
bool anyNotes);
180 void initSquareInfo(
SquareInfo& squareInfo,
bool anyNotes, int32_t x);
185 uint8_t getSquareType(int32_t squareStart, int32_t squareWidth,
Note** firstNote,
Note** lastNote,
187 Action* action,
bool clipCurrentlyPlaying,
bool extendPreviousNoteIfPossible);
189 uint32_t wrapEditLevel,
bool actuallyExtendNoteAtStartOfArea =
false);
191 void trimNoteDataToNewClipLength(uint32_t newLength,
InstrumentClip* clip,
Action* action, int32_t noteRowId);
194 void rememberDrumName();
196 bool shiftSequenceAndMPE);
198 bool doesProbabilityExist(int32_t apartFromPos, int32_t probability, int32_t secondProbability = -1);
201 void giveMidiCommandsToDrum();
202 void grabMidiCommandsFromDrum();
203 void deleteParamManager(
bool shouldUpdatePointer =
true);
204 void deleteOldDrumNames(
bool shouldUpdatePointer =
true);
206 int32_t whichRepeatThisIs, int32_t otherClipLength);
215 int32_t changeType, int32_t changeValue);
220 uint32_t wrapEditLevel, int32_t nudgeOffset);
228 Error editNoteRepeatAcrossAllScreens(int32_t editPos, int32_t squareWidth,
ModelStackWithNoteRow* modelStack,
229 Action* action, uint32_t wrapEditLevel, int32_t newNumNotes);
231 bool hadIndependentPlayPosBefore);
234 bool shouldJustDeleteNodes =
false);
236 bool recordPolyphonicExpressionEvent(
ModelStackWithNoteRow* modelStackWithNoteRow, int32_t newValueBig,
237 int32_t expressionDimension,
bool forDrum);
245 bool noteMightBeConstant =
false,
PendingNoteOnList* pendingNoteOnList =
nullptr);
246 void playNextNote(
InstrumentClip*,
bool,
bool noteMightBeConstant =
false,
248 void findNextNoteToPlay(uint32_t);
250 bool noteRowMayMakeSound(
bool);
251 void drawTail(int32_t startTail, int32_t endTail, uint8_t squareColour[],
bool overwriteExisting,
252 uint8_t image[][3], uint8_t occupancyMask[]);
253 bool ignoredNoteOn{
false};
254 int32_t ignoreUntil{0};
255 int32_t ignoredTicks{0};