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();
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),