PerryAsleep / GrooveAuthor

GrooveAuthor is an editor for authoring StepMania charts.
MIT License
21 stars 2 forks source link

[FEATURE REQUEST] Advanced chart traversal keybinds. #22

Open Piols opened 1 month ago

Piols commented 1 month ago

This feature relies on and assumes #20 is going to be implemented.

Basic chart traversal by changing snaps and moving up/down with arrow keys is intuitive and easy to get used to. However, chart editors are usually quite specialized tools that people spend a lot of time using, so giving space for mastery and optimization wherever possible can usually increase productiveness of users quite a lot. An area where there's a lot of opportunity for optimization with mastery is chart traversal. I would love to have a lot more options of traversing the chart. The keybinds I have in mind are: keybind for each snap - change to target snap (none, 4th, 8th, 12th, 16th, ..., 192nd) with a single button press and a keybind to go to next/previous note (which supplements nicely with moving by snap and measure). Of course that's a lot of buttons and would be very overwhelming, unintuitive and hard to use for beginners. That's why I think they should be not bound by default, but still assignable for whoever wants to go for it. Given that the keybinds would be customizable, everyone can figure out a setup that works best for themselves (like only binding the most common snaps they care about, or binding whatever keys they find comfortable). When mastered, it could greatly reduce the needed number of button presses to achieve whatever a charter is intending to do at a given moment, increasing charting speed and productivity.

PerryAsleep commented 1 month ago

Thanks for this request! Inputs for snap levels makes sense.

As for navigation I can see it working a few ways. I can see adding inputs for moving to the previous/next row with steps (or potentially, with any kind of event including timing events) on it. I can also see adding inputs for moving to the previous/next event regardless of what type it is. However since there can be many events on one row what that would probably mean is that it would select a specific event and the current row may not change. This would remove your current selection in order to select a new note. Currently there is no concept of an individual note/event being focused outside of the selection which can include one or more events, and adding distinct focused vs selected states would be a bigger lift that I'm leaning towards wanting to avoid right now. Having written all that out I am thinking it may be simpler and easier to use if it just moves between rows with events on them rather than between individual events.

What are your thoughts on these note navigation details?