Homemade generative sequencer - Music theory help needed

I’m building a generative midi sequencer similar to the Torso T1 and Oxi One, it’s going to have plenty of knobs like the Torso and a pad grid like the Oxi. I’m at the point now where it’s all working nicely but my lack of music theory knowledge is slowing me down.

I’m trying to create a chord mode like on the Oxi where each pad will have a chord stored within it depending on which key/scale is set, as you can see from the picture I have 64 pads (I can have several pages of 64) to play with (once it’s all in one box this will be a 16x4 grid).

If anyone can help me out, I need to know the following:

How to find or calculate the chords for any given key/scale?
How best to lay these out on the grid in a way thats most useful?
The Oxi manual says this: “The auto voicing engine, in charge of assigning the best possible voicings to every chord in order to
get the least voice movement, is enabled by default.” - I’d love to hear any suggestions on how this might work.

I’ve had a quick chat with ChatGPT about this and it came up with this example for the Major scale (the note numbers are intervals from the root note) - This is only 12 chords though, the Oxi has over 200, how do I find or calculate the rest?

    {0, 4, 7},        // Major Chord (I)
    {2, 5, 9},        // Minor Chord (ii)
    {4, 7, 11},       // Minor Chord (iii)
    {5, 9, 12},       // Major Chord (IV)
    {7, 11, 14},      // Major Chord (V)
    {9, 12, 16},      // Minor Chord (vi)
    {11, 14, 17},     // Diminished Chord (viio)
    {0, 4, 7, 11},    // Major 7 Chord (Ia7)
    {2, 5, 9, 12},    // Minor 7 Chord (ii7)
    {4, 7, 11, 14},   // Minor 7 Chord (iii7)
    {5, 9, 12, 16},   // Major 7 Chord (IV7)
    {7, 11, 14, 17},  // Dominant 7 Chord (V7)
    {9, 12, 16, 19},  // Minor 7 Chord (vi7)
    {0, 4, 7, 11, 14} // Dominant 7 Chord (IM9)

Inversions (for a 5-1 cadence, the movement on keys is something like {-1, 3, 7} to (1,4,7}, or, for computers, your numbers over 12 need to wrap around, and chords need to have every start point.)

Extensions: there are many more chords. Minor 11s, sus13s, alts, etc etc.

Then there are chords and progressions that borrow from other scales, which is in most music you hear. None of these chord sequencers that doesn’t have some version of per-scale “chord packs” can do this well, because if you look for those, then there are dozens of chords out of the given key that sound great but only sound right in a particular context in a progression…

1 Like

From the music theory side, the term you’ll wanna look up is “voice leading.” The idea is to think about a chord progression not as a series of chords but as three or more voices/melodies laid on top of each other. The less each individual melody jumps around, the smoother your chord progression will sound.

For example, if your chord progression goes from C major to F major, you have three notes (C E G) followed by another three notes (F A C). You could have your chords play like this:

G -> C
E -> A
C -> F

If you do that, all three voices will jump up a fourth. This can sound cool, but it won’t sound smooth like the Oxi auto voice.

To smooth out the chord change, we can rearrange the same notes (F A C) to makes the jumps smaller or eliminate jumps entirely:

G -> A
E -> F
C -> C

In this version, two of the voices only jump up a second, and one voice doesn’t move at all, which makes this smoother than the first version.

Smoother isn’t always better of course–classic house chords don’t do this voice rearranging, and they sound great–but this is the sort of thing the Oxi is doing.

1 Like

For the inversions, you can take


  • drop the 14 down an octave to get {7, 11, 2}, or, in order {2, 7, 11}
  • drop both the 11 and the 14 down an octave to get {7, -1, 2}, or, in order, {-1, 2, 7}

Can you see the pattern, you can apply that to any chord, not just 3-note ones. That will create some of the missing ones for you.

But, to be honest, there are many, many types of chords beyond the 6 fundamental types chatGPT gave you, added 9ths, 13ths, suspendeds (2 kinds). Some of them you might find dissonant, and that’s before you get into the region where any 3, 4, 5 combined notes can regarded as a chord.

Not sure what to suggest for the best, maybe limit your ambitions for the moment ?

Can’t answer your question, sorry, but what is that thing with the pads?

Check out the documentation for the Korg Keystage MIDI controller. That keyboard controller has 32 different layouts you can use in that controller’s “chord mode” that puts 12 interesting chords across the twelve notes on a keyboard, each of the 32 in a different style and for different uses. They give an interesting set of options for use in chord changes.

All of them in the documentation are in ‘C’ so you transpose them to the key you’d like. They show the chords in inversion as well. I give a link to that documentation in this post.

They have triads, as well as 4 and 5 note chords in those sets.

BTW : These are all good to learn as sets for those looking to improve their own playing.

ADDED : You can also look at documentation for the Instruo Harmonaig which shows a similar thing for chords presets in that device.


Thanks all, those Keystage chords look like a good place to start then I can fill it out with inversions.

The pad grid I’m using is the: Adafruit 8x8 NeoTrellis Feather M4 Kit Pack


I entered this explanation for auto voicing into ChatGPT and its come up with an algorithm to do it…I’ll see how it goes.