Chords and Music Theory in Chord Edit

Overview

ChordEdit has the means to help you determine what chord best matches a given set of notes in any key.

This program treats all chords as a "bag of notes".  By this we mean that you may only specify a chord by indicating the notes it may contain.  Intervals such as the 9th or the 13th wrap back around to the same single octave.

The reason for this is that many piano and guitar chords span two octaves or even more, so allowing you to specify which octave a note appeared in would be unnecessarily complex.  In general, except for the root note, the ordering of the notes is unimportant.

There are three windows that provide chord analysis:

The Chord Helper window is available all the time from the View menu.  The other two windows are advanced features, and should only be used if you have a thorough grounding in musical chord theory.

Chord Names and Parsing

ChordEdit doesn't always need to know how you name your chords.  If you don't need guitar chord "frames" (images), you can enter almost anything you want in the lyrics text.  As long as the name begins with a musical note, such as "Bb", ChordEdit will transpose the chords and lyrics correctly.

If you want to use chord frames, you need to follow the built-in "chord naming" scheme.  This is a set of rules that indicate what elements make up a chord name and the order in which they may appear.  You can explore this scheme using the "Chord Helper" window, which is documented below.  Using that window, you can type in chord names and it will recommend valid extensions to the chord you're typing.  It will also tell you about any errors you enter.

Because the chord frame library can contain many different versions of the same chord, the naming scheme allows for a "variant" part of the name at the end of the chord.  For example, a name like "Dm7!10th" means a Dm7 chord with a notation that it is to be played on the 10th fret.  The exclamation point separates the chord name from its variant part.  This, of course, is irrelevant if you do not use frames. You can explore the types of variants available using the "Add New Frame" window.

The next level of chord name "parsing" (or recognition) is its musical type.  If you want to use the Chord Helper window to analyze the notes in a chord, then the chord name must not only follow the chord naming scheme, but it must additionally refer to one of the built-in musical chord "types".

ChordEdit has a large number of built-in musical chord "types".  If you enable the Chord Library window (see below), you can review the musical structure of all the known chord types.  In addition, you may add new ones as long as their names conform to the chord naming scheme.  You may use the Chord Helper window to explore the musical chord types known to the program and how various types of chords are "spelled" (what notes are present) n different keys.

You should also review the section on Chord Equivalences in the documentation on Frames.  That section describes how you can create alternative names for chords.

There is more information on this topic below in the section on the Chord Helper window.

Activating the Other Windows

ChordEdit stores its configuration file in your Documents folder in the ChordEdit sub-folder.  To activate the Chord Weights window and the Chord Type Library window, navigate to that folder.

Open the file called "Settings.xml" in that folder using your favorite text editor.  You may wish to save a backup copy of this file in case of error.

Search for the line containing the word "AllowAdvancedFeatures":

<AllowAdvancedFeatures>false<AllowAdvancedFeatures>

Change the word "false" to "true", then save the file and restart ChordEdit.  Now the menus in the Chord Helper window will allow you to view the additional windows.

The Chord Helper Window

Choose Chord Helper from the View window.

Chord Helper Window

This window may remain open while you work in ChordEdit.

Note Keyboard

The lower portion of the window has buttons with all the possible musical note names.  Click on these buttons to select the notes that you want to see chord options for.

Use the Del button to remove the last note entered.  Use the Clear button to discard all the notes you've typed.

Once you've typed three or more notes you'll see the possible chords that can be reasonably formed from those notes appear in the list below.  If you double-click on an entry, that chord will be inserted into the currently open lyrics document.

The order of notes is generally unimportant.  The first note, however, is considered to be the "root", so entering the same notes with a different starting note may change the results.

The chords are listed in the order of most likely to least likely.

Search for a Chord Frame

Use the Search Frames item from the Actions menu to initiate a search for a matching chord frame.  This menu item will only be available if the Frames Library window is currently open.

Chord Speller

At the bottom of the window is a text entry box.  Here you can enter the name of a chord in standard form.  The background turns grey when the chord name is invalid.  If this happens before you're done with a name, just keep typing to finish the chord.

The notes of the named chord automatically appear at the top of the screen, and the chord type search algorithm is used to display alternative chord names below.

Choosing a "Hint" Key

If you want the note names to match the key you're currently using, select that key from the drop-down list in the menu bar.

Sometimes the choice of a key changes the ordering of the possible chords.  For more information, see the section on the Chord Weights window below.

The hint "Key" drop-down will usually be set to reflect the key of the song you're currently working on.

Chord Scoring

The chord analysis algorithm assigns a numerical score to each possible matching chord found for the notes you enter.  The lower the score, the more likely the chord is to match the current set of notes.

You can view the actual scores by choosing "Show Scores" from the Options menu.  See below for more information.

Levels of Parsing and Recognition

There are two distinct levels of chord name handlng in ChordEdit.  The first is syntactic and assists in finding chord frames; the second allows ChordEdit to assist you with musical information about the chord.  A "good" chord name should be acceptable to both levels of parsing.

The first level is used in naming chords and chord frames; it's designed to be very flexible for maximum coverage.  For example, it allows a name like "Cm13sus4", which is ridiculous. This naming convention is used for all built-in chord frames and for any you may add (unless you explicitly disable the naming convention).

