Deluge Firmware 1.3.0
Build date: 2025.06.05
Loading...
Searching...
No Matches
SessionView Class Referencefinal
Inheritance diagram for SessionView:
Collaboration diagram for SessionView:

Public Member Functions

bool getGreyoutColsAndRows (uint32_t *cols, uint32_t *rows) override
 
bool opened () override
 
void focusRegained () override
 
ActionResult buttonAction (deluge::hid::Button b, bool on, bool inCardRoutine) override
 
ActionResult clipCreationButtonPressed (hid::Button i, bool on, bool routine)
 
ActionResult padAction (int32_t x, int32_t y, int32_t velocity) override
 
ActionResult horizontalEncoderAction (int32_t offset) override
 
ActionResult verticalEncoderAction (int32_t offset, bool inCardRoutine) override
 
bool renderSidebar (uint32_t whichRows, RGB image[][kDisplayWidth+kSideBarWidth], uint8_t occupancyMask[][kDisplayWidth+kSideBarWidth]) override
 
void removeClip (Clip *clip)
 
void redrawClipsOnScreen (bool doRender=true)
 
uint32_t getMaxZoom () override
 
void cloneClip (uint8_t yDisplayFrom, uint8_t yDisplayTo)
 
bool renderRow (ModelStack *modelStack, uint8_t yDisplay, RGB thisImage[kDisplayWidth+kSideBarWidth], uint8_t thisOccupancyMask[kDisplayWidth+kSideBarWidth], bool drawUndefinedArea=true)
 
void graphicsRoutine () override
 
int32_t displayLoopsRemainingPopup (bool ephemeral=false)
 display number of bars or quarter notes remaining until a launch event
 
void potentiallyRenderClipLaunchPlayhead (bool reallyNoTickSquare, int32_t sixteenthNotesRemaining)
 
void requestRendering (UI *ui, uint32_t whichMainRows=0xFFFFFFFF, uint32_t whichSideRows=0xFFFFFFFF)
 
int32_t getClipPlaceOnScreen (Clip *clip)
 
void drawStatusSquare (uint8_t yDisplay, RGB thisImage[])
 
void drawSectionSquare (uint8_t yDisplay, RGB thisImage[])
 
bool calculateZoomPinSquares (uint32_t oldScroll, uint32_t newScroll, uint32_t newZoom, uint32_t oldZoom) override
 
uint32_t getMaxLength () override
 
bool setupScroll (uint32_t oldScroll) override
 
uint32_t getClipLocalScroll (Clip *loopable, uint32_t overviewScroll, uint32_t xZoom)
 
void flashPlayRoutine ()
 
void modEncoderButtonAction (uint8_t whichModEncoder, bool on) override
 
void modButtonAction (uint8_t whichButton, bool on) override
 
void selectEncoderAction (int8_t offset) override
 
ActionResult timerCallback () override
 
void noteRowChanged (InstrumentClip *clip, NoteRow *noteRow) override
 
void setLedStates ()
 
void editNumRepeatsTilLaunch (int32_t offset)
 
uint32_t getGreyedOutRowsNotRepresentingOutput (Output *output) override
 
bool renderMainPads (uint32_t whichRows, RGB image[][kDisplayWidth+kSideBarWidth], uint8_t occupancyMask[][kDisplayWidth+kSideBarWidth], bool drawUndefinedArea=true) override
 
void midiLearnFlash () override
 
void transitionToViewForClip (Clip *clip=nullptr)
 
void transitionToSessionView ()
 
void finishedTransitioningHere ()
 
void playbackEnded () override
 
void clipNeedsReRendering (Clip *clip) override
 
void sampleNeedsReRendering (Sample *sample) override
 
ClipgetClipOnScreen (int32_t yDisplay)
 
OutputgetOutputFromPad (int32_t x, int32_t y)
 
void modEncoderAction (int32_t whichModEncoder, int32_t offset) override
 
ActionResult verticalScrollOneSquare (int32_t direction)
 
void renderOLED (deluge::hid::display::oled_canvas::Canvas &canvas) override
 
void redrawNumericDisplay ()
 
void clearNumericDisplay ()
 
void displayRepeatsTilLaunch ()
 
ClipgetClipForLayout ()
 
int32_t getClipIndexForLayout ()
 
