@Darcy
2018-06-05T14:26:41.000000Z
字数 3063
阅读 1328
主标题:
语法:T: 单身情歌 (第一个)
字段:metaText.title
副标题:
语法:T: 演唱 林志炫(第n个,n 大于等于2)
字段:metaText.subtitle
作者:
语法:C: 陈耀川
字段:metaText.composer
当有多个 C 出现的时候,在composer
用换行符分隔。
字段:
staff[n].voices[0] = {head: "jianpu", el_type: "style"}
调号:
语法:K: C
字段:key
{
acc:'', //升降调 (#/b)
accidentals:[],// 忽略
mode:'', // 忽略
root:'C' //调名
}
拍号:
语法:M: 3/8
字段:meter
{
type: 'specified', //可忽略
value: [
{num:'3',den:'8'}
]
}
速度:
语法:Q: 1/4=120 "Slowly"
字段:metaText.tempo
{
bpm: 120,
duration:[0.25],
postString: 'Slowly'
}
上面表示 一分钟 120 个 1/4 拍。
字段:staffs[i].voices[i]:
{
chord: [{
name: "C/E", //和弦名称,查询和弦表
position: ''// 忽略
}],
duration: 0.0625, //音长
el_type: 'note',
pitches: [{
fret:1, //品数,或者'x'
string: 5, //第几弦:{a:1, b:2, c:3, d:4, e:5, f:6}
pitch: 2 //简谱用到
accidental: 'sharp' //升半音:sharp, 降半音:flat
}], //多个的时候表示和声,需要在同一线上绘制,可能是扫弦。
decoration: ['staccato','downstrum']//装饰音
gracenotes: {},//倚音
rest: {//休止符
type: rest/multimeasure
},
startTie: {//延长音开始
//{'S':'shift slide', 'H':'hammer on', 'P':'pull off'}
effect: "shift slide" //滑音等一下效果音会有这个字段,
}
endTie: //延长音结束
startSlur: //连音开始
endSlur: //连音结束
startTriplet: 3 // n连音开始标识位,表示 3 连音
endTriplet: // n连音结束标识位
tripletMultiplier: //连音音长
lyric:[{ //歌词, 可能有多行歌词
divider:'',
syllable:'',
}],
end_beam:true //符干分组
}
四/六线谱
{
fret:1, //品数,或者'x'
string: 5, //第几弦:{a:1, b:2, c:3, d:4, e:5, f:6}
}
简谱
在 muse 中,中央 C
代表 1
, 小 c
代表高八度的 1
,C'
则表示小八度的 1
,C''
则必C'
更小,c'
则是比 c
高八度。
如下按音从低到高,其顺序和五线谱的表示法是一致的:
C'', C', C, c, c', c''
对应在pitch
字段中的值是:
{A: 5, B: 6, C: 0, D: 1, E: 2, F: 3, G: 4, a: 12, b: 13, c: 7, d: 8, e: 9, f: 10, g: 11}
C' = C(0) - 7 = -7
c' = c(7) + 7 = 14
依此类推...
变音记号
例子:
^b1
语法记号 | 字段名 | 含义 |
---|---|---|
^ |
sharp | 表示升半音 |
= |
natural | 表示还原音 |
_ |
flat | 降半音 |
^^ |
double sharp | 升全音(暂不考虑) |
默认音长:L: 1/4
语法:
/
、/2
默认音长一半0.5//
默认音长 1/4(0.25)2
默认音长 2 倍>
前付点 3/2 倍,后减音长 1/2 <
后付点,前减音长
弹唱谱例子:c1/, c1/2, cx//, a2*2
简谱例子:A/, C// ,c1
弹唱谱需要表示把位,所以需要用/
表示倍减,*
表示倍增。
音长计算的值 = 默认音长 * 音长的倍数,
所有和弦包括默认的和弦在和弦表字段gchords
当中,如果不存在在和弦表中,则绘制和弦名称即可。
语法:
语法:<和弦名称>=<起始品数>;<第n弦品位>(手指),<第n-1弦品位>(手指),...<第1弦品位>(手指)
例子: %%gchord C=1;X,3,2,0,1,0
其中手指是可选的。X
代表和弦外音。
数据结构:
{
name: "C", //和弦名
chord: [[1, 0],[2, 1], [3, 0], [4, 2], [5,3], [6, "X"]], //[<第几品>:<手指>],数组的长度是弦的数量,数组下标按弦从上往下(从粗到细), x 代表和弦外音
position: 3 //开始品数
}
position 没有声明不需要绘制。
用法:在音符前添加。
例子:u[b1*2-e3/]
下面是可能出现的装饰音:
语法符号 | 对应字段 | 意思 |
---|---|---|
. | staccato | 断音、切音 |
V | upstrum | 上扫弦 |
U | downstrum | 下扫弦 |
A | uparpeggio | 上琶音 |
B | downarpeggio | 下琶音 |
' | accent | 加重 |
T | trill | 颤音 |
H | fermata | 延长音 |
S | segno | 反复记号 |
P | pralltriller | 延长 |
吉他谱比较少见,可不考虑,简谱有经常看到,需要考虑。
用法:在音符前添加。
例子:{a1b1}[c2//d2//]
数据结构:和音符是一样的
{
accidental:'sharp',
duration: 0.5,
el_type:'note',
pitch: 12,
fret:1,
string:1
}
语法:
(n
简单连音例子:(2aC1
(p:q:r
复杂连音例子:(3:2:4G2A2B1
对应数据:
startTriplet: 开始标识位
endTriplet: 结束标识位
tripletMultiplier: 每个音音长 绘制不需要关心这个?
表示符号:z
和 Z
,音长方面表示和音符是一样的。
语法:
tie :
ex-ex 、[^b1*2-e3/]-S-[b2*5/2e4*5/2]
slur: 可以嵌套
((a3b2d2)b1)
数据结构:
{
el_type:'bar',
type: 'bar_thin' //bar类型
startEnding: '' //重复段落数字和开始标志
endEnding: '' //重复结束标志
barNumber: '' //忽略
}
类型 | 语法 | 含义 |
---|---|---|
bar_thin | | | 小节线 |
bar_left_repeat | :| | 重复左侧 |
bar_right_repeat | |: | 重复右侧 |
bar_dbl_repeat | :: | 两边重复 |
bar_thick_thin | [| | 左粗右细 |
bar_thin_thick | |[ | 左细右粗 |
bar_thin_thin | || | 两条细线 |
bar_invisible | [:] | 虚小节线 |
英文歌词以空格断字,中文单字断字。
语法 | 数据表示 | 含义 |
---|---|---|
- | 英文单词断开 | |
* | 跳过一个音符 | |
~ | 链接连个字,对齐同个音符 |
如何知道是付点音符?
如何判断一组音符?比如相加为一拍的音符为一组~
(1)N连音的音符为一组;
(2)如果音符音长 >= 0.25 的,则自己为一组;
(3)如果小于 0.25 的,则继续和后面的音符为一组,直到音符音长和大于0.25。