I'm going to pose a fun question for any music theory nerds like myself who are also interested in Songsmith, on the topic of how Songsmith chooses extended chords (e.g. maj7, min7, etc.)
First a little background about how Songsmith works (much more info on our research page). Songsmith has a model - learned from actual song data - that maps melodies to sensible chords, and a model - also learned from actual song data - of sensible chord transitions. So when you give Songsmith a melody, it picks a sensible chord sequence, which of course you can adjust with the tools in the Songsmith UI. But there's not enough training data in the universe to learn those models for extended chords (7ths, 6ths, etc.), only the basic triads (maj/min/aug/dim) (and we called "sus" a basic triad for convenience). But of course you still want to mix it up with some chord extensions, so once in a while you can get C7, Dmin7, G13, etc.
First fun question for theory nerds who also write code: given that we're using machine learning to generate the chord sequence, but don't have enough training data to do extended chords, what would you do to get extended chords in the mix? :)
Now I'll tell you what Songsmith does. In all the time I spent working on Songsmith, the most fun 1-hour project was file you'll find in the Songsmith installation directory called "substitutions.csv", which basically tells you everything that's in this post, in the comments at the top of the file.
When the user turns the "jazz factor" slider up past some threshold (which isn't that high, maybe halfway), then *after* Songsmith picks a sequence of basic chords for a melody, it turns to this table, which was hand-coded in excel, to say "which chords are most likely to have extensions, and what should those extensions be?".
Assume everything is in the key of C; the whole table gets transposed as appropriate to the key of the current song.
The two columns on the left (columns A and B, if you're looking at the file in Excel) indicate a chord (anything that doesn't appear here was too rare to bother with). Then you can ignore the next three columns. The "substitution multiplier" column (column F) defaults to 1.0, and says "how likely is Songsmith to extend this chord at all?". So for example, the "0.65" by "C Major" says "The major I is a little less likely than other chords to ever get extended", and the 1.2 next to "E Major" says "the major III (or major V if we're in A minor) is a little more likely than other chords to ever get extended". This value is multiplied by a value representing the current position of the "jazz factor" slider, so C is always less likely to get extended than E, but they both get extended more often as the slider moves to the right.
Then you'll see a bunch of columns corresponding to specific extensions (7, maj7, m7, 6, m6, dim7, 9, 13): once we've decided to extend a chord, this is how we decide which extension to choose (the "dim7" of course only applies to the "dim" base chord, since nothing in this file can change the basic triad that Songsmith chooses). These get normalized, so for rows with only one non-zero value, it might as well be 1.0 (e.g., if an F major chord gets extended, it will always become an Fmaj7, there's no other choice, same with Bdim becoming Bdim7).
So the question for fellow pop-music-theory enthusiasts is:
** What did we get right and wrong in this file? What would you do differently? **
I love talking about pop theory, hopefully others will find this question interesting! And if you're a Songsmith user, feel free to play around with this file in your Songsmith directory to change the way Songsmith extends chords.
But keep in mind that there's nothing you can do in this file to change the triads that have already been picked by the time this file is accessed (that would require editing the model files, which are discussed in other threads, and which enthusiastic users are also welcome to edit :)).
-Dan from the Songsmith Team
- Changed type Dan MorrisMicrosoft employee, Owner Monday, July 14, 2014 5:16 PM