Fluent Chord Transitions And (T, S, D) Assignments

You can take a C major chord in SATB voicing and look at the fluent melodic continuations for each voice, and find all the chords that can be made from options in each voice. If we allow ourselves a very limited set of chord qualities, we still get at least this large set of fluent chordal continuations to C major: 

    C.maj -> [A.7, A.dim, A.m, A.m7, A.m7b5, A.maj, A.maj7, Ab.7, Ab.dim, Ab.m, Ab.m7, Ab.m7b5, Ab.maj7, B.7, B.dim, B.m, B.m7, B.m7b5, B.maj, B.maj7, Bb.7, Bb.dim, Bb.m, Bb.m7, Bb.m7b5, Bb.maj, Bb.maj7, C.7, C.dim, C.m, C.m7, C.m7b5, C.maj, C.maj7, D.7, D.dim, D.m, D.m7, D.m7b5, D.maj, D.maj7, Db.7, Db.dim, Db.m, Db.m7, Db.m7b5, Db.maj, Db.maj7, E.7, E.dim, E.m, E.m7, E.m7b5, E.maj, E.maj7, Eb.7, Eb.dim, Eb.m, Eb.m7, Eb.m7b5, Eb.maj, Eb.maj7, F#.7, F#.dim, F#.m, F#.m7, F#.m7b5, F#.maj, F#.maj7, F.7, F.dim, F.m, F.m7, F.m7b5, F.maj, F.maj7, G#.dim, G#.m, G#.maj, G#.maj7, G.7, G.dim, G.m, G.m7, G.m7b5, G.maj, G.maj7]

How should we chose among them, and others, in selecting chord progressions?

You might say "chord progressions have the form "tonic -> subdominant -> dominant", and try categorizing all of the chordal continuations as one of the three. I don't know how to do that. If you do, please let me know.

You  might declare a C major key for the song and disregard any chords that aren't in C major, and then classify the remainder as (T, S, or D). Well, composers don't stick to a key. That would suck. But let's do it anyway and see if we can expand. We're left with these chords:
C.maj: T
C.maj7: T
D.m: S
D.m7: S
E.m: T or D
E.m7: T or D
F.maj: S
F.maj7: S
G.7: D
G.maj: D
A.m: T
A.m7: T
B.dim: D
B.m7b5: D

I have their functions relative to C major written in  with one-letter abbreviations. These functional categorizations are fairly canonical in the literature. They probably come from Schenkerian analysis, but I always get bored reading Schenkerian analysis texts and give up. These functional categorizations don't work as well in A minor, but maybe they're close enough? Maybe. E.m chords are a little vague functionally: I think E.m by itself leans a little tonic (like a rootless C.maj7) and E.m7 leans a little dominant (since Em7b9 is a respelling of G7(add13)), but those tendencies are not strong enough to put into code.

User Taxtengo on reddit suggests that if the next chord after the E.m has a tonic function, then you can categorize the E.m as dominant, and in all other cases the E.m has a tonic function. I've heard worse ideas.

Perhaps while you're on the Tonic section of the progression, you can play different tonic chords, and when you're in the subdominant section, you can play multiple different subdominant chords.

Next let's try giving functional names to modal mixture chords, i.e. chords from the key of C minor. And we'll assume that the functional categorizations we derive from C minor's relative major scale, Eb major, work for C minor. We'll just transpose our (T, S, D) function up by a minor third:

Eb.maj: T
Eb.maj7: T
F.m: S
F.m7: S
G.m: T or D
G.m7: T or D
Ab.maj: S
Ab.maj7: S
Bb.7: D
Bb.maj: D
C.m: T
C.m7: T
D.dim: D
D.m7b5: D

And perhaps now we just pretend that all of these functions work in the key of C major.

We haven't given any inconsistent functional assignments to chords yet. So maybe that's good. Here's the full set alphabetized:

C.m7: T
C.m: T
C.maj7: T
C.maj: T
D.dim: D
D.m7: S
D.m7b5: D
D.m: S
E.m7: T or D
E.m: T or D
Eb.maj7: T
Eb.maj: T
F.m7: S
F.m: S
F.maj7: S
F.maj: S
G.7: D
G.m7: T or D
G.m: T or D
G.maj: D
A.m7: T
A.m: T
Ab.maj7: S
Ab.maj: S
B.dim: D
B.m7b5: D
Bb.7: D
Bb.maj: D

.
Here are some fluent chordal continuations of C major that we have not yet given functional assignments: [A.7, A.dim, A.m7b5, A.maj, A.maj7, Ab.7, Ab.dim, Ab.m, Ab.m7, Ab.m7b5, B.7, B.m, B.m7, B.maj, B.maj7, Bb.dim, Bb.m, Bb.m7, Bb.m7b5, Bb.maj7, C.7, C.dim, C.m7b5, D.7, D.maj, D.maj7, Db.7, Db.dim, Db.m, Db.m7, Db.m7b5, Db.maj, Db.maj7, E.7, E.dim, E.m7b5, E.maj, E.maj7, Eb.7, Eb.dim, Eb.m, Eb.m7, Eb.m7b5, F#.7, F#.dim, F#.m, F#.m7, F#.m7b5, F#.maj, F#.maj7, F.7, F.dim, F.m7b5, G#.dim, G#.m, G#.maj, G#.maj7, G.dim, G.m7b5, G.maj7]

Perhaps my notion of melodic fluency is too lax? I know I never stated it. It was something like the melodic interval has to be in [P1, m2, M2, m3, M3, P4, P5] or the inverse of one of those. Actually a five-limit generalization of that, but I'm trying to hide the microtonality of my programs for a moment, because this post should be accessible to lots of people. If I restrict my fluent melodic transitions to be in the set [P1, M2, M3, P4, P5] or its inverse, that doesn't make any sense, but nothing in this post does, so let's keep going and see what happens. Our new fluent chordal continuations with simple names are
    C.maj -> [A.7, A.dim, A.m, A.m7, A.m7b5, A.maj, A.maj7, Ab.7, Ab.dim, Ab.m, Ab.m7, Ab.m7b5, Ab.maj7, B.7, B.dim, B.m, B.m7, B.m7b5, B.maj, B.maj7, Bb.7, Bb.dim, Bb.m, Bb.m7, Bb.m7b5, Bb.maj, Bb.maj7, C.7, C.dim, C.m, C.m7, C.m7b5, C.maj, C.maj7, D.7, D.dim, D.m, D.m7, D.m7b5, D.maj, D.maj7, Db.7, Db.dim, Db.m, Db.m7, Db.m7b5, Db.maj, Db.maj7, E.7, E.dim, E.m, E.m7, E.m7b5, E.maj, E.maj7, Eb.7, Eb.dim, Eb.m, Eb.m7, Eb.m7b5, Eb.maj, Eb.maj7, F#.7, F#.dim, F#.m, F#.m7, F#.m7b5, F#.maj, F#.maj7, F.7, F.dim, F.m, F.m7, F.m7b5, F.maj, F.maj7, G#.dim, G#.m, G#.maj, G#.maj7, G.7, G.dim, G.m, G.m7, G.m7b5, G.maj, G.maj7]

We're still missing functional categorizations for: [A.7, A.dim, A.m7b5, A.maj, A.maj7, Ab.7, Ab.dim, Ab.m, Ab.m7, Ab.m7b5, B.7, B.m, B.m7, B.maj, B.maj7, Bb.dim, Bb.m, Bb.m7, Bb.m7b5, Bb.maj7, C.7, C.dim, C.m7b5, D.7, D.maj, D.maj7, Db.7, Db.dim, Db.m, Db.m7, Db.m7b5, Db.maj, Db.maj7, E.7, E.dim, E.m7b5, E.maj, E.maj7, Eb.7, Eb.dim, Eb.m, Eb.m7, Eb.m7b5, F#.7, F#.dim, F#.m, F#.m7, F#.m7b5, F#.maj, F#.maj7, F.7, F.dim, F.m7b5, G#.dim, G#.m, G#.maj, G#.maj7, G.dim, G.m7b5, G.maj7]

And maybe that's fine. Maybe the set that was functionally categorization in C major and C minor is enough for composing, and we should limit ourselves to it, and other chords only show up in modulations or in analysis of passing suspensions or whatever.

I think we can do better. I'm not sure how though. Perhaps we could look at the chord tones in those unclassified chords and see if they have more overlap with tonic chords or subdominant chords or dominant chords. And if they don't have shared chord tones? Then we'll keep thinking. I kind of doubt that this will work. Like this way of generalizing probably wouldn't have given us C.minor functions from the C.major functions. So why should C.minor + C.major functions extend to other chord fields? But I'm not sure and it would be interesting to see the results.

I really like augmented chords, but I don't really know how to use them in chord progressions other than "do fluent chordal transitions", which is usually enough for me honestly, but I think other people might look down on me for making chordal music without any kind of theory of chord progressions version retrogressions versus unconstrained wandering. Part of the reason for this post is so that I can write progressions with augmented chords and be able to tell people a sense in which those progressions do progress.

All of the .maj chords and .7 chords and .m7b5 chords can be said to have "secondary" dominant functions in other keys. Maybe we're only allowed to use chords like F#.maj in C major as parts of functional progressions if we complete the advancement to the secondary tonic. Like "E.maj F#.maj B.maj" is a fine IV V I progression in B.maj. And B.maj is like a V or E.m, which has a tonic function in C major, so 
    "C.maj -> E.maj -> F#.maj -> B.maj -> E.m"

is a functional progression when we include the concept of tonicization, if not necessarily a good one.

So if you follow C.maj with an E.maj, you might be committing yourself to kind of a stupidly long resolution pathway (not necessarily the one listed above).

But still none of this gets us progressions with augmented chords.

So here's the next idea: passing chords. Start with a functional progression. Now insert chords between the functional chords that are fluent continuations. You're allowed, oh, at least one non-functional chord between each pair of functional chords, yeah? Maybe there are or should be rules on how many passing chords you place between functional chords. But one should be okay at least.

And I think I believe in passing chords more than most of the rest of this post. I don't know if progressions in the key of A minor can use the same function assignments as progressions in the key of C major, and I don't know if we can transplant function assignments from the key of Eb major to C major, and I don't know how much temporary tonicization you can use functionally in a way that listeners will pick up on and approve of, but passing chords between functional chords are good shit, and I don't think I care if they are introduced as suspensions that are prepared in consonance and are resolved downward, or if, when the passing chords have tritones, those tritones are resolves by melodic intervals of semitones, or much else. On small timescales in music, you should be pretty free to do fluid things, and the structure of progressions can operate at larger time scales. Maybe. Or at least you can do fluid things within the chords field of "chords that are fluent from your starting chord". You should be allowed to monkey around in that submanifold so long as your wandering has some direction in broad strokes, I think.

I'll do some programming and let you know how it sounds. But it might look like this functionally: [T, ?, S, ?, D, ?, T]. And it'll probably have modal mixture. And it might even have multiple chords of one functional type, themselves potentially separated by a passing chords, before progressing to another functional type. And I might even do [T, S, T] sometimes, because there's nothing wrong with a little retrogression now and then. It can be down right idiomatic.

And now I can allow myself to use whatever stupid chords I want, like .aug-maj7b13(no 3), so long as I follow the logic/conventions of this post. And so long as I like the results of doing that.

To summarize: Find a voiced starting chord for a song (or for an 8 bar phrase or something). By voiced I mean that we have a vertical realization - all the pitches specified, not just pitch classes. Next find a space of chords that are fluent continuations from this phrasal starting chord. This space will potentially be huge if you have allow lots of chord types or if you have a lax notion of fluent melodic continuation. That's fine. Find chord progressions using this chord space that are fluent between each member and which loop back to the phrasal start chord. Fluent continuation and good harmony are most of what you  need for good music, but having the chords be fluent with the phrasal start adds a little coherence hopefully - a weak form of coherence that allows for modal mixture and weird augmented chords and things, but still some coherence. In particular, find looping chord progressions that have Tonic chords followed by Subdominant chords followed by Dominant chords - for some assignments of those functions to the diatonic triads and tetrads of a key, and perhaps also assignments for the parallel key. They don't have to be the ones I listed above: listen to how you like to use the chords and see how they function for you. In the past I starting outlining a chord grammar that included modal mixture incorporations rules: [A Chord Grammar]. That one was actually based on what sounded good to my ear. I should revisit it and see if it accords with the T, S, D assignments in this post. My guess is not: I recall using modal mixture chords more like passing chords. But it's worth reviewing. Anyway, once you have "T -> S -> D -> T" chord progressions, where all the chords are fluent with each other and with the starting chord of the phrase, then you can try inserting passing chords between the functional ones - still requiring that the passing chords are fluent between the previous chord and the following chord, and that they are fluent with the phrasal start. I think I also accept "T -> D -> T" and "T -> S -> T" as grammatical. Yeah.

This might sound like a lot of computing. It is a lot of computing. But I just have to code it once and then the computer will do it for me. And then I can say whether an arbitrary chord progression is grammatical in some sense. And maybe I don't also have to require grammatical well-formedness in my pieces. But I was missing a notion of it when composing with crazy chords in 5-limit just intonation. And this feels good. I'm glad I have sketched out some structure that I can impose on my songs, which is both weak enough to allow very free music, while being grounded in obvious concepts like "relate your chords to the tonic" and "use (subdominant, dominant, tonic) progressions" and "you should be able to use some pretty crazy passing chords without having to assign any other phrasal grammatical chord function to them besides Passing Chord."

Suppose you have a Subdominant chord and a tonic chord,

    S -> T

and you're curious what you can insert between them and still be grammatical. Well, you can do S, and that's just a longer subdominant section. You can do T, and that's a longer tonic section. You can do D, and that's the familiar (S -> D -> T) progression. And you can do a passing chord. So basically anything. It's a pretty lax system. I think the functional assignments that I made in this post to modal mixture chords are consistent with the modal mixture chord grammar in the previous post, but honestly because of the laxity of the rules in this post, that doesn't actually express much concord: it's more like "this vague system can interpret any chord sequence, including the ones that I previous said that I liked". Not quite that bad, but almost that bad. Let's see an example. Below are some rules I had introducing for expanding chord progressions that including an F.m:

(C -> F.m) => (C -> Bb -> F.m) // (T -> S) => (T -> S -> S) 
(C -> F.m) => (C -> F -> F.m)  // (T -> S) => (T -> S -> S)
(C -> F.m) => (C -> Eb -> F.m) // (T -> S) => (T -> T -> S)
(C -> F.m) => (C -> D.m -> F.m)// (T -> S) => (T -> S -> S)
(F -> C) => (F -> F.m -> C)    // (S -> T) => (S -> S -> T)
(F -> Eb) => (F -> F.m -> Eb)  // (S -> T) => (S -> S -> T)
(F.m -> C) => (F.m -> G -> C)  // (S -> T) => (S -> D -> T)

The bottom rule changes an (S -> T) progression into (S -> D -> T). All of the other rules can be interpreted as prolonging the tonic section or prolonging the subdominant section of an (S -> T) or (T -> S) progression.

I'm mostly okay with this. It's a little unfortunate that the ideas in this post don't distinguish between (F -> F.m) and (F.m -> F), since I had a strong preference for the former in the modal mixture grammar post. I'll keep thinking about it. Maybe I should think of some constraints on prolongations of a functional section. Like [C.m7, C.m, C.maj7, C.maj, E.m7, E.m, Eb.maj7, Eb.maj, G.m7, G.m, A.m7, A.m] might all have tonic functions, but that doesn't mean you can endlessly flop between those guys in a random sequence, even with fluent transitions between each flop.

I think G.m probably doesn't have a tonic function. I'd say that E.m in C major has a kind of vague function that's somewhat tonic and somewhat dominant, and that G.m gets the same treatment in the key of Eb major, and it's correct to say that it's vague in that way in the key of Eb major, but not that it functions the same way in the relative minor key of C minor. E.m is more clearly dominant than tonic in the key of A minor and G.m is more clearly dominant than tonic in the key of C minor. So G.m should also be called dominant in C major. But mostly you just don't use it, since G.maj is a much stronger dominant.

I haven't talked about it, but I think higher extensions beyond 7 should come for free. You can add on 9, 11, 13 without changing the function. Also if you have "no 3" or "no 5", you should be able to remove those and treat the chord as whatever is listed without that. I wrote a little program to remove those higher extensions and lacunae from my tertian chord name dictionary, and the program says that all the chords in the dict can be simplified down to one of these: [.aug, .aug-maj7, .aug7, .maj, .maj7, .7, .majb5, .maj7b5, .7b5, .m#5, .m-maj7#5, .m7#5, .m, .m-maj7, .m7, .dim, .dim-maj7, .dim7, .m7b5, .5]. Those are all of the dyads, triads, and tetrads that I want my programs to consider when judging the grammaticality of chord sequences.

Another squiggle in the theory: E.maj and E.7 have a dominant function if they resolve to A.m or A.m7. I don't know how to judge whether it's resolving to to those except to check whether (A.m | A.m7) is the next chord or the next-next chord after a passing chord. But maybe that's enough.

Another squiggle: If a chord has a defined function relative to the key of C major, then it shouldn't be called a passing chord. Passing chords should let you bring weird chords into sequences and only weird chords. It's only after you have tried naming all the chords by their functions that you can start naming chords as passing chords.

Final squiggle: A sequence of grammatical transitions should also be called grammatical. So if "T S T" and "T S D T" are both grammatical, then we should also say that "T S T T S D T" is grammatical.

I think the next thing I want to do is look at some looping SATB chord sequences of 4 or 8 chords in length and say whether they're SDT grammatical forward, backward, both, or neither. I've got code written up for almost everything in this post. I'm really close to have voiced chord sequences that are 
    * looping, (which is useful both for structured repetition and for gluing sequences together: if two chords loop and have the same starting chord, then you can put them together and have a longer loop)
    * fluent between sequential chords, 
    * fluent with the root chord (which I hope will lend at least a weak sense of tonal center even while we're using non-diatonic chords)
    * grammatically progressive
    * with allowances for grammatical modal interchange and a huge space of non-diatonic passing chords

Sounds great, right? I'm so close.

Here's a progressions that grammatical in both directions:

    [C.maj, F.m, F.maj, A.m, F.m, D.aug, C.maj] [T, S, S, T, S, p, T]
    [C.maj, D.aug, F.m, A.m, F.maj, F.m, C.maj] [T, p, S, T, S, S, T]

Though I like the F.maj -> F.m transition a lot more than its inverse and would only use the second one. After playing this on a piano, it doesn't sound great. Oops.

I decided that I would require passing chords to have tighter melodic transitions that other chords. When I did that, I found this palindrome:

    [A.m, Db.aug, F.maj7, D.aug(no 3), A.m] [T, p, S, p, T]
    [A.m, D.aug(no 3), F.maj7, Db.aug, A.m] [T, p, S, p, T]

Not that I'm looking for palindromes. This one is nothing special, but I think I'm moving in the right direction. Also, I think I'm now okay with multiple passing chords in a row. If you have fluid transitions between all your chords, and all your chords are fluid departures from the phrasal start, and your passing chords are entered and exited by very small melodic intervals, and the functional chords of your progression are grammatical, then that should be enough. I hope.

...

Woo! I enforced tight transitions between all chords, not just passing chords, and I got some nice things. 


[[P1, P5, M10, P15], [M2, P5, M13, P18], [P1, P5, M10, m17], [P1, P5, AcM9, m14]] [C.maj, D.m(add11), C.maj#9, G.m(add11)] [T, S, T, T]
[[P1, P5, M10, P15], [P1, M6, A11, P18], [P1, M6, M10, P19], [m-1, M7, AcM9, P19]] [C.maj, F.majb9, A.m7, G.majb9] [T, S, T, D]
[[P1, P5, M10, P15], [P1, M6, AcM9, P18], [m0, P5, AcM9, P18], [P1, P5, M10, P15]] [C.maj, D+.m7, G.m7, C.maj] [T, S, D, T]
[[P1, P5, M10, P15], [P1, M6, M10, P18], [M2, M6, M10, m16], [M2, M7, M10, P18]] [C.maj, F.maj7, A.maj(add11), B.dim(add11)] [T, S, p, D]
[[P1, P5, M10, P15], [P1, M6, M10, P18], [P1, M6, M10, m16], [P1, M7, AcM9, P18]] [C.maj, F.maj7, A.maj#9, B.dimb9] [T, S, p, D]
[[P1, P5, M10, P15], [P1, M6, M10, P18], [m0, P5, AcM9, m17], [m0, P5, M10, m17]] [C.maj, F.maj7, G.mb13, Eb.majb9] [T, S, D, T]
[[P1, P5, M10, P15], [P1, P5, A12, P18], [P1, AcM9, A12, P18], [m0, AcM9, A12, P19]] [C.maj, F.m(add9), D+.m7b5, G.mb9] [T, S, D, T]
[[P1, P5, M10, P15], [P1, P5, AcM9, m14], [P1, P5, M10, m17], [M2, P5, M13, P18]] [C.maj, G.m(add11), C.maj#9, D.m(add11)] [T, D, T, S]
[[P1, P5, M10, P15], [P1, P5, M10, P15], [m0, P5, AcM9, P18], [P1, M6, AcM9, P18]] [C.maj, C.maj, G.m7, D+.m7] [T, T, T, S]
[[P1, P5, M10, P15], [P4, M6, M10, M16], [m3, M7, A11, M17], [P4, M7, A12, M16]] [C.maj, D.m(add9), B.maj(add11), D.dim(add13)] [T, S, p, D]
[[P1, P5, M10, P15], [P4, M6, M10, P15], [P5, M7, AcM9, m14], [P5, M7, M10, m14]] [C.maj, F.maj7, G.maj#9, E.m#11] [T, S, D, T]
[[P1, P5, M10, P15], [P4, P5, AcM9, m14], [P4, M6, AcM9, P15], [P5, M7, AcM9, P15]] [C.maj, G.m7, D+.m7, G.maj(add11)] [T, T, S, D]
[[P1, P5, M10, P15], [m-1, M7, AcM9, P19], [P1, M6, M10, P19], [P1, M6, A11, P18]] [C.maj, G.majb9, A.m7, F.majb9] [T, D, T, S]
[[P1, P5, M10, P15], [m0, P5, AcM9, M16], [m-1, M7, AcM9, M16], [P1, M6, M10, M16]] [C.maj, D+.m, D+.dim, A.m(add11)] [T, S, D, T]
[[P1, P5, M10, P15], [m0, P5, M10, m17], [m0, P5, AcM9, m17], [P1, M6, M10, P18]] [C.maj, Eb.majb9, G.mb13, F.maj7] [T, T, T, S]

The chord names are approximate: they ignore d2 and Ac1 except in the name of the tonic. The harmonies are also approximate. But they're cool! 

There are not as many passing chords as I excepted, but I'll figure that out in time. Here are the ones that showed up:

    [F.maj7, A.maj(add11), B.dim(add11)] // [S, p, D]
    [F.maj7, A.maj#9, B.dimb9] // [S, p, D]
    [D.m(add9), B.maj(add11), D.dim(add13)] // [S, p, D]

I've got a few progressions in there that treat the G.m chord as being functional in C major. Oops. Guess I forgot to remove a rule in my code. But the progressions still sound great. I'm pretty excited to put counterpoint over this.

I was hoping that once I had weird chord progressions with jazzy extensions, that I could make something Romantic. But when I try to play a waltz figure with these chords and run some melodic lines on top, it sounds terrible using my virtual piano synth. Maybe I need to voice my chords in a piano-like way instead of a chorale/SATB -like way. And maybe I need a better virtual piano synth. And maybe my melodic lines need some work. And maybe there are other problems. But there are also solutions, and I'll find them.

My program hates putting G.7 into chord sequences starting on C.maj. Possibly that's because I tried requiring tight transitions between all the chords? And it takes a few tight transitions to get from C.maj to G.7, even though they're connected by fluent motion? 

Probably not. I tried longer chord sequences and I still rarely get G.7 chords.

I even cheated and asked the program to include chords that were fluent with either C.maj or G.7. But after generating a few hundred of those, I only got one sequence with a G.7 in it. 

There are tons of G.maj(add 11)s though? Hm....
...

I think I've got it. And it's a pretty hard problem to get around actually. Suppose you learned rank-2 spellings for chords like that the dominant 7 is 

    ".7": [P1, M3, P5, m7],

And then you learn about 5-limit just intonation and you want to write cool 5-limit music. You can be pretty sure that the rank-3 spelling of .7 will have the same A1 and d2 components as the rank-2 spelling, but the Ac1 components of all the intervals are a little mysterious.

I think there are decent arguments for any of these rank-3 spellings:

    #.7 = [P1, M3, P5, m7]
    #.7 = [P1, M3, P5, Grm7]
    #.7 = [P1, M3, Gr5, Grm7]

And probably some others. At some point you have to sit down and listen to dozens of version of the chord back to back and figure out what your ear likes. I've done that with some chord types, but not all of them, and my chord dict doesn't include the data that I've generated even for those chord types.

I tried putting the second one in my dict instead of the first one. It didn't make much difference. I tried finding some SATB voicings of G.7 that are also fluent with this voicing of C.maj:
    C.maj = [P1, P5, M10, P15] # [C, G, E, C]

and I got these:

    G7 = [P5, AcM9, P11, M14] # [G, D+, F, B]
    G7 = [AcM2, P5, P11, M14] # [D+, G, F, B]
    G7 = [M0, AcM9, P11, P19] # [B, D+, F, G]
    G7 = [M0, P5, P11, AcM16] # [B, G, F, D+]
    G7 = [P5, M7, P11, AcM16] # [G, B, F, D+]

I think the next thing to do is to hugely reduce my allowed chord qualities and see if I can force the program to do dumb progressions like [C.maj D.m G.7 C.maj].

...

There are some melodic spaces that have both sharps and flats, and I'm not sure whether they should be ruled out. They're definitely not standard in European harmony, but scales like that are totally accepted in middle eastern harmony.

There's a peculiarity I see when I run my programs where a G.maj chord will introduce an F#+ into the melodic space and it stays around for a very very long time. I should look into the details of why the melodic-spacing updating function doesn't ever decide that a regular F pitch class might be consonant with C.maj or A.m chord or other things.

Maybe I should just force a reset of the melodic space to C major scale when I play a C major chord.

...

No comments:

Post a Comment