30 Attack(l10n::String newName, l10n::String newTitle,
bool isReverbSidechain =
false)
31 :
Integer(newName, newTitle), is_reverb_sidechain_{isReverbSidechain} {}
34 const auto sidechain = getSidechain(is_reverb_sidechain_);
35 this->setValue(getLookupIndexFromValue(sidechain->attack >> 2, attackRateTable, 50));
38 void writeCurrentValue()
override {
39 int32_t current_value = attackRateTable[this->getValue()] << 2;
42 if (!is_reverb_sidechain_ && currentUIMode == UI_MODE_HOLDING_AFFECT_ENTIRE_IN_SOUND_EDITOR
43 && soundEditor.editingKitRow()) {
45 Kit* kit = getCurrentKit();
47 for (
Drum* thisDrum = kit->firstDrum; thisDrum !=
nullptr; thisDrum = thisDrum->next) {
48 if (thisDrum->type == DrumType::SOUND) {
49 auto* soundDrum =
static_cast<SoundDrum*
>(thisDrum);
51 soundDrum->sidechain.attack = current_value;
57 const auto sidechain = getSidechain(is_reverb_sidechain_);
58 sidechain->attack = current_value;
61 AudioEngine::mustUpdateReverbParamsBeforeNextRender =
true;
63 [[nodiscard]] int32_t getMaxValue()
const override {
return 50; }
66 return !is_reverb_sidechain_ || AudioEngine::reverbSidechainVolume >= 0;
69 void getColumnLabel(
StringBuf& label)
override {
70 label.append(deluge::l10n::get(l10n::String::STRING_FOR_ATTACK_SHORT));
74 bool is_reverb_sidechain_;