Skip to content

Latest commit

 

History

History
138 lines (78 loc) · 4.19 KB

SYNTAX_cn.md

File metadata and controls

138 lines (78 loc) · 4.19 KB

简体中文 - English

语法

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用法示例,用以演示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目录下的示例简谱。