@Darcy
        
        2018-06-05T06:26:41.000000Z
        字数 3063
        阅读 1564
    主标题:
语法: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。