Calculate the most comfortable finger positions for a guitar chord in a chord progression
Asked Answered
K

1

8

I would like to calculate how comforable it would be to play a given chord progression with different "fingerings" (e.g. open chords, vs bar chords).

For instance, if we have the chord progression G D Em C. For most people the most confortable way to play those would probably be as open chords:

G D Em C

If we have a chord progression that includes a chord that could not be plaed as an open chord in standard tuning, it's not that simple anymore.

For instance E C#m G# A
E C#m G# A

In that case we have

  • C#m which is played on the 4th fret in an Am shape.
  • G# on the first fret in a G shape.

The diagrams that I picked show a very uncomfortable way to "finger" the chords: A chord played in a G shape is generally very uncomfortable to play; Many "jumps" (open => 4th fret => 1st fret => open)

A (in my opinion) much more comfortable way to play it would be:

E C#m G# 2 A 2

Arguably it might be easier to play an open A instead. Especially if the sequence if played multiple times in a row.

What I'm trying to say is, there are a lot of factors that would have to be taken into consideration when calculating the most comfortable fingerings. And there are cases in which it comes down to personal preference.
But I think there are situations where most guitar players would agree that certain fingerings would be more comfortable to play.

I'm not exactly sure what I'm asking for. What I currently have is a big library of guitar chords that includes finger positions.

I'd say my problems are: I need a sort of formula and I need plausible numbers for the factors in that formula on which most guitar players could agree on. (E.g. G shape barre is less comfortable than Em shape barre; chord switch over 15 frets is less comfortable than chord switch over 2 frets; etc..)

Klimesh answered 26/9, 2017 at 17:22 Comment(0)
G
2

Fair warning: I am not a guitarist :)

Perhaps you could iterate though the list of chords and assign a sort of "score" to each, allowing you to order the list from highest "score" to lowest. For example, If a given chord has a G shape barre, add 10 to its score, but if it has an Em shape, only add 5. Or, if it has a chord switch over 15 frets, subtract 15 points, but only subtract 2 points if 2 frets are involved, etc.

In other words, each chord is awarded points for having desirable qualities, and the most comfortable chords end up with the most points.

A bit of pseudo-code:

// I saw that your library has `chords` as an object, so I will try to work with that
var chords = {/*...*/};

for (chord of chords) {
  chord.points = 0;

  // This is where you investigate the chord, awarding points for desirable qualities.

  // I suppose the chord's can be somehow determined from the fingering, but your the guitarist, not me! :)

  if (chord.shape == 'G') {
    chord.points += 10;
  } else if (chord.shape == "Em") {
    chord.points += 5;
  }

  chord.points -= chord.numberOfFrets;
  // or, if # of frets should be weighted more heavily,
  chord.points -= 100 * chord.numberOfFrets;

}

// now we can rank the chords by score

var rankedChords = Object.keys(chords).sort((a,b) => chords[a].score - chords[b].score);

You algorithm may start out basic, but as you think of ways to rank chords numerically, your results will become more meaningful. This sounds like a neat project, so I hope it goes well for you!

Godiva answered 26/9, 2017 at 17:57 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.