3

我目前正在大学学习,为了我的个人项目,我将创建一个吉他和弦拾取应用程序,其中和弦将保存在数据库中(我将使用 Oracle Database 11g Express Edition)。用户可以键入和弦的名称或与该和弦相关联的音符,它将显示一个和弦图像以给出它的视觉表示。我对如何将和弦存储在数据库中感到困惑。我需要一张用于和弦系列(A、C、D、G 等)的表吗?一张用于和弦使用的单独音符,另一张用于存放指板上的所有音符?对此的任何帮助将不胜感激。

我的应用程序将在 Android Studio 中开发。当我创建数据库时,它将如何连接到我的应用程序?

谢谢。

4

1 回答 1

3

我会这样做:

表 1 半音顺序映射到音符:

0 -> C
1 -> C#
2 -> D 
3 -> D#
4 -> E
5 -> F
6 -> F#
etc.

表 2 和弦名称映射到多个半音间隔:

Major -> 0
Major -> 4
Major -> 8
Minor -> 0
Minor -> 3
Minor -> 8
etc

现在您拥有构建和识别和弦所需的一切。

示例:查找 D 大调的音符

1)在表1中查找D的索引开始,即2

2) 找出表 2 中主弦的所有区间,即 0、4 和 8。

3) 通过将表 2 中找到的区间添加到起始索引中,找到表 1 中的注释。

像这样:

2 + 0 = 2 => D,
2 + 4 = 6 => F#,
2 + 8 = 10 => A

当加 3 的结果高于 11 时,您需要减去 12 才能得到正确的音符,高一个八度。当您的绳索跨越超过一个八度音阶时,您要么需要在表 1 中有两个八度音阶,要么对于 23 以上的数字减去 24。

这不处理何时使用 # 或 b 表示半音。

如果您需要直观地构造手指放在指板上的位置,而不是表 1 中只有一个八度音阶的音符,将所有音符存储在指板上,并在表 2 中存储六弦上所有音品的所有索引举行。在这种情况下,您需要为所有琴弦使用不同的琴弦标识符,即 A 大调、A# 大调等。

于 2017-03-16T14:43:29.343 回答