54class SoundEditor final :
public UI {
57 bool opened()
override;
58 void focusRegained()
override;
59 void displayOrLanguageChanged()
final;
60 bool getGreyoutColsAndRows(uint32_t* cols, uint32_t* rows)
override;
64 int8_t currentSourceIndex;
71 VoicePriority* currentPriority;
72 int16_t currentMultiRangeIndex;
74 deluge::gui::menu_item::RangeEdit editingRangeEdge;
76 ActionResult buttonAction(deluge::hid::Button b,
bool on,
bool inCardRoutine)
override;
77 ActionResult padAction(int32_t x, int32_t y, int32_t velocity)
override;
78 ActionResult verticalEncoderAction(int32_t offset,
bool inCardRoutine)
override;
79 void modEncoderAction(int32_t whichModEncoder, int32_t offset)
override;
80 void modEncoderButtonAction(uint8_t whichModEncoder,
bool on)
override;
81 ActionResult horizontalEncoderAction(int32_t offset)
override;
82 void scrollFinished()
override;
84 bool editingKitAffectEntire();
87 ActionResult timerCallback()
override;
88 void setupShortcutBlink(int32_t x, int32_t y, int32_t frequency, int32_t colour = 0L);
89 bool findPatchedParam(int32_t paramLookingFor, int32_t* xout, int32_t* yout,
bool* isSecondLayerParamOut);
90 void updateSourceBlinks(
MenuItem* currentItem);
91 void resetSourceBlinks();
93 uint8_t navigationDepth;
94 uint8_t patchingParamSelected;
95 uint8_t currentParamShorcutX;
96 uint8_t currentParamShorcutY;
97 uint8_t currentParamColour;
98 uint8_t paramShortcutBlinkFrequency;
99 uint32_t shortcutBlinkCounter;
101 uint32_t timeLastAttemptedAutomatedParamEdit;
103 int8_t numberScrollAmount;
104 uint32_t numberEditSize;
105 int8_t numberEditPos;
107 uint8_t shortcutsVersion;
109 MenuItem* menuItemNavigationRecord[16];
111 bool shouldGoUpOneLevelOnBegin;
112 bool secondLayerShortcutsToggled;
113 bool secondLayerModSourceShortcutsToggled;
115 bool programChangeReceived(
MIDICable& cable, uint8_t channel, uint8_t program) {
return false; }
116 bool midiCCReceived(
MIDICable& cable, uint8_t channel, uint8_t ccNumber, uint8_t value);
117 bool pitchBendReceived(
MIDICable& cable, uint8_t channel, uint8_t data1, uint8_t data2);
118 void selectEncoderAction(int8_t offset)
override;
119 bool canSeeViewUnderneath()
override {
return true; }
121 int32_t sourceIndex = 0);
122 void enterOrUpdateSoundEditor(
bool on);
123 void blinkShortcut();
124 ActionResult potentialShortcutPadAction(int32_t x, int32_t y,
bool on);
125 bool editingReverbSidechain();
127 bool inSettingsMenu();
128 bool setupKitGlobalFXMenu;
133 void exitCompletely();
135 void enterSubmenu(
MenuItem* newItem);
136 bool pcReceivedForMidiLearn(
MIDICable& cable, int32_t channel, int32_t program)
override;
137 bool noteOnReceivedForMidiLearn(
MIDICable& cable, int32_t channel, int32_t note, int32_t velocity)
override;
138 void markInstrumentAsEdited();
139 bool editingCVOrMIDIClip();
140 bool editingNonAudioDrumRow();
141 bool editingMidiDrumRow();
142 bool editingGateDrumRow();
143 bool isUntransposedNoteWithinRange(int32_t noteCode);
144 void setCurrentMultiRange(int32_t i);
145 void possibleChangeToCurrentRangeDisplay();
146 MenuPermission checkPermissionToBeginSessionForRangeSpecificParam(
Sound* sound, int32_t whichThing,
148 void setupExclusiveShortcutBlink(int32_t x, int32_t y);
149 void setShortcutsVersion(int32_t newVersion);
154 void mpeZonesPotentiallyUpdated();
159 UIType
getUIType()
override {
return UIType::SOUND_EDITOR; }
161 bool selectedNoteRow;
165 bool inNoteRowEditor();
166 void toggleNoteEditorParamMenu(int32_t on);
167 void updatePadLightsFor(
MenuItem* item);
172 MenuItem const*
const items[kDisplayWidth][kDisplayHeight]);
173 bool beginScreen(
MenuItem* oldMenuItem =
nullptr);
175 uint8_t getActualParamFromScreen(uint8_t screen);
177 ActionResult handleAutomationViewPadAction(int32_t x, int32_t y, int32_t velocity);
178 bool isEditingAutomationViewParam();
182 uint8_t sourceShortcutBlinkFrequencies[2][kDisplayHeight];
183 uint8_t sourceShortcutBlinkColours[2][kDisplayHeight];