43class KeyboardLayoutChord :
public ColumnControlsKeyboard {
45 KeyboardLayoutChord() =
default;
46 ~KeyboardLayoutChord()
override =
default;
51 bool encoderPressed =
false)
override;
54 void renderPads(
RGB image[][kDisplayWidth + kSideBarWidth])
override;
56 l10n::String name()
override {
return l10n::String::STRING_FOR_KEYBOARD_LAYOUT_CHORD_KEYBOARD; }
58 bool supportsKit()
override {
return false; }
59 RequiredScaleMode requiredScaleMode()
override {
return RequiredScaleMode::Disabled; }
61 ChordKeyboardMode mode = ChordKeyboardMode::COLUMN;
64 bool allowSidebarType(ColumnControlFunction sidebarType)
override;
67 void offsetPads(int32_t offset,
bool shiftEnabled);
68 void handleControlButton(int32_t x, int32_t y);
69 uint8_t noteFromCoordsRow(int32_t x, int32_t y, int32_t root,
NoteSet& scaleNotes, uint8_t scaleNoteCount);
70 void evaluatePadsRow(PressedPad pressed);
71 void evaluatePadsColumn(PressedPad pressed);
72 void drawChordName(int16_t noteCode,
const char* chordName =
"",
const char* voicingName =
"");
74 Scale lastScale = NO_SCALE;
78 std::array<RGB, static_cast<int>(ChordQuality::CHORD_QUALITY_MAX)> qualityColours = {
79 colours::blue, colours::purple, colours::green, colours::kelly::very_light_blue,
80 colours::cyan, colours::yellow};
82 std::array<int32_t, kOctaveSize + kDisplayHeight + kDisplayWidth> qualities;
84 std::array<int32_t, kDisplayWidth - 1> scaleSteps = {
87 SCALETHIRD + SCALEOCTAVE,
88 SCALESEVENTH + SCALEOCTAVE,
89 SCALEFIFTH + SCALEOCTAVE,
90 SCALETHIRD + 2 * SCALEOCTAVE,
91 SCALESECOND + 2 * SCALEOCTAVE,
92 SCALESIXTH + SCALEOCTAVE,
96 SCALETHIRD - SCALEOCTAVE,
103 std::array<
const std::array<
const Chord, majorChords.size()>*, 6> chordColumns = {
104 &majorChords, &minorChords, &diminishedChords, &augmentedChords, &dominantChords, &otherChords};
106 std::set<Scale> acceptedScales = {Scale::MAJOR_SCALE, Scale::MINOR_SCALE, Scale::DORIAN_SCALE,
107 Scale::PHRYGIAN_SCALE, Scale::LYDIAN_SCALE, Scale::MIXOLYDIAN_SCALE,
108 Scale::LOCRIAN_SCALE};
void handleHorizontalEncoder(int32_t offset, bool shiftEnabled, PressedPad presses[kMaxNumKeyboardPadPresses], bool encoderPressed=false) override
Will be called with offset 0 to recalculate bounds on clip changes.
Definition chord_keyboard.cpp:129