The secondary chord name handler is associated with chord musical 'type' handling.  These names must be parsable (recognizable) by the primary level, but must have an accompanying declared chord type (see below).  If there is no known chord type, you see an error message in the lower right-hand corner of the window.

See the documentation below for the "Chord Type Library" window for more details.

Alternatives and Equivalencies

ChordEdit's parsing scheme for chord names may seem a bit rigid, but it is designed to avoid ambiguities interent in most naming schemes.  For example, what does A#7 mean?  Is it the 7th chord of the note A# or and A chord with a raised 7th?

As you type in the chord name text entry box at the bottom of the window, you'll see that suggestions for additional parts are being shown immediately to the right.  This is indended only as a guide.

Also remember that ChordEdit allows you do define "equivalencies".  These are small snippets of text that are treated as equivalent.  For example, some people write "C+" for "Caug".  So there's a built-in rule that says that "+" and "aug" are equivalent.   See "Equivalent Chord Types" under the Options menu on the lyrics window for more information.

The Options menu on this window has an "Equivalencies" item, which is a list of all the alternatives to the name you've typed based on the known equivalencies.  If you find that you can't get the chord parser to recognize what you're typing, look at this list of equivalencies and choose the best option.  It may parse and be recognized.

There is also a menu item called "Auto-select equivalent" under the Options menu; you can also activate it by typing Alt-E.  When you enter a chord name in the text box at the bottom of the window, that name may not be recognized as-is.  However, ChordEdit will try to rewrite that name using the known equivalencies.  If one of those equvialent names does represent well-defined chord type, that value will replace the name you entered.  This is intended as a shortcut to choosing one of the equivalent forms yourself.

The Chord Weights Window

Chord Weights Window

This window allows you to "tweak" the inner workings of the chord analysis logic.  Here's how it works.

The set of notes that you choose in the Chord Helper window are grouped as a chord.  Then this "pseudo" chord is matched against a set of known chord types in all possible keys (see Chord Type Library Window below). 

To perform this matching, a set of information is gathered about the quality of each possible chord match.  For example, does the chord you're testing lack a note that the chord type specifies?

Your chord is compared to every possible chord type and a score is calculated for each.  In the image above you can see eight numeric values, each associated with a possible "defect" in the match between your chord (using a "bag of notes" approach) and the chord type being tested.  These weights are multiplied by either the number of occurences of the error or by one (or zero if not true) if the defect is simply logical (e.g. "Penalty for missing type root in test chord").  The resulting values are added up, and that becomes the "score" of that possible match.

The possible matching chord types in every key and their scores are stored in a collection.  The collection is sorted by score (low is better, like golf) and returned to the Chord Helper window.

Only the position of the first note is 'special', because it's considered to be the root of the chord.  The order of the other notes is unimportant. 

When you use this window to change the weights, the results of the algorithm can change, sometimes significantly.  If you have changed the weights and don't like the results, use the Reset button to restore the default values.

Below is an explanation of each penalty value.  Numeric results are added together to form the 'score' of each possible chord match.

Penalty for extra tones in test chord

This number is multiplied by the number of tones/notes in the test chord that are NOT in the pattern/prototype chord.

Penalty for missing tones from chord pattern

This number is multiplied by the number of tones that the chord pattern specifies but which are missing from the test chord.  Note that a missing root note is not counted here; it's counted below (missing type root).

Penalty for different roots

The first note of a set of notes is considered a de facto 'root'.  This penalty is assessed if the possible chord match has a different root note.

Penalty for missing type root in test chord

This penalty is assessed if the potential chord match lacks the root note of the chord pattern being evaluated.

Penalty for chord type name length

This penalty is assessed by multiplying it by the length of the possibly matching chord name.  For example, the chord "C7b9" has three characters.  This number would be multiplied by three and added to the score. 

The idea is that more complex chord types usually have longer and more complex names, hence they should be treated as more unlikely.

Penalty for rarity of chord type

This value is based on the index [0..n] of the potential chord type in the master list of chord types.  Similar to the prior chord name length penalty, it penalizes rarer chord types.

Penalty for missing third in test chord

Music theory requires that almost all chords have a major or minor third (III) note.  This penalty is assessed when the potential chord match lacks a true third tone when the chord type has one.

Penalty for each note not in key (if given)

If the chordal analysis algortihm is given a "hint" musical key (like G, for example), this penalty is assessed for each note in the potential chord match that is NOT in that key.

 

The Chord Type Library Window

Chord Type Library Window

This window allows you to view the built-in chord types and their musical structure (using Roman numerals).  You may also add new types.

Remember that although the display shows more than one octave of notes, this is for conceptual convenience.  The underlying representation is a "bag of notes" in one octave.

You cannot change the note structure of the built-in chord types, but you can add new types.  Type a new chord name (without a root note!) into the "New Chord Type Name:" text box and choose "Add Type" from the Edit menu.

A new type will appear in the list, and the right-hand window will show a default value of "I, III, V".  Edit the notes using the checkboxes to form the pattern you wish to create.  Then choose Save from the File menu.

If you don't like the results of your changes, activate the window and choose "Reset Type Overrides" from the Actions menu.  This will restore the built-in system defaults.

Note that you cannot uncheck the root or "I" tone from any chord type.  That just wouldn't make sense, right?