songsmith custom chord analysis, extended chords (Migrated from


  • jouni posted on 01-13-2009 12:01 PM

     Hi Dan,

    Many thanks for the quick reply! What do they feed you there in Redmond... ;) I'm posting the same question here as well.

     I was wondering if it's possible to use the capabilities of Mysong/Songsmith to enter in your own lead sheets (let's say I wanted use 200 songs by Quincy Jones for the database instead of the database Songsmith ships with). This would be fantastic - it'd allow many more opportunities for musicians to generate much more specific kind of  chord progressions, tailored to your own taste. 

     The second question I had was regarding extended chords - I assume chord/lead sheet information in the current songsmith database are basic triads. The "jazziness" slider seems to introduce random chord substitutions (extensions), based on weighing values set in  substitutions.csv. Is this correct?

    I'm not a hundred percent sure this is how Songsmith works, so tell me if I'm way off base. However, if the substitutions are random weighed substitutions for major/minor triads, would it instead be possible to retain the extended chord information from the lead sheets, and have Songsmith initially suggest relevant extended chords - as close as possible to the original lead sheet data?

     There are fundamental harmonic reasons why for instance maj7 is being used instead of a dominant 7, dim7, or simple a major triad in a certain position in the progression.

     Chord extensions in music that sounds "good" to us depend on the chord prior to, and after the current chord - not random extensions on an isolated triad. Songsmith wouldn't have to "understand" the underlying theory for these rules for chord extensions in a temporal progression though - If the original data set is large enough,  I would imagine statistical data should be enough to give relevant suggestions. 

     Thanks for your great work


    London, UK

    Donnerstag, 2. Juni 2011 20:37


  • dmorris replied on 01-13-2009 6:24 PM

    Normal 0 false false false EN-US X-NONE X-NONE /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-qformat:yes; mso-style-parent:""; mso-padding-alt:0in 5.4pt 0in 5.4pt; mso-para-margin:0in; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin;} Great questions, jouni!  These answers will be pretty technical; so this isn't something I'd recommend to novice users.  But for those who are interested in digging a little deeper...


    The creation of our model from lead sheets is a lot of code that's not part of the core project, so you can't directly input new lead sheets, but the actual files that get generated are just text files: obsmodel.txt, majortransmodel.txt, and minortransmodel.txt.  For mathematically-inclined users with some programming expertise, you can actually put anything in those files that you want.  In fact we did a subsequent research project about exploring alternative transition models based on genres, and the results are posted at the following URL in Songsmith-compatible format:



    In my opinion, the matrices are not quite as "polished" as the ones that ship with Songsmith, but it gives you a feel for how it's possible to substitute alternative transition matrices.


    Regarding extended chords, there's a table of chord substitution probabilities called "substitutions.csv" that you can try editing if you want to control the proportions of different extended chords that get generated, and some values in jazzfactormapping.txt - all with comments to explain how they work - that allow you to control how often extended chords get generated.  Controlling more detailed properties of extended chord generation is not possible externally.

    Of course that's a fairly high-tech answer, but I hope it's interesting to some of our development-inclined users!


    Thanks for your interest!




    Donnerstag, 2. Juni 2011 20:38