在吉他和弦进行中计算最舒适的手指位置

8
我希望计算如何使用不同的“指法”(例如开放和弦与按弦和弦)演奏给定的和弦进行时的舒适度。
例如,如果我们有和弦进行 G-D-Em-C。对于大多数人来说,最舒适的演奏方式可能是使用开放和弦:

G D Em C

如果我们的和弦进行包括一个在标准调弦下无法作为开放式和弦演奏的和弦,情况就不那么简单了。
例如:E C#m G# A
E C#m G# A 在这种情况下,我们有:
  • C#m 是以Am形状在第四品位演奏的。
  • G# 是以G形状在第一品位演奏的。
我选择的图示展示了一种非常不舒服的方式来“指弹”和弦:以G形弹奏的A和弦通常很难演奏;有许多“跳跃”(开放=>第四品 =>第一品=>开放)。
在我看来,更加舒适的弹奏方式是:

E C#m G# 2 A 2

可以说,如果这个序列连续演奏多次,可能更容易演奏一个开放的A。 我想说的是,在计算最舒适的指法时,需要考虑很多因素。 在某些情况下,这取决于个人喜好。
但我认为有些情况下,大多数吉他手会同意某些指法更容易演奏。
我不确定自己在问什么。 我目前拥有的是包括手指位置的大型吉他和弦库。 我想说的是:我需要一种公式,并且需要可信的数字,这些数字大多数吉他手都能同意。 (例如,G形栏弦比Em形栏弦不舒适;15个品位的和弦切换比2个品位的和弦切换不舒适等)。
1个回答

2

提醒:我不是吉他手 :)

也许你可以遍历和弦列表,并为每个和弦分配一种“得分”,从而使您能够将列表从最高“得分”排序到最低。例如,如果给定的和弦具有G形栏弦,则将10添加到其分数中,但如果它具有Em形状,则仅添加5。或者,如果它具有超过15个品位的和弦切换,则减去15分,但如果涉及2个品位,则仅减去2分等。

换句话说,每个和弦都因具有理想的特性而获得积分,最舒适的和弦最终获得最多的积分。

伪代码如下:

// 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);

你的算法可能起初很基础,但是当你考虑如何将和弦按数字排名时,你的结果会变得更有意义。

这听起来像一个很棒的项目,所以我希望它能为你顺利进行!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接