Chord Analysis

There are two important public methods in the ChordAnalysis class, getFirstPassChords and getSecondPassChords. (Please ignore the getChords method - it is meant to be package-private).

Their names were a relic from the design of this particular algorithm, which involves two passes. The important thing to know is that the getSecondPassChords produces more favourable results.

In any case both require the same parameters, and return the same type of values, which I will know discuss.


phrase: is the phrase to be analysed

beatLength: the length of a beat, generally 1.0 which represents crotchets

tonic: a int representing the MIDI value pitch of the tonic, for example C can be represented by 0 or 60 or indeed any multiply of 12, C# by 1 or 61, G by 7 or 67.

scale: one of PhraseAnalysis.MAJOR_SCALE or PhraseAnalysis.MINOR_SCALE. If necessary, other scales can be implemented using the same format as these examples.

--Return value--

Both methods return an array of ints.

The length of the array represents the number of beats in the phrase.

Element [0] represents the first beat of bar 1, [1] the second beat of bar 1, [2] the third beat of bar one, and so.

The value of the element will always be in the range of 0 - 7. These values correspond to the following chords:

0: I

1: II

2: III

3: IV

4: V

5: VI

6: VII

7: no particular chord, or same as previous. This generally occurs when you have things like minims or semibreves. The down beat will have a chord specified, but the second and consequent beats of the note will have 7s.



jMusic Tutorial Index