25class IteranceStepToggle :
public Toggle {
29 IteranceStepToggle(l10n::String newName, l10n::String
title, uint8_t newIndex) :
Toggle(newName,
title) {
30 this->index = newIndex;
34 Note* leftMostNote = instrumentClipView.getLeftMostNotePressed();
37 Iterance iterance = leftMostNote->getIterance();
38 if (iterance == kDefaultIteranceValue) {
41 iterance = kCustomIteranceValue;
43 this->setValue(iterance.iteranceStep[index]);
46 void writeCurrentValue()
override {
47 bool value = this->getValue();
48 Note* leftMostNote = instrumentClipView.getLeftMostNotePressed();
51 Iterance iterance = leftMostNote->getIterance();
52 if (iterance == kDefaultIteranceValue) {
55 iterance = kCustomIteranceValue;
57 int32_t newIteranceSteps = iterance.toInt() & 0xFF;
59 newIteranceSteps |= (1 << index);
62 newIteranceSteps &= ~(1 << index);
64 instrumentClipView.adjustNoteIteranceWithFinalValue(
Iterance{iterance.divisor, newIteranceSteps});
71 Note* leftMostNote = instrumentClipView.getLeftMostNotePressed();
74 Iterance iterance = leftMostNote->getIterance();
76 return (iterance == kDefaultIteranceValue && index == 0) || iterance.divisor > index;