DoMiSo的简谱格式包含控制命令与音符标记。
其中控制命令包括调性控制,速度控制和回滚控制。
Warning
由于游戏本身限制,无法演奏半音,所以在此特别版中,无法演奏的音将会在演奏时自动忽略。
1=F#
当不加音阶序号时,默认是第5个音阶。即上面的命令等价于:
1=F5#
没有规定调性时,默认1=C
bpm=120
有效的bpm范围为1~480,超出此范围的数值视为无效,将会把bpm重置为初始值80。
没有规定速度时,默认bpm=80
rollback=12.5
回滚命令的作用是将音符的书写位置前移N个当前速度下的全音符长度。N可以为小数。
当存在多个声部时,可利用此命令来将多个声部分开书写。其用法将在后面介绍。
所有控制命令不分大小写,而且可以与音符放在同一行。且不论命令在行中的什么位置,都将先执行命令,再解析音符。
++3b//
-1#-/-
5..
( 1 3 5 )
每个音符之间由空格隔开,不符合格式的音符将会被直接忽略。
音符标记从0~7
,意义与普通简谱一致。
音符前面的+
和-
,表示将音符升高或降低N个音阶。N即为+或-的数量。
音符后面的#
和b
,表示将音符升高或降低半个全音。
与时值有关的标记有/
-
.
/
表示将前面标记的音长减少一半。意义与普通简谱中的下划线一致。
-
表示一个全音符的时值。意义与普通简谱中一致。且可以与 / 组合使用。
.
表示将前面音符的时值延长一半。
比如 5..
的音符时值即为 1+0.5+0.25 拍。
++3b//
的音符时值即为 0.25 拍。
-1#-/-
的音符时值即为 1+0.5+1 拍。
( 1 3- 5 )
的音符时值为 2 拍。这是一个和弦。和弦的用法将在下面详述。
用括号括起来的音符将被视作和弦。其中,括号与音符之间需要用空格隔开。否则会被当作无效音符而忽略。
和弦中的每个音符将在同时被演奏,整个和弦的基础时值由和弦中最长的音符决定。
在版本v0.99.9
之后,和弦也可以支持时值标记了,比如:
( 1 3/ 5 )/
表示一个0.5
拍的和弦( 1 3 5 )--
表示一个3
拍的和弦( 1 3 5 )..
表示一个1.75
拍的和弦
和弦的时值标记作用于和弦的基础时值,比如:
( 1/ 3// 5/ )
是一个基础时值为0.5
拍的和弦,所以( 1/ 3// 5/ )/
的时值为0.25
拍
与和弦类似,由花括号 {}
包围的音符表示连音。花括号内的音符会自动平均为其分配时值,时花括号内的音符总时值为 1
拍。比如:
{ 1 3 5 }
为总时值1
拍的三连音{ 1 3 5 6 +3 }
为总时值1
拍的五连音
花括号中每个音符的长度仅仅影响其分配到的时值,比如:
{ 1 3 5 +1 }
=1// 3// 5// +1//
={ 1/ 3/ 5/ +1/ }
{ 1 3/ 5 +1/ +5 }
=1// 3/// 5// +1/// +5//
={ 1/ 3// 5/ +1// +5/ }
同和弦一样,连音花括号也支持时值标记。比如:
{ 1 3 5 +1 }/
=1/// 3/// 5/// +1///
1-- ~3-- ~5-- ~6-- ~7-- ~+5-- ~+7--
如上面例子所示,使用波浪线 ~
就可以写出琶音。
在音符前添加 ~
表示将这个音符相对前一个音符延迟少许奏响,但其结束时间将与未延迟时一致。
比如在上面的例子中,所有音符都会在第 3
拍结束时同时结束。
Note
因为琶音标记是相对前一个音符的偏移,所以不能在第一个音符处使用。
这是一个RollBack用法示例,用以演示RollBack命令的基本用法。
这是使用和弦的写法:
( 1 -1 ) ( 2 -2 ) ( 3 -3 ) ( 4 -4 ) ( 5 -5 ) ( 6 -6 ) ( 7 -7 )
这是使用rollback的写法:
1 2 3 4 5 6 7
rollback=7
-1 -2 -3 -4 -5 -6 -7
rollback命令动画演示:
这两种写法的效果是一样的。更多用法可以参见example_sheets
目录下的示例简谱。