standard mode | Tonal category
- chords (vector_string) - the chord progression
- key (string) - the key of the whole song, from A to G
- scale (string) - the scale of the whole song (major or minor)
- chordsHistogram (vector_real) - the normalized histogram of chords
- chordsNumberRate (real) - the ratio of different chords from the total number of chords in the progression
- chordsChangesRate (real) - the rate at which chords change in the progression
- chordsKey (string) - the most frequent chord of the progression
- chordsScale (string) - the scale of the most frequent chord of the progression (either 'major' or 'minor')
Given a chord progression this algorithm describes it by means of key, scale, histogram, and rate of change. Note:
- chordsHistogram indexes follow the circle of fifths order, while being shifted to the input key and scale
- key and scale are taken from the most frequent chord. In the case where multiple chords are equally frequent, the chord is hierarchically chosen from the circle of fifths.
- valid chords are C, Em, G, Bm, D, F#m, A, C#m, E, G#m, B, D#m, F#, A#m, C#, Fm, G#, Cm, D#, Gm, A#, Dm, F, Am. Chords that not follow this terminology (i.e. Gb) will raise an exception.
Input chords vector may not be empty, otherwise an exception is thrown.