void copyClipName (Clip *source, Clip *target, Output *targetOutput)
 
bool gridFirstPadActive ()
 
ActionResult gridHandlePads (int32_t x, int32_t y, int32_t on)
 
ActionResult gridHandleScroll (int32_t offsetX, int32_t offsetY)
 
UIType getUIType () override
 What type of UI is this? e.g. UIType::ARRANGER.
 
UIModControllableContext getUIModControllableContext () override
 What mod controllable context is this UI using? E.g. Automation View can use the Song ModControllable when in Arranger but the Clip ModControllable when in a Clip.
 
ClipcreateNewClip (OutputType outputType, int32_t yDisplay)
 
void enterMacrosConfigMode ()
 
void exitMacrosConfigMode ()
 
char const * getMacroKindString (SessionMacroKind kind)
 
void enterMidiLearnMode ()
 
void exitMidiLearnMode ()
 
void displayPotentialTempoChange (UI *ui)
 
void displayTempoBPM (deluge::hid::display::oled_canvas::Canvas &canvas, StringBuf &tempoBPM, bool clearArea)
 
void displayCurrentRootNoteAndScaleName (deluge::hid::display::oled_canvas::Canvas &canvas, StringBuf &rootNoteAndScaleName, bool clearArea)
 
void replaceInstrumentClipWithAudioClip (Clip *clip)
 
void gridPulseSelectedClip ()
 
- Public Member Functions inherited from TimelineView
void scrollFinished () override
 
TimelineViewtoTimelineView () final
 Convert this view to a TimelineView.
 
virtual int32_t getNavSysId () const
 
virtual void tellMatrixDriverWhichRowsContainSomethingZoomable ()
 
ActionResult buttonAction (deluge::hid::Button b, bool on, bool inCardRoutine) override
 
void displayZoomLevel (bool justPopup=false)
 
ActionResult horizontalEncoderAction (int32_t offset) override
 
void displayScrollPos ()
 
void displayNumberOfBarsAndBeats (uint32_t number, uint32_t quantization, bool countFromOne, char const *tooLongText)
 
void initiateXScroll (uint32_t newXScroll, int32_t numSquaresToScroll=kDisplayWidth)
 
bool zoomToMax (bool inOnly=false)
 
void initiateXZoom (int32_t zoomMagnitude, int32_t newScroll, uint32_t oldZoom)
 
void midiLearnFlash () override
 
bool scrollRightToEndOfLengthIfNecessary (int32_t maxLength)
 
bool scrollLeftIfTooFarRight (int32_t maxLength)
 
void tripletsButtonPressed ()
 
void setTripletsLEDState ()
 
int32_t getPosFromSquare (int32_t square, int32_t localScroll=-1) const
 
int32_t getPosFromSquare (int32_t square, int32_t xScroll, uint32_t xZoom) const
 
int32_t getSquareFromPos (int32_t pos, bool *rightOnSquare=nullptr, int32_t localScroll=-1)
 
int32_t getSquareFromPos (int32_t pos, bool *rightOnSquare, int32_t xScroll, uint32_t xZoom)
 
int32_t getSquareEndFromPos (int32_t pos, int32_t localScroll=-1)
 
bool isSquareDefined (int32_t square, int32_t xScroll=-1)
 
bool isSquareDefined (int32_t square, int32_t xScroll, uint32_t xZoom)
 
bool inTripletsView () const
 
- Public Member Functions inherited from RootUI
virtual bool getAffectEntire ()
 
bool canSeeViewUnderneath () final
 
virtual bool supportsTriplets () const
 
virtual void notifyPlaybackBegun ()
 
- Public Member Functions inherited from UI
virtual void displayOrLanguageChanged ()
 
virtual ClipMindertoClipMinder ()
 
virtual bool pcReceivedForMidiLearn (MIDICable &fromCable, int32_t channel, int32_t program)
 
virtual bool noteOnReceivedForMidiLearn (MIDICable &fromCable, int32_t channel, int32_t note, int32_t velocity)
 
virtual bool exitUI ()
 returns whether a UI exited
 
void close ()
 
virtual UIgetUI ()
 When entering a UI (e.g. automationView), you may wish to open a different UI based on the current context (e.g. automationViewArranger, automationViewAudioClip, etc.)
 
