小龟小车音乐简谱格式规范
下图是小伙伴们经常听到的《生日快乐歌》的音乐简谱,大家会发现真实的音乐简谱里面有非常多的不适合键盘输入的音符。
为了方便小伙伴们简单又快速的输入音乐简谱,小龟特意设计了一套小车的简谱。它和真实音乐简谱的格式基本上是差不多的,只是对一些无法直接用键盘文本输入的音符进行了匹配改造。
所以小伙伴们在实际使用过程中,如果真实音乐简谱上的符号在键盘上有的,就直接按键输入即可,没有的再参考下面的规则。

用编程的角度去分析真实音乐简谱
首先小龟和大家简单科普一下音乐简谱的几个基本元素:

在分析了多个简谱以后,小龟发现了其实大部分情况下的简谱都可以归纳成“后标识类”语法。也就是先一个代表基础音符的数字,然后跟随一堆对这个基础音符进行补充的定义,如下。

于是我们设计了下面的简谱语法对应规则。
小车音乐简谱和真实音乐简谱的对应规则
音阶的对应关系:
| 音阶 | 简谱表示符号 | 小龟小车表示符号 | 备注 | 
|---|---|---|---|
| dou | 1 | 1 | |
| re | 2 | 2 | |
| mi | 3 | 3 | |
| fa | 4 | 4 | |
| sol | 5 | 5 | |
| la | 6 | 6 | |
| si | 7 | 7 | |
| 空 | 0 | 0 | 
说明:音阶部分和真实简谱的符号完全一致
重音低音的表示
| 音频 | 真实简谱表示符号 | 小龟小车表示符号 | 备注 | 
|---|---|---|---|
| 倍重音 |   | 2'' | 小车用键盘上的两个单引号 表示为倍高音符 | 
| 高音 |  | 2' | 小车用键盘上的单引号 表示为高音符 | 
| 中音(
标准 ) | 2 | 2 | 两者一致 | 
| 低音 |  | 5, | 小车用键盘上的逗号 表示为低音符 | 
| 倍低音 |   | 5,, | 小车用键盘上的两个逗号 表示为倍低音符 | 
音节
| 音节 | 真实简谱表示符号 | 小龟小车表示符号 | 备注 | 
|---|---|---|---|
| 全音 | 2---- | 2---- | 两者一致,用四个减号 | 
| 二分音 | 2- | 2- | 两者一致,用一个减号 | 
| 四分音 | 2 | 2 | 两者一致 | 
| 八分音 | 2 | 2_ | 小龟小车用键盘上的下划线来表示, 在音阶后面跟下划线 | 
| 十六分音 |  | 2= | 小龟小车用键盘上的等号来表示 
, 在音阶后面跟下划线 | 
| 半音 |  | 4. | 小龟小车用键盘的句号来表示半音 | 
其它符号
| 符号 | 真实简谱表示符号 | 小龟小车表示符号 | 备注 | 
|---|---|---|---|
| 空格 | 空格 | 空格 | 两者一致, 都用空格表示 | 
| 延音 |  | { 6 - | 6 } | 小龟小车用大括号来表示, 左大括号为连音开始, 右大括号为连音结束 | 
| 重复 |   | [3_2_ | 1 ] | 小车用中括号表示, 左中括号为重复开始, 右中括号为重复结束。 暂不支持复杂重复。 和真实简谱一样, 左中括号省略代表从头开始重复 | 
| 伴奏 |   | | ( 2_5_ 6_2'_ ) | 两者一致, 都用逗号表示 | 
| 段落 |   | 5_5_ | 6 5 1' | | 两者一致, 都用竖线表示 | 
其它真实简谱上的符号,小车暂时还不支持,可以忽略不转换。
转换范例
生日快乐歌

转换以后的小龟小车的简谱如下:
#蜂鸣器接A2管脚
car.buzzer.music(A2, """
5_5_ | 6 5 1' | 7 0 5_5_ | 6 5 2' | 1' - 5_5_ | 5' 3' 1' |
7 {6 - | 6} 0 4'_4'_ | 3' 1' 2' | 1' - ( 5_5_ ) ]
""")