Arrangement Method
The arrangement process is as follows:
For each note we need to decide the chord to which it "belongs", which determines the position that the note should be played on the fretboard. Similarly for each chord we need to decide what the melody note (highest voice) should be, which determines the position and voicing of the chord. The following cases are possible:
- When a note and chord both change simultaneously, then the note "belongs" to that chord, and the chord gets that note as its highest voice. These are the truest "chord melody" moments.
- When a note changes without a chord, then the new note belongs to the most recent chord played and so is played from the position of that chord. For any notes that happen before any chords (pickup notes, for example), they belong to no chord and so their playing position is determined by other means.
- When a chord changes without a new note, then the new chord gets as its highest voice the most recent note played. (It's questionable whether this approach is correct or ideal, but seems to produce reasonable results for now.) For chords that happen before any note is played (intro chords), they have no prescribed highest voice.
Each chord symbol is then realized into an actual chord voicing. Because the voicings are to be limited to drop voicings, we start with the following requirements:
- The number of notes in the final voicing must be exactly 4.
- The highest note must be the melody note found in the previous step.
- As a corollary, the chord must contain the melody note, regardless of how it relates to the chord symbol.
The final voicings are constructed from the chord symbols as follows:
-
The chord is reduced to the closest 4-note seventh chord from among:
- Major 7th
- Minor 7th
- Dominant 7th
- Diminished 7th
- Half-Diminished 7th
- Augmented 7th
- Suspended 4th w/ b7
This is done by removing all additional alterations and extensions (b9, #9, b5, #5, #11, 13, etc) and by ignoring figured bass (slash chords are currently not supported).
-
In the case of a chord symbol that starts with less than 4 notes (a triad, in most cases), the chord is expanded to 4 notes by adding a single note (6th or 7th) and optionally moving the root to the 9th. Different expansions for major and minor triads are available as options in the settings:
- Major Triad → maj7 | maj6 | maj9 | maj6/9
- Minor Triad → m7 | m6 | m9 | m6/9
- Diminished Triad → dim7
- Augmented Triad → +7
- Suspended Triad → sus4b7
(It's questionable whether this approach is ideal. This step might be a good place to reconsider options. Chords with less than 3 starting notes are currently not supported.)
- Next, the melody note belonging to the chord (the most recent melody note) is added, if not already present in the chord, within the octave starting at the current root note of the chord (so an 11th is added as a 4th, a 13th is added as a 6th, etc). This will result in either the same 4-note chord from the last step (no change), or else a 5-note chord, consisting of the seventh chord plus one additional note.
- If there is now a 5-note chord, it is reduced to 4 notes by removing one of the notes from the original seventh chord, necessarily leaving the melody note. The note removed will be the root, the third, the fifth or the seventh (or, rarely, the fourth in the case of suspended chords). The note that gets removed is based on the chord quality of the original chord symbol (major, minor, dominant, etc.) and proximity to the melody note so that, in effect, the final voicing is like the seventh chord with one note being shifted up or down to become the melody note. Refer to the following tables for note substitutions:
- Major
in > | out |
b9 | root |
9 | root |
b3 | third |
4 | third |
#11 | fifth |
#5 | fifth |
6 | seventh |
b7 | seventh |
- Minor
in > | out |
b9 | root |
9 | root |
3 | third |
4 | third |
b5 | fifth |
5 | fifth |
#5 | fifth |
6 | seventh |
b7 | seventh |
7 | seventh |
- Dominant
in > | out |
b9 | root |
9 | root |
b3 | third |
4 | third |
b5 | fifth |
#5 | fifth |
13 | fifth |
7 | seventh |
- Diminished
in > | out |
b9 | root |
9 | root |
3 | third |
4 | fifth |
5 | fifth |
#5 | seventh |
b7 | seventh |
7 | root |
- Half-Dim
in > | out |
b9 | root |
9 | root |
3 | third |
4 | third |
5 | fifth |
#5 | fifth |
6 | seventh |
7 | seventh |
- Augmented
in > | out |
b9 | root |
9 | root |
b3 | third |
4 | third |
b5 | fifth |
5 | fifth |
13 | fifth |
7 | seventh |
- Suspended
in > | out |
b9 | root |
9 | root |
b3 | fourth |
3 | fourth |
b5 | fifth |
#5 | fifth |
13 | fifth |
7 | seventh |
- At this point, any extensions that were previously removed to reduce to a 4-note chord (e.g. b9, #9, 11, #11, 13...) are re-considered. For each extension, if it's possible to modify a note in the chord to fit a desired extension without affecting the melody note or the fundamental chord structure, it is modified in-place. Right now this is done with rules-of-thumb:
- If the extension is a b9 or a 9, the root is present, and the root is not the melody note, then the root is moved to the b9 or 9.
- If the extension is an 11, the third is present, and the third is not the melody note, then the third is moved to the 11.
- If the extension is a b5 or a #5, the fifth is present, and the fifth is not the melody note, then fifth is moved to the b5 or #5.
- If the extension is a 6, the major seventh is present, and the major seventh is not the melody note, then the major seventh is moved to the 6.
- If the extension is 13, the fifth is present, the fifth is not the melody note, and the chord is a dominant, then the fifth is moved to the 13.
(More research is needed to accommodate other extensions, in other situations.)
- The resulting 4-note chord is inverted to place the melody note in the highest voice.
- The octave of the inverted chord is increased (or decreased) so that the highest voice matches the octave of the original melody.
- Finally, the appropriate voice(s) are dropped an octave to produce the final drop chord voicing with the required melody note on top.
The next step is to decide the fret position in which to play the drop voicing. This is currently done naively using the following rules:
- All notes of the chord must be played on strings that follow guitar adjacency rules for the drop type (i.e. in a drop 2 voicing all notes must be on four adjacent strings, etc.).
- The chord should be played on the highest string set possible while maintaining the previous rule of adjacency.
- All of the notes of the chord should ideally be played on frets above some "preferred minimum fret" (currently pinned to fret 5).
The process of determining the position is as follows:
- Find the melody note on the highest string possible, while respecting the "preferred minimum fret".
- Check if the remaining chord notes can be placed on the remaining adjacency-restricted strings, while respecting the "preferred minimum fret". If it is possible on the current string set, this is the final voicing.
- If it's not possible on the current string set, move the melody note down to the next lowest string and repeat the process until a voicing is found where all notes can be played on adjacency-restricted strings while respecting the "preferred minimum fret".
- If you run out of string sets to try (likely if the melody note is very low), then decrease the "preferred minimum fret" and repeat the process.
- If you run out of string sets with a preferred minimum fret of 0, then the drop voicing with this melody note can't be played on the guitar. (This will currently cause the entire arrangement process to error out with the message that the melody goes too low.)
Finally, the fretboard positions and tablature for each melody note are determined simply by two rules:
- If the note comes before any chords in a tune, then the note is played on the highest possible string, starting from the "preferred minimum fret".
- If the note comes on a chord, or between chords, then it is played on the highest possible string, starting from the position of the lowest fretted note in the most recent drop chord. In effect, the chord sets up the hand position (minimum fret), and the notes that follow are played in the same position as that chord. (This is another place where the approach may not be ideal. Current results are adequate, but there is likely room for improvement.)
Et voilĂ ! All chords have been turned into drop voicings with melody notes on top where appropriate. The voicings have been mapped on the guitar to produce chord diagrams, and all melody notes have been given a string and fret to produce tablature. Your chord melody arrangement is complete!