virtual UIType getUIContextType ()
 What context does UI relate to? e.g. UIType could be AUTOMATION but UIContextType could be ARRANGER, AUDIO CLIP, INSTRUMENT CLIP.
 

Public Attributes

uint32_t selectedClipTimePressed
 
uint8_t selectedClipYDisplay
 
uint8_t selectedClipPressYDisplay
 
uint8_t selectedClipPressXDisplay
 
bool clipWasSelectedWithShift
 
bool performActionOnPadRelease
 
bool performActionOnSectionPadRelease
 
uint8_t sectionPressed
 
uint8_t masterCompEditMode
 
int8_t selectedMacro = -1
 
bool createClip {false}
 
OutputType lastTypeCreated {OutputType::NONE}
 
float lastDisplayedTempo = 0
 
int16_t lastDisplayedRootNote = 0
 
- Public Attributes inherited from UI
bool oledShowsUIUnderneath
 

Private Member Functions

void commandChangeSectionRepeats (int8_t offset)
 
void commandChangeClipPreset (int8_t offset)
 
void commandChangeCurrentSectionRepeats (int8_t offset)
 
void commandChangeLayout (int8_t offset)
 
void renderViewDisplay ()
 render session view display on opening
 
void sectionPadAction (uint8_t y, bool on)
 
void clipPressEnded ()
 
void drawSectionRepeatNumber ()
 
void beginEditingSectionRepeatsNum ()
 
void goToArrangementEditor ()
 
void rowNeedsRenderingDependingOnSubMode (int32_t yDisplay)
 
void setCentralLEDStates ()
 
ClipcreateNewAudioClip (int32_t yDisplay)
 
ClipcreateNewInstrumentClip (OutputType outputType, int32_t yDisplay)
 
bool createNewTrackForAudioClip (AudioClip *newClip)
 
bool createNewTrackForInstrumentClip (OutputType type, InstrumentClip *clip, bool copyDrumsFromClip)
 
bool insertAndResyncNewClip (Clip *newClip, int32_t yDisplay)
 
void resyncNewClip (Clip *newClip, ModelStackWithTimelineCounter *modelStackWithTimelineCounter)
 
void selectLayout (int8_t offset)
 
void renderLayoutChange (bool displayPopup=true)
 
void selectSpecificLayout (SessionLayoutType layout)
 
bool gridRenderSidebar (uint32_t whichRows, RGB image[][kDisplayWidth+kSideBarWidth], uint8_t occupancyMask[][kDisplayWidth+kSideBarWidth])
 
void gridRenderActionModes (int32_t y, RGB image[][kDisplayWidth+kSideBarWidth], uint8_t occupancyMask[][kDisplayWidth+kSideBarWidth])
 
bool gridRenderMainPads (uint32_t whichRows, RGB image[][kDisplayWidth+kSideBarWidth], uint8_t occupancyMask[][kDisplayWidth+kSideBarWidth], bool drawUndefinedArea=true)
 
RGB gridRenderClipColor (Clip *clip, int32_t x, int32_t y, bool renderPulse=true)
 
ActionResult gridHandlePadsEdit (int32_t x, int32_t y, int32_t on, Clip *clip)
 
ActionResult gridHandlePadsLaunch (int32_t x, int32_t y, int32_t on, Clip *clip)
 
ActionResult gridHandlePadsLaunchImmediate (int32_t x, int32_t y, int32_t on, Clip *clip)
 
ActionResult gridHandlePadsLaunchWithSelection (int32_t x, int32_t y, int32_t on, Clip *clip)
 
void gridHandlePadsWithMidiLearnPressed (int32_t x, int32_t on, Clip *clip)
 
ActionResult gridHandlePadsMacros (int32_t x, int32_t y, int32_t on, Clip *clip)
 
void gridHandlePadsLaunchToggleArming (Clip *clip, bool immediate)
 
void gridTransitionToSessionView ()
 
void gridTransitionToViewForClip (Clip *clip)
 
bool gridSecondPadInactive ()
 
void gridResetPresses (bool first=true, bool second=true)
 
ClipgridCloneClip (Clip *sourceClip)
 
ClipgridCreateClipInTrack (Output *targetOutput)
 
