首页 > 其他分享 >钢琴块2谱面json格式说明

钢琴块2谱面json格式说明

时间:2023-03-18 21:56:03浏览次数:40  
标签:f1 .# json 谱面 格式 c1 d1 音符 非必要

目录

JSON

字段 类型 内容 必要性 备注
baseBpm Number 起始速度 需要验证
musics Array 分段列表 必要
audition Object 试听片段 非必要

1. baseBpm

Number类型,代表起始速度。

2. musics

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

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

2.1 musics中的Object

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

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

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

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

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

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

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

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

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

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

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

highTrackGainNumber类型,作用暂时未知。

lowTrackGainNumber类型,作用暂时未知。

3. audition

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

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

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

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

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

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

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

观察官方谱Christmas Zoo.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;"
"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的休止符)

附表:音符
音符 音高 MIDI 音符 音高 MIDI 音符 音高 MIDI 音符 音高 MIDI
A-3 a1 21 A-1 a3 45 a1 a5 69 a3 a7 93
#A-3 #a1 22 #A-1 #a3 46 #a1 #a5 70 #a3 #a7 94
B-3 b1 23 B-1 b3 47 b1 b5 71 b3 b7 95
C-2 c2 24 c c4 48 c2 c6 72 c4 c8 96
#C-2 #c2 25 #c #c4 49 #c2 #c6 73 #c4 #c8 97
D-2 d2 26 d d4 50 d2 d6 74 d4 d8 98
#D-2 #d2 27 #d #d4 51 #d2 #d6 75 #d4 #d8 99
E-2 e2 28 e e4 52 e2 e6 76 e4 e8 100
F-2 f2 29 f f4 53 f2 f6 77 f4 f8 101
#F-2 #f2 30 #f #f4 54 #f2 #f6 78 #f4 #f8 102
G-2 g2 31 g g4 55 g2 g6 79 g4 g8 103
#G-2 #g2 32 #g #g4 56 #g2 #g6 80 #g4 #g8 104
A-2 a2 33 a a4 57 a2 a6 81 a4 a8 105
#A-2 #a2 34 #a #a4 58 #a2 #a6 82 #a4 #a8 106
B-2 b2 35 b b4 59 b2 b6 83 b4 b8 107
C-1 c3 36 c1 c5 60 c3 c7 84 c5 c9 108
#C-1 #c3 37 #c1 #c5 61 #c3 #c7 85 mute 休止符
D-1 d3 38 d1 d5 62 d3 d7 86
#D-1 #d3 39 #d1 #d5 63 #d3 #d7 87
E-1 e3 40 e1 e5 64 e3 e7 88
F-1 f3 41 f1 f5 65 f3 f7 89
#F-1 #f3 42 #f1 #f5 66 #f3 #f7 90
G-1 g3 43 g1 g5 67 g3 g7 91
#G-1 #g3 44 #g1 #g5 68 #g3 #g7 92
附表:节拍和休止节拍
节拍 休止节拍 对应的beats 备注
H Q 8 四个全音符/休止符
I R 4 两个全音符/休止符
J S 2 全音符/休止符
K T 1 二分音符/休止符
L U 0.5 四分音符/休止符
M V 0.25 八分音符/休止符
N W 0.125 十六分音符/休止符
O X 0.0625 三十二分音符/休止符
P Y 0.03125 六十四分音符/休止符
附表:连接符
连接符 中文名 英文名 效果 备注
. 和弦 Chrod 前后音符同时发声
~ 连音 Legato 在100%的时间内依次弹奏音符 可与.混用
@ 琶音 Arpeggio 在10%的时间内依次弹奏音符 可与.混用
& 波音 Mordent 在99%的时间内依次弹奏音符 可与.混用
^ 颤音 Trill 以15音符/秒的速度循环弹奏 最多连接2个音符
$ 回音 Turn 以15音符/秒的速度循环弹奏 最多连接2个音符
% 长倚音 Appoggiatura 在30%的时间内依次弹奏音符 可与.混用
! 短倚音 Acciaccatura 在15%的时间内依次弹奏音符 可与.混用

S3. 玩法标记

未完待续...

标签:f1,.#,json,谱面,格式,c1,d1,音符,非必要
From: https://www.cnblogs.com/lchzh3473/p/17231910.html

相关文章

  • [linux][uvc]YUV格式编码的图片
    YUV格式编码的图片,在Linux下需要安装ffmpeg。#安装ffmpeg$sudoaptinstallffmpeg#查看图片,需要注意的是YUV图像的信息中并没有存储宽和高,所以在打开时需要指定图像......
  • java 加密和json格式化代码 、http url提交
      CloseableHttpClientclient=HttpClients.createDefault();CloseableHttpResponseres=null;JsonObjectjson=null;......
  • 记一个在线工具网站,程序员必备,json格式化、压缩、转义,加解密 编码解码
    ToForU为你|在线工具箱|在线json格式化|在线json压缩|在线json转义|工具大全提供json格式化,json代码压缩,json校验解析,json数组解析,json转xml,xml转json,json解析,jso......
  • 【开发环境】IntelliJ IDEA 中的 Gradle 工程处理 JSON 字符串
    文章目录​​一、创建Gradle工程​​​​二、导入org.json:json依赖​​​​三、处理JSON字符串​​一、创建Gradle工程在IntelliJIDEA中,选择"菜单栏|Fi......
  • JSON详解转载
    JSON详解阅读目录JSON的两种结构认识JSON字符串在JS中如何使用JSON在.NET中如何使用JSON总结JSON的全称是”JavaScriptObjectNotation”,意思是JavaScript对象表示......
  • 定义格式和特点
    定义格式:类名前加enum关键字publicenumSeason{枚举项1,枚举项2,枚举项3;}枚举类特点1、所有枚举类都是Enum的子类2、枚举也是一个类,也可以定义成员变量3、......
  • json-diff详细设计
    一、简介json-diff是一款强大的,由java编写的json差异发现工具。他可以发现任何结构的json差异,并且将差异信息反馈给用户。gitee:https://gitee.com/codeleep/json-diff......
  • json-diff简单使用
    一、摘要今天推荐的是一款java中,对比两个json-diff对象是否一致的工具包json-diff`。他可以对比任何结构的两个json数据,并且将其中的不一致信息反馈给用户。工具还内置......
  • Java中将CST格式的时间字符串进行格式化
    场景Java中实现将CST格式的时间字符串按指定格式进行格式化。实现代码SimpleDateFormatdateFormat=newSimpleDateFormat("EEEMMMddHH:mm:sszzzyyyy",Locale.US);......
  • ElementUI中对el-table的某一列的时间进行格式化
    场景前端使用el-table查询到后台的数据的某一列时间列默认是标准UTC格式,如果想按照自己想显示的格式获取年月日和时分秒进行显示怎么办。注:关注公众号霸道的程序猿获取编......