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);
129 int32_t loopLengthIfIndependent;
130 int32_t lastProcessedPosIfIndependent;
131 int32_t repeatCountIfIndependent;
134 bool currentlyPlayingReversedIfIndependent;
136 SequenceDirection sequenceDirectionMode;
138 bool hasIndependentPlayPos();
145 uint8_t probabilityValue;
166 int32_t getDefaultProbability();
169 int32_t attemptNoteAdd(int32_t pos, int32_t length, int32_t velocity, int32_t probability,
Iterance iterance,
172 bool allowingNoteTails);
173 Error addCorrespondingNotes(int32_t pos, int32_t length, uint8_t velocity,
ModelStackWithNoteRow* modelStack,
174 bool allowNoteTails,
Action* action);
177 void initRowSquareInfo(
SquareInfo rowSquareInfo[kDisplayWidth],
bool anyNotes);
178 void initSquareInfo(
SquareInfo& squareInfo,
bool anyNotes, int32_t x);
183 uint8_t getSquareType(int32_t squareStart, int32_t squareWidth,
Note** firstNote,
Note** lastNote,
185 Action* action,
bool clipCurrentlyPlaying,
bool extendPreviousNoteIfPossible);
187 uint32_t wrapEditLevel,
bool actuallyExtendNoteAtStartOfArea =
false);
189 void trimNoteDataToNewClipLength(uint32_t newLength,
InstrumentClip* clip,
Action* action, int32_t noteRowId);
192 void rememberDrumName();
194 bool shiftSequenceAndMPE);
196 bool doesProbabilityExist(int32_t apartFromPos, int32_t probability, int32_t secondProbability = -1);
199 void giveMidiCommandsToDrum();
200 void grabMidiCommandsFromDrum();
201 void deleteParamManager(
bool shouldUpdatePointer =
true);
202 void deleteOldDrumNames(
bool shouldUpdatePointer =
true);
204 int32_t whichRepeatThisIs, int32_t otherClipLength);
213 int32_t changeType, int32_t changeValue);
218 uint32_t wrapEditLevel, int32_t nudgeOffset);
226 Error editNoteRepeatAcrossAllScreens(int32_t editPos, int32_t squareWidth,
ModelStackWithNoteRow* modelStack,
227 Action* action, uint32_t wrapEditLevel, int32_t newNumNotes);
229 bool hadIndependentPlayPosBefore);
232 bool shouldJustDeleteNodes =
false);
234 bool recordPolyphonicExpressionEvent(
ModelStackWithNoteRow* modelStackWithNoteRow, int32_t newValueBig,
235 int32_t expressionDimension,
bool forDrum);
243 bool noteMightBeConstant =
false,
PendingNoteOnList* pendingNoteOnList =
nullptr);
244 void playNextNote(
InstrumentClip*,
bool,
bool noteMightBeConstant =
false,
246 void findNextNoteToPlay(uint32_t);
248 bool noteRowMayMakeSound(
bool);
249 void drawTail(int32_t startTail, int32_t endTail, uint8_t squareColour[],
bool overwriteExisting,
250 uint8_t image[][3], uint8_t occupancyMask[]);
251 bool ignoredNoteOn{
false};
252 int32_t ignoreUntil{0};
253 int32_t ignoredTicks{0};