32    using Selection::Selection;
 
   33    void readCurrentValue()
 override { this->setValue(soundEditor.currentArpSettings->chordTypeIndex); }
 
   36    void writeCurrentValue()
 override {
 
   37        int32_t current_value = this->getValue();
 
   38        if (current_value < 0 || current_value >= MAX_CHORD_TYPES) {
 
   43        if (currentUIMode == UI_MODE_HOLDING_AFFECT_ENTIRE_IN_SOUND_EDITOR && soundEditor.editingKitRow()) {
 
   45            Kit* kit = getCurrentKit();
 
   47            for (
Drum* thisDrum = kit->firstDrum; thisDrum != 
nullptr; thisDrum = thisDrum->next) {
 
   49                if (thisDrum->type != DrumType::GATE) {
 
   50                    thisDrum->arpSettings.chordTypeIndex = current_value;
 
   51                    thisDrum->arpSettings.flagForceArpRestart = 
true;
 
   57            soundEditor.currentArpSettings->chordTypeIndex = current_value;
 
   58            soundEditor.currentArpSettings->flagForceArpRestart = 
true;
 
   63        return soundEditor.editingKitRow() && !soundEditor.editingGateDrumRow();
 
 
   65    void getColumnLabel(
StringBuf& label)
 override {
 
   66        label.append(deluge::l10n::get(deluge::l10n::built_in::seven_segment, this->name));
 
   69    deluge::vector<std::string_view> getOptions(OptType optType)
 override {
 
   71        using enum l10n::String;
 
   73            l10n::getView(STRING_FOR_NONE),      
 
   74            l10n::getView(STRING_FOR_FIFTH),     
 
   75            l10n::getView(STRING_FOR_SUS2),      
 
   76            l10n::getView(STRING_FOR_MINOR),     
 
   77            l10n::getView(STRING_FOR_MAJOR),     
 
   78            l10n::getView(STRING_FOR_SUS4),      
 
   79            l10n::getView(STRING_FOR_MINOR7),    
 
   80            l10n::getView(STRING_FOR_DOMINANT7), 
 
   81            l10n::getView(STRING_FOR_MAJOR7),