钢琴和弦小工具(一)乐理和功能简介

2024-10-16 08:37:50
127次阅读
0个评论

前言

人,不但要有科学技术,而且还要,文化,艺术,跟音乐。 ————钱学森

我特别认同钱老说的这句话。我们作为理工科为主的开发者,不能忘记陶冶自己的情操。 所以业余时间,我也会弹一点钢琴。 有一天,我的需求就来了。 那天的乐谱和平常不一样,左手的音符不是画在五线谱上的,是以和弦形式标注的。这一下把我这个野路子难住了。我可没法记住那些和弦的规律。那么我能不能自己开发一个小工具,帮我来查询钢琴和弦按键的方法呢?

一点点乐理

我们先快速过一下乐理。首先钢琴键盘上由一个个八度组成。从do到si循环。每个循环一共包含7个白键,5个黑键。图中展示了钢琴键盘的一部分。里面有两个八度。第一个八度的7个白键从do到si被标注出来。image-20240812220916414也许有人会好奇,为什么mi fa和si do之间没有黑键?这个我没有去具体考证,但布局中的这个特殊情况,会对我们理解音高和之后的代码编写有这至关重要的影响。

所以接下来就要说说音高。在钢琴键盘上,白键的do re之间,re mi之间,各相差一个音高。于是,do re之间的黑键,和do re,各相差半个音高。这个黑键在琴谱上,可以表示为升do或者降re,指的是同一个键。

那么同样是白键,到了mi fa,是不是也相差一个音高呢?答案是否定的。mi fa相差的是半个音高。

所以音高的规律实际上是:键盘上相邻的两个按键,相差半个音高(注意不是相邻的两个白键)。可以把键盘的下半部分遮住,只看上半部分。忽略相邻的按键的颜色,相邻两个按键之间的音高就是相差半个。

接下来我们讲讲和弦,以最常用的大三和弦举例。网上很多解释和弦的文章,都会非常教条式的讲音程,大三度,小三度。这个会取决于按键之间有没有间隔黑键。实际上这个说法理解起来太复杂了,也不利于记忆。按上文对音高的解释,我直接理解成,几个按键之间相邻多少个半音。这样无论根音是哪个,对应的其他几个按键都根据多少个半音去找就行了。

这样我们就抓住了和弦的本质,对于之后的代码有指导性思想。

功能简介

整个应用的功能不多,点击某个按键作为根音,根音以粉色表示,和弦中,其他几个按键以黄色表示。左上角的按钮可以呼出和弦类型选择列表的弹窗,选择需要的和弦类型,键盘上会有相应的变化。

整个应用的实现,关键在于键盘的绘制。另外就是一个和弦的选择列表的弹窗。这个弹窗不细讲,因为包括官方文档在内的社区里很多入门帖子都会讲到类似的案例。image-20240812223542580

下集预告

下一篇我们将开始实现功能,敬请期待。

收藏00

登录 后评论。没有帐号? 注册 一个。