55class SoundEditor final :
public UI {
58 bool opened()
override;
59 void focusRegained()
override;
60 void displayOrLanguageChanged()
final;
61 bool getGreyoutColsAndRows(uint32_t* cols, uint32_t* rows)
override;
65 int8_t currentSourceIndex;
72 VoicePriority* currentPriority;
73 int16_t currentMultiRangeIndex;
75 deluge::gui::menu_item::RangeEdit editingRangeEdge;
77 ActionResult buttonAction(deluge::hid::Button b,
bool on,
bool inCardRoutine)
override;
78 ActionResult padAction(int32_t x, int32_t y, int32_t velocity)
override;
79 ActionResult verticalEncoderAction(int32_t offset,
bool inCardRoutine)
override;
80 void modEncoderAction(int32_t whichModEncoder, int32_t offset)
override;
81 void modEncoderButtonAction(uint8_t whichModEncoder,
bool on)
override;
82 ActionResult horizontalEncoderAction(int32_t offset)
override;
83 void scrollFinished()
override;
85 bool editingKitAffectEntire();
87 void setCurrentSource(int32_t sourceIndex);
89 ActionResult timerCallback()
override;
90 void setupShortcutBlink(int32_t x, int32_t y, int32_t frequency, int32_t colour = 0L);
91 bool findPatchedParam(int32_t paramLookingFor, int32_t* xout, int32_t* yout,
bool* isSecondLayerParamOut);
92 void updateSourceBlinks(
MenuItem* currentItem);
93 void resetSourceBlinks();
95 uint8_t navigationDepth;
96 uint8_t patchingParamSelected;
97 uint8_t currentParamShortcutX;
98 uint8_t currentParamShortcutY;
99 uint8_t currentParamColour;
100 uint8_t paramShortcutBlinkFrequency;
101 uint32_t shortcutBlinkCounter;
103 uint32_t timeLastAttemptedAutomatedParamEdit;
105 int8_t numberScrollAmount;
106 uint32_t numberEditSize;
107 int8_t numberEditPos;
109 uint8_t shortcutsVersion;
111 MenuItem* menuItemNavigationRecord[16];
113 bool shouldGoUpOneLevelOnBegin;
114 bool secondLayerShortcutsToggled;
115 bool secondLayerModSourceShortcutsToggled;
117 bool programChangeReceived(
MIDICable& cable, uint8_t channel, uint8_t program) {
return false; }
118 bool midiCCReceived(
MIDICable& cable, uint8_t channel, uint8_t ccNumber, uint8_t value);
119 bool pitchBendReceived(
MIDICable& cable, uint8_t channel, uint8_t data1, uint8_t data2);
120 void selectEncoderAction(int8_t offset)
override;
121 bool canSeeViewUnderneath()
override {
return true; }
122 bool setup(
Clip* clip =
nullptr,
const MenuItem* item =
nullptr, int32_t sourceIndex = 0);
123 void enterOrUpdateSoundEditor(
bool on);
124 void blinkShortcut();
125 ActionResult potentialShortcutPadAction(int32_t x, int32_t y,
bool on);
126 bool editingReverbSidechain();
128 bool inSettingsMenu();
129 bool setupKitGlobalFXMenu;
130 ActionResult
exitUI()
override {
return exitCompletely(); };
131 ActionResult exitCompletely();
133 void enterSubmenu(
MenuItem* newItem);
134 bool pcReceivedForMidiLearn(
MIDICable& cable, int32_t channel, int32_t program)
override;
135 bool noteOnReceivedForMidiLearn(
MIDICable& cable, int32_t channel, int32_t note, int32_t velocity)
override;
136 void markInstrumentAsEdited();
137 bool editingCVOrMIDIClip();
138 bool editingNonAudioDrumRow();
139 bool editingMidiDrumRow();
140 bool editingGateDrumRow();
141 bool isUntransposedNoteWithinRange(int32_t noteCode);
142 void setCurrentMultiRange(int32_t i);
143 void possibleChangeToCurrentRangeDisplay();
144 MenuPermission checkPermissionToBeginSessionForRangeSpecificParam(
Sound* sound, int32_t whichThing,
146 void setupExclusiveShortcutBlink(int32_t x, int32_t y);
147 void setShortcutsVersion(int32_t newVersion);
152 void mpeZonesPotentiallyUpdated();
157 UIType
getUIType()
override {
return UIType::SOUND_EDITOR; }
159 bool selectedNoteRow;
163 bool inNoteRowEditor();
164 void toggleNoteEditorParamMenu(int32_t on);
165 void updatePadLightsFor(
MenuItem* item);
169 std::optional<std::span<deluge::gui::menu_item::HorizontalMenu* const>>
170 getCurrentHorizontalMenusChain(
bool checkNavigationDepth =
true);
175 MenuItem const*
const items[kDisplayWidth][kDisplayHeight]);
176 bool beginScreen(
MenuItem* oldMenuItem =
nullptr);
178 uint8_t getActualParamFromScreen(uint8_t screen);
180 ActionResult handleAutomationViewPadAction(int32_t x, int32_t y, int32_t velocity);
181 bool isEditingAutomationViewParam();
183 MenuItem* currentItem,
bool isHorizontalMenu);
185 uint8_t sourceShortcutBlinkFrequencies[2][kDisplayHeight];
186 uint8_t sourceShortcutBlinkColours[2][kDisplayHeight];