首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在数据库中存储吉他和弦

在数据库中存储吉他和弦
EN

Stack Overflow用户
提问于 2017-03-16 22:21:28
回答 1查看 725关注 0票数 3

我目前在大学学习,对于我的个人项目,我将创建一个吉他和弦拾取应用程序,其中和弦将保存在数据库中(我将使用Oracle数据库11g Express Edition)。用户可以键入和弦的名称或与该和弦相关联的音符,它将显示和弦图像以提供其可视表示。我被卡住了,关于和弦将如何存储在数据库中。我是否需要一张桌子来放置弦族(A、C、D、G等)一个表用于和弦使用的单独音符,另一个表用于fret板上的所有音符?任何对此的帮助都将不胜感激。

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

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2017-03-16 22:43:29

我会这样做:

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

代码语言:javascript
复制
0 -> C
1 -> C#
2 -> D 
3 -> D#
4 -> E
5 -> F
6 -> F#
etc.

和弦名称映射到多个半音音程的表2:

代码语言:javascript
复制
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中的音符。

如下所示:

代码语言:javascript
复制
2 + 0 = 2 => D,
2 + 4 = 6 => F#,
2 + 8 = 10 => A

当3的加法结果大于11时,你需要减去12才能得到正确的音符,高出一个八度。当你的绳索跨度超过一个八度时,你要么需要表1中的两个八度,要么减去24个超过23的数字。

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

如果您需要直观地构建手指在fret板上的位置,而不是表1中只有一个八度音符,请将所有音符存储在fret板上,并在表2中,存储六个字符串上所有fret的所有索引。在这种情况下,您需要为所有线缆使用不同的线缆标识符,例如A主线、A#主线等。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42836733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档