![]() |
Deluge Firmware 1.3.0
Build date: 2025.04.16
|
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 | 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 void | getColumnLabel (StringBuf &label) |
Get the name for use on horizontal menus. | |
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 void | renderInHorizontalMenu (int32_t startX, int32_t width, int32_t startY, int32_t height) |
virtual bool | isSubmenu () |
virtual void | setupNumberEditor () |
virtual void | updatePadLights () |
virtual void | updateAutomationViewParameter () |
void | renderColumnLabel (int32_t startX, int32_t width, int32_t startY) |
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. | |
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.
|
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::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::ActualSource, deluge::gui::menu_item::Submenu, deluge::gui::menu_item::submenu::Envelope, deluge::gui::menu_item::submenu::Modulator, deluge::gui::menu_item::submenu::Sidechain, deluge::gui::menu_item::SubmenuReferringToOneThing, 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::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::Submenu, deluge::gui::menu_item::SyncLevel, and deluge::gui::menu_item::Toggle.
|
inlinevirtual |
Get the name for use on horizontal menus.
By default this redirects to getName(), but can be overriden.
Reimplemented in 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::midi_cv::ArpNonSoundInteger, 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::RandomizerLock, deluge::gui::menu_item::arpeggiator::StepRepeat, deluge::gui::menu_item::envelope::Segment, and deluge::gui::menu_item::lfo::Type.
|
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::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::reverb::RoomSize, deluge::gui::menu_item::reverb::Width, deluge::gui::menu_item::runtime_feature::DevSysexSetting, and deluge::gui::menu_item::runtime_feature::Setting.
|
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::Segment, deluge::gui::menu_item::filter::FilterParam, deluge::gui::menu_item::filter::UnpatchedFilterParam, deluge::gui::menu_item::gate::Mode, 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::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::FM, deluge::gui::menu_item::source_selection::Range, and deluge::gui::menu_item::source_selection::Regular.
|
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::Rate, deluge::gui::menu_item::arpeggiator::midi_cv::SpreadOctave, deluge::gui::menu_item::arpeggiator::midi_cv::SpreadVelocity, 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::SpecificSourceOutputSelector, 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::FilterRouting, deluge::gui::menu_item::lfo::Rate, 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::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::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::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::FM, deluge::gui::menu_item::stutter::PingPongStutter, deluge::gui::menu_item::stutter::QuantizedStutter, deluge::gui::menu_item::stutter::ReversedStutter, deluge::gui::menu_item::stutter::UseSongStutter, 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. |
NO_NAVIGATION
if the SoundEditor should ask the menu 1 layer up in the stack what to donullptr
if nothing should happenReimplemented 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::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::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::Blend, 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::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::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::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::PingPongStutter, deluge::gui::menu_item::stutter::QuantizedStutter, deluge::gui::menu_item::stutter::ReversedStutter, deluge::gui::menu_item::stutter::UseSongStutter, 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::PatchCableStrength.
|
inlinevirtual |
Handle a select button press.
NO_NAVIGATION
if the SoundEditor should stay on the current menu.nullptr
if the SoundEditor should go up one level in the menu stack.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::patch_cable_strength::Regular, 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::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::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::PatchCables, deluge::gui::menu_item::SourceSelection, 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...
0b0000
, the lower 4 bits are treated as an index describing which dot to light (where 0 is the leftmost 7seg).0b1000
, the lower 4 bits are a bitmask where the LSB is the leftmost 7seg and the MSB is the rightmost.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.
|
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::audio_compressor::Blend, 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::PingPongStutter, deluge::gui::menu_item::stutter::QuantizedStutter, deluge::gui::menu_item::stutter::ReversedStutter, deluge::gui::menu_item::stutter::UseSongStutter, 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