gpt4 book ai didi

sql - 在数据库中存储吉他和弦

转载 作者:搜寻专家 更新时间:2023-10-30 19:47:35 26 4
gpt4 key购买 nike

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

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

谢谢。

最佳答案

我会这样做:

表 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 才能得到正确的音符,高一个 Octave 。当你的和弦跨越一个 Octave 以上时,你要么需要在表 1 中有两个 Octave ,要么为 23 以上的数字减去 24。

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

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

关于sql - 在数据库中存储吉他和弦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42836733/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com