Deluge Firmware 1.3.0
Build date: 2025.04.16
Loading...
Searching...
No Matches
MenuItem Class Reference

Base class for all menu items. More...

#include <menu_item.h>

Inheritance diagram for MenuItem:

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
 
MenuItemoperator= (const MenuItem &other)=delete
 
MenuItemoperator= (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 MenuItemselectButtonPress ()
 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 MenuItempatchingSourceShortcutPress (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.
 

Detailed Description

Base class for all menu items.

Member Function Documentation

◆ allowsLearnMode()

◆ beginSession()

virtual void MenuItem::beginSession ( MenuItem * navigatedBackwardFrom = nullptr)
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 >.

◆ buttonAction()

virtual ActionResult MenuItem::buttonAction ( deluge::hid::Button b,
bool on,
bool inCardRoutine )
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.

◆ drawName()

void MenuItem::drawName ( )
virtual

◆ drawPixelsForOled()

virtual void MenuItem::drawPixelsForOled ( )
inlinevirtual

◆ getColumnLabel()

◆ getIndexOfPatchedParamToBlink()

virtual uint8_t MenuItem::getIndexOfPatchedParamToBlink ( )
inlinevirtual
Returns
the parameter index (deluge::modulation::params) that the SoundEditor should look for in paramShortcutsForSounds.

Reimplemented in deluge::gui::menu_item::PatchCableStrength, and deluge::gui::menu_item::SourceSelection.

◆ getName()

◆ getParamIndex()

virtual uint32_t MenuItem::getParamIndex ( )
inlinevirtual

◆ getParamKind()

virtual deluge::modulation::params::Kind MenuItem::getParamKind ( )
inlinevirtual

Declares which parameter we intend to edit. SoundEditor uses this to find which shortcut pad to blink based on paramShortcutsForSounds.

Returns
the parameter kind (deluge::modulation::params::Kind) we edit if we're a patched param, otherwise Kind::NONE

Reimplemented in deluge::gui::menu_item::PatchCableStrength, deluge::gui::menu_item::Submenu, and deluge::gui::menu_item::UnpatchedParam.

◆ getTitle()

virtual std::string_view MenuItem::getTitle ( ) const
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.

◆ horizontalEncoderAction()

virtual void MenuItem::horizontalEncoderAction ( int32_t offset)
inlinevirtual

◆ isRangeDependent()

virtual bool MenuItem::isRangeDependent ( )
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.

◆ isRelevant()

virtual bool MenuItem::isRelevant ( ModControllableAudio * modControllable,
int32_t whichThing )
inlinevirtual

Check if this MenuItem should show up in a containing deluge::gui::menu_item::Submenu.

Parameters
soundSound we would edit if we were to be entered.
whichThingSource 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.

◆ learnKnob()

virtual void MenuItem::learnKnob ( MIDICable * cable,
int32_t whichKnob,
int32_t modKnobMode,
int32_t midiChannel )
inlinevirtual

Learn a mod knob to the parameter edited by this menu.

Parameters
cableThe 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.

◆ learnNoteOn()

virtual bool MenuItem::learnNoteOn ( MIDICable & cable,
int32_t channel,
int32_t noteCode )
inlinevirtual

Attempt to bind this menu item to a note code.

Returns
True if the learn succeeded and the feature controlled by this menu item will now be bound to a MIDI note, false otherwise.

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.

◆ patchingSourceShortcutPress()

virtual MenuItem * MenuItem::patchingSourceShortcutPress ( PatchSource s,
bool previousPressStillActive = false )
inlinevirtual

Action to take when a source shortcut is pressed.

Potentially reconfigures some SoundEditor state so patching will work.

Parameters
sThe source being pressed.
previousPressStillActiveTrue if there is another patch source press still active. Useful to set up cable strength modulation.
Returns
  • NO_NAVIGATION if the SoundEditor should ask the menu 1 layer up in the stack what to do
  • nullptr if nothing should happen
  • A valid MenuItem if we should switch to that menu item.

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.

◆ readCurrentValue()

virtual void MenuItem::readCurrentValue ( )
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.

◆ readValueAgain()

◆ renderOLED()

void MenuItem::renderOLED ( )
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.

◆ selectButtonPress()

virtual MenuItem * MenuItem::selectButtonPress ( )
inlinevirtual

Handle a select button press.

Returns
  • NO_NAVIGATION if the SoundEditor should stay on the current menu.
  • nullptr if the SoundEditor should go up one level in the menu stack.
  • otherwise, enter the returned menu.

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.

◆ selectEncoderAction()

virtual void MenuItem::selectEncoderAction ( int32_t offset)
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 >.

◆ selectEncoderActionEditsInstrument()

virtual bool MenuItem::selectEncoderActionEditsInstrument ( )
inlinevirtual

Used by the sound editor to mark the current instrument as edited when the select encoder is scrolled.

Todo
Menu items should probably do that work themselves, rather than bubbling it out to the SoundEditor.

Reimplemented in deluge::gui::menu_item::Value< T >, deluge::gui::menu_item::Value< bool >, and deluge::gui::menu_item::Value< int32_t >.

◆ shouldBlinkLearnLed()

virtual bool MenuItem::shouldBlinkLearnLed ( )
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.

◆ shouldBlinkPatchingSourceShortcut()

virtual uint8_t MenuItem::shouldBlinkPatchingSourceShortcut ( PatchSource s,
uint8_t * colour )
inlinevirtual

Get the frequency at which this pad should blink the given source.

Parameters
colourOutput parameter for the colour to use when blinking.
Returns
Blink time period (higher means more delay between flashes), or 255 if we shouldn't blink.

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.

◆ shouldDrawDotOnName()

virtual uint8_t MenuItem::shouldDrawDotOnName ( )
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.
Warning
(sapphire): I didn't actually check LTR vs RTL, someone who actually has a 7seg should do that.

Reimplemented in deluge::gui::menu_item::MasterTranspose, deluge::gui::menu_item::Selection, deluge::gui::menu_item::Toggle, and deluge::gui::menu_item::Transpose.

◆ shouldEnterSubmenu()

◆ timerCallback()

virtual ActionResult MenuItem::timerCallback ( )
inlinevirtual

Handle a TimerName::UI_SPECIFIC event.

Reimplemented in deluge::gui::menu_item::DxParam, and deluge::gui::menu_item::PatchCables.

◆ unlearnAction()

◆ updateAutomationViewParameter()

virtual void MenuItem::updateAutomationViewParameter ( )
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.

◆ usesAffectEntire()

virtual bool MenuItem::usesAffectEntire ( )
inlinevirtual

Claim support for Kit AFFECT_ENTIRE editing.

Returns
true if this Menu can edit parameters across an entire kit if changed with AFFECT_ENTIRE held down.

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.

◆ verticalEncoderAction()

virtual void MenuItem::verticalEncoderAction ( int32_t offset)
inlinevirtual

Handle vertical encoder movement.

Parameters
offsetmust be either -1 or 1, jumping is not supported by many children.

Member Data Documentation

◆ name

const deluge::l10n::String MenuItem::name

Default name for use on OLED for deluge::gui::menu_item::Submenu s.

May be overridden by getName


The documentation for this class was generated from the following files: