I use the term permutations loosely here. But for any given chord inversion, there are 6 variations of the tones in the pitch you can play in order to play each tone once. What makes this an impure use of the term permutations is that the second and third notes of the sequence can go both above the starting note in one variation, and below it in another.

If we land on the C note, it can be considered the root of the C chord, the third of the G# chord, or the Fifth of the F chord. That leads to the following variations:

Note that each of the inversions follows the same pattern. Lets use the following rules:

- Using 1 2 3 to represent their position in the inversion. So for C, root postion, 1 = C, 2= E and 3=G.
- The permutations of a root position chord where we always use the root as the starting note of the sequence gives us two options: 123 132.
- + to indicate a note above the starting note
- – to indicate a note below the starting note

We can then treat the + and – as binary bits. This gives us the sequence

++ +- -+ —

corresponding to 0, 1, 2, and 3 represented in binary

In fact, we can treat the two permutations as the most significant or least significant bit, and write the complete set as:

000 001 010 011 100 101 110 111

Lets treat it as the most significant bit. That Means that we will have all the 123s before all the 132s and we’ll start with the downs…

- 1 +2 +3
- 1 +2 -3
- 1 -2 +3
- 1 -2 -3
- 1 +3 +2
- 1 +3 -2
- 1 -3 +2
- 1 -3 -2

This can be rewritten in code.