ppy / osu

rhythm is just a *click* away!
https://osu.ppy.sh
MIT License
14.64k stars 2.16k forks source link

Add support for unusual beat snaps #2316

Closed Xinnoh closed 2 years ago

Xinnoh commented 6 years ago

There are rare cases where 1/5 or 1/7 beatsnap is used in a song. This is uncommon, but some songs are simply unrankable due to this. https://osu.ppy.sh/s/647360 - Example of a 1/5 map that could easily be ranked if 1/5 was supported

The current workaround to 1/5 is to multiply the bpm by five, use 1/1 snapping, and have a 5/4 meter. It's dumb.

Because 1/5 and other weird snaps are so uncommon, they should only be accessible via an extra panel or by editing the .osu file, else new mappers would be confused by them. Regardless, it needs support somehow

Frontear commented 6 years ago

Considering how this is already possible, as you said, isn't that somewhat support already? Unintentional support sure, but support nonetheless. Also, since you mention rare, I seriously doubt it is necessary to officially begin support for something that is not only rare, but already somewhat possible, especially considering that there are more important issues to worry about currently. Perhaps backlog, if it must be supported?

Xinnoh commented 6 years ago
  1. It's not supported or possible. If you open it in the editor you'd see 500 bpm is really not fun to work with at all. Changing the bpm to the correct bpm and 80% of the map becomes unsnapped because the editor does not support it.
  2. I am mentioning it now because if it's brought up again after lazer is finished it may be harder to implement then. It's easier to implement features while still developing. Regardless, it should be kept in mind.
  3. this is a rhythm game, barring some kinds of music from ever being ranked due to technical issues just doesn't make sense.

This is 100% a backlog feature, but it needs to be implemented in the future.

dscosu commented 6 years ago

not much to add to what sinnoh said, very well worded and concise but just to elaborate with examples as i do think its important to have

the current implementation for something like this is really broken especially when most of a song is in a regular divisor like 1/4. if you have 1/5 in just one place, you have to artificially raise the bpm by 5/4 or by 5 and then map that one part in 1/5 and then go back to 1/4, even though musically the bpm never changes. for an example: https://osu.ppy.sh/s/693816 at 06:42:715 the bpm is raised by 5/4x to map a small section of quintuplets, even though musically the bpm isnt changing. this is a rather light example but i'm sure you can imagine how things would get more complicated. it's an unnecessary roadblock and results in the song really being timed incorrectly.

as far as implementation, an option to select a "custom beat snap divisor" in the top right, where the beat-snap divisor currently is, so that the regular 1/1, 1/2, 1/4 etc.. aren't affected but custom values are possible. then maybe move/reword the "1/16 should never be used EVER!!!" message to custom divisors.

Rekkonnect commented 6 years ago

Given this I would like to express my proposal for even further divisions. What I had in mind is three separate panels like the one that already exists where in order the divisors they contain are:

Now I see this being useful for osu!mania since it involves more complex patterns and faster speeds, and not that much in other gamemodes. However these are to be universally available since they might be needed for any case (please don't do 1/32 in osu!standard though).

Frontear commented 6 years ago

This new comment puts me more on edge. It improves the mapping scene, but further complicates what the editor is going to become.

How many cases would other panel even help with? I can understand the common panel, or even (with some hesitation), the triplets panel. I don't see how useful the other panel can be, or how much music it even assists in.

Additionally, I feel just adding divisors is just going to be a hassle, there should be a better way to mapping these kinds of songs without just adding new divisors. It will start getting cluttered, and become extremely tedious for mappers.

Rekkonnect commented 6 years ago

The implementation I have in mind and will hopefully do a pull request implementing it does not complicate it, in fact it gives the mapper the option to switch between the types of panels (common, triplets, other) with other buttons, which will only show the divisors on each panel.

In my opinion, 1/11 is the rarest to use, yet I don't see why not adding it. It would be useful somehow somewhen, and having it implemented beforehand surely assists.

LittleEndu commented 6 years ago

What is preventing us from making lazer beatmaps and thus the editor support any arbitrary beat snapping? Then all the rare beat snaps like 1/5, 1/7, 1/9, 1/11, 1/18, 1/24, 1/32 would all be supported but only when necessary.

Xinnoh commented 3 years ago

this was added to stable so i would assume it's fine to close this?

bdach commented 3 years ago

No, this is the issue tracker for lazer specifically. The issue should remain open until the snaps are added to lazer, too.

mangomizer commented 2 years ago

Bumping this because I think it warrants a higher priority. Several recently added FAs have licensed tracks that require 1/n snapping (where n>9) which is not possible to represent in the current editor (stable or lazer). If we are providing pre-timed .oszs of licensed tracks, I think it is reasonable to provide support for mappers to accurately place objects without needing to change the BPM.

Further details/examples in #16536

bdach commented 2 years ago

I'd be up for trying to make this happen, but before I stray too far on the wrong path - does this (very rough proof of concept) UX for setting the divisors look OK / acceptable?

https://user-images.githubusercontent.com/20418176/153721629-14f6855f-5331-41ff-8f1b-04a3bb71b83e.mp4

The "common" / "triplets" distinction was borrowed from #2403, but the unusual snaps option from there is gone in favour of a free entry textbox.

I haven't done much other work besides just gluing that UI together, but I have a pretty decent idea how I want to make the "custom" option work - it would involve basically finding and displaying all larger rational divisors if possible where the current preset snaps are (e.g. if somebody sets a custom 1/14 divisor via the textbox for whatever reason, after closing the popover the beat snap control will show options of 1/1, 1/2, 1/7 and 1/14).

peppy commented 2 years ago

Seems maybe okay, although a bit cumbersome in terms of UX. The arrows to adjust in the original PR definitely feel better.

For custom, would it not make more sense to have the snap divisor itself clickable and immediately allow entering the custom snap? Is there any benefit of the way you have it?

bdach commented 2 years ago

There's the question what should happen to the arrows from the original PR if a custom snap is indeed entered. I guess you could have common/triplet modes as the original PR had it, but then entering your own snap would go into a normally-inaccessible "custom" mode. Not sure whether that's too convoluted or not? I guess I can try.

bdach commented 2 years ago

Ok, I've done some more experimenting - how's this?

https://user-images.githubusercontent.com/20418176/153767142-08a576bf-bc44-45ea-8a69-140ada4c9519.mp4

I know there is still some touching-up to do (like after entering the custom divisor, the max one should be selected initially) but does the central idea of how this works make sense?

peppy commented 2 years ago

Looks pretty good. A couple of notes: