52class SoundEditor final :
public UI {
55 bool opened()
override;
56 void focusRegained()
override;
57 void displayOrLanguageChanged()
final;
58 bool getGreyoutColsAndRows(uint32_t* cols, uint32_t* rows)
override;
62 int8_t currentSourceIndex;
69 VoicePriority* currentPriority;
70 int16_t currentMultiRangeIndex;
72 deluge::gui::menu_item::RangeEdit editingRangeEdge;
74 ActionResult buttonAction(deluge::hid::Button b,
bool on,
bool inCardRoutine)
override;
75 ActionResult padAction(int32_t x, int32_t y, int32_t velocity)
override;
76 ActionResult verticalEncoderAction(int32_t offset,
bool inCardRoutine)
override;
77 void modEncoderAction(int32_t whichModEncoder, int32_t offset)
override;
78 void modEncoderButtonAction(uint8_t whichModEncoder,
bool on)
override;
79 ActionResult horizontalEncoderAction(int32_t offset)
override;
80 void scrollFinished()
override;
82 bool editingKitAffectEntire();
85 ActionResult timerCallback()
override;
86 void setupShortcutBlink(int32_t x, int32_t y, int32_t frequency);
87 bool findPatchedParam(int32_t paramLookingFor, int32_t* xout, int32_t* yout);
88 void updateSourceBlinks(
MenuItem* currentItem);
89 void resetSourceBlinks();
91 uint8_t navigationDepth;
92 uint8_t patchingParamSelected;
93 uint8_t currentParamShorcutX;
94 uint8_t currentParamShorcutY;
95 uint8_t paramShortcutBlinkFrequency;
96 uint32_t shortcutBlinkCounter;
98 uint32_t timeLastAttemptedAutomatedParamEdit;
100 int8_t numberScrollAmount;
101 uint32_t numberEditSize;
102 int8_t numberEditPos;
104 uint8_t shortcutsVersion;
106 MenuItem* menuItemNavigationRecord[16];
108 bool shouldGoUpOneLevelOnBegin;
110 bool programChangeReceived(
MIDICable& cable, uint8_t channel, uint8_t program) {
return false; }
111 bool midiCCReceived(
MIDICable& cable, uint8_t channel, uint8_t ccNumber, uint8_t value);
112 bool pitchBendReceived(
MIDICable& cable, uint8_t channel, uint8_t data1, uint8_t data2);
113 void selectEncoderAction(int8_t offset)
override;
114 bool canSeeViewUnderneath()
override {
return true; }
115 bool setup(
Clip* clip =
nullptr,
const MenuItem* item =
nullptr, int32_t sourceIndex = 0);
116 void enterOrUpdateSoundEditor(
bool on);
117 void blinkShortcut();
118 ActionResult potentialShortcutPadAction(int32_t x, int32_t y,
bool on);
119 bool editingReverbSidechain();
121 bool inSettingsMenu();
122 bool setupKitGlobalFXMenu;
127 void exitCompletely();
129 void enterSubmenu(
MenuItem* newItem);
130 bool pcReceivedForMidiLearn(
MIDICable& cable, int32_t channel, int32_t program)
override;
131 bool noteOnReceivedForMidiLearn(
MIDICable& cable, int32_t channel, int32_t note, int32_t velocity)
override;
132 void markInstrumentAsEdited();
133 bool editingCVOrMIDIClip();
134 bool editingNonAudioDrumRow();
135 bool editingMidiDrumRow();
136 bool editingGateDrumRow();
137 bool isUntransposedNoteWithinRange(int32_t noteCode);
138 void setCurrentMultiRange(int32_t i);
139 void possibleChangeToCurrentRangeDisplay();
140 MenuPermission checkPermissionToBeginSessionForRangeSpecificParam(
Sound* sound, int32_t whichThing,
142 void setupExclusiveShortcutBlink(int32_t x, int32_t y);
143 void setShortcutsVersion(int32_t newVersion);
148 void mpeZonesPotentiallyUpdated();
153 UIType getUIType()
override {
return UIType::SOUND_EDITOR; }
155 bool selectedNoteRow;
159 bool inNoteRowEditor();
160 void toggleNoteEditorParamMenu(int32_t on);
161 void updatePadLightsFor(MenuItem* item);
166 MenuItem
const*
const items[kDisplayWidth][kDisplayHeight]);
167 bool beginScreen(MenuItem* oldMenuItem =
nullptr);
168 uint8_t getActualParamFromScreen(uint8_t screen);
170 ActionResult handleAutomationViewPadAction(int32_t x, int32_t y, int32_t velocity);
171 bool isEditingAutomationViewParam();
173 MenuItem* currentItem);
174 bool handleClipName();
176 uint8_t sourceShortcutBlinkFrequencies[2][kDisplayHeight];
177 uint8_t sourceShortcutBlinkColours[2][kDisplayHeight];