forum

automatic mapping?

posted
Total Posts
34
Topic Starter
lawiee
so... i know this might sound crazy or beyond belief, but imagine if it were possible for some sort of code (don't ask me i don't know these things) that would allow osu songs to map themselves, perhaps useful for turning entire music livestreams into live-beatmaps you can play along with the livestream
just imagine being able to not only listen to a monstercat stream, but to be able to play along to it too.

by the way, i have no idea how this could become a reality, its merely an idea that i hope will intrigue people who can make this a reality.
itsMapleLeaf
I can guarantee someone's thought of this before. Like, ages ago. It's not really a novel concept, especially with a game like Audiosurf floating around. The difference between osu! and AS is that the "notes" in AS rarely ever go to the beat. Sure, the track gets more intense as the song gets more intense, but to the extent of how much it manages to match the music... that's pretty much it.

Now imagine if we attempted to implement the same kind of autogen in osu!. Trying to accurately click such off-rhythm circles would be hell. And that's pretty much end of story. It's not something that can be done so easily. Rhythm and beat detection exists, but it's nowhere near accurate to the level of quality you'd receive from a hand-mapped chart.
Kathex
Basicly its possible, but every map would have same or totaly random characteristics generated by the algorithm like what happen to beatmap converter to other game modes: taiko ctb, mania. Anyway its a bad thing, because maps represents personal likes of who maps, then play maps generated by a alghorithm lose the sense of peoples playing things made by peoples.
But who knows in the future they add a thing like this just for fun?
Anyway to make a algorithm for STD generate maps is very waste of time...

Suggestions for improve the actual map editor are welcome, like make more easy timming of a song... etc. kek
Allas
While it is possible to turn a livestream/youtube, mp3 or whatever into a somewhat decent beatmap without personally mapping it (via a program), there is no way to play it live in osu! while it's doing it's job.

The quality of beatmap varies greatly between genres of music and many other things that can lead to quite repetitive/strange map. It's also quite complicated (time consuming) to program such a thing, well at least for osu!std if you want patterns that make sense. It can also calculate the BPM and offset internally unless you want people to type it like in the editor as an input but that would make batch processing multiple songs harder.

I've personally programmed one of those program as a fun project a while ago (I'm sure a few others did too). I've focused on non-standard modes for simplicity sakes and while it get the job done, I'm not impressed by the varying quality of beatmap it produce. Sure, with some tweaks here and there I'm sure I could get something decent out of it but trying to teach different style of mapping / patterns to a program is time consuming. It's also near impossible to make a pattern while doing it live as you don't know when the next beat is going to be. However you can get around that with post-processing.

It's was quite a fun project and I recommend doing it yourself if you like programming.
mizuki-chan
It would be too great to be reality that such a program can auto-map as good as a handmade map, i guess :D
Topic Starter
lawiee
so essentially it would be possible if rhythm and beat detection was accurate enough and would only really be useful for offline training, and would be a pain to code
Bauxe
It wouldn't be useful for anything. autogen maps would be terrible.
BirdyThePhoenix
Would be amazing if something like this could be coded well, but the thing is that a machine just can't replace the human element. There are so many different things that make up a beatmap, and a machine wouldn't be able to produce the high quality beatmaps that people can make.
mizuki-chan

BirdyThePhoenix wrote:

Would be amazing if something like this could be coded well, but the thing is that a machine just can't replace the human element. There are so many different things that make up a beatmap, and a machine wouldn't be able to produce the high quality beatmaps that people can make.
Exactly. Take for example what do you consider rythm? Some want to go more for vocals, others will go for drums.
A machine cant really "feel" rythm.
Flanster
This idea has been floating around for years, its not something new. To be compeltely honest, the amount of work you'd have to do on perfecting such a program would probably be tons more than just mapping something.
Yuudachi-kun

Flanster wrote:

This idea has been floating around for years, its not something new. To be compeltely honest, the amount of work you'd have to do on perfecting such a program would probably be tons more than just mapping something.

That's a dumb excuse - you don't make the program to make one map. You use it to make hundreds
Bara-
Would be fine for Taiko/Mania, though the quality will likely be bad, but due to the 'limited amount of options' it will likely be okay-ish
CtB, and especially standard will get terrible maps

Maybe a good idea would be that the player times it first, so atleast everything will be properly snapped (maybe even force the player to set correct BSD (1/3, 1/4, 1/8 etc.))
Houtarou Oreki
Aren't there programs for detecting timing? I heard they work well most of the time. But yeah - standard would probably be really bad. Timing circles/sliders isn't that undoable but making distances so that maps would flow good and feel nice seems rather impossible
Shohei Ohtani
Auto-mapping programs exist

