I'm working on a program to help musicians write chord progressions. You pick the chords one at a time in sequence, and the computer to try to "guess" what chords should come next, similar to the way iphone guesses what word i'm trying to type.
For example, given C-Am-F, the next is likely G.
Here are some rules I've come up with so far. ("home" is the first chord in the song, "last" is the last chord so far, "next" is the chord the computer will guess)
- the tonic note of next is in the scale of the last (eg. G is in the F major scale)
- the dominant note of next is in the scale of the last (D is in the F major scale)
- the tonic note of next is in the scale of home (G is in C major)
- the next and the last have some notes in common
A score is determined based on the number of rules that are satisfied. (Some might be weighted more than others.) The top 10 chords based on score are then presented to the user to pick from.
Has this already been done? Can you help me to think of more rules? I know that my rules so far are not very good.