我目前正在大学学习,对于我的个人项目,我将创建一个吉他和弦拾音应用程序,其中和弦将保存在数据库中(我将使用Oracle Database 11g Express Edition)。用户可以键入和弦的名称或与该和弦相关联的音符,并且它将显示和弦图像以给出它的视觉表示。我被困在如何将和弦存储在数据库中。我需要一个用于和弦族(A,C,D,G等)的表,一个表用于和弦使用的单独音符,另一个表用于音品板上的所有音符吗?对此的任何帮助将不胜感激。
我的应用程序将在Android Studio中开发。当我创建数据库时,它将如何连接到我的应用程序?
感谢。
答案 0 :(得分:1)
我会这样做:
表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 major,A#major等。