https://osu.ppy.sh/s/90854

I actually remember going in and trying to use the auto-map thing (I forgot how I got my hands on the program) and what ended up happening was that it just placed a fuckton of notes and I had to spend a LOT of time re-arranging the notes into a way that didn't look like garbage. Especially in 2016 where people literally shit themselves over imperfect blankets, there'd have to be a LOT of finesse to make the program work and you're pretty much just stuck being a re-arranger rather than a mapper, which takes roughly the same amount of time if you're trying to create a coherent product

although everyone's fucking easies nowaday are bland as shit so maybe that's okay
Flanster

Khelly wrote:

Flanster wrote:

This idea has been floating around for years, its not something new. To be compeltely honest, the amount of work you'd have to do on perfecting such a program would probably be tons more than just mapping something.

That's a dumb excuse - you don't make the program to make one map. You use it to make hundreds
Mapping something actually good.
Seijiro
that will give us just a shitton of identical maps (we already have a lot of maps looking alike now, imagine if this program gets release).
I find mapping as a sort of art. Unless our pc can think on its own, I wouldn't want it.
Alpgh367
Although I don't think this is feasible or viable, it would be really cool if someone actually went ahead and did this.
Topic Starter
lawiee
theres one idea that i havent seen anyone really address though, what if thsi automapping thing were to be used for a music livestream? is it possible for it to detect rhythm consistently and on the go?
Yuudachi-kun

Flanster wrote:

Mapping something actually good.
Oh well then you should've just said that in the first place.
Flami
Honestly, hand-made maps are the best and most likely will continue to be the best maps in osu! I just don't see how an "automatic mapping" system could beat something made with human thoughts and actions.
Stefan
The question is: why?
Asaiga
It's cool to see how machines can auto generate maps. And that's it, for entertaining purpose only.
Might see some random cool things that can inspire you in your maps but definitely can never replace even a **** tier mapper.
-Kanzaki

Stefan wrote:

The question is: why?
probably for if you are person with no idea how to map but you want to play the song you like so you can do like this at least
Xiyng
Of course it's possible. Now getting the program to create maps that are fun to play, that's another thing... It's definitely possible but I don't think it'll be doable pratically ever.

Of course it can be made easier. If you tell the program the timing of each note, you can probably relatively easily make it space them sensibly and maybe even convert some of them into sliders. That's actually an idea... Hmm. If I have the time (which is very doubtful), I might actually want to look into that just a bit. I mean, it doesn't sound too hard.
Bara-

Xiyng wrote:

Of course it's possible. Now getting the program to create maps that are fun to play, that's another thing... It's definitely possible but I don't think it'll be doable pratically ever.

Of course it can be made easier. If you tell the program the timing of each note, you can probably relatively easily make it space them sensibly and maybe even convert some of them into sliders. That's actually an idea... Hmm. If I have the time (which is very doubtful), I might actually want to look into that just a bit. I mean, it doesn't sound too hard.
I think manual input of timing would be even slower than actual mapping
Rilene
On Taiko may be possible but the rest, I guess not really a easy thing to program.
Bara-

Rilene wrote:

On Taiko may be possible but the rest, I guess not really a easy thing to program.
Maybe Mania too?
Rilene
Mania is hard due to the intensive note placing accordingly to the song.
Many of the automapping in the phone application is not so accurate, heck that there are even one note on intensive beat and streams and chord on calm part of the music.
chainpullz

FlamingPony wrote:

Honestly, hand-made maps are the best and most likely will continue to be the best maps in osu! I just don't see how an "automatic mapping" system could beat something made with human thoughts and actions.
Same way computers can beat grandmasters in chess. Is it worth the effort perfecting a machine learning algorithm for this game? Probably not.

Edit: Also a machine learning algorithm wouldn't be fast enough to run in real time for obvious reasons. Predictions be slow operations.
Femto
it can definitely be possible. there are games like audiosurf that use this code. of course it wont be perfect but it can be improved as it goes.
Allas

Xiyng wrote:

Of course it's possible. Now getting the program to create maps that are fun to play, that's another thing... It's definitely possible but I don't think it'll be doable pratically ever.

