7

我想计算使用不同“指法”(例如开放和弦,与小节和弦)演奏给定和弦进行的舒适度。

例如,如果我们有和弦进行G D Em C。对于大多数人来说,最舒适的演奏方式可能是开放和弦:

G D 恩 C

如果我们有一个和弦进行,其中包括一个在标准调弦中不能作为开放和弦演奏的和弦,那就不再那么简单了。

例如E C#m G# A
乙 厘米 G# 一个

在这种情况下,我们有

  • C#m在 Am 形状的 4 品上演奏。
  • G#在 G 形的第一个品格上。

我选择的图表显示了一种非常不舒服的“手指”和弦方式:以 G 形弹奏的和弦通常弹奏起来非常不舒服;许多“跳跃”(打开 => 4 品 => 1 品 => 打开)

一个(在我看来)更舒适的演奏方式是:

乙 厘米 G#2 A2

可以说,打公开牌可能更容易A。特别是如果序列连续播放多次。

我想说的是,在计算最舒适的指法时,需要考虑很多因素。在某些情况下,它归结为个人喜好。
但我认为在某些情况下,大多数吉他手都会同意某些指法弹奏起来会更舒服。

我不确定我在问什么。我目前拥有的是一个包含手指位置的大型吉他和弦库

我会说我的问题是:我需要一种公式,并且我需要对于该公式中大多数吉他手都可以同意的因素的合理数字。(例如,G 型巴利比 Em 型巴利更舒适;15 品的和弦切换不如 2 品的和弦切换舒适;等等。)

4

1 回答 1

2

公平警告:我不是吉他手 :)

也许您可以遍历和弦列表并为每个和弦分配一种“分数”,允许您从最高“分数”到最低排序列表。例如,如果一个给定的和弦是 G 型的 barre,则在其分数上加 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);

你的算法可能从基础开始,但是当你想办法对和弦进行数字排序时,你的结果会变得更有意义。这听起来像一个整洁的项目,所以我希望它对你来说一切顺利!

于 2017-09-26T17:57:16.853 回答