Performance keyboard layout API and in-key only layout#138
Conversation
…lFreund/DelugeFirmware into feature/extendedKeyboardView
|
The Squarp Hapax has a really satisfying chord mode. To paraphrase the Hapax manual: Entering chord mode presents the user with two lit grids—an 8x2 row (chord trigger) at the bottom of the array, and a 8x6 box (modifiers) at the top left. The length of the chord trigger row(s) match the number of degrees in the currently selected scale. Chords ascend left to right by stacking thirds:
C Major Scale harmonisation leads to these chord degrees: Pressing a chord trigger button triggers the chord, (duh), but things get more interesting with modifiers selected. Current modifiers in the Hapax contain: Octave spread, inversion rotation, octave transpose, voicing, extended qualities (add9, add11, etc). Additionally, the Hapax allows you to automatically select voicings based on the chords you are selecting by enabling a setting. The manual defines this as "taking the fewest steps between two chords". |
… the first static call to test migration work
|
I'd like to work on a mode where a kit sound can be played chromatically from a standard keyboard view. It could be accessed by holding the kit sound audition pad and pressing the keyboard button. Would the concept of accessing the keyboard view from key combos like PAD+keyboard or SHIFT+keyboard be in the scope of this draft? Or would that behavior be implemented outside this code? |
|
@jamiefaye Ready when you are :D PS: I thoroughly tested it :) |
|
i know specifically of one person that will now get a deluge because of this work, haha. great job. i'm curious about two UX changes (or additions in this case)
both of these features were already implemented in the official firmware, is there a reason for there being two ways to perform them now?
the annoying thing about how 1) is implemented (for both versions) is that it resets the scale to MAJOR anytime you change the root note. it would be nice to maintain scale mode when adjusting root note. (one button combo for each function; preserve SCALE when changing ROOT NOTE, just like how changing SCALE doesn't affect ROOT NOTE) |
This draft PR is to track work on the keyboard layout API and in-key only layout. Feel free to watch the PR to get updates and please help improving it with your feedback!
Demo
Progress
Scope
Out of scope ideas
Once the layout API is implemented new layouts should be done as separate PRs, for example
UX changes
Layout API
The idea is to introduce a base class that can be easily extended for implementing new keyboard layouts. Some functionality like scale handling will be kept in keyboard_view but the rendering of pads and evaluation of presses will be done in the layouts
The layout API will contain the following functionality: