Skip to content

钢琴块2谱面json格式说明

JSON

字段类型内容必要性备注
baseBpmNumber起始速度需要验证
musicsArray分段列表必要
auditionObject试听片段非必要

1. baseBpm

Number类型,代表起始速度。

2. musics

Array类型,元素为若干Object,代表分段列表。其length在大多数谱面中为3(对应1~3星分段)。

类型内容必要性备注
0Object第1段必要实际分段顺序取决于id
nObject第(n+1)段非必要实际分段顺序取决于id
……Object……非必要……

2.1 musics中的Object

字段类型内容必要性备注
idNumber分段序号必要
baseBeatsNumber基础拍数必要
scoresArray谱面音乐必要
instrumentsArray默认乐器非必要若无此项,默认乐器为piano
alternativesArray备选乐器非必要必须与instruments同时出现,否则闪退(需要验证)
bpmNumber分段速度非必要实际游戏内不读取此项,而是读取music_json.csv对应内容
highTrackGainNumber高音轨因子非必要小程序特有
lowTrackGainNumber低音轨因子非必要小程序特有

idNumber类型,决定分段顺序。
不同分段的id必须从1开始连续,否则会丢失不连续的分段(需要验证)

baseBeatsNumber类型,影响分段内的音块长度。
计算公式:音块长度音块的beats ÷ 分段的baseBeats
例:对于音块d1[L](Lbeats0.5)和f1[K](Kbeats1),若baseBeats0.5,则其长度分别为12;若baseBeats0.25,则其长度分别为24

scoresArray类型,决定分段谱面和旋律。

类型内容必要性备注
0String音轨1必要谱面&主旋律
nString音轨(n+1)非必要伴奏
……String……非必要……

关于scores中的String的更多细节详见附录

instrumentsArray类型,决定游戏内默认乐器(音色)。

类型内容必要性备注
0String音轨1默认乐器非必要默认值piano
nString音轨(n+1)默认乐器非必要默认值piano
……String……非必要……

alternativesArray类型,决定试听乐器(音色)及游戏内备选乐器(音色)。

类型内容必要性备注
0String音轨1备选乐器非必要默认值piano
nString音轨(n+1)备选乐器非必要默认值piano
……String……非必要……

bpmNumber类型,游戏内无作用(可用作注释)。

highTrackGainNumber类型,作用暂时未知。

lowTrackGainNumber类型,作用暂时未知。

3. audition

Object类型,决定试听片段。若无此项则试听内容为整个谱子。

字段类型内容必要性备注
startArray试听开始需要验证
endArray试听结束需要验证

其中,startend均为Array类型,分别决定试听片段开始和结束位置(包含)。

类型内容必要性备注
0Number音轨下标需要验证
1Number音块下标需要验证

此例表示试听片段为从分段1下标为0的音块到分段1下标为27的音块:

json
"audition":{"start":[0,0],"end":[0,27]}

附录:scores中的String的详细说明

观察官方谱Christmas Zoo.json第一段的两条音轨:

