26class IteranceStepToggle :
public Toggle {
30 IteranceStepToggle(l10n::String newName, l10n::String
title, uint8_t newIndex) :
Toggle(newName,
title) {
31 this->index = newIndex;
35 Note* leftMostNote = instrumentClipView.getLeftMostNotePressed();
38 Iterance iterance = leftMostNote->getIterance();
39 if (iterance == kDefaultIteranceValue) {
42 iterance = kCustomIteranceValue;
44 this->setValue(iterance.iteranceStep[index]);
47 void writeCurrentValue()
override {
48 bool value = this->getValue();
49 Note* leftMostNote = instrumentClipView.getLeftMostNotePressed();
52 Iterance iterance = leftMostNote->getIterance();
53 if (iterance == kDefaultIteranceValue) {
56 iterance = kCustomIteranceValue;
58 int32_t newIteranceSteps = iterance.toInt() & 0xFF;
60 newIteranceSteps |= (1 << index);
63 newIteranceSteps &= ~(1 << index);
65 instrumentClipView.adjustNoteIteranceWithFinalValue(
Iterance{iterance.divisor, newIteranceSteps});
72 Note* leftMostNote = instrumentClipView.getLeftMostNotePressed();
75 Iterance iterance = leftMostNote->getIterance();
77 return (iterance == kDefaultIteranceValue && index == 0) || iterance.divisor > index;