我想计算一下,用不同的“指点”来演奏一个给定的和弦级数会有多舒服(例如,开放和弦、对棒和弦)。
例如,如果我们有和弦级数G D Em C。对大多数人来说,最合适的演奏方式可能是开放的和弦:




如果我们有一个和弦级数,其中包含一个和弦,它不能作为标准调音中的开口和弦,那么它就不再那么简单了。
例如,E C#m G# A




在这种情况下,我们有
C#m是在4号播放的,它是Am形状的。G#在第一个fret上呈G形。我选择的图表显示了一种“手指”和弦的非常不舒服的方式:一个G形的和弦通常是非常不舒服地演奏;许多“跳跃”(打开=> 4 => 1 fret => =>)
一种(在我看来)更舒服的演奏方式是:




可以说,使用一个开放的A可能更容易一些。特别是如果序列在一列中重复播放。
我想说的是,在计算最舒适的指数值时,需要考虑很多因素。在某些情况下,这可以归结为个人偏好。
但我认为,有些情况下,大多数吉他手会同意,某些指尖将是更舒适的演奏。
我不太清楚我想要什么。我目前拥有的是包含手指位置的吉他和弦的大型库。
我会说我的问题是:我需要一种公式,我需要一个可信的数字,在这个公式中的因素,大多数吉他演奏者可以达成一致。(例如,外形拉杆比Em板条更不舒服;和弦开关超过15个频率比和弦开关超过2个频率更不舒服;等等)
发布于 2017-09-26 17:57:16
公平警告:我不是吉他手:)
也许你可以迭代一遍和弦的列表,并给每个和弦分配一种“分数”,这样你就可以把这个列表从最高的“分数”降到最低。例如,如果一个给定的和弦有一个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);您的算法可能从基本开始,但当您考虑如何对和弦进行数字排序时,您的结果将变得更有意义。这听起来像一个整洁的项目,所以我希望它适合你!
https://stackoverflow.com/questions/46432433
复制相似问题