-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathguide.txt
242 lines (162 loc) · 8.62 KB
/
guide.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
============================
| Chart Format Guide |
============================
| CHART DIFFICULTY
****************************
The first line indicates the difficulty and level of the chart:
[difficulty]_LEVEL_[level]
where [difficulty] is one of { EASY | NORMAL | HARD | EXPERT | SPECIAL },
and [level] is a number between 1 and 31, optionally with a + sign at the end.
Example:
EXPERT_LEVEL_28+
indicates that this chart is an Expert chart, rated Level 28+ (or internally 28.5).
| BPM SECTIONS
****************************
Then, we can define BPM sections as follows:
[sectionNo]#[sectionOffset]:[beatsPerBar]:[bpm]
where [sectionNo] shall be numbered from 1,
and [sectionOffset] shall be from the start of the song, in seconds.
Example:
1#0.500:4:120
2#12.500:4:180
indicates a segment #1 of 4/4 at BPM 120, starting at 0.500s,
then a segment #2 of 4/4 at BPM 180, starting at 12.500s, exactly 6 bars after #1.
| SCROLL SPEED CHANGES
****************************
Next, if necessary, we can define scroll speed changes as follows:
(G[groupNo])>[timeNotation]@[scrollSpeed]
where [groupNo] is the note group number (all notes are Group 0 by default),
[timeNotation] is the timing of the change, in the format described below,
[scrollSpeed] is the scroll speed multiplier compared to original speed (negative values allowed).
There can be more than 1 group of {>[timeNotation]@[scrollSpeed]} for each group.
Without the (G[groupNo]), you can continue defining more changes for the same group.
For all groups, the default speed is 1.0x.
Example:
G0>1:12_0+0/[email protected]
>16_0+0/[email protected]
>20_0+0/[email protected]
indicates a speed change for Group 0 at Section 1 Bar 12 Beat 0.0 from 1.0x to 0.5x (slows down),
then a speed change for the same group at Section 1 Bar 16 Beat 0.0 from 0.5x to -1.0x (retrograde motion),
then a speed change for the same group at Section 1 Bar 20 Beat 0.0 from -1.0x to 1.0x (back to normal).
| SOURCE CONTROL
****************************
Use this to auto-load the YouTube video source:
v=[youtubeVideoID]
where [youtubeVideoID] is the 11-character ID for the video (https://youtube.com/watch?v=XXXXXXXXXXX).
Example:
v=kZtovaaG7bc
points to the official MV for =EYE= by Double Face.
You should also marks the end of the video/audio with
stop=[stoppingTime]
at the end of the video, where [stoppingTime] denotes the ending time in seconds.
Example:
stop=137.881
denotes the video should stop at 137.881s (which is the length of the video above).
| TIME NOTATION
****************************
For both notes and speed changes, the following notation is used to mark the timing:
(Second notation) [timeInSeconds]
(Bar-beat notation (decimal)) ((([bpmSection]):[bar])_[beat]).[subBeat]
(Bar-beat notation (fraction)) ((([bpmSection]):[bar])_[beat])+[subBeat]
where in second notation, [timeInSeconds] denotes the absolute time in seconds,
and in bar-beat notations, [bpmSection] is the section number defined in the BPM part,
[bar] denotes the bar count within this section, starting from 0 (the first bar will be Bar 0),
and [beat] dentoes the beat count within this bar, starting from 0 (the first beat will be Beat 0).
It is allowed to omit the front components (with the separator) if these components are exactly
the same with the previous time notation.
However, if a component is different, you must write out all components from that component,
even if they are the same.
It is also allowed for fraction bar-beat notation to write fractions having a numerator larger than
the denominator. This is convenient when writing long holds, because you can use the same beat
for another note having the same timestamp with the hold head, only needing to write the subdivision.
Example:
12.450 // Second notation - 12.450s
1:23_0.0 // Bar-beat notation (decimal) - Section 1, Bar 23, Beat 0.0
:24_0.0 // Bar-beat notation (decimal) - (Section 1), Bar 24, Beat 0.0
_1.0 // Bar-beat notation (decimal) - (Section 1, Bar 24), Beat 1.0
.25 // Bar-beat notation (decimal) - (Section 1, Bar 24, Beat 1).25
:25_0+0/4 // Bar-beat notation (fraction) - (Section 1), Bar 25, Beat 0 +0/4
_1+0/4 // Bar-beat notation (fraction) - (Section 1, Bar 25), Beat 1 +0/4
+2/4 // Bar-beat notation (fraction) - (Section 1, Bar 25, Beat 1) +2/4
+4/4 // Bar-beat notation (fraction) - (Section 1, Bar 25, Beat 1) +4/4
// representing Beat 2 +0/4
| NOTES
****************************
Except for some notes, the format of a note is as follows:
([timeNotation])@[noteType][position](G[groupNo])
where [timeNotation] denotes the timing of the note in the format described above,
[noteType] is one of "O"(tap), "S"(skill), "L"(left flick), "R"(right flick), "U"(up flick), "D"(down flick),
[position] is the position of the note (with the center lane labelled 0, then -1, -2, ... to the left,
and 1, 2, ... to the right. x.5 is supported, indicating a note between two lanes),
and [groupNo] indicates the group number of the note.
Omitting time notation part indicates the current note has the same timing as the previous note,
and omitting the G[groupNo] part indicates the note defaults to Group 0.
Example (time notation omitted, and official lane notation (19-lane notation) is added in comments):
@O0 // a tap note at the center lane (lane 9)
@S-3 // a skill note at the 3rd lane left from center lane (lane 3)
@L1.5 // a left flick between the 1st and 2nd lane right from center lane (lane 12)
@R4 // a right flick at the rightmost lane (lane 17)
@O-4G1 // a tap note at the leftmost lane (lane 1) in Group 1
There can only be at most 5 skill notes in a chart.
For holds, hold heads share the same notation with ordinary notes (so you can also use skill notes here),
and knots are marked with a "=" in front of a tap (or flick) note (in front of the timestamp if necessary).
Example:
1:0_0+0/4@O2 // a hold starting from the 2nd lane right from center (lane 13)
=+2/4@O4 // and ending at the rightmost lane (lane 17)
For turns without judgments, remove the "O" inside the notation for a note.
You must end a hold with a knot, however.
Example:
1:0_0+0/4@O2 // a hold starting from the 2nd lane right from center (lane 13)
=+2/4@4 // passing the rightmost lane (lane 17) without judgment
=+4/4@O2 // and ending at the 2nd lane right from center (lane 13)
Knots and turns must be written in ascending order of their timestamps.
You must not let a knot/turn follow the previous note from the front.
For Ensemble Note, use "!" in place of {@[noteType][position]}.
Before the Ensemble Note, there must be a Ensemble start marker, marked with "?" in place of {@[noteType][position]}.
After the Ensemble Note, there must be a Ensemble end marker, marked with "~" in place of {@[noteType][position]}.
There must be no notes between the Ensemble Note and the Ensemble end marker.
| STYLE RECOMMENDATIONS
****************************
1. PREFER writing speed changes one per line, and leave an empty line between sections
Example:
G0>1:86_3+99/[email protected]
>:87_0+0/[email protected]
>:87_1+2/[email protected]
G1>1:86_1+49/[email protected]
>:86_1+2/[email protected]
>:86_3+49/[email protected]
>:86_3+1/[email protected]
>:86_3+99/[email protected]
>:87_0+0/[email protected]
>:87_1+2/[email protected]
G2>1:86_1+49/[email protected]
>:86_1+2/[email protected]
>:86_3+49/[email protected]
>:86_3+1/[email protected]
>:86_3+99/[email protected]
>:87_0+0/[email protected]
>:87_1+2/[email protected]
2. PREFER omitting unnecessary time notation components.
3. PREFER aligning the markers on the same vertical line.
Beware though, time notation components MUST NOT be separated in between.
Example:
1:4_0+0/4@O-3@O3
+2/4@O-1
_1+0/4@O1
+2/4@O-1@O3=+6/4@O3
_2+2/4@O-1
_3+0/4@O-3@O3
+2/4@O1
:5_0+0/4@O-1
^ Subdivision marker
^ Beat marker
^ Bar marker
4. PREFER writing notes with different timings on different lines except for hold knots/turns.
5. PREFER writing simultaneous notes on the same line unless both notes are holds
(which are forced to separate because the whole hold must be written first).
Example:
:6_0+0/4@O-3@O3 // Simultaneous taps
+2/4@O-1 // Tap at a different timing
_1+0/4@O1
+2/4@O-3=+6/4@O-3 // Simultaneous holds, so necessary to separate
+2/4@O3=+6/4@O3 // But the single whole hold is written on the same line