-
Notifications
You must be signed in to change notification settings - Fork 1
Glossary
This page describes terms and concepts used by this tool
The following formats for numbers are accepted for most inputs:
- Decimal:
1.5
- Fractions:
3/2
- Mixed fractions:
"1 1/2"
(requires quotes as it contains a space) - Percentage:
150%
(mostly useful for scaling)
Additionally for time values (ie in offset or interpolate), the following format are detected and will be converted into beats:
- Seconds
<SS>s
:0.050s
/1/20s
- Minute & Second
<MM>:<SS>
:1:20.250
-> 1 min, 20 s, 250 ms -> 80.25s
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 down
- 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 JSON format is 1/64. We automatically round to the closest one on export for compatiblity (may result in some inaccuracy when mapping based on 1/3).
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 notes, 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.
Supported and can be moved/scaled in time. There obviously is no XY position.
Bookmarks are only supported when dealing a with .synth
File directly, as they are not contained in the editor clipboard format.
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