什么是线性乐谱
线性乐谱(dapume)是一种用 ASCII 字符书写简单乐谱的方式,再由程序渲染为 MIDI。
它的每一行要么是「参数行」(修改调号、速度等演奏参数),要么是「音符行」(描述音符)。
1=C 120bpm
1234567参数行
参数行修改演奏参数,自下一行起生效。不同参数用空格连接、无顺序、大小写敏感。
调号以 1= 开头,后接 CDEFGAB 之一,可再接 #b., 表示半音与八度;BPM 以数字开头、bpm 结尾。
若未指定某项参数,则继承之前的值;首行未指定时默认 1=C 120bpm。
| 参数 | 格式 | 示例 |
|---|---|---|
| 调号 | 1=CDEFGAB[#b.,]* | 1=C / 1=Bb. |
| 速度 | <number>bpm | 120bpm |
1=G 90bpm
123451=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=C
5-1.-1=*1=C 100bpm
1#1b1.1,注释
双斜杠 // 后直到当前行末尾的内容都是注释,解析和播放时会被完全忽略。
注释既可以单独占一行,也可以写在参数行或音符行后,用来记录乐句、指法或排练提示。
1=C 100bpm // C 大调
1234 // 第一乐句
// 换气
5432同时音
在同一行里,用圆括号 () 把若干音符括起来,表示它们与括号前的旋律「同时」发声,叠加在同一条音轨上。
括号内的总时值会右对齐到前面那段旋律的末尾,因此很适合写「柱式和声」「双音」等同时落下的音。括号可嵌套。
1=C 100bpm
1(3)(5)1=C 100bpm
13(5)多轨谱(双手谱)
当「一整行」被一对圆括号完整包围时,这一行会成为一条新的音轨,与它上面那条普通行同时开始——就像钢琴的左右手分谱。
普通行依次构成主旋律(右手),其下方的整行括号行作为伴奏(左手)与之并行。注意区分:行内的 (...) 是同时音,整行的 (...) 才是新音轨。
1=C 120bpm
1111111
(2222222)
3333333
(4444444)1=C 90bpm
13531353
(1,5,1,5,1,5,1,5,)和弦演奏
在方括号 [] 内写入和弦记号,将自动演奏和弦并持续到下一个和弦。
和弦记号由「级数 + 类型 + 后缀 + 转位 + 八度」组成:级数为 1~7(可带 #b);类型如 m、dim、aug、M7、m7、7、9 等;
后缀如 add9、omit3、sus;转位与斜杠根音用 /;末尾的 ,/. 调整八度(和弦默认低八度)。
1=C 90bpm
[1]1234[5]5671=C 80bpm
[1add9]1+[4M7]1+[5sus]1+[1]1+