Norns + grid seems to have a lot of potential as a platform for interesting “intelligent” midi controllers. I’d love to have a chord-based MIDI controller to quickly build progressions in ableton or just play around intuitively with hardware polysynths. I made this quick mockup sort of inspired by the Omnichord, Kordbot, and accordion bass buttons. I have almost zero coding experience and have no idea how feasible this is to implement, so I’m mostly just putting this out there because it’s fun to think about. None of this is precious or refined.
The right half is a play surface with buttons that trigger chords (top right quadrant) or individual notes of a chord (bottom right quadrant). Each column is a different scale degree plus an octave repeat. Each row in the top right quadrant represents diatonic triads or 7th chords built on the major or minor scale, so everything sounds in key (i.e. the row that says “major” aren’t all major chords, they’re triads built from the major scale). Bottom right quadrant lets you play individual notes of each chord (whether it’s octave/7ths or major/minor depends on the last played row in the top right quadrant).
The left half sets parameters. All are latching unless held for momentary selection.
“Base” columns set the center point of a parameter (bottom button = minimum, top button = maximum). “Spread” columns set the variance/distribution width of the values for the parameter for all the notes in a chord (i.e. it determines the average offset from the base value for a cluster of notes). E.g. MIDI note velocity base is column 7 and spread is column 8, so if velocity base is maximum and velocity spread is minimum, all the notes in a chord will have a velocity of 127. If velocity base is medium and velocity spread is medium then you’ll get a distribution of note velocities clustered around 64.
Note density leaves all notes in at maximum value and thins notes from of large multi-octave chords at medium or low values.
Different strike types are for different timing offsets of the notes and might include block chord, strum up, strum down, strum in, strum out, zig zag down, zig zag up, etc. Spread range in the timing offsets could be large to accommodate both naturalistic strums (low spread) and pseudo sequences (high spread).
Bottom half of column 1 sets chord inversions.
Top half of column 1 is for miscellaneous functions including a separate key select page, all notes off button, note-on latch or sustain (midi cc 64) button, and a secondary dominant modifier.
The secondary dominant button is a little wacky but seems like a good way to generate less “in key” sounding chords and quickly create tension and release without being totally random. When this button is pressed and a chord is selected in the top right quadrant, instead of playing the chord itself it will play the dominant chord of that chord. That means if you press the 5th scale degree chord in the major scale triads row (column 13, row 1) while the secondary dominant button is pressed, then it will play the dominant (fifth) chord relative to the chord you selected. In that case it’s the fifth of the fifth but you can select other scale degrees to play the fifth of the second chord or the fifth of the fourth chord, etc. I hope that makes sense as I know just enough music theory to say dumb things that might sound smart.
It’s sorta complex but everything is layed out on one page besides key select. One variant might be that instead of having major (ionian) and minor (aeolian) as the only two modes, you could select two modes from a larger list, but I’m not sure if that’s necessary (probably fine going my whole life without hearing locrian 7th chords).