AudioClipgridCreateAudioClipWithNewTrack ()
 
InstrumentClipgridCreateInstrumentClipWithNewTrack (OutputType type)
 
ClipgridCreateClip (uint32_t targetSection, Output *targetOutput=nullptr, Clip *sourceClip=nullptr)
 
void gridClonePad (uint32_t sourceX, uint32_t sourceY, uint32_t targetX, uint32_t targetY)
 
void setupNewClip (Clip *newClip)
 
void gridStartSection (uint32_t section, bool instant)
 
void gridToggleClipPlay (Clip *clip, bool instant)
 
const size_t gridTrackCount () const
 
uint32_t gridClipCountForTrack (Output *track)
 
uint32_t gridTrackIndexFromTrack (Output *track, uint32_t maxTrack)
 
OutputgridTrackFromIndex (uint32_t trackIndex, uint32_t maxTrack)
 
int32_t gridYFromSection (uint32_t section)
 
int32_t gridSectionFromY (uint32_t y)
 
int32_t gridXFromTrack (uint32_t trackIndex)
 
int32_t gridTrackIndexFromX (uint32_t x, uint32_t maxTrack)
 
OutputgridTrackFromX (uint32_t x, uint32_t maxTrack)
 
ClipgridClipFromCoords (uint32_t x, uint32_t y)
 
int32_t gridClipIndexFromCoords (uint32_t x, uint32_t y)
 
Cartesian gridXYFromClip (Clip &clip)
 
void gridSetDefaultMode ()
 
void setupTrackCreation () const
 
void exitTrackCreation ()
 
void gridStopSelectedClipPulsing ()
 disable selected clip pulsing
 
void gridResetSelectedClipPulseProgress ()
 reset blend position for pulse
 
void gridSelectClipForPulsing (Clip &clip)
 render pulse for selected clip
 
bool gridCheckForPulseStop ()
 check if we should stop pulsing
 

Private Attributes

SessionLayoutType previousLayout
 
SessionGridMode previousGridModeActive
 
bool sessionButtonActive = false
 
bool sessionButtonUsed = false
 
bool horizontalEncoderPressed = false
 
bool viewingRecordArmingActive = false
 
SessionGridMode gridModeSelected = SessionGridModeEdit
 
SessionGridMode gridModeActive = SessionGridModeEdit
 
bool gridActiveModeUsed = false
 
int32_t gridFirstPressedX = -1
 
int32_t gridFirstPressedY = -1
 
int32_t gridSecondPressedX = -1
 
int32_t gridSecondPressedY = -1
 
bool gridSelectedClipPulsing = false
 
ClipselectedClipForPulsing = nullptr
 
RGB gridSelectedClipRenderedColour
 
bool blendDirection = false
 
int32_t progress = 0
 

Static Private Attributes

static constexpr int32_t kMinProgress = 1
 
static constexpr int32_t kMaxProgressFull = (65535 / 100) * 60
 
static constexpr int32_t kMaxProgressDim = 1000
 
static constexpr int32_t kPulseRate = 50
 
static constexpr int32_t kBlendRate = 60
 
static constexpr int32_t kBlendOffsetFull = kPulseRate * kBlendRate
 
static constexpr int32_t kBlendOffsetDim = kPulseRate
 

Additional Inherited Members

- Protected Member Functions inherited from ClipNavigationTimelineView
void horizontalScrollForLinearRecording (int32_t newXScroll)
 
- Protected Attributes inherited from UI
UIType uiType
 
- Static Protected Attributes inherited from ClipNavigationTimelineView
static int32_t xScrollBeforeFollowingAutoExtendingLinearRecording
 

Member Function Documentation

◆ buttonAction()

ActionResult SessionView::buttonAction ( deluge::hid::Button b,
bool on,
bool inCardRoutine )
overridevirtual

Reimplemented from UI.

◆ calculateZoomPinSquares()

bool SessionView::calculateZoomPinSquares ( uint32_t oldScroll,
uint32_t newScroll,
uint32_t newZoom,
uint32_t oldZoom )
overridevirtual

Reimplemented from TimelineView.

◆ clipNeedsReRendering()

void SessionView::clipNeedsReRendering ( Clip * clip)
overridevirtual

Reimplemented from RootUI.

◆ focusRegained()

