![]() |
Deluge Firmware 1.3.0
Build date: 2025.08.09
|
Base class for all menu items. More...
#include <menu_item.h>
Public Member Functions | |
MenuItem (deluge::l10n::String newName, deluge::l10n::String newTitle=deluge::l10n::String::EMPTY_STRING) | |
MenuItem (const MenuItem &other)=delete | |
MenuItem (const MenuItem &&other)=delete | |
MenuItem & | operator= (const MenuItem &other)=delete |
MenuItem & | operator= (const MenuItem &&other)=delete |
Input Handling | |
virtual ActionResult | buttonAction (deluge::hid::Button b, bool on, bool inCardRoutine) |
Handle an arbitrary button. | |
virtual void | horizontalEncoderAction (int32_t offset) |
Handle horizontal encoder movement. | |
virtual void | verticalEncoderAction (int32_t offset) |
Handle vertical encoder movement. | |
virtual void | selectEncoderAction (int32_t offset) |
Handle select encoder movement. | |
virtual bool | selectEncoderActionEditsInstrument () |
Used by the sound editor to mark the current instrument as edited when the select encoder is scrolled. | |
virtual MenuItem * | selectButtonPress () |
Handle a select button press. | |
virtual ActionResult | timerCallback () |
Handle a TimerName::UI_SPECIFIC event. | |
virtual bool | usesAffectEntire () |
Claim support for Kit AFFECT_ENTIRE editing. | |
Session Management | |
virtual MenuPermission | checkPermissionToBeginSession (ModControllableAudio *modControllable, int32_t whichThing, MultiRange **currentRange) |
Double-check that this MenuItem will work with the currently selected sound range. | |
virtual void | beginSession (MenuItem *navigatedBackwardFrom=nullptr) |
Begin an editing session with this menu item. | |
virtual void | endSession () |
End an editing session with this menu item. | |
virtual void | readValueAgain () |
Re-read the value from the system and redraw the display to match. | |
virtual void | readCurrentValue () |
Like readValueAgain, but does not redraw. | |
Patching support | |
virtual uint8_t | getIndexOfPatchedParamToBlink () |
virtual deluge::modulation::params::Kind | getParamKind () |
virtual uint32_t | getParamIndex () |
virtual uint8_t | shouldBlinkPatchingSourceShortcut (PatchSource s, uint8_t *colour) |
virtual MenuItem * | patchingSourceShortcutPress (PatchSource s, bool previousPressStillActive=false) |
Action to take when a source shortcut is pressed. | |
Parameter learning | |
virtual void | learnKnob (MIDICable *cable, int32_t whichKnob, int32_t modKnobMode, int32_t midiChannel) |
virtual bool | allowsLearnMode () |
Used by SoundEditor to determine if the current menu item can accept MIDI learning. | |
virtual bool | learnNoteOn (MIDICable &cable, int32_t channel, int32_t noteCode) |
Attempt to bind this menu item to a note code. | |
virtual void | learnProgramChange (MIDICable &cable, int32_t channel, int32_t programNumber) |
virtual void | learnCC (MIDICable &cable, int32_t channel, int32_t ccNumber, int32_t value) |
virtual bool | shouldBlinkLearnLed () |
virtual void | unlearnAction () |
Unlearn the parameter controlled by this menu. | |
virtual bool | isRangeDependent () |
Returns true if this parameter is only relevant to some note ranges. | |
Rendering | |
virtual void | renderOLED () |
Root rendering routine for OLED. | |
virtual void | drawPixelsForOled () |
Paints the pixels below the standard title block. |
Submenu entry support | |
Things that deluge::gui::menu_item::Submenu -like MenuItem s will query. | |
deluge::l10n::String | title |
Can get overridden by getTitle(). Actual max num chars for OLED display is 14. | |
const deluge::l10n::String | name |
Default name for use on OLED for deluge::gui::menu_item::Submenu s. | |
virtual std::string_view | getTitle () const |
Get the title to be used when rendering on OLED, both as a deluge::gui::menu_item::Submenu and when displaying ourselves (using the default renderOLED implementation). | |
virtual uint8_t | shouldDrawDotOnName () |
Get the "draw dot state". | |
virtual void | drawName () |
Draw the name we want to use when selecting this in a deluge::gui::menu_item::Submenu to the 7SEG. | |
virtual std::string_view | getName () const |
Get the actual name for use on OLED for deluge::gui::menu_item::Submenu s. | |
virtual bool | isRelevant (ModControllableAudio *modControllable, int32_t whichThing) |
Check if this MenuItem should show up in a containing deluge::gui::menu_item::Submenu. | |
virtual bool | shouldEnterSubmenu () |
Check if selecting this menu item (with select encoder) should enter a submenu. | |
virtual int32_t | getSubmenuItemTypeRenderLength () |
Handle rendering of submenu item types. | |
virtual int32_t | getSubmenuItemTypeRenderIconStart () |
virtual void | renderSubmenuItemTypeForOled (int32_t yPixel) |
virtual bool | isSubmenu () |
virtual void | setupNumberEditor () |
virtual void | updatePadLights () |
virtual void | updateAutomationViewParameter () |
static void | drawItemsForOled (std::span< std::string_view > options, int32_t selectedOption, int32_t offset=0) |
Internal helper which can draw the standard deluge::gui::menu_item::Submenu layout. |
Horizontal menus | |
Get the name for use on Horizontal menus. By default this redirects to getName(), but can be overridden. | |
deluge::gui::menu_item::Submenu * | parent {nullptr} |
virtual void | getColumnLabel (StringBuf &label) |
virtual bool | showColumnLabel () const |
Show a label for the parameter in Horizontal menu. | |
virtual int32_t | getColumnSpan () const |
Get the number of occupied virtual columns in Horizontal menu. | |
virtual bool | showNotification () const |
Show a popup with the full name and value of the editing parameter at the top of Horizontal menu. | |
virtual bool | allowToBeginSessionFromHorizontalMenu () |
Allow entering menu session by selecting the menu item twice in Horizontal menu. | |
virtual void | getNotificationValue (StringBuf &valueBuf) |
Get the parameter value string to show in the popup. | |
virtual void | renderInHorizontalMenu (int32_t startX, int32_t width, int32_t startY, int32_t height) |
Base class for all menu items.
|
inlinevirtual |
Used by SoundEditor to determine if the current menu item can accept MIDI learning.
Reimplemented in deluge::gui::menu_item::audio_clip::Transpose, deluge::gui::menu_item::MasterTranspose, deluge::gui::menu_item::midi::Command, deluge::gui::menu_item::midi::FollowChannel, deluge::gui::menu_item::midi::FollowKitRootNote, deluge::gui::menu_item::PatchCableStrength, deluge::gui::menu_item::patched_param::Integer, deluge::gui::menu_item::Submenu, deluge::gui::menu_item::Transpose, and deluge::gui::menu_item::UnpatchedParam.
|
inlinenodiscardvirtual |
Allow entering menu session by selecting the menu item twice in Horizontal menu.
false by default, but can be overridden
Reimplemented in deluge::gui::menu_item::audio_clip::SampleMarkerEditor, deluge::gui::menu_item::FileSelector, deluge::gui::menu_item::osc::AudioRecorder, deluge::gui::menu_item::sample::End, and deluge::gui::menu_item::sample::Start.
|
inlinevirtual |
Begin an editing session with this menu item.
Should make sure the menu's internal state matches the system and redraw the display.
Reimplemented in deluge::gui::menu_item::ActiveScaleMenu, deluge::gui::menu_item::audio_clip::SampleMarkerEditor, deluge::gui::menu_item::audio_clip::SpecificSourceOutputSelector, deluge::gui::menu_item::cv::Selection, deluge::gui::menu_item::Decimal, deluge::gui::menu_item::DxBrowseMenu, deluge::gui::menu_item::DxCartridge, deluge::gui::menu_item::DxEngineSelect, deluge::gui::menu_item::DxGlobalParams, deluge::gui::menu_item::DxOperatorParams, deluge::gui::menu_item::DxParam, deluge::gui::menu_item::EditName, deluge::gui::menu_item::Enumeration, deluge::gui::menu_item::FileSelector, deluge::gui::menu_item::firmware::Version, deluge::gui::menu_item::gate::Selection, deluge::gui::menu_item::HorizontalMenu, deluge::gui::menu_item::HorizontalMenuCombined, deluge::gui::menu_item::IntegerRange, deluge::gui::menu_item::midi::Command, deluge::gui::menu_item::midi::Devices, deluge::gui::menu_item::mpe::DirectionSelector, deluge::gui::menu_item::mpe::ZoneSelector, deluge::gui::menu_item::MultiRange, deluge::gui::menu_item::note::Fill, deluge::gui::menu_item::note::IteranceDivisor, deluge::gui::menu_item::note::IterancePreset, deluge::gui::menu_item::note::Probability, deluge::gui::menu_item::note::Velocity, deluge::gui::menu_item::note_row::Fill, deluge::gui::menu_item::note_row::IteranceDivisor, deluge::gui::menu_item::note_row::IterancePreset, deluge::gui::menu_item::note_row::Probability, deluge::gui::menu_item::osc::AudioRecorder, deluge::gui::menu_item::osc::Type, deluge::gui::menu_item::PatchCables, deluge::gui::menu_item::PatchCableStrength, deluge::gui::menu_item::Range, deluge::gui::menu_item::sample::LoopPoint, deluge::gui::menu_item::source_selection::Regular, deluge::gui::menu_item::SourceSelection, deluge::gui::menu_item::Submenu, deluge::gui::menu_item::submenu::ReverbSidechain, deluge::gui::menu_item::submenu::Sidechain, deluge::gui::menu_item::Toggle, deluge::gui::menu_item::Value< T >, deluge::gui::menu_item::Value< bool >, and deluge::gui::menu_item::Value< int32_t >.
|
inlinevirtual |
Handle an arbitrary button.
The returned result is forwarded up the View stack, so returning ActionResult::DEALT_WITH will suppress buttons going to the current View.
This is called with (b == SELECT_ENC && on) immediately after the menu is entered, or after selectButtonPress is called and returns NO_NAVIGATION.
Reimplemented in deluge::gui::menu_item::HorizontalMenu, deluge::gui::menu_item::PatchCableStrength, deluge::gui::menu_item::patched_param::Integer, deluge::gui::menu_item::Submenu, and deluge::gui::menu_item::UnpatchedParam.
|
virtual |
Draw the name we want to use when selecting this in a deluge::gui::menu_item::Submenu to the 7SEG.
This is based on getName and shouldDrawDotOnName.
Reimplemented in deluge::gui::menu_item::ActiveScaleMenu, deluge::gui::menu_item::defaults::DefaultScale, and deluge::gui::menu_item::submenu::ActualSource.
|
inlinevirtual |
Paints the pixels below the standard title block.
Reimplemented in deluge::gui::menu_item::ActiveScaleMenu, deluge::gui::menu_item::audio_clip::SpecificSourceOutputSelector, deluge::gui::menu_item::cv::Volts, deluge::gui::menu_item::Decimal, deluge::gui::menu_item::DecimalWithoutScrolling, deluge::gui::menu_item::defaults::Magnitude, deluge::gui::menu_item::DxCartridge, deluge::gui::menu_item::DxEngineSelect, deluge::gui::menu_item::DxGlobalParams, deluge::gui::menu_item::DxOperatorParams, deluge::gui::menu_item::DxParam, deluge::gui::menu_item::Enumeration, deluge::gui::menu_item::firmware::Version, deluge::gui::menu_item::Integer, deluge::gui::menu_item::IntegerContinuous, deluge::gui::menu_item::IntegerWithOff, deluge::gui::menu_item::midi::Command, deluge::gui::menu_item::midi::Devices, deluge::gui::menu_item::MultiRange, deluge::gui::menu_item::note::Fill, deluge::gui::menu_item::note::IterancePreset, deluge::gui::menu_item::note::Probability, deluge::gui::menu_item::note_row::Fill, deluge::gui::menu_item::note_row::IterancePreset, deluge::gui::menu_item::note_row::Probability, deluge::gui::menu_item::osc::RetriggerPhase, deluge::gui::menu_item::PatchCables, deluge::gui::menu_item::Range, deluge::gui::menu_item::reverb::sidechain::Volume, deluge::gui::menu_item::Selection, deluge::gui::menu_item::SourceSelection, deluge::gui::menu_item::stutter::Rate, deluge::gui::menu_item::Submenu, deluge::gui::menu_item::SyncLevel, and deluge::gui::menu_item::Toggle.
|
virtual |
End an editing session with this menu item.
Reimplemented in deluge::gui::menu_item::HorizontalMenu, and deluge::gui::menu_item::PatchCableStrength.
|
inlinenodiscardvirtual |
Get the number of occupied virtual columns in Horizontal menu.
1 by default, but can be overridden
Reimplemented in deluge::gui::menu_item::arpeggiator::midi_cv::Rhythm, deluge::gui::menu_item::arpeggiator::Randomizer, deluge::gui::menu_item::arpeggiator::Rhythm, deluge::gui::menu_item::audio_compressor::Blend, deluge::gui::menu_item::FilterRouting, deluge::gui::menu_item::mod_fx::Type, deluge::gui::menu_item::osc::AudioRecorder, deluge::gui::menu_item::Submenu, and deluge::gui::menu_item::SyncLevel.
|
inlinevirtual |
Reimplemented in deluge::gui::menu_item::PatchCableStrength, and deluge::gui::menu_item::SourceSelection.
|
inlinenodiscardvirtual |
Get the actual name for use on OLED for deluge::gui::menu_item::Submenu s.
By default this is just the l10n string for name, but can be overriden.
Reimplemented in deluge::gui::menu_item::envelope::EnvelopeMenu, deluge::gui::menu_item::filter::FilterParam, deluge::gui::menu_item::filter::UnpatchedFilterParam, deluge::gui::menu_item::mod_fx::Depth_Patched, deluge::gui::menu_item::mod_fx::Depth_Unpatched, deluge::gui::menu_item::mod_fx::Feedback, deluge::gui::menu_item::mod_fx::Offset, deluge::gui::menu_item::osc::AudioRecorder, deluge::gui::menu_item::osc::source::Volume, deluge::gui::menu_item::reverb::RoomSize, deluge::gui::menu_item::reverb::Width, deluge::gui::menu_item::runtime_feature::DevSysexSetting, deluge::gui::menu_item::runtime_feature::Setting, deluge::gui::menu_item::source::patched_param::ModulatorLevel, and deluge::gui::menu_item::submenu::ActualSource.
|
inlinevirtual |
Get the parameter value string to show in the popup.
Needs to be overridden
Reimplemented in deluge::gui::menu_item::arpeggiator::midi_cv::SequenceLength, deluge::gui::menu_item::arpeggiator::SequenceLength, deluge::gui::menu_item::audio_clip::Reverse, deluge::gui::menu_item::Decimal, deluge::gui::menu_item::DecimalWithoutScrolling, deluge::gui::menu_item::Enumeration, deluge::gui::menu_item::Number, deluge::gui::menu_item::osc::RetriggerPhase, deluge::gui::menu_item::PatchCableStrength, deluge::gui::menu_item::reverb::sidechain::Volume, deluge::gui::menu_item::sample::Reverse, deluge::gui::menu_item::Selection, deluge::gui::menu_item::stutter::Rate, deluge::gui::menu_item::stutter::StutterDirection, and deluge::gui::menu_item::voice::VoiceCount.
|
inlinevirtual |
Reimplemented in deluge::gui::menu_item::MasterTranspose, deluge::gui::menu_item::PatchCableStrength, deluge::gui::menu_item::Submenu, deluge::gui::menu_item::Transpose, and deluge::gui::menu_item::UnpatchedParam.
|
inlinevirtual |
Declares which parameter we intend to edit. SoundEditor uses this to find which shortcut pad to blink based on paramShortcutsForSounds.
Reimplemented in deluge::gui::menu_item::PatchCableStrength, deluge::gui::menu_item::Submenu, and deluge::gui::menu_item::UnpatchedParam.
|
inlinenodiscardvirtual |
Get the title to be used when rendering on OLED, both as a deluge::gui::menu_item::Submenu and when displaying ourselves (using the default renderOLED implementation).
If not overridden, defaults to returning title.
The returned pointer must live long enough for us to draw the title, which for practical purposes means "the lifetime of this menu item"
Reimplemented in deluge::gui::menu_item::cv::Submenu, deluge::gui::menu_item::cv::Transpose, deluge::gui::menu_item::cv::Volts, deluge::gui::menu_item::DxOperatorParams, deluge::gui::menu_item::DxParam, deluge::gui::menu_item::envelope::EnvelopeMenu, deluge::gui::menu_item::envelope::Segment, deluge::gui::menu_item::filter::FilterParam, deluge::gui::menu_item::filter::UnpatchedFilterParam, deluge::gui::menu_item::gate::Mode, deluge::gui::menu_item::HorizontalMenuCombined, deluge::gui::menu_item::lfo::Sync, deluge::gui::menu_item::lfo::Type, deluge::gui::menu_item::midi::Device, deluge::gui::menu_item::mod_fx::Depth_Patched, deluge::gui::menu_item::mod_fx::Depth_Unpatched, deluge::gui::menu_item::mod_fx::Feedback, deluge::gui::menu_item::mod_fx::Offset, deluge::gui::menu_item::modulator::Transpose, deluge::gui::menu_item::mpe::DirectionSelector, deluge::gui::menu_item::mpe::ZoneNumMemberChannels, deluge::gui::menu_item::MultiRange, deluge::gui::menu_item::osc::AudioRecorder, deluge::gui::menu_item::osc::PulseWidth, deluge::gui::menu_item::osc::RetriggerPhase, deluge::gui::menu_item::osc::source::Feedback, deluge::gui::menu_item::osc::source::Volume, deluge::gui::menu_item::osc::source::WaveIndex, deluge::gui::menu_item::osc::Type, deluge::gui::menu_item::reverb::RoomSize, deluge::gui::menu_item::reverb::Width, deluge::gui::menu_item::runtime_feature::DevSysexSetting, deluge::gui::menu_item::runtime_feature::Setting, deluge::gui::menu_item::sample::Interpolation, deluge::gui::menu_item::sample::Repeat, deluge::gui::menu_item::sample::Reverse, deluge::gui::menu_item::sample::TimeStretch, deluge::gui::menu_item::sample::Transpose, deluge::gui::menu_item::source::patched_param::ModulatorFeedback, deluge::gui::menu_item::source::patched_param::ModulatorLevel, deluge::gui::menu_item::source_selection::Range, deluge::gui::menu_item::source_selection::Regular, deluge::gui::menu_item::submenu::ActualSource, and deluge::gui::menu_item::submenu::ModFxHorizontalMenu.
|
inlinevirtual |
Handle horizontal encoder movement.
offset | must be either -1 or 1, jumping is not supported by many children. |
Reimplemented in deluge::gui::menu_item::cv::Volts, deluge::gui::menu_item::Decimal, deluge::gui::menu_item::DecimalWithoutScrolling, deluge::gui::menu_item::DxParam, deluge::gui::menu_item::osc::RetriggerPhase, deluge::gui::menu_item::PatchCableStrength, deluge::gui::menu_item::patched_param::Integer, deluge::gui::menu_item::Range, and deluge::gui::menu_item::UnpatchedParam.
|
inlinevirtual |
Returns true if this parameter is only relevant to some note ranges.
Reimplemented in deluge::gui::menu_item::MultiRange, deluge::gui::menu_item::sample::LoopPoint, and deluge::gui::menu_item::sample::Transpose.
|
inlinevirtual |
Check if this MenuItem should show up in a containing deluge::gui::menu_item::Submenu.
sound | Sound we would edit if we were to be entered. |
whichThing | Source index within the sound. Usually ignored, but matters for e.g. oscillator and FM modulator parameters. |
Reimplemented in deluge::gui::menu_item::arpeggiator::ArpMpeVelocity, deluge::gui::menu_item::arpeggiator::ArpNonKitSoundUnpatchedParam, deluge::gui::menu_item::arpeggiator::ArpSoundOnlyUnpatchedParam, deluge::gui::menu_item::arpeggiator::ArpUnpatchedParam, deluge::gui::menu_item::arpeggiator::ChordType, deluge::gui::menu_item::arpeggiator::IncludeInKitArp, deluge::gui::menu_item::arpeggiator::KitRate, deluge::gui::menu_item::arpeggiator::midi_cv::ArpNonSoundInteger, deluge::gui::menu_item::arpeggiator::midi_cv::BassProbability, deluge::gui::menu_item::arpeggiator::midi_cv::ChordPolyphony, deluge::gui::menu_item::arpeggiator::midi_cv::ChordProbability, deluge::gui::menu_item::arpeggiator::midi_cv::GlideProbability, deluge::gui::menu_item::arpeggiator::midi_cv::SpreadOctave, deluge::gui::menu_item::arpeggiator::midi_cv::SpreadVelocity, deluge::gui::menu_item::arpeggiator::midi_cv::SwapProbability, deluge::gui::menu_item::arpeggiator::NoteMode, deluge::gui::menu_item::arpeggiator::NoteModeForDrums, deluge::gui::menu_item::arpeggiator::OctaveMode, deluge::gui::menu_item::arpeggiator::Octaves, deluge::gui::menu_item::arpeggiator::Rate, deluge::gui::menu_item::arpeggiator::Rhythm, deluge::gui::menu_item::arpeggiator::StepRepeat, deluge::gui::menu_item::audio_clip::Reverse, deluge::gui::menu_item::audio_clip::SampleMarkerEditor, deluge::gui::menu_item::audio_clip::SpecificSourceOutputSelector, deluge::gui::menu_item::audio_clip::Transpose, deluge::gui::menu_item::AudioInterpolation, deluge::gui::menu_item::bend_range::PerFinger, deluge::gui::menu_item::cv::DualCVSelection, deluge::gui::menu_item::FileSelector, deluge::gui::menu_item::filter::FilterParam, deluge::gui::menu_item::filter::UnpatchedFilterParam, deluge::gui::menu_item::midi::device_definition::DeviceDefinitionSubmenu, deluge::gui::menu_item::midi::device_definition::Linked, deluge::gui::menu_item::midi::MPEYToModWheel, deluge::gui::menu_item::midi::Preset, deluge::gui::menu_item::midi::ProgramSubMenu, deluge::gui::menu_item::midi::sound::OutputMidiNoteForDrum, deluge::gui::menu_item::mod_fx::Depth_Patched, deluge::gui::menu_item::mod_fx::Depth_Unpatched, deluge::gui::menu_item::mod_fx::Feedback, deluge::gui::menu_item::mod_fx::Offset, deluge::gui::menu_item::mod_fx::Rate, deluge::gui::menu_item::mod_fx::Rate_Unpatched, deluge::gui::menu_item::modulator::Destination, deluge::gui::menu_item::modulator::Transpose, deluge::gui::menu_item::note::IteranceStepToggle, deluge::gui::menu_item::note_row::IteranceStepToggle, deluge::gui::menu_item::osc::AudioRecorder, deluge::gui::menu_item::osc::PulseWidth, deluge::gui::menu_item::osc::RetriggerPhase, deluge::gui::menu_item::osc::source::Feedback, deluge::gui::menu_item::osc::source::Volume, deluge::gui::menu_item::osc::source::WaveIndex, deluge::gui::menu_item::osc::Sync, deluge::gui::menu_item::osc::Type, deluge::gui::menu_item::patched_param::IntegerNonFM, deluge::gui::menu_item::reverb::HPF, deluge::gui::menu_item::reverb::LPF, deluge::gui::menu_item::reverb::sidechain::Shape, deluge::gui::menu_item::sample::Interpolation, deluge::gui::menu_item::sample::LoopPoint, deluge::gui::menu_item::sample::PitchSpeed, deluge::gui::menu_item::sample::Repeat, deluge::gui::menu_item::sample::Reverse, deluge::gui::menu_item::sample::TimeStretch, deluge::gui::menu_item::sample::Transpose, deluge::gui::menu_item::sidechain::Attack, deluge::gui::menu_item::sidechain::Release, deluge::gui::menu_item::sidechain::Send, deluge::gui::menu_item::sidechain::Sync, deluge::gui::menu_item::song::ConfigureMacros, deluge::gui::menu_item::song::MidiLearn, deluge::gui::menu_item::source::patched_param::ModulatorFeedback, deluge::gui::menu_item::source::patched_param::ModulatorLevel, deluge::gui::menu_item::stutter::QuantizedStutter, deluge::gui::menu_item::submenu::ArpMpeSubmenu, deluge::gui::menu_item::submenu::Bend, deluge::gui::menu_item::submenu::Modulator, deluge::gui::menu_item::submenu::PolyMonoConversion, deluge::gui::menu_item::SynthModeSelection, and deluge::gui::menu_item::voice::VoiceCount.
|
inlinevirtual |
Learn a mod knob to the parameter edited by this menu.
cable | The MIDI cable to learn from, or null if a mod knob is to be learned. |
Reimplemented in deluge::gui::menu_item::audio_clip::Transpose, deluge::gui::menu_item::MasterTranspose, deluge::gui::menu_item::PatchCableStrength, deluge::gui::menu_item::patched_param::Integer, deluge::gui::menu_item::Submenu, and deluge::gui::menu_item::UnpatchedParam.
|
inlinevirtual |
Attempt to bind this menu item to a note code.
Reimplemented in deluge::gui::menu_item::midi::Command, deluge::gui::menu_item::midi::FollowChannel, deluge::gui::menu_item::midi::FollowKitRootNote, and deluge::gui::menu_item::Submenu.
|
inlinevirtual |
Action to take when a source shortcut is pressed.
Potentially reconfigures some SoundEditor state so patching will work.
s | The source being pressed. |
previousPressStillActive | True if there is another patch source press still active. Useful to set up cable strength modulation. |
Reimplemented in deluge::gui::menu_item::MasterTranspose, deluge::gui::menu_item::patch_cable_strength::Fixed, deluge::gui::menu_item::patch_cable_strength::Range, deluge::gui::menu_item::patch_cable_strength::Regular, deluge::gui::menu_item::patched_param::Integer, deluge::gui::menu_item::source_selection::Range, deluge::gui::menu_item::source_selection::Regular, deluge::gui::menu_item::Submenu, and deluge::gui::menu_item::Transpose.
|
inlinevirtual |
Like readValueAgain, but does not redraw.
Reimplemented in deluge::gui::menu_item::arpeggiator::ArpMpeVelocity, deluge::gui::menu_item::arpeggiator::ChordType, deluge::gui::menu_item::arpeggiator::IncludeInKitArp, deluge::gui::menu_item::arpeggiator::midi_cv::BassProbability, deluge::gui::menu_item::arpeggiator::midi_cv::ChordPolyphony, deluge::gui::menu_item::arpeggiator::midi_cv::ChordProbability, deluge::gui::menu_item::arpeggiator::midi_cv::Gate, deluge::gui::menu_item::arpeggiator::midi_cv::GlideProbability, deluge::gui::menu_item::arpeggiator::midi_cv::NoteProbability, deluge::gui::menu_item::arpeggiator::midi_cv::RatchetAmount, deluge::gui::menu_item::arpeggiator::midi_cv::RatchetProbability, deluge::gui::menu_item::arpeggiator::midi_cv::Rate, deluge::gui::menu_item::arpeggiator::midi_cv::Rhythm, deluge::gui::menu_item::arpeggiator::midi_cv::SequenceLength, deluge::gui::menu_item::arpeggiator::midi_cv::SpreadGate, deluge::gui::menu_item::arpeggiator::midi_cv::SpreadOctave, deluge::gui::menu_item::arpeggiator::midi_cv::SpreadVelocity, deluge::gui::menu_item::arpeggiator::midi_cv::SwapProbability, deluge::gui::menu_item::arpeggiator::Mode, deluge::gui::menu_item::arpeggiator::NoteMode, deluge::gui::menu_item::arpeggiator::NoteModeForDrums, deluge::gui::menu_item::arpeggiator::NoteModeFromOctaveMode, deluge::gui::menu_item::arpeggiator::NoteModeFromOctaveModeForDrums, deluge::gui::menu_item::arpeggiator::OctaveMode, deluge::gui::menu_item::arpeggiator::OctaveModeToNoteMode, deluge::gui::menu_item::arpeggiator::OctaveModeToNoteModeForDrums, deluge::gui::menu_item::arpeggiator::Octaves, deluge::gui::menu_item::arpeggiator::PresetMode, deluge::gui::menu_item::arpeggiator::RandomizerLock, deluge::gui::menu_item::arpeggiator::StepRepeat, deluge::gui::menu_item::arpeggiator::Sync, deluge::gui::menu_item::audio_clip::Attack, deluge::gui::menu_item::audio_clip::Reverse, deluge::gui::menu_item::audio_clip::Transpose, deluge::gui::menu_item::audio_compressor::CompParam, deluge::gui::menu_item::audio_compressor::CompressorValue, deluge::gui::menu_item::AudioInterpolation, deluge::gui::menu_item::bend_range::Main, deluge::gui::menu_item::bend_range::PerFinger, deluge::gui::menu_item::Colour, deluge::gui::menu_item::cv::DualCVSelection, deluge::gui::menu_item::cv::Transpose, deluge::gui::menu_item::cv::Volts, deluge::gui::menu_item::defaults::AccessibilityMenuHighlighting, deluge::gui::menu_item::defaults::BendRange, deluge::gui::menu_item::defaults::DefaultFavouritesLayout, deluge::gui::menu_item::defaults::DefaultGridDefaultActiveMode, deluge::gui::menu_item::defaults::DefaultScale, deluge::gui::menu_item::defaults::HoldTime, deluge::gui::menu_item::defaults::KeyboardLayout, deluge::gui::menu_item::defaults::Magnitude, deluge::gui::menu_item::defaults::MetronomeVolume, deluge::gui::menu_item::defaults::PadBrightness, deluge::gui::menu_item::defaults::PatchCablePolarity, deluge::gui::menu_item::defaults::SessionLayout, deluge::gui::menu_item::defaults::SliceMode, deluge::gui::menu_item::defaults::StartupSongModeMenu, deluge::gui::menu_item::defaults::SwingInterval, deluge::gui::menu_item::defaults::ui::clip_type::DefaultNewClipType, deluge::gui::menu_item::defaults::Velocity, deluge::gui::menu_item::delay::Analog, deluge::gui::menu_item::delay::PingPong, deluge::gui::menu_item::delay::Sync, deluge::gui::menu_item::filter::FilterModeSelection, deluge::gui::menu_item::FilterRouting, deluge::gui::menu_item::flash::Status, deluge::gui::menu_item::fx::Clipping, deluge::gui::menu_item::gate::Mode, deluge::gui::menu_item::gate::OffTime, deluge::gui::menu_item::InvertedToggleBool, deluge::gui::menu_item::InvertedToggleBoolDyn, deluge::gui::menu_item::keyboard::Layout, deluge::gui::menu_item::lfo::Sync, deluge::gui::menu_item::lfo::Type, deluge::gui::menu_item::MasterTranspose, deluge::gui::menu_item::midi::AftertouchToMono, deluge::gui::menu_item::midi::Bank, deluge::gui::menu_item::midi::DefaultVelocityToLevel, deluge::gui::menu_item::midi::device_definition::Linked, deluge::gui::menu_item::midi::FollowChannel, deluge::gui::menu_item::midi::FollowFeedbackAutomation, deluge::gui::menu_item::midi::FollowFeedbackChannelType, deluge::gui::menu_item::midi::FollowKitRootNote, deluge::gui::menu_item::midi::MPEToMono, deluge::gui::menu_item::midi::MPEYToModWheel, deluge::gui::menu_item::midi::PGM, deluge::gui::menu_item::midi::SendClock, deluge::gui::menu_item::midi::sound::OutputMidiChannel, deluge::gui::menu_item::midi::sound::OutputMidiNoteForDrum, deluge::gui::menu_item::midi::Sub, deluge::gui::menu_item::midi::Takeover, deluge::gui::menu_item::midi::Transpose, deluge::gui::menu_item::mod_fx::Type, deluge::gui::menu_item::modulator::Destination, deluge::gui::menu_item::modulator::Transpose, deluge::gui::menu_item::monitor::Mode, deluge::gui::menu_item::mpe::DirectionSelector, deluge::gui::menu_item::mpe::ZoneNumMemberChannels, deluge::gui::menu_item::mpe::ZoneSelector, deluge::gui::menu_item::note::Fill, deluge::gui::menu_item::note::IteranceDivisor, deluge::gui::menu_item::note::IterancePreset, deluge::gui::menu_item::note::IteranceStepToggle, deluge::gui::menu_item::note::Probability, deluge::gui::menu_item::note::Velocity, deluge::gui::menu_item::note_row::Fill, deluge::gui::menu_item::note_row::IteranceDivisor, deluge::gui::menu_item::note_row::IterancePreset, deluge::gui::menu_item::note_row::IteranceStepToggle, deluge::gui::menu_item::note_row::Probability, deluge::gui::menu_item::osc::PulseWidth, deluge::gui::menu_item::osc::RetriggerPhase, deluge::gui::menu_item::osc::Sync, deluge::gui::menu_item::osc::Type, deluge::gui::menu_item::PatchCableStrength, deluge::gui::menu_item::patched_param::Integer, deluge::gui::menu_item::patched_param::Pan, deluge::gui::menu_item::performance_session_view::EditingMode, deluge::gui::menu_item::record::CountIn, deluge::gui::menu_item::record::LoopCommand, deluge::gui::menu_item::record::Quantize, deluge::gui::menu_item::record::ThresholdMode, deluge::gui::menu_item::reverb::Damping, deluge::gui::menu_item::reverb::HPF, deluge::gui::menu_item::reverb::LPF, deluge::gui::menu_item::reverb::Model, deluge::gui::menu_item::reverb::Pan, deluge::gui::menu_item::reverb::RoomSize, deluge::gui::menu_item::reverb::sidechain::Shape, deluge::gui::menu_item::reverb::sidechain::Volume, deluge::gui::menu_item::reverb::Width, deluge::gui::menu_item::runtime_feature::DevSysexSetting, deluge::gui::menu_item::runtime_feature::Setting, deluge::gui::menu_item::sample::browser_preview::Mode, deluge::gui::menu_item::sample::Interpolation, deluge::gui::menu_item::sample::PitchSpeed, deluge::gui::menu_item::sample::Repeat, deluge::gui::menu_item::sample::Reverse, deluge::gui::menu_item::sample::TimeStretch, deluge::gui::menu_item::sample::Transpose, deluge::gui::menu_item::sequence::Direction, deluge::gui::menu_item::shortcuts::Version, deluge::gui::menu_item::sidechain::Attack, deluge::gui::menu_item::sidechain::Release, deluge::gui::menu_item::sidechain::Send, deluge::gui::menu_item::sidechain::Sync, deluge::gui::menu_item::stutter::QuantizedStutter, deluge::gui::menu_item::stutter::StutterDirection, deluge::gui::menu_item::swing::Interval, deluge::gui::menu_item::SynthModeSelection, deluge::gui::menu_item::ToggleBool, deluge::gui::menu_item::ToggleBoolDyn, deluge::gui::menu_item::trigger::in::PPQN, deluge::gui::menu_item::trigger::out::PPQN, deluge::gui::menu_item::unison::Count, deluge::gui::menu_item::unison::Detune, deluge::gui::menu_item::unison::StereoSpread, deluge::gui::menu_item::unpatched_param::Pan, deluge::gui::menu_item::UnpatchedParam, deluge::gui::menu_item::voice::PolyphonyType, deluge::gui::menu_item::voice::Priority, and deluge::gui::menu_item::voice::VoiceCount.
|
inlinevirtual |
Re-read the value from the system and redraw the display to match.
Reimplemented in deluge::gui::menu_item::ActiveScaleMenu, deluge::gui::menu_item::DxCartridge, deluge::gui::menu_item::DxEngineSelect, deluge::gui::menu_item::DxGlobalParams, deluge::gui::menu_item::DxOperatorParams, deluge::gui::menu_item::DxParam, deluge::gui::menu_item::PatchCables, deluge::gui::menu_item::SourceSelection, deluge::gui::menu_item::Submenu, deluge::gui::menu_item::Value< T >, deluge::gui::menu_item::Value< bool >, and deluge::gui::menu_item::Value< int32_t >.
|
virtual |
Root rendering routine for OLED.
If you want a title, you probably want to override drawPixelsForOled instead or you will need to paint the title yourself. Uses the title from getTitle() when rendering.
Reimplemented in deluge::gui::menu_item::HorizontalMenu, and deluge::gui::menu_item::PatchCableStrength.
|
inlinevirtual |
Handle a select button press.
Reimplemented in deluge::gui::menu_item::ActiveScaleMenu, deluge::gui::menu_item::arpeggiator::OctaveModeToNoteMode, deluge::gui::menu_item::arpeggiator::OctaveModeToNoteModeForDrums, deluge::gui::menu_item::arpeggiator::PresetMode, deluge::gui::menu_item::audio_clip::AudioSourceSelector, deluge::gui::menu_item::audio_clip::SetClipLengthEqualToSampleLength, deluge::gui::menu_item::cv::Selection, deluge::gui::menu_item::DxCartridge, deluge::gui::menu_item::DxEngineSelect, deluge::gui::menu_item::DxGlobalParams, deluge::gui::menu_item::DxOperatorParams, deluge::gui::menu_item::gate::Selection, deluge::gui::menu_item::MasterTranspose, deluge::gui::menu_item::midi::Devices, deluge::gui::menu_item::mpe::DirectionSelector, deluge::gui::menu_item::mpe::ZoneSelector, deluge::gui::menu_item::MultiRange, deluge::gui::menu_item::note::IterancePreset, deluge::gui::menu_item::note_row::IterancePreset, deluge::gui::menu_item::osc::Type, deluge::gui::menu_item::PatchCables, deluge::gui::menu_item::PatchCableStrength, deluge::gui::menu_item::patched_param::Integer, deluge::gui::menu_item::performance_session_view::EditingMode, deluge::gui::menu_item::Selection, deluge::gui::menu_item::song::ConfigureMacros, deluge::gui::menu_item::song::MidiLearn, deluge::gui::menu_item::source_selection::Range, deluge::gui::menu_item::source_selection::Regular, deluge::gui::menu_item::stem_export::Start, deluge::gui::menu_item::Submenu, deluge::gui::menu_item::Toggle, deluge::gui::menu_item::Transpose, deluge::gui::menu_item::unison::CountToStereoSpread, deluge::gui::menu_item::UnpatchedParam, and deluge::gui::menu_item::voice::PolyphonyType.
|
inlinevirtual |
Handle select encoder movement.
Child classes which override this should be careful to handle offsets larger than 1, as holding shift and scrolling will increase them.
Reimplemented in deluge::gui::menu_item::ActiveScaleMenu, deluge::gui::menu_item::audio_clip::Reverse, deluge::gui::menu_item::audio_clip::SpecificSourceOutputSelector, deluge::gui::menu_item::Decimal, deluge::gui::menu_item::DecimalWithoutScrolling, deluge::gui::menu_item::defaults::PadBrightness, deluge::gui::menu_item::DxCartridge, deluge::gui::menu_item::DxEngineSelect, deluge::gui::menu_item::DxGlobalParams, deluge::gui::menu_item::DxOperatorParams, deluge::gui::menu_item::DxParam, deluge::gui::menu_item::Enumeration, deluge::gui::menu_item::HorizontalMenu, deluge::gui::menu_item::HorizontalMenuCombined, deluge::gui::menu_item::Integer, deluge::gui::menu_item::IntegerRange, deluge::gui::menu_item::KeyRange, deluge::gui::menu_item::midi::Command, deluge::gui::menu_item::midi::Devices, deluge::gui::menu_item::midi::FollowChannel, deluge::gui::menu_item::midi::Preset, deluge::gui::menu_item::MultiRange, deluge::gui::menu_item::note::Fill, deluge::gui::menu_item::note::IterancePreset, deluge::gui::menu_item::note::Probability, deluge::gui::menu_item::note::Velocity, deluge::gui::menu_item::note_row::Fill, deluge::gui::menu_item::note_row::IterancePreset, deluge::gui::menu_item::note_row::Probability, deluge::gui::menu_item::osc::RetriggerPhase, deluge::gui::menu_item::PatchCables, deluge::gui::menu_item::PatchCableStrength, deluge::gui::menu_item::sample::Reverse, deluge::gui::menu_item::SourceSelection, deluge::gui::menu_item::stutter::Rate, deluge::gui::menu_item::Submenu, deluge::gui::menu_item::swing::Interval, deluge::gui::menu_item::Toggle, deluge::gui::menu_item::Value< T >, deluge::gui::menu_item::Value< bool >, and deluge::gui::menu_item::Value< int32_t >.
|
inlinevirtual |
Used by the sound editor to mark the current instrument as edited when the select encoder is scrolled.
Reimplemented in deluge::gui::menu_item::Value< T >, deluge::gui::menu_item::Value< bool >, and deluge::gui::menu_item::Value< int32_t >.
|
inlinevirtual |
Return true if the Learn LED should blink while this menu is active (otherwise, it blinks only while LEARN is held).
Reimplemented in deluge::gui::menu_item::midi::Command.
|
inlinevirtual |
Get the frequency at which this pad should blink the given source.
colour | Output parameter for the colour to use when blinking. |
Reimplemented in deluge::gui::menu_item::MasterTranspose, deluge::gui::menu_item::patch_cable_strength::Fixed, deluge::gui::menu_item::patch_cable_strength::Range, deluge::gui::menu_item::patch_cable_strength::Regular, deluge::gui::menu_item::PatchCables, deluge::gui::menu_item::patched_param::Integer, deluge::gui::menu_item::SourceSelection, and deluge::gui::menu_item::Transpose.
|
inlinevirtual |
Get the "draw dot state".
This is a bitfield representation of which segments on the 7seg should have their '.' lit up.
The upper 4 bits determine how the lower 4 are interpreted. If the upper 4 bits are...
Reimplemented in deluge::gui::menu_item::MasterTranspose, deluge::gui::menu_item::Selection, deluge::gui::menu_item::Toggle, and deluge::gui::menu_item::Transpose.
|
inlinevirtual |
Check if selecting this menu item (with select encoder) should enter a submenu.
Reimplemented in deluge::gui::menu_item::arpeggiator::IncludeInKitArp, deluge::gui::menu_item::arpeggiator::Mode, deluge::gui::menu_item::arpeggiator::RandomizerLock, deluge::gui::menu_item::audio_clip::AudioSourceSelector, deluge::gui::menu_item::audio_clip::SetClipLengthEqualToSampleLength, deluge::gui::menu_item::audio_clip::SpecificSourceOutputSelector, deluge::gui::menu_item::note::SelectedNote, deluge::gui::menu_item::note_row::SelectedNoteRow, deluge::gui::menu_item::runtime_feature::SettingToggle, deluge::gui::menu_item::sequence::Direction, deluge::gui::menu_item::song::ConfigureMacros, deluge::gui::menu_item::song::MidiLearn, deluge::gui::menu_item::stem_export::Start, and deluge::gui::menu_item::Toggle.
|
inlinenodiscardvirtual |
Show a label for the parameter in Horizontal menu.
true by default, but can be overridden
Reimplemented in deluge::gui::menu_item::arpeggiator::PresetMode, deluge::gui::menu_item::arpeggiator::Randomizer, deluge::gui::menu_item::FilterRouting, deluge::gui::menu_item::lfo::Type, deluge::gui::menu_item::mod_fx::Type, deluge::gui::menu_item::osc::AudioRecorder, deluge::gui::menu_item::osc::Type, deluge::gui::menu_item::sidechain::GlobalVolume, deluge::gui::menu_item::sidechain::VolumeShortcut, and deluge::gui::menu_item::unison::Count.
|
inlinenodiscardvirtual |
Show a popup with the full name and value of the editing parameter at the top of Horizontal menu.
true by default, but can be overridden
Reimplemented in deluge::gui::menu_item::FilterRouting, deluge::gui::menu_item::midi::Preset, deluge::gui::menu_item::mod_fx::Type, deluge::gui::menu_item::osc::AudioRecorder, and deluge::gui::menu_item::Submenu.
|
inlinevirtual |
Handle a TimerName::UI_SPECIFIC event.
Reimplemented in deluge::gui::menu_item::DxParam, and deluge::gui::menu_item::PatchCables.
|
inlinevirtual |
Unlearn the parameter controlled by this menu.
Reimplemented in deluge::gui::menu_item::audio_clip::Transpose, deluge::gui::menu_item::MasterTranspose, deluge::gui::menu_item::midi::Command, deluge::gui::menu_item::midi::FollowChannel, deluge::gui::menu_item::PatchCableStrength, deluge::gui::menu_item::patched_param::Integer, deluge::gui::menu_item::Submenu, deluge::gui::menu_item::Transpose, and deluge::gui::menu_item::UnpatchedParam.
|
inlinevirtual |
Called to inform automation view that the active parameter has changed. Parameters inheriting from Automation forward there, no-op for everything else.
Reimplemented in deluge::gui::menu_item::PatchCableStrength, and deluge::gui::menu_item::patched_param::Integer.
|
inlinevirtual |
Claim support for Kit AFFECT_ENTIRE editing.
Reimplemented in deluge::gui::menu_item::arpeggiator::ArpMpeVelocity, deluge::gui::menu_item::arpeggiator::ChordType, deluge::gui::menu_item::arpeggiator::IncludeInKitArp, deluge::gui::menu_item::arpeggiator::Mode, deluge::gui::menu_item::arpeggiator::NoteModeForDrums, deluge::gui::menu_item::arpeggiator::OctaveMode, deluge::gui::menu_item::arpeggiator::Octaves, deluge::gui::menu_item::arpeggiator::PresetMode, deluge::gui::menu_item::arpeggiator::RandomizerLock, deluge::gui::menu_item::arpeggiator::StepRepeat, deluge::gui::menu_item::arpeggiator::Sync, deluge::gui::menu_item::AudioInterpolation, deluge::gui::menu_item::delay::Analog, deluge::gui::menu_item::delay::PingPong, deluge::gui::menu_item::delay::Sync, deluge::gui::menu_item::filter::FilterModeSelection, deluge::gui::menu_item::FilterRouting, deluge::gui::menu_item::fx::Clipping, deluge::gui::menu_item::lfo::Sync, deluge::gui::menu_item::lfo::Type, deluge::gui::menu_item::MasterTranspose, deluge::gui::menu_item::midi::sound::OutputMidiChannel, deluge::gui::menu_item::midi::sound::OutputMidiNoteForDrum, deluge::gui::menu_item::mod_fx::Type, deluge::gui::menu_item::modulator::Destination, deluge::gui::menu_item::modulator::Transpose, deluge::gui::menu_item::osc::Sync, deluge::gui::menu_item::patched_param::Integer, deluge::gui::menu_item::sample::PitchSpeed, deluge::gui::menu_item::sample::Repeat, deluge::gui::menu_item::sample::Reverse, deluge::gui::menu_item::sample::TimeStretch, deluge::gui::menu_item::sample::Transpose, deluge::gui::menu_item::sidechain::Attack, deluge::gui::menu_item::sidechain::Release, deluge::gui::menu_item::sidechain::Send, deluge::gui::menu_item::sidechain::Sync, deluge::gui::menu_item::stutter::QuantizedStutter, deluge::gui::menu_item::stutter::StutterDirection, deluge::gui::menu_item::Submenu, deluge::gui::menu_item::SynthModeSelection, deluge::gui::menu_item::unison::Count, deluge::gui::menu_item::unison::Detune, deluge::gui::menu_item::unison::StereoSpread, deluge::gui::menu_item::UnpatchedParam, deluge::gui::menu_item::voice::PolyphonyType, deluge::gui::menu_item::voice::Priority, and deluge::gui::menu_item::voice::VoiceCount.
|
inlinevirtual |
Handle vertical encoder movement.
offset | must be either -1 or 1, jumping is not supported by many children. |
const deluge::l10n::String MenuItem::name |
Default name for use on OLED for deluge::gui::menu_item::Submenu s.
May be overridden by getName