Of course it can be made easier. If you tell the program the timing of each note, you can probably relatively easily make it space them sensibly and maybe even convert some of them into sliders. That's actually an idea... Hmm. If I have the time (which is very doubtful), I might actually want to look into that just a bit. I mean, it doesn't sound too hard.
Assuming you have the first beat (aka offset) and know the BPM (both are programmable or you can use user input for better precision), it's not hard to space them correctly. Take any beat you find in your program and move it to the nearest fraction of BPM you have (with 1/16 or 1/8 precision or something). The beats you detect programmatically are already very near from those anyway. I suggest you do a first pass to find sliders/spinners, remove them from your detected beats array then map the remaining beat to hitcircle. That what I do anyway. If you want to get started, you should probably take a look at FFT and onset detection.

I will try to show a map made with it this weekend if I have enough time. (Edit: can't, I need to redo the whole program anyway. You can see what it looks like in the next post too if you follow the mania generator link)
DarkStoorM
Well, I have no idea how would it work with livestreams. I don't think it's even possible. Of course, you can generate a beatmap to the song, but generating it from a livestream? The only thing I can think of is an external application creating a beatmap on the fly, but that would of course involve the connection delay needed to either load the stream or a song from Broadcaster's livestream and calculate everything. Who knows, maybe it could be possible.

The only example I know is, that someone made a mania generator p/4024826
but I did not try it out, no idea if it works.

b4k4 blue wrote:

I run a Fast Fourier Transform (or FFT for short) on the sound every frame, which separates the sound into an array of frequencies that is analyzed as the song plays. If the user selected frequency is greater than a certain threshold, you have a note.
OFF-TOPIC
That's one thing.

The second thing, you can do an automatic mapping. Of course you can. Everything depends on what mapping you prefer. Random or "Authentic".

Random mapping is relatively easy for every mode, but it produces garbage tier maps, that can be only generated for fun or practice, like I did with my Taiko Map Generator and osu!catch Map Generator. I haven't tried Mania and standard yet, but that should not be hard.

Why random mapping is easy?
osu!
Well, for osu!, you just pick random starting X/Y, a direction for 2D vector, and do whatever you want. Playing with the coords by adding a value in distance to X/Y and reversing the value when it goes off-screen will result in a straight line mirroring from the playfield edge. You can also swap HitCircle for a linear slider (they are easy to code).
The most complicated thing for osu! is making curved patterns I guess. You can pick another random X/Y coords, and create a curve from your current location and the new point, then either calculate how many notes you can insert between these two points in time or make a slider from it.
When you mix everything together, you can get something like early-2009 mapping (?)

Taiko
For Taiko, there is nothing much to explain. You just insert a don or kat according to your bpm and snapping divisor.

osu!catch
It's a bit a pain to code, because of the off-screen checks, but everything depends just on setting the next point in distance from your current X to another. I made it by dividing the distances between normal movement, dash and hyperdash as the following
normal: 0 - 64 units
dash: 96 - 144 units
hyperdash: 160 - 256 units (that's because 256 units is the half of game playfield, so bigger hyperdash would spawn next note off-screen when the current location is in the middle)
next_note + (calculated_distance * direction) where the direction is either 1 or -1

Nothing special unless you add sliders (which were a bit harder to implement. I have some example maps of course).

osu!mania
Random mania mapping would be interesting, like dividing the generation in few steps. Fill the map with some Holds, then try filling the map with single notes (with checking the current spot and column for any collisions like if there is a Hold in the place where you want to add a note). You could also check if there's a Hold's end at the current spot so you can place a note there, and repeat for multiple column usage. Might be complicated a bit I guess.

That's for Random mapping. What about Authentic mapping?
Well... as people already said, nothing will replace human when it comes to mapping. You can only create something a bit closer unless you spend enough time to understand how people make their maps. I'm not saying it's impossible, because you can make pretty much everything if you spend a lot of time on researching and on lots of Trials and Errors.
Topic Starter
lawiee
all the feedback so far is actually pretty optimistic, essentially saying its possible but not easy, and will most likely be worse than an authentic, artistic map. this however doesn't completely kill the idea of automatic mapping and i think there may be a future for it. while it may never be to the standard that most people would want i would still love to see some form of automatic mapping get "perfected" (meaning as good as current minds can code it) and it could be fun to mess around with, now i can simply wait and hope that some genius will hand aside some time to this idea
Endaris
Well, as always.
Code it yourself.
This subforum doesn't exist to request features from other people but to present your creations related to osu! to others.

Lock pls.
Please sign in to reply.

New reply