What is the CRAP score?

The Commonality and Repetition Analysis of Progression score is a new tool in music theory analysis that can compare two chord progressions and return a numerical score to show the degree of similarity between the two progressions.  This program exists as an Excel spreadsheet, which can be freely downloaded here:

The user will input the root and chord quality for both chord progressions into the corresponding cells, and the sheet will display the corresponding notes for each chord.  The spreadsheet will then take the chords from the two inputs and run them through a formula, which produces a score from 0 to 100 to measure the similarity between any two progressions of four chords, where 100 is completely identical.  This number is the Commonality and Repetition Analysis of Progression score, which will from this point on be used in its abbreviated form.  The CRAP score of a progression (shown above comparing two progressions that enjoyed widespread use in popular music during different periods in history) has been calibrated so that progressions sharing a great deal of similarity will fall somewhere over 50-60%, while those with significant differences will fall below it. 

Here’s how it works: the formula compares each chord in one set with its corresponding chord in the other.  Chords are evaluated for how many notes they have in common (both played and unplayed—the reasoning for this will become evident later), as well as by their chordal root and quality, and the number of matching points is scored against the maximum available number of matches to give each chord a subscore.  Below is a chart showing the subscore between a C major chord and a wide array of other chords.  Note that the system is able to handle chords with any number of tones. 

