-
Notifications
You must be signed in to change notification settings - Fork 1
Glossary
This page describes terms and concepts used by this tool
To simplify operation, this tool converts the input data into a format that is both easy to apply operations too, and also (hopefully) easy to understand for everyone.
The following image illustrates the basics of the coordinate system for X and Y, as well as examples for offset and rotation (from blue note to red note)
Positions consist of three numbers: X, Y and Time
- X: Measured in grid squares from the center, where positive is right, and negative is left
- Y: Measured in grid squares from the center, where positive is up, and negative is right
- Time: Measured in Measures or Beats, from the start of the copied selection.
Technical note: The editor grid is slightly off-center (which is why walls shift slightly up and right when you start dragging them with grid-snap for the first time after creation). We subtract this offset on import and add it back on export for compatibility.
Technical note: The game involves bpm in the time coordinates for some reason. We don't do that.
Technical note: The smallest time interval supported by the game is 1/64. We automatically round to the closest one on export.
Angles are always specified in degrees, where positive is counterclockwise, and negative is clockwise. We consider 0° to be straight to the right (ie 3 o'clock position) and 90° is straight up (12 o'clock).
Any number is valid, but usually you want something between -360 (full rotation clockwise) and +360 (full rotation counterclockwise).
For all movement operations, we support three modes:
- Default / Absolute: All operations revolve around the center of the grid, ie the rotation in the image above
- Pivot: All operations revolve around a specified position in X, Y and Time
- Relative:
- Rails: Use the start of the rail as pivot
- Walls: Rotates a wall around its own rotation point (ie like you do in the editor)
- Single notes: Does not do anything
When both --relative
and --pivot=x,y,t
are specified, relative mode takes precedence.
Note: Time is only relevant if you scale in the time axis. In absolute mode, time=0 is the start of the selection
By notes, we refer to both single notes and rails of any of the four types.
We use the following names: right
(red / pink), left
(blue / cyan), single
(one-handed special / green), both
(hands-together special / yellow / gold)
While single notes are just one position, rails need multiple positions to be defined. To be easier to work with, both are stored in the exact same format, a 2d array of size n x 3
, where n is number of nodes (ie 1 for single nodes, or 3 for a rail with start, one intermediate point and end), and the final dimension stores the 3 coordinates (x,y,time)
These are just regular rails with triplets nodes in quick succession (ie 1/64 between): the first on the regular path of rail, the middle one some distance away and the last back on the rail. This is rendered in the game as a spike and does not impact scoring but produces a satisfying haptic effect to emphasize certain parts.
We support all of the current wall types under the following names: wall_right
, wall_left
, angle_right
, center
, angle_left
, crouch
, square
, triangle. To be able to use the same functions as notes, walls are also stored as 2d arrays, but always of size
1 x 5`, (n=1, since walls are always single objects), and the final dimension stores the 3 coordinates as well as wall type and rotation (x,y,time,type,rotation).
Technical Note: The game considers the wall positions to be such that a position of x=0, y=0 means the wall is the default position (the one it is in when you click the button to create one), but we use a position that (roughly) corresponds to the point of rotation, which is more intuitive makes movement much simpler.
Currently not supported - the output will not contain any, even if the input contained them.
Quick Links: Home | Installation | Glossary | Companion
- Pre-Processing: Change BPM, Delete Everything Not Matching Filter, Connect Single Notes Into Rails, Merge Rails, Change Note Type, Swap Hands, Change Wall Type
- Rails: Interpolate, Shorten Rails, Spiral, Spikes
- Movement: Scaling, Rotate, Offset, Outset, Stacking, Following Notes, Auto-Stacking, Random Offset, Random Rotation
- Post-Processing, Create parallel patterns, Split Rails, Convert Rails Into Single Notes, Snap to Rails, Keep Selection Alignment
- Miscellaneous: Use Original JSON, Filtering