打谱么 · 线性乐谱

用纯文本书写简单乐谱,一键渲染为 MIDI。下面带你认识它的规则与语法。

什么是线性乐谱

线性乐谱(dapume)是一种用 ASCII 字符书写简单乐谱的方式,再由程序渲染为 MIDI。

它的每一行要么是「参数行」(修改调号、速度等演奏参数),要么是「音符行」(描述音符)。

C 大调、120bpm 的一段上行音阶
1=C 120bpm
1234567

参数行

参数行修改演奏参数,自下一行起生效。不同参数用空格连接、无顺序、大小写敏感。

调号以 1= 开头,后接 CDEFGAB 之一,可再接 #b., 表示半音与八度;BPM 以数字开头、bpm 结尾。

若未指定某项参数,则继承之前的值;首行未指定时默认 1=C 120bpm。

参数格式示例
调号1=CDEFGAB[#b.,]*1=C / 1=Bb.
速度<number>bpm120bpm
G 大调,90bpm
1=G 90bpm
12345
中途切换调号与速度
1=C
123
1=A 80bpm
123

音符行

与简谱相同,用 1~7 表示七个音符,0 表示休止符。音符后可叠加后缀表示音高与时值,后缀可叠加、无顺序。

无时值后缀时默认 0.5 拍;时值后缀可组合,例如 3 拍可写作 ~~ 或 =-。

音高含义时值含义
#升半音-1 拍
b降半音~1.5 拍
.升八度=2 拍
,降八度+4 拍
*0.5 拍
^0.25 拍
'0.125 拍
1 拍 sol、1 拍高八度 do、2.5 拍 do
1=C
5-1.-1=*
升半音、降半音、升八度、降八度
1=C 100bpm
1#1b1.1,

多轨演奏

在音符后用圆括号 () 写入其它音符,表示多轨同时演奏;多轨时值与主轨右对齐。

两条以上轨道写作 1-(3-)(5-),并支持嵌套,例如 1+(3+(5+))。

3 与 5 同时演奏
1=C 100bpm
1-3-(5-)
旋律 + 三层和声(卡农片段)
1=D 100bpm
5-345-34(1+(3+(5+)))

和弦演奏

在方括号 [] 内写入和弦记号,将自动演奏和弦并持续到下一个和弦。

和弦记号由「级数 + 类型 + 后缀 + 转位 + 八度」组成:级数为 1~7(可带 #b);类型如 m、dim、aug、M7、m7、7、9 等;

后缀如 add9、omit3、sus;转位与斜杠根音用 /;末尾的 ,/. 调整八度(和弦默认低八度)。

和弦伴奏的旋律
1=C 90bpm
[1]1234[5]567
加九、大七、挂四和弦进行
1=C 80bpm
[1add9]1+[4M7]1+[5sus]1+[1]1+