Looking at the chart, a few points stick out.  First, observe that the first result compares C major to itself, giving a subscore of 100.  Next, we see three results that give a subscore rounded to 93, Cmaj7, Cdom7, and C6.  These chords all classify as major chords in this system, so the only difference between C major and these chords is the extra tone the chord adds.  Notably, we see that Amin7 scores lower (79) despite containing all the same tones as C6, due to its root and being classified as a minor chord in this system.  An open C chord (or C5, or “power chord”) comes in as the next closest match at 86, missing only one note but being qualified as “other” in its chord type.  Now is a good time to point out the reasoning behind some of my methodology.  In order to compare chords of varying numbers of notes, I needed the ability to deduct points for chords that have too few notes as well as too many.  The way we’ve solved this problem is by comparing the notes played in each chord, but also the notes that are left out.   

            Like jazz, the CRAP score is (at least partly) about the notes you DON’T play.  If you examine C major compared to C major, notice that all the matched notes AND all the matched silences are highlighted as overlap; in Cdom7 the extra note is marked off, and in C open the missing note is marked off, which wouldn’t be possible without scoring the absent notes.  A quirk of this decision can be found if we skip to the end of the bottom line.  Playing all possible tones results in an overlap score of 21, as there are some common tones played, but playing nothing at all results in a score of 64 due to the high overlap of common unplayed tones.  The only way to achieve a subscore of 0 is to play a chord containing all notes EXCEPT those contained in the comparable chord, shown in the final column labeled “all but.”  I do not expect to see any of these edge cases come up frequently as it’s rare for a song to contain a chord progression with these unusual combinations, but it’s worth noting that since all subscores will eventually be multiplied then the inclusion of such an anti-chord with a subscore 0 would result in a 0 overall CRAP score regardless of the contents of the other chords, although such a case would be additionally unusual because the program searches for best fit (more on this later).  It also means that a chord progression compared to total silence shows up at a CRAP score of around 7 because of the common unplayed tones. 

            Returning to the top line, we see that the next closest chord matches are C minor, C augmented, and just the note C all by itself, all coming tied with Amin7 at a subscore of 79.  Cmin7 comes in next at 71, tying the scores of A and E minor chords with their two common tones each, making them the closest related triads with a different root.  C diminished initially concerned me in how much lower it scored compared to the similarly unusual C augmented, but upon further thought this makes sense as I’m comparing them to a major chord—if I ran the same comparison with a minor chord their results would be reversed.  From here we see that most triads with different roots will fall somewhere below this threshold, some further than others, but the lowest a triad can fall is a score of 43 on account of the minimum six overlapping tones not played by either chord.  Such a weight on unplayed tones was a decision I considered for a long time, and ultimately I think it is the appropriate decision for the formula as it currently exists.  When comparing non-identical triads, any difference in notes effectively gets counted twice (look at C major vs C minor, showing a miss on both E and E-flat), so the common unplayed tones almost serve to add some stability that might otherwise be lost when examining chords with so few notes. 

            Once the four subscores are calculated, the scores are multiplied together, along with another factor I call M, the modality measure.  M evaluates the full progressions against each other to test if the same notes are being used in both, as would be the expected case in progressions that have been normalized to the same key as they are in this system (more on this next paragraph).  In this way, the overall score will reflect the added dissimilarity that comes from any chords that borrow tones outside the expected modality which isn’t reflected at the standard subscore level.  As mentioned earlier, a score of 50-60 or greater indicates a similar progression, and 100 represents an identical progression.  Since this is a multiplication-based function, progressions in which more than one chord does not identically match will result in a heavy score reduction, while a progression with just one different chord will often return a result that is equal to the subscore of the one different chord.  For example, the progressions I-V-vi-IV and I-V-ii-IV would receive a score of 64 (indicating very similar but not identical), where 64 is also the subscore of vi compared to ii. 

            As alluded to previously, the system is programmed to take the two input progressions and compare them for best fit, which often requires transposition and/or beginning one progression somewhere besides its first chord.  The program automatically tests the input progressions in every possible transposition and starting position (which I will refer to as “pitch shift” and “phase shift,” respectively).  The program is built to compare two looping progressions of four chords, regardless of key or starting chord, so it pitch shifts one progression between all twelve possible keys, and phase shifts between all four possible starting points, so that in total the program analyzes the progressions for best match in each of the 48 possible configurations before selecting the result of best fit.  This allows the program to recognize the match between, for example, the progressions I-V-vi-IV and IV-I-V-vi regardless of their starting keys by normalizing both to the position of best fit for phase and pitch.  The program does not recognize progressions that have been reversed, however.  While I feel strongly that starting in a different phase of the chord progression doesn’t count as a different chord progression, I can see a stronger argument for how the progression reversed shouldn’t be considered the same, similar to how there are two distinct L-shaped blocks in Tetris and no amount of rotation will turn one into the other. 

            At this time, the program is “calibrated” based on calculations between exactly four distinct chords, because so much music divides naturally into units of four, and progressions of this length are so common in popular music.  If I created a version of the program that analyzed, say, progressions of eight chords by simply repeating the same methodology as above, the scores could never increase as more chords are added.  Since the formula is based on multiplication of decimals, increasing the number of full chords analyzed at once can only reduce the score.  The CRAP score and its component subscores are expressed as a percentage, so a perfect 100 subscore correlates to multiplying by 1, and since this is the highest possible subscore all others will multiply by something between 0 and 1.  This means that, if the program were to be redesigned to analyze a section of more than four chords without changing any other methodology, the resulting scores would either remain the same (if all new chords were a perfect match) or decrease for each piece that isn’t identical, but could never increase.  Even entering the same four-chord progression twice would decrease the score, since any differences would be multiplied against themselves, and since the entire purpose of the program is to analyze repeating progressions it wouldn’t make any sense for the score to decrease as the progression repeats exactly.  Analyzing progressions of different length is actually doable in the program, IF you know how to do it.

Deeper Analysis and More Complicated Progressions

            In its most basic form, the program is made to analyze two looping progressions each comprised of four equal-length chords for commonality, so in order to analyze a segment of differing length or number of chords, some extra consideration is required.  If a progression contains only three chords, but one chord is double the length of the others, simply enter this chord twice so that its duration is accurately reflected across the progression.  A progression of two chords is easiest analyzed by entering the progression twice to reach four, and a progression of one broadly sustained chord (if you can even call it a progression) would just enter the same chord in all four spaces.  But what about progressions of greater length?

