36class Session final :
public PlaybackMode {
40 void armAllClipsToStop(int32_t afterNumRepeats);
41 void armNextSection(int32_t oldSection, int32_t numRepetitions = -1);
43 void scheduleLaunchTiming(int64_t atTickCount, int32_t numRepeatsUntil, int32_t armedLaunchLengthForOneRepeat);
44 int32_t getNumSixteenthNotesRemainingTilLaunch();
45 void scheduleFillEvent(
Clip* clip, int64_t atTickCount);
46 void cancelAllLaunchScheduling();
47 void launchSchedulingMightNeedCancelling();
48 void reSyncClipToSongTicks(
Clip* clip);
50 bool mayResumeClip =
true)
override;
51 void userWantsToUnsoloClip(
Clip* clip,
bool forceLateStart, int32_t buttonPressLatency);
52 void toggleClipStatus(
Clip* clip, int32_t* clipIndex,
bool doInstant, int32_t buttonPressLatency);
53 void soloClipAction(
Clip* clip, int32_t buttonPressLatency);
54 void armSection(uint8_t section, int32_t buttonPressLatency);
56 void userWantsToArmClipsToStartOrSolo(uint8_t section,
Clip* clip,
bool stopAllOtherClips,
57 bool forceLateStart =
false,
bool allowLateStart =
true,
58 int32_t numRepeatsTilLaunch = 1,
bool allowSubdividedQuantization =
true,
59 ArmState armState = ArmState::ON_NORMAL);
60 LaunchStatus investigateSyncedLaunch(
Clip* waitForClip, uint32_t* currentPosWithinQuantization,
61 uint32_t* quantization, uint32_t longestStartingClipLength,
62 bool allowSubdividedQuantization);
63 bool armForSongSwap();
64 bool armForSwitchToArrangement();
65 void armClipsToStartOrSoloWithQuantization(uint32_t pos, uint32_t quantization, uint8_t section,
66 bool stopAllOtherClips,
Clip* clip,
bool forceLateStart,
67 bool allowLateStart, int32_t numRepeatsTilLaunch,
68 ArmState armState = ArmState::ON_NORMAL);
69 void armClipToStartOrSoloUsingQuantization(
Clip* thisClip,
bool doLateStart, uint32_t pos,
70 ArmState armState = ArmState::ON_NORMAL,
71 bool mustUnarmOtherClipsWithSameOutput =
true);
72 void cancelAllArming();
73 void armClipLowLevel(
Clip* loopableToArm, ArmState armState,
bool mustUnarmOtherClipsWithSameOutput =
true);
74 int32_t userWantsToArmNextSection(int32_t numRepetitions = -1);
75 int32_t getCurrentSection();
76 bool areAnyClipsArmed();
77 void unsoloClip(
Clip* clip);
79 bool deletingClipWhichCouldBeAbandonedOverdub(
Clip* clip);
80 void scheduleOverdubToStartRecording(
Clip* overdub,
Clip* clipAbove);
81 void justAbortedSomeLinearRecording();
84 void setupPlayback()
override;
85 bool endPlayback()
override;
86 void doTickForward(int32_t posIncrement)
override;
87 void resetPlayPos(int32_t newPos,
bool doingComplete =
true, int32_t buttonPressLatency = 0)
override;
88 void resyncToSongTicks(
Song* song)
override;
89 void reversionDone()
override;
90 bool isOutputAvailable(
Output* output)
override;
91 bool considerLaunchEvent(int32_t numTicksBeingIncremented)
override;
92 void stopOutputRecordingAtLoopEnd()
override;
96 bool wantsToDoTempolessRecord(int32_t newPos)
override;
98 uint8_t lastSectionArmed;
99 uint32_t timeLastSectionPlayed;
101 int64_t launchEventAtSwungTickCount;
102 int16_t numRepeatsTilLaunch;
103 int32_t currentArmedLaunchLengthForOneRepeat;
104 bool switchToArrangementAtLaunchEvent;
107 bool giveClipOpportunityToBeginLinearRecording(
Clip* clip, int32_t clipIndex, int32_t buttonPressLatency);
108 void armClipToStopAction(
Clip* clip);
109 void cancelArmingForClip(
Clip* clip, int32_t* clipIndex);
110 void armSectionWhenNeitherClockActive(
ModelStack* modelStack, int32_t section,
bool stopAllOtherClips);
111 void armClipsAlongWithExistingLaunching(ArmState armState, uint8_t section,
Clip* clip);
112 void armClipsWithNothingToSyncTo(uint8_t section,
Clip* clip);