kipphi 2.0.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1107 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "type": "object",
4
+ "title": "ChartDataKPA2",
5
+ "description": "KPA2 格式谱面数据根对象\n\nRoot object of KPA2 format chart data",
6
+ "properties": {
7
+ "$schema": {
8
+ "type": "string",
9
+ "description": "JSON Schema版本标识符\n\nJSON Schema version identifier"
10
+ },
11
+ "version": {
12
+ "type": "number",
13
+ "description": "谱面版本号\n\nChart version number"
14
+ },
15
+ "offset": {
16
+ "type": "number",
17
+ "description": "谱面偏移(以毫秒计量)\n\nChart offset (in milliseconds)"
18
+ },
19
+ "duration": {
20
+ "type": "number",
21
+ "description": "音乐时长\n\nMusic duration"
22
+ },
23
+ "info": {
24
+ "type": "object",
25
+ "description": "谱面元数据信息\n\nChart metadata information",
26
+ "properties": {
27
+ "level": {
28
+ "type": "string",
29
+ "description": "谱面难度等级\n\nChart difficulty level"
30
+ },
31
+ "name": {
32
+ "type": "string",
33
+ "description": "谱面名称\n\nChart name"
34
+ },
35
+ "charter": {
36
+ "type": "string",
37
+ "description": "谱师名称\n\nCharter name"
38
+ },
39
+ "illustrator": {
40
+ "type": "string",
41
+ "description": "画师名称\n\nIllustrator name"
42
+ },
43
+ "composer": {
44
+ "type": "string",
45
+ "description": "曲师名称\n\nComposer name"
46
+ }
47
+ },
48
+ "required": [
49
+ "level",
50
+ "name",
51
+ "charter",
52
+ "illustrator",
53
+ "composer"
54
+ ]
55
+ },
56
+ "ui": {
57
+ "type": "object",
58
+ "description": "UI 组件配置\n\nUI component configuration",
59
+ "properties": {
60
+ "pause": {
61
+ "type": "number",
62
+ "description": "暂停按钮绑定位置(null 为不绑定)\n\nPause button binding position (null means not bound)"
63
+ },
64
+ "combonumber": {
65
+ "type": "number",
66
+ "description": "连击数字绑定位置(null 为不绑定)\n\nCombo number binding position (null means not bound)"
67
+ },
68
+ "combo": {
69
+ "type": "number",
70
+ "description": "连击标识绑定位置(null 为不绑定)\n\nCombo label binding position (null means not bound)"
71
+ },
72
+ "score": {
73
+ "type": "number",
74
+ "description": "分数显示绑定位置(null 为不绑定)\n\nScore display binding position (null means not bound)"
75
+ },
76
+ "bar": {
77
+ "type": "number",
78
+ "description": "进度条绑定位置(null 为不绑定)\n\nProgress bar binding position (null means not bound)"
79
+ },
80
+ "name": {
81
+ "type": "number",
82
+ "description": "曲名显示绑定位置(null 为不绑定)\n\nSong name display binding position (null means not bound)"
83
+ },
84
+ "level": {
85
+ "type": "number",
86
+ "description": "难度等级显示绑定位置(null 为不绑定)\n\nDifficulty level display binding position (null means not bound)"
87
+ }
88
+ }
89
+ },
90
+ "templateEasings": {
91
+ "type": "array",
92
+ "description": "模板缓动定义列表\n\nTemplate easing definition list",
93
+ "items": {
94
+ "type": "object",
95
+ "description": "模板缓动定义\n\nTemplate easing definition",
96
+ "properties": {
97
+ "content": {
98
+ "type": "string",
99
+ "description": "缓动内容(序列ID)\n\nEasing content (sequence ID)"
100
+ },
101
+ "name": {
102
+ "type": "string",
103
+ "description": "缓动名称\n\nEasing name"
104
+ }
105
+ },
106
+ "required": [
107
+ "content",
108
+ "name"
109
+ ]
110
+ }
111
+ },
112
+ "wrapperEasings": {
113
+ "type": "array",
114
+ "description": "包装器缓动定义列表\n\nWrapper easing definition list",
115
+ "items": {
116
+ "type": "object",
117
+ "description": "包装器缓动定义\n\nWrapper easing definition",
118
+ "properties": {
119
+ "jsExpr": {
120
+ "type": "string",
121
+ "description": "JavaScript表达式\n\nJavaScript expression"
122
+ },
123
+ "start": {
124
+ "type": "number",
125
+ "description": "起始值\n\nStart value"
126
+ },
127
+ "end": {
128
+ "type": "number",
129
+ "description": "结束值\n\nEnd value"
130
+ },
131
+ "id": {
132
+ "type": "string",
133
+ "description": "缓动标识符\n\nEasing identifier"
134
+ }
135
+ },
136
+ "required": [
137
+ "jsExpr",
138
+ "start",
139
+ "end",
140
+ "id"
141
+ ]
142
+ }
143
+ },
144
+ "eventNodeSequences": {
145
+ "type": "array",
146
+ "description": "事件节点序列列表\n\nEvent node sequence list",
147
+ "items": {
148
+ "type": "object",
149
+ "description": "事件节点序列\n\nEvent node sequence",
150
+ "properties": {
151
+ "events": {
152
+ "type": "array",
153
+ "description": "事件列表\n\nEvent list",
154
+ "items": {
155
+ "type": "object",
156
+ "description": "单个事件数据\n\nSingle event data",
157
+ "properties": {
158
+ "startTime": {
159
+ "type": "array",
160
+ "items": {
161
+ "type": "number"
162
+ },
163
+ "minItems": 3,
164
+ "maxItems": 3,
165
+ "description": "开始时间[整数, 分子, 分母]\n\nStart time [integer, numerator, denominator]"
166
+ },
167
+ "endTime": {
168
+ "type": "array",
169
+ "items": {
170
+ "type": "number"
171
+ },
172
+ "minItems": 3,
173
+ "maxItems": 3,
174
+ "description": "结束时间[整数, 分子, 分母]\n\nEnd time [integer, numerator, denominator]"
175
+ },
176
+ "start": {
177
+ "description": "开始值\n\nStart value"
178
+ },
179
+ "end": {
180
+ "description": "结束值\n\nEnd value"
181
+ },
182
+ "macroStart": {
183
+ "oneOf": [
184
+ {
185
+ "type": "array",
186
+ "items": [
187
+ {
188
+ "type": "string",
189
+ "description": "宏 ID\n\nMacro ID"
190
+ },
191
+ {
192
+ "type": "number",
193
+ "description": "原型编号\n\nProto number"
194
+ }
195
+ ],
196
+ "minItems": 2,
197
+ "maxItems": 2,
198
+ "description": "宏开始值(元组形式)\n\nMacro start value (tuple form)"
199
+ },
200
+ {
201
+ "type": "string",
202
+ "description": "宏开始值(字符串形式)\n\nMacro start value (string form)"
203
+ }
204
+ ],
205
+ "description": "宏开始值(如果使用宏计算起始值)\n\nMacro start value (if using macro to calculate start value)"
206
+ },
207
+ "macroEnd": {
208
+ "oneOf": [
209
+ {
210
+ "type": "array",
211
+ "items": [
212
+ {
213
+ "type": "string",
214
+ "description": "宏 ID\n\nMacro ID"
215
+ },
216
+ {
217
+ "type": "number",
218
+ "description": "原型编号\n\nProto number"
219
+ }
220
+ ],
221
+ "minItems": 2,
222
+ "maxItems": 2,
223
+ "description": "宏结束值(元组形式)\n\nMacro end value (tuple form)"
224
+ },
225
+ {
226
+ "type": "string"
227
+ }
228
+ ],
229
+ "description": "宏结束值(如果使用宏计算结束值)\n\nMacro end value (if using macro to calculate end value)"
230
+ },
231
+ "macroStartTime": {
232
+ "oneOf": [
233
+ {
234
+ "type": "array",
235
+ "items": [
236
+ {
237
+ "type": "string",
238
+ "description": "宏 ID\n\nMacro ID"
239
+ },
240
+ {
241
+ "type": "number",
242
+ "description": "原型编号\n\nProto number"
243
+ }
244
+ ],
245
+ "minItems": 2,
246
+ "maxItems": 2
247
+ },
248
+ {
249
+ "type": "string"
250
+ }
251
+ ],
252
+ "description": "宏开始时间(如果使用宏计算开始时间)\n\nMacro start time (if using macro to calculate start time)"
253
+ },
254
+ "startLinkedMacro": {
255
+ "type": "array",
256
+ "description": "起始时间关联的宏链接列表\n\nLinked macro list for start time",
257
+ "items": {
258
+ "type": "array",
259
+ "items": [
260
+ {
261
+ "type": "string",
262
+ "pattern": "^(value|time):.+$",
263
+ "description": "宏类型和 ID(格式:value:id 或 time:id)\n\nMacro type and ID (format: value:id or time:id)"
264
+ },
265
+ {
266
+ "type": "number",
267
+ "description": "节点 ID\n\nNode ID"
268
+ }
269
+ ],
270
+ "minItems": 2,
271
+ "maxItems": 2
272
+ }
273
+ },
274
+ "endLinkedMacro": {
275
+ "type": "array",
276
+ "description": "结束时间关联的宏链接列表\n\nLinked macro list for end time",
277
+ "items": {
278
+ "type": "array",
279
+ "items": [
280
+ {
281
+ "type": "string",
282
+ "pattern": "^(value|time):.+$",
283
+ "description": "宏类型和 ID(格式:value:id 或 time:id)\n\nMacro type and ID (format: value:id or time:id)"
284
+ },
285
+ {
286
+ "type": "number",
287
+ "description": "节点 ID\n\nNode ID"
288
+ }
289
+ ],
290
+ "minItems": 2,
291
+ "maxItems": 2
292
+ }
293
+ },
294
+ "evaluator": {
295
+ "type": "object",
296
+ "description": "求值器\n\nEvaluator",
297
+ "oneOf": [
298
+ {
299
+ "type": "object",
300
+ "properties": {
301
+ "type": {
302
+ "type": "number",
303
+ "enum": [
304
+ 0
305
+ ],
306
+ "description": "求值器类型 (eased)\n\nEvaluator type (eased)"
307
+ },
308
+ "interpretedAs": {
309
+ "type": "number",
310
+ "enum": [
311
+ 0,
312
+ 1,
313
+ 2
314
+ ],
315
+ "description": "文本缓动解释方式 (0: str, 1: int, 2: float),仅用于文本类型事件\n\nText easing interpretation method (0: str, 1: int, 2: float), only used for text type events"
316
+ },
317
+ "easing": {
318
+ "type": "object",
319
+ "description": "缓动数据\n\nEasing data",
320
+ "oneOf": [
321
+ {
322
+ "type": "object",
323
+ "properties": {
324
+ "type": {
325
+ "type": "number",
326
+ "enum": [
327
+ 0
328
+ ],
329
+ "description": "缓动类型 (normal)\n\nEasing type (normal)"
330
+ },
331
+ "identifier": {
332
+ "type": "number",
333
+ "description": "标识符\n\nIdentifier"
334
+ }
335
+ },
336
+ "required": [
337
+ "type",
338
+ "identifier"
339
+ ]
340
+ },
341
+ {
342
+ "type": "object",
343
+ "properties": {
344
+ "type": {
345
+ "type": "number",
346
+ "enum": [
347
+ 1
348
+ ],
349
+ "description": "缓动类型 (template)\n\nEasing type (template)"
350
+ },
351
+ "identifier": {
352
+ "type": "string",
353
+ "description": "标识符\n\nIdentifier"
354
+ }
355
+ },
356
+ "required": [
357
+ "type",
358
+ "identifier"
359
+ ]
360
+ },
361
+ {
362
+ "type": "object",
363
+ "properties": {
364
+ "type": {
365
+ "type": "number",
366
+ "enum": [
367
+ 4
368
+ ],
369
+ "description": "缓动类型 (wrapper)\n\nEasing type (wrapper)"
370
+ },
371
+ "identifier": {
372
+ "type": "string",
373
+ "description": "标识符\n\nIdentifier"
374
+ }
375
+ },
376
+ "required": [
377
+ "type",
378
+ "identifier"
379
+ ]
380
+ },
381
+ {
382
+ "type": "object",
383
+ "properties": {
384
+ "type": {
385
+ "type": "number",
386
+ "enum": [
387
+ 2
388
+ ],
389
+ "description": "缓动类型 (bezier)\n\nEasing type (bezier)"
390
+ },
391
+ "bezier": {
392
+ "type": "array",
393
+ "items": {
394
+ "type": "number"
395
+ },
396
+ "minItems": 4,
397
+ "maxItems": 4,
398
+ "description": "贝塞尔控制点坐标 [x1, y1, x2, y2]\n\nBezier control point coordinates [x1, y1, x2, y2]"
399
+ }
400
+ },
401
+ "required": [
402
+ "type",
403
+ "bezier"
404
+ ]
405
+ },
406
+ {
407
+ "type": "object",
408
+ "properties": {
409
+ "type": {
410
+ "type": "number",
411
+ "enum": [
412
+ 3
413
+ ],
414
+ "description": "缓动类型 (segmented)\n\nEasing type (segmented)"
415
+ },
416
+ "left": {
417
+ "type": "number",
418
+ "description": "左边界\n\nLeft boundary"
419
+ },
420
+ "right": {
421
+ "type": "number",
422
+ "description": "右边界\n\nRight boundary"
423
+ },
424
+ "inner": {
425
+ "$ref": "#/properties/eventNodeSequences/items/properties/events/items/properties/evaluator/oneOf/0/properties/easing",
426
+ "description": "内部缓动数据\n\nInner easing data"
427
+ }
428
+ },
429
+ "required": [
430
+ "type",
431
+ "left",
432
+ "right",
433
+ "inner"
434
+ ]
435
+ }
436
+ ]
437
+ }
438
+ },
439
+ "required": [
440
+ "type",
441
+ "easing"
442
+ ]
443
+ },
444
+ {
445
+ "type": "object",
446
+ "properties": {
447
+ "type": {
448
+ "type": "number",
449
+ "enum": [
450
+ 1
451
+ ],
452
+ "description": "求值器类型(expressionbased)\n\nEvaluator type (expression-based)"
453
+ },
454
+ "jsExpr": {
455
+ "type": "string",
456
+ "description": "JavaScript表达式\n\nJavaScript expression"
457
+ }
458
+ },
459
+ "required": [
460
+ "type",
461
+ "jsExpr"
462
+ ]
463
+ },
464
+ {
465
+ "type": "object",
466
+ "properties": {
467
+ "type": {
468
+ "type": "number",
469
+ "enum": [
470
+ 2
471
+ ],
472
+ "description": "求值器类型(macro)\n\nEvaluator type (macro)"
473
+ },
474
+ "name": {
475
+ "type": "string",
476
+ "description": "宏名称\n\nMacro name"
477
+ },
478
+ "compiled": {
479
+ "type": "string",
480
+ "description": "编译后的JavaScript表达式\n\nCompiled JavaScript expression"
481
+ }
482
+ },
483
+ "required": [
484
+ "type",
485
+ "name",
486
+ "compiled"
487
+ ]
488
+ }
489
+ ]
490
+ }
491
+ },
492
+ "required": [
493
+ "startTime",
494
+ "endTime",
495
+ "start",
496
+ "end",
497
+ "evaluator"
498
+ ]
499
+ }
500
+ },
501
+ "id": {
502
+ "type": "string",
503
+ "description": "事件节点序列标识符\n\nEvent node sequence identifier"
504
+ },
505
+ "type": {
506
+ "type": "number",
507
+ "enum": [
508
+ 0,
509
+ 1,
510
+ 2,
511
+ 3,
512
+ 4,
513
+ 5,
514
+ 6,
515
+ 7,
516
+ 8,
517
+ 9,
518
+ 10
519
+ ],
520
+ "description": "事件类型(moveX, moveY, rotate, alpha, speed, easing, bpm, scaleX, scaleY, text, color)\n\nEvent type (moveX, moveY, rotate, alpha, speed, easing, bpm, scaleX, scaleY, text, color)"
521
+ },
522
+ "final": {
523
+ "type": "object",
524
+ "description": "序列最终起始节点数据\n\nFinal event start node data",
525
+ "properties": {
526
+ "startTime": {
527
+ "type": "array",
528
+ "items": {
529
+ "type": "number"
530
+ },
531
+ "minItems": 3,
532
+ "maxItems": 3,
533
+ "description": "开始时间 [整数,分子,分母]\n\nStart time [integer, numerator, denominator]"
534
+ },
535
+ "start": {
536
+ "description": "起始值\n\nStart value"
537
+ },
538
+ "evaluator": {
539
+ "$ref": "#/properties/eventNodeSequences/items/properties/events/items/properties/evaluator",
540
+ "description": "求值器\n\nEvaluator"
541
+ },
542
+ "macro": {
543
+ "oneOf": [
544
+ {
545
+ "type": "array",
546
+ "items": [
547
+ {
548
+ "type": "string",
549
+ "description": "宏 ID\n\nMacro ID"
550
+ },
551
+ {
552
+ "type": "number",
553
+ "description": "原型编号\n\nProto number"
554
+ }
555
+ ],
556
+ "minItems": 2,
557
+ "maxItems": 2
558
+ },
559
+ {
560
+ "type": "string"
561
+ }
562
+ ],
563
+ "description": "起始值绑定的宏的 ID\n\nMacro ID for start value"
564
+ },
565
+ "macroTime": {
566
+ "oneOf": [
567
+ {
568
+ "type": "array",
569
+ "items": [
570
+ {
571
+ "type": "string",
572
+ "description": "宏 ID\n\nMacro ID"
573
+ },
574
+ {
575
+ "type": "number",
576
+ "description": "原型编号\n\nProto number"
577
+ }
578
+ ],
579
+ "minItems": 2,
580
+ "maxItems": 2
581
+ },
582
+ {
583
+ "type": "string"
584
+ }
585
+ ],
586
+ "description": "起始时间绑定的宏的 ID\n\nMacro ID for start time"
587
+ },
588
+ "linkedMacro": {
589
+ "type": "array",
590
+ "description": "将该事件的起始节点关联到一个宏的某个参数\n\nLink the start node of this event to a macro parameter",
591
+ "items": {
592
+ "type": "array",
593
+ "items": [
594
+ {
595
+ "type": "string",
596
+ "pattern": "^(value|time):.+$"
597
+ },
598
+ {
599
+ "type": "number"
600
+ }
601
+ ],
602
+ "minItems": 2,
603
+ "maxItems": 2
604
+ }
605
+ }
606
+ },
607
+ "required": [
608
+ "startTime",
609
+ "start",
610
+ "evaluator"
611
+ ]
612
+ }
613
+ },
614
+ "required": [
615
+ "events",
616
+ "id",
617
+ "type",
618
+ "final"
619
+ ]
620
+ }
621
+ },
622
+ "orphanLines": {
623
+ "type": "array",
624
+ "description": "无父级的、直属谱面的判定线列表\n\nList of parent-less judge lines directly belonging to the chart",
625
+ "items": {
626
+ "type": "object",
627
+ "description": "判定线数据\n\nJudge line data",
628
+ "properties": {
629
+ "cover": {
630
+ "type": "boolean",
631
+ "description": "是否有遮罩\n\nWhether there is a cover mask"
632
+ },
633
+ "id": {
634
+ "type": "number",
635
+ "description": "判定线唯一标识符\n\nJudge line unique identifier"
636
+ },
637
+ "group": {
638
+ "type": "number",
639
+ "description": "所属判定线组索引\n\nBelonging judge line group index"
640
+ },
641
+ "nnLists": {
642
+ "type": "object",
643
+ "description": "普通音符节点列表集合\n\nNormal note node list collection",
644
+ "additionalProperties": {
645
+ "type": "object",
646
+ "properties": {
647
+ "speed": {
648
+ "type": "number",
649
+ "description": "音符速度\n\nNote speed"
650
+ },
651
+ "medianYOffset": {
652
+ "type": "number",
653
+ "description": "Y轴偏移中位数\n\nY-axis offset median"
654
+ },
655
+ "noteNodes": {
656
+ "type": "array",
657
+ "description": "音符节点列表\n\nNote node list",
658
+ "items": {
659
+ "type": "object",
660
+ "properties": {
661
+ "notes": {
662
+ "type": "array",
663
+ "description": "音符列表\n\nNote list",
664
+ "items": {
665
+ "type": "object",
666
+ "properties": {
667
+ "above": {
668
+ "type": "number",
669
+ "enum": [
670
+ 0,
671
+ 1,
672
+ 2
673
+ ],
674
+ "description": "音符位置(0:下方, 1:上方, 2:特殊下方)\n\nNote position (0: below, 1: above, 2: special below)"
675
+ },
676
+ "alpha": {
677
+ "type": "number",
678
+ "description": "音符不透明度\n\nNote opacity"
679
+ },
680
+ "endTime": {
681
+ "type": "array",
682
+ "items": {
683
+ "type": "number"
684
+ },
685
+ "minItems": 3,
686
+ "maxItems": 3,
687
+ "description": "结束时间[整数, 分子, 分母]\n\nEnd time [integer, numerator, denominator]"
688
+ },
689
+ "isFake": {
690
+ "type": "number",
691
+ "enum": [
692
+ 0,
693
+ 1
694
+ ],
695
+ "description": "是否为假音符(0:否, 1:是)\n\nWhether it is a fake note (0: no, 1: yes)"
696
+ },
697
+ "positionX": {
698
+ "type": "number",
699
+ "description": "音符在判定线上的X位置\n\nX position of note on judge line"
700
+ },
701
+ "size": {
702
+ "type": "number",
703
+ "description": "音符大小\n\nNote size"
704
+ },
705
+ "speed": {
706
+ "type": "number",
707
+ "description": "音符速度\n\nNote speed"
708
+ },
709
+ "startTime": {
710
+ "type": "array",
711
+ "items": {
712
+ "type": "number"
713
+ },
714
+ "minItems": 3,
715
+ "maxItems": 3,
716
+ "description": "开始时间[整数, 分子, 分母]\n\nStart time [integer, numerator, denominator]"
717
+ },
718
+ "type": {
719
+ "type": "number",
720
+ "enum": [
721
+ 1,
722
+ 2,
723
+ 3,
724
+ 4
725
+ ],
726
+ "description": "音符类型(1:Tap, 2:Hold, 3:Flick, 4:Drag)\n\nNote type (1: Tap, 2: Hold, 3: Flick, 4: Drag)"
727
+ },
728
+ "visibleTime": {
729
+ "type": "number",
730
+ "description": "音符可视时间(打击前多少秒开始显现)\n\nNote visible time (how many seconds before hitting to start showing)"
731
+ },
732
+ "yOffset": {
733
+ "type": "number",
734
+ "description": "Y值偏移,使音符被打击时的位置偏离判定线\n\nY-value offset, making the note's position when hit offset from the judge line"
735
+ },
736
+ "zIndex": {
737
+ "type": "number",
738
+ "description": "对象Z轴索引\n\nObject Z-axis index"
739
+ },
740
+ "zIndexHitEffects": {
741
+ "type": "number",
742
+ "description": "击打效果Z轴索引\n\nHit effect Z-axis index"
743
+ },
744
+ "tint": {
745
+ "type": "array",
746
+ "items": {
747
+ "type": "number"
748
+ },
749
+ "minItems": 3,
750
+ "maxItems": 3,
751
+ "description": "击打效果着色RGB值\n\nHit effect tint RGB value"
752
+ },
753
+ "tintHitEffects": {
754
+ "type": "array",
755
+ "items": {
756
+ "type": "number"
757
+ },
758
+ "minItems": 3,
759
+ "maxItems": 3,
760
+ "description": "击打效果着色RGB值\n\nHit effect tint RGB value"
761
+ },
762
+ "judgeSize": {
763
+ "type": "number",
764
+ "description": "判定区域宽度\n\nJudgment area width"
765
+ },
766
+ "visibleBeats": {
767
+ "type": "number",
768
+ "description": "可见拍数\n\nVisible beats"
769
+ },
770
+ "absoluteYOffset": {
771
+ "type": "number",
772
+ "description": "绝对Y轴偏移\n\nAbsolute Y-axis offset"
773
+ }
774
+ },
775
+ "required": [
776
+ "above",
777
+ "alpha",
778
+ "endTime",
779
+ "isFake",
780
+ "positionX",
781
+ "size",
782
+ "speed",
783
+ "startTime",
784
+ "type",
785
+ "yOffset",
786
+ "absoluteYOffset"
787
+ ]
788
+ }
789
+ },
790
+ "startTime": {
791
+ "type": "array",
792
+ "items": {
793
+ "type": "number"
794
+ },
795
+ "minItems": 3,
796
+ "maxItems": 3,
797
+ "description": "节点中Note开始时间[整数, 分子, 分母]\n\nNote start time in node [integer, numerator, denominator]"
798
+ }
799
+ },
800
+ "required": [
801
+ "notes",
802
+ "startTime"
803
+ ]
804
+ }
805
+ }
806
+ },
807
+ "required": [
808
+ "speed",
809
+ "medianYOffset",
810
+ "noteNodes"
811
+ ]
812
+ }
813
+ },
814
+ "hnLists": {
815
+ "type": "object",
816
+ "description": "Hold音符节点列表集合\n\nHold note node list collection",
817
+ "additionalProperties": {
818
+ "type": "object",
819
+ "properties": {
820
+ "speed": {
821
+ "type": "number",
822
+ "description": "音符速度\n\nNote speed"
823
+ },
824
+ "medianYOffset": {
825
+ "type": "number",
826
+ "description": "Y轴偏移中位数\n\nY-axis offset median"
827
+ },
828
+ "noteNodes": {
829
+ "type": "array",
830
+ "description": "音符节点列表\n\nNote node list",
831
+ "items": {
832
+ "type": "object",
833
+ "properties": {
834
+ "notes": {
835
+ "type": "array",
836
+ "items": {
837
+ "$ref": "#/properties/orphanLines/items/properties/nnLists/additionalProperties/properties/noteNodes/items/properties/notes/items"
838
+ }
839
+ },
840
+ "startTime": {
841
+ "type": "array",
842
+ "items": {
843
+ "type": "number"
844
+ },
845
+ "minItems": 3,
846
+ "maxItems": 3,
847
+ "description": "节点中Hold的开始时间[整数, 分子, 分母]\n\nHold start time in node [integer, numerator, denominator]"
848
+ }
849
+ },
850
+ "required": [
851
+ "notes",
852
+ "startTime"
853
+ ]
854
+ }
855
+ }
856
+ },
857
+ "required": [
858
+ "speed",
859
+ "medianYOffset",
860
+ "noteNodes"
861
+ ]
862
+ }
863
+ },
864
+ "name": {
865
+ "type": "string",
866
+ "description": "判定线名称\n\nJudge line name"
867
+ },
868
+ "texture": {
869
+ "type": "string",
870
+ "description": "纹理图片路径\n\nTexture image path"
871
+ },
872
+ "eventLayers": {
873
+ "type": "array",
874
+ "description": "事件层级列表\n\nEvent layer list",
875
+ "items": {
876
+ "type": "object",
877
+ "properties": {
878
+ "moveX": {
879
+ "type": "string",
880
+ "description": "X轴移动事件序列ID\n\nX-axis movement event sequence ID"
881
+ },
882
+ "moveY": {
883
+ "type": "string",
884
+ "description": "Y轴移动事件序列ID\n\nY-axis movement event sequence ID"
885
+ },
886
+ "rotate": {
887
+ "type": "string",
888
+ "description": "旋转事件序列ID\n\nRotation event sequence ID"
889
+ },
890
+ "alpha": {
891
+ "type": "string",
892
+ "description": "透明度事件序列ID\n\nOpacity event sequence ID"
893
+ }
894
+ },
895
+ "required": [
896
+ "moveX",
897
+ "moveY",
898
+ "rotate",
899
+ "alpha"
900
+ ]
901
+ }
902
+ },
903
+ "speedEventNodeSeq": {
904
+ "type": "string",
905
+ "description": "速度事件序列ID\n\nSpeed event sequence ID"
906
+ },
907
+ "children": {
908
+ "type": "array",
909
+ "items": {
910
+ "$ref": "#/properties/orphanLines/items"
911
+ },
912
+ "description": "子判定线列表\n\nChild judge line list",
913
+ "minItems": 0
914
+ },
915
+ "rotatesWithFather": {
916
+ "type": "boolean",
917
+ "description": "是否随父线旋转\n\nWhether to rotate with parent line"
918
+ },
919
+ "anchor": {
920
+ "type": "array",
921
+ "items": {
922
+ "type": "number"
923
+ },
924
+ "minItems": 2,
925
+ "maxItems": 2,
926
+ "description": "锚点相对于图片的位置[x, y](实际影响的是图片位置)\n\nAnchor position relative to image [x, y] (actually affects image position)"
927
+ },
928
+ "extended": {
929
+ "type": "object",
930
+ "description": "扩展事件\n\nExtended events",
931
+ "properties": {
932
+ "scaleXEvents": {
933
+ "type": "string",
934
+ "description": "X轴缩放事件序列ID\n\nX-axis scaling event sequence ID"
935
+ },
936
+ "scaleYEvents": {
937
+ "type": "string",
938
+ "description": "Y轴缩放事件序列ID\n\nY-axis scaling event sequence ID"
939
+ },
940
+ "textEvents": {
941
+ "type": "string",
942
+ "description": "文本事件序列ID\n\nText event sequence ID"
943
+ },
944
+ "colorEvents": {
945
+ "type": "string",
946
+ "description": "颜色事件序列ID\n\nColor event sequence ID"
947
+ }
948
+ },
949
+ "required": [
950
+ "scaleXEvents",
951
+ "scaleYEvents"
952
+ ]
953
+ },
954
+ "zOrder": {
955
+ "type": "number",
956
+ "description": "Z轴顺序,决定重叠顺序\n\nZ-axis order, determines overlap order"
957
+ }
958
+ },
959
+ "required": [
960
+ "cover",
961
+ "id",
962
+ "group",
963
+ "nnLists",
964
+ "hnLists",
965
+ "name",
966
+ "texture",
967
+ "eventLayers",
968
+ "speedEventNodeSeq",
969
+ "children",
970
+ "anchor"
971
+ ]
972
+ }
973
+ },
974
+ "bpmList": {
975
+ "type": "array",
976
+ "description": "BPM分段列表\n\nBPM segment list",
977
+ "items": {
978
+ "type": "object",
979
+ "properties": {
980
+ "bpm": {
981
+ "type": "number",
982
+ "description": "每分钟节拍数\n\nBeats per minute"
983
+ },
984
+ "startTime": {
985
+ "type": "array",
986
+ "items": {
987
+ "type": "number"
988
+ },
989
+ "minItems": 3,
990
+ "maxItems": 3,
991
+ "description": "开始时间[整数, 分子, 分母]\n\nStart time [integer, numerator, denominator]"
992
+ }
993
+ },
994
+ "required": [
995
+ "bpm",
996
+ "startTime"
997
+ ]
998
+ }
999
+ },
1000
+ "judgeLineGroups": {
1001
+ "type": "array",
1002
+ "description": "判定线组名称列表\n\nJudge line group name list",
1003
+ "items": {
1004
+ "type": "string",
1005
+ "description": "判定线组名称\n\nJudge line group name"
1006
+ }
1007
+ },
1008
+ "chartTime": {
1009
+ "type": "number",
1010
+ "description": "谱面时间\n\nChart time"
1011
+ },
1012
+ "rpeChartTime": {
1013
+ "type": "number",
1014
+ "description": "RPE格式谱面时间\n\nRPE format chart time"
1015
+ },
1016
+ "macroEvaluators": {
1017
+ "type": "array",
1018
+ "description": "宏评估器列表\n\nMacro evaluator list",
1019
+ "items": {
1020
+ "type": "object",
1021
+ "description": "宏评估器\n\nMacro evaluator",
1022
+ "properties": {
1023
+ "macro": {
1024
+ "type": "string",
1025
+ "description": "宏名称\n\nMacro name"
1026
+ },
1027
+ "id": {
1028
+ "type": "string",
1029
+ "description": "缓动标识符\n\nEasing identifier"
1030
+ }
1031
+ },
1032
+ "required": [
1033
+ "macro",
1034
+ "id"
1035
+ ]
1036
+ }
1037
+ },
1038
+ "timeMacros": {
1039
+ "type": "array",
1040
+ "description": "时间宏列表\n\nTime macro list",
1041
+ "items": {
1042
+ "type": "object",
1043
+ "description": "时间宏\n\nTime macro",
1044
+ "properties": {
1045
+ "id": {
1046
+ "type": "string",
1047
+ "description": "宏唯一标识符\n\nMacro unique identifier"
1048
+ },
1049
+ "macro": {
1050
+ "type": "string",
1051
+ "description": "宏名称\n\nMacro name"
1052
+ },
1053
+ "parametric": {
1054
+ "type": "boolean",
1055
+ "description": "是否使用参数方程\n\nWhether to use parametric equation"
1056
+ }
1057
+ },
1058
+ "required": [
1059
+ "id",
1060
+ "macro"
1061
+ ]
1062
+ }
1063
+ },
1064
+ "valueMacros": {
1065
+ "type": "array",
1066
+ "description": "值宏列表\n\nValue macro list",
1067
+ "items": {
1068
+ "type": "object",
1069
+ "description": "值宏\n\nValue macro",
1070
+ "properties": {
1071
+ "id": {
1072
+ "type": "string",
1073
+ "description": "宏唯一标识符\n\nMacro unique identifier"
1074
+ },
1075
+ "macro": {
1076
+ "type": "string",
1077
+ "description": "宏名称\n\nMacro name"
1078
+ },
1079
+ "parametric": {
1080
+ "type": "boolean",
1081
+ "description": "是否使用参数方程\n\nWhether to use parametric equation"
1082
+ }
1083
+ },
1084
+ "required": [
1085
+ "id",
1086
+ "macro"
1087
+ ]
1088
+ }
1089
+ }
1090
+ },
1091
+ "required": [
1092
+ "version",
1093
+ "$schema",
1094
+ "offset",
1095
+ "duration",
1096
+ "info",
1097
+ "templateEasings",
1098
+ "wrapperEasings",
1099
+ "macroEvaluators",
1100
+ "timeMacros",
1101
+ "valueMacros",
1102
+ "eventNodeSequences",
1103
+ "orphanLines",
1104
+ "bpmList",
1105
+ "judgeLineGroups"
1106
+ ]
1107
+ }