Averaging, rather than multiplying, is the program’s solution to progressions both longer and shorter than four chords.  In addition to the simple version of the program to compare two looping progressions of exactly four chords, there are two other versions of the program that add features for further analysis.  A second sheet exists for split chord comparison, for a progression where one or more units of time is split between two chords.  In this case, the user must additionally select the chord(s) in need of splitting, the root and quality of both chords in the split, and the ratio of time (or closest approximation of it) between the two split chords.  The program will calculate the subscore of any split chord by taking the average of the two composite chords, with the ratio weighting the average if it isn’t evenly split.  This allows for analysis of progressions containing chords of unequal length, as well as analysis of progressions containing more than four chords across a time span of four units, potentially allowing the analysis of up to eight chords.  However, here we must exercise some caution in where and how to arrange the chords.

If a progression of eight chords is nearly identical between its first four and second four chords, then the split chord analysis should be arranged to overlap with itself as much as possible.  For example, consider the progression for the introduction to the song Don’t Stop Believing, by Journey:  E  B  Cm7  A       E  B  Gm  A.  If I wished to compare this progression to the I-V-vi-IV progression found in much popular music (and elsewhere on this website), it would be incorrect to split each chord by entering the full eight chord progression as E//B  Cm7//A  E//B  Gm//A.  Note that I am using the double slash // to indicate a split chord throughout my analysis.

Entering the progression in this way would result in a very low CRAP score, despite the obvious overlap between the progressions.  Instead, because of how the math is calculated, the progression is better analyzed by only splitting the third chord between the versions found in the first and second halves of the progression, in other words E  B  Cm7//Gm  A.  When entered in this format, the overlap is shown accurately and the CRAP score is accordingly much higher. 

Now is a useful moment to note that the acronym CRAP was honestly an emergent phenomenon and not a statement of quality.  When I considered the metrics the score was attempting to measure I chose the component words first, then realized they could be easily arranged to form a recognizable word.  It does not necessarily reflect my opinion on the songs being analyzed, although it sure does sometimes…

            Analysis of a broader section of a song is also possible, though manual averaging may be required.  For example, if a song’s chorus used one progression of four chords and completed three full cycles, and on the fourth cycle one chord was changed, then the CRAP score for the first progression would be calculated and multiplied by three, then added to the score of the second progression a single time, and then divide the answer by 4 to achieve an overall score for the full chorus of the song.  This could, in theory, be extrapolated out to an entire song to achieve an overall score, but depending on the song this exercise might mask the differences and commonalities within, rather than revealing the sections that did or did not overlap to varying extents. 

Limitations and Looking Ahead                

While I have preprogrammed in the most common chord qualities I expected to see, there are certainly some chord types that I have not included, as well as the ability to add or subtract notes to a chord.  The option to input the notes of a chord manually will always be important, as I don’t expect to be able to program in every possible chord.  This brings me to the third and final version of the program.  In the “4-Chord Manual Comparison” sheet, the user must still select the root and quality of each chord, but the chord does not autopopulate its component notes.  Instead, the user must manually enter the notes for each chord, which takes more time but offers unlimited freedom in selecting which notes are played at any given time.  A limitation of the manual entry sheet is that the display area for comparison will display the chords based on the root and quality selected, although the score itself will be accurately reflected.  It is possible to manually alter the display as well, although it will potentially delete the coding embedded in those cells.  More detailed directions can be found in the sheet itself. 

Obviously the program is limited in that it is only meant to analyze a progression of a given length, which does not apply to some songs.  While that is a limitation, I don’t see that specifically as a weakness of the program, rather a specific focus on a specific type of music, but I could envision a version of the program that takes a rolling average over the course of a longer song to produce a more accurate full song analysis.  However, this would require a full reconstruction of the formula, which is well beyond the scope of my current focus.  Should anyone else wish to attempt such a thing, they have my blessing to do so.  I offer my program freely, and it may be used or adapted as the user chooses, so long as the user correctly understands how the program functions and is using it within its capabilities.

            To see the system in action and better understand the capabilities of the program’s more advanced features, refer to the “The Most Repetitive Showman” section of the website.