json
"#f[L],(#a.#c1)[K],(#a.#c1)[L],#f[L],(#a.#c1)[L],#c[L],(#a.#c1)[L];#f[L],(#a.#c1)[K],(#a.#c1)[L],#f[L],(#a.#c1)[L],#c[L],(#a.#c1)[L];5<#f1[M],f1[M]>,5<#f1[M],#g1[M]>,5<#a1[M],a1[M]>,5<#a1[M],b1[M]>,#c2[L],#a1[L],#f1[L],#c2[L];5<#d2[M],d2[M]>,5<#d2[M],f2[M]>,5<#f2[M],f2[M]>,5<#f2[M],#g2[M]>,#c2[L],(#a.#c1)[L],#c[L],(#a.#c1)[L];5<#d2[M],d2[M]>,5<#d2[M],f2[M]>,5<#f2[M],f2[M]>,5<#f2[M],#g2[M]>,#c2[L],b1[L],#a1[L],#c2[L];b1[L],#a1[L],#g1[L],#f1[L],#a1[L],U,#g1[K];5<#f1[M],f1[M]>,5<#f1[M],#g1[M]>,5<#a1[M],a1[M]>,5<#a1[M],b1[M]>,#c2[L],#a1[L],#f1[L],#c2[L];5<#d2[M],d2[M]>,5<#d2[M],f2[M]>,5<#f2[M],f2[M]>,5<#f2[M],#g2[M]>,#a2[L],(#a.#c1)[L],#c[L],(#a.#c1)[L];5<#d2[M],d2[M]>,5<#d2[M],f2[M]>,5<#f2[M],f2[M]>,5<#f2[M],#g2[M]>,#a2[L],#f2[L],#c2[L],#c3[L];b2[L],#a2[L],#g2[L],#f2[L],#f2[L],U,U,3<#a2[M],#a2[M];#a2[M],f2[M],f2[M],#a2[M],#a2[M],f2[M],f2[M],#a2[M],a2[M],f2[M],f2[M],a2[M],a2[M],f2[M],f2[M],a2[M];#a2[M],f2[M],f2[M],#a2[M],#a2[M],f2[M],f2[M],#a2[M],c3[M],f2[M],f2[M],c3[M],c3[M],f2[M],f2[M],c3[M];#c3[M],f2[M],f2[M],#c3[M],#c3[M],f2[M],f2[M],#c3[M],c3[M],f2[M],f2[M],c3[M],c3[M],f2[M],f2[M],c3[M];#a2[M],f2[M],#c2[M],f2[M],#a1[M],c2[M],#c2[M],c2[M],#a1[M],f1[M],#c1[M],f1[M],#a[M],d1[M],f1[M],#a1[M];#g1[M],g1[M],#g1[M],c2[M],#d2[M],c2[M],#g1[M],#f1[M],f1[M],e1[M],f1[M],#a1[M],#c2[M],c2[M],#c2[M],#a1[M];#g1[M],g1[M],#g1[M],c2[M],#d2[M],#f2[M],f2[M],#d2[M],#c2[M],c2[M],#c2[M],#d2[M],f2[M],d2[M],#a1[M],#a2[M];#f2[M],f2[M],#d2[M],f2[M],#f2[M],#g2[M],#a2[M],#f2[M],f2[M],#d2[M],#c2[M],#d2[M],f2[M],#c2[M],#a1[M],f1[M];f1[M],g1[M],a1[M],#a1[M],c2[M],#c2[M],#d2[M],f2[M],#a1[M],f[M],#a[M],#c1[M]>,T;"
json
"R;R;#f[L],(#a.#c1)[L],U,(#a.#c1)[L],#f[L],(#a.#c1)[L],#c[L],(#a.#c1)[L];B-1[M],V,(#d1.#f1)[M],V,U,(#d1.#f1)[M],V,#f[L],U,U,U;B-1[L],(#d1.#f1)[L],U,(#d1.#f1)[L],#A-1[L],(#c1.#f1)[L],U,(#c1.#f1)[L];#G-1[L],(#d1.#f1)[L],U,(#d1.#f1)[L],#c1[L],#f1[L],(f1.#g1)[K];#f[L],(#a.#c1)[L],U,(#a.#c1)[L],#f[L],(#a.#c1)[L],#c[L],(#a.#c1)[L];B-1[L],(#d1.#f1)[L],U,(#d1.#f1)[L],#f[L],U,T;B-1[L],(#d1.#f1)[L],U,(#d1.#f1)[L],#A-1[L],(#c1.#f1)[L],U,(#c1.#f1)[L];#G-1[L],(#d1.#f1)[L],U,(#g.#c1.f1)[L],(#f.#a.#f1)[L],f[L],#f[L],U;(#A-1.#c1.f1)[J],(A-1.#c1.#f1)[J];(#A-1.#c1.f1)[J],(A-1.c1.f1)[J];(#A-1.#c1.f1)[J],(A-1.c1.#f1)[J];(#A-1.#c1.f1)[I];#G-1[M],#d[M],c1[M],#d[M],#G-1[M],#d[M],c1[M],#d[M],#c[M],#g[M],f1[M],#g[M],#c[M],#g[M],f1[M],#g[M];#G-1[M],#d[M],c1[M],#d[M],#G-1[M],#d[M],c1[M],#d[M],#c[M],#g[M],f1[M],#g[M],#A-1[M],#f[M],d1[M],#f[M];#d[M],#a[M],#f1[M],#a[M],#d[M],#a[M],#f1[M],#a[M],f[M],#c1[M],#g1[M],#c1[M],f[M],#c1[M],f1[M],#c1[M];f[M],c1[M],a[M],c1[M],f[M],c1[M],a[M],c1[M],#A-1[M],V,U,#A-1[K];"

不难看出,scores中的String是以分隔符, ;组合若干音块,然后用玩法标记修饰后形成的。

S1. 分隔符

分隔符只有两种:,;
二者的作用都是将音块分隔开,可以混用,但一般用,分隔单个音块,用;分隔由若干音块组成的小节。
注意:String末尾也要有至少一个分隔符。

S2. 音块

普通音块:音符[节拍][音符+连接符+音符+连接符+...+音符+](节拍)
休止符:休止节拍
例:d2[LM]beats0.75的普通音块)、(c3.f3)[L]beats0.5的和弦)、(c4~#a3~#g3)[K]beats1的三连音)、Vbeats0.25的休止符)、TUbeats1.5的休止符)

S3. 玩法标记

End

CC-BY-NC-4.0 Licensed