Background: A program that generates common chord progressions given a key. For example, in the key of C major, one of the popular progressions we have is I – vi – IV – V (C – Am – F – G). My goal is to render these 4 chords from the neck of the guitar onto the screen.
Let's say I have a C chord and I want to figure out playable positions for it on the guitar fretboard starting at the open string position. The C major triad consists of [C, E, G]. I came up with the following chord that marks all the [C, E, G] notes from fret 0 (open string position) to fret 3
Now this is obviously wrong but It has all the required notes by the C major triad (please disregard multiple notes on the same string, as I am still working on this program). Is there a set of "rules" or heuristics I can use to figure out which fretted notes sound good as a chord while played together with other chords in the progression? For example, if I play the C chord from above, then Am, F and G, it sounds a bit dissonant compared to playing x32010 which sounds a bit cleaner. I think one of the rules is that the chord always needs to start at the root position, this would eliminate the low E string, because the root note is not E or G.
Do inversions play a role in this?