void SessionView::focusRegained ( )
overridevirtual

Reimplemented from ClipNavigationTimelineView.

◆ getGreyedOutRowsNotRepresentingOutput()

uint32_t SessionView::getGreyedOutRowsNotRepresentingOutput ( Output * output)
overridevirtual

Reimplemented from RootUI.

◆ getGreyoutColsAndRows()

bool SessionView::getGreyoutColsAndRows ( uint32_t * cols,
uint32_t * rows )
overridevirtual

Reimplemented from UI.

◆ getMaxLength()

uint32_t SessionView::getMaxLength ( )
overridevirtual

Implements TimelineView.

◆ getMaxZoom()

uint32_t SessionView::getMaxZoom ( )
overridevirtual

Implements TimelineView.

◆ getUIModControllableContext()

UIModControllableContext SessionView::getUIModControllableContext ( )
inlineoverridevirtual

What mod controllable context is this UI using? E.g. Automation View can use the Song ModControllable when in Arranger but the Clip ModControllable when in a Clip.

Reimplemented from UI.

◆ getUIType()

UIType SessionView::getUIType ( )
inlineoverridevirtual

What type of UI is this? e.g. UIType::ARRANGER.

Implements UI.

◆ graphicsRoutine()

void SessionView::graphicsRoutine ( )
overridevirtual

Reimplemented from UI.

◆ horizontalEncoderAction()

ActionResult SessionView::horizontalEncoderAction ( int32_t offset)
overridevirtual

Reimplemented from ClipNavigationTimelineView.

◆ midiLearnFlash()

void SessionView::midiLearnFlash ( )
overridevirtual

Reimplemented from RootUI.

◆ modButtonAction()

void SessionView::modButtonAction ( uint8_t whichButton,
bool on )
overridevirtual

Reimplemented from UI.

◆ modEncoderAction()

void SessionView::modEncoderAction ( int32_t whichModEncoder,
int32_t offset )
overridevirtual

Reimplemented from UI.

◆ modEncoderButtonAction()

void SessionView::modEncoderButtonAction ( uint8_t whichModEncoder,
bool on )
overridevirtual

Reimplemented from UI.

◆ noteRowChanged()

void SessionView::noteRowChanged ( InstrumentClip * clip,
NoteRow * noteRow )
overridevirtual

Reimplemented from RootUI.

◆ opened()

bool SessionView::opened ( )
overridevirtual

Reimplemented from UI.

◆ padAction()

ActionResult SessionView::padAction ( int32_t x,
int32_t y,
int32_t velocity )
overridevirtual

Reimplemented from UI.

◆ playbackEnded()

void SessionView::playbackEnded ( )
overridevirtual

Reimplemented from RootUI.

◆ renderMainPads()

bool SessionView::renderMainPads ( uint32_t whichRows,
RGB image[][kDisplayWidth+kSideBarWidth],
uint8_t occupancyMask[][kDisplayWidth+kSideBarWidth],
bool drawUndefinedArea = true )
overridevirtual

Reimplemented from UI.

◆ renderOLED()

void SessionView::renderOLED ( deluge::hid::display::oled_canvas::Canvas & canvas)
overridevirtual

Implements UI.

◆ renderSidebar()

bool SessionView::renderSidebar ( uint32_t whichRows,
RGB image[][kDisplayWidth+kSideBarWidth],
uint8_t occupancyMask[][kDisplayWidth+kSideBarWidth] )
overridevirtual

Reimplemented from UI.

◆ sampleNeedsReRendering()

void SessionView::sampleNeedsReRendering ( Sample * sample)
overridevirtual

Reimplemented from RootUI.

◆ selectEncoderAction()

void SessionView::selectEncoderAction ( int8_t offset)
overridevirtual

Reimplemented from UI.

◆ setupScroll()

bool SessionView::setupScroll ( uint32_t oldScroll)
overridevirtual

Reimplemented from TimelineView.

◆ timerCallback()

ActionResult SessionView::timerCallback ( )
overridevirtual

Reimplemented from UI.

◆ verticalEncoderAction()

ActionResult SessionView::verticalEncoderAction ( int32_t offset,
bool inCardRoutine )
overridevirtual

Reimplemented from UI.


The documentation for this class was generated from the following files: