forum

Midi to osu!Mania keysound+beatmap converter (Automap-chan)

posted
Total Posts
136
Topic Starter
Drum-Hitnormal
Made a java software that converts midi -> osu with help of Aqo

Temporary name: Automap-chan
Character design:
Thanks to Kami-Senpai for character design and GUI design
http://infamouslullaby.deviantart.com/art/Automap-chan-Character-Design-596086178?ga_submit_new=10%253A1457762000


This program has helped Para to make his piano set: Various Artists - Para's Piano Collection
Kiki with Ayato - Oceanus
silentch with Various Artists - Piano 7K BMS Pack
Pikechu with Various Artist - Maplestory 7K Piano Pack and Various Artist - Pike's 7K Piano Pack 1
Zenonia with his SDVX , IIDX midi 7K piano mapset
and [ Reversal ] la with MIDI Stuff - Dandelion's Promise



Here are a few maps created with it for you to try out:
Touhou - UN Owen was Her
http://puu.sh/nZWcs/33a85834eb.osz

Touhou - Beloved Tomboyish Girl
http://puu.sh/nZQ4O/904e87f4cf.osz

Supercell - Odds & Ends
http://puu.sh/nLrz2/eac85b4e30.osz

Yamada & 7 witches OP
http://puu.sh/nLoHP/5cd85fe63e.osz

Supercell - Sayonara Memories
http://puu.sh/nJgxl/1ea31a9d4a.osz

TalesWaver - Second Run
http://puu.sh/nJdfp/f4c3f72a6c.osz

Vocaloid - Rolling Girl
http://puu.sh/nEvQ3/4a30731bbc.osz

Oregariu - Everyday World
http://puu.sh/nJiIz/9535cdd976.osz

Rewrite - Philosophyz
http://puu.sh/nqq1J/dc968c6e60.osz

Golden Time - Sweet & Sweet Cherry
http://puu.sh/nqqCQ/64ccbcca58.osz

Bakemonogatari - Kimi no Shiranai Monogatari
http://puu.sh/nD4Bl/316bf55bdd.osz

Hyouka - Mikansei Stride
http://puu.sh/nqp42/705189855e.osz

Tari Tari - Kokoro no Senritsu
http://puu.sh/nqiWO/82b32cab7d.osz

Fate Zero - Oath Sign
http://puu.sh/nqjGM/f4e2f6008d.osz

Shigatsu wa kimi no Uso - Hikaru Nara
http://puu.sh/npqnQ/265bf3d3ee.osz

Expelled from Paradise - EONIAN
http://puu.sh/nppBt/449a1bb219.osz

Madoka - Sis Puella Magica!
http://puu.sh/nofkT/1f6358d76e.osz

Haruhi - God knows
http://puu.sh/nmSR3/b43b43cd0a.osz

No Game No Life - This Game
http://puu.sh/nmKP5/cef275348f.osz

Dantalian no Shoka - Cras numquam scire
http://puu.sh/nmCnS/5275996a4a.osz

Egoist - Euterpe
http://puu.sh/nmBBL/94b7834dc3.osz

Ef a tale of memories - A moon filled Sky
http://puu.sh/nmA2Y/1566d9b677.osz

Hyouka - Yasashisa no Riyuu
http://puu.sh/nm214/70b369ce12.osz

Nichijou - Zzz
http://puu.sh/nmy4b/008cfee9c1.osz

Narcissu OST (2-3 stars):
Scarlet
http://puu.sh/nm0rS/546c2d2290.osz
Lamune79s
http://puu.sh/nm0CC/8a6c4e3722.osz
Narcissu
http://puu.sh/nm0Z0/be50fae965.osz
Nacissu 2nd
http://puu.sh/nm1l1/91d8fd559b.osz

Jiyuu no tsubasa
http://puu.sh/njpW8/6f19f2da48.osz

Fubuki:
http://puu.sh/njjVf/13b9745fbc.osz

Virgin Forest (contain 16 instruments):
http://puu.sh/njs24/89a2ca49d7.osz

Tokimeki Poporon:
http://puu.sh/ni7Qv/ddfb6812c6.osz

Brave Heart:
http://puu.sh/ni37b/7eae2d788e.osz

Electric angel:
http://puu.sh/njrta/8d2951ba4c.osz

KurousaP - Senbonzakura (3C = max of 3 chord)
http://puu.sh/neyjW/3ef011d034.osz
------------------------------------------------------------------------------------------------------------------
Testplay by Renosoko
4K

7K

------------------------------------------------------------------------------------------------------------------

DL link below (Jvm required)
put all files (except your midi) at same location as the jar file.
Updated: Jan 21, 2019

Source code and Automap-chan download
https://github.com/dudehacker/Automap-chan


------------------------------------------------------------------------------------------------------------------

How to use:
Step 0: Find a midi of song you like

What is Midi?
In simple terms, Midi is a digital music sheet, computer reads it then plays it accordingly using available instruments. Midi does not contain human voice.
You can't convert mp3 into midi.

Step 1: Choose a midi and convert + export sounds
Detailed Guide for how to use Automap-Chan
The first window you see when you open Automap-Chan is to pick a midi you want to convert to osu beatmap.


Next window is convert options.

1: List of tracks in your midi file, each track represents 1 instrument.
You can select a track, it becomes highlighted like track 2 in the picture.
Once a track is selected, you may change its instrument or volume using the buttons in area 8 or use playback control buttons in area 7
2: List of tracks that you want to set as Storyboard in your map , use buttons from area 4 to bring import tracks from area 1.
3: List of tracks that you want to play in your beatmap, use buttons from area 5 to bring import tracks from area 1.

If a track is not in area 2 or area 3 then it wont show up in the beatmap.
6: Empty area 2 and area 3
9: Difficulty = 1 means a lot of notes that comes from tracks in area 3 will be send to Storyboard to reduce difficulty.
Max Chord = the maximum size of chord allowed in your beatmap.
For example, this is a chord of size 4


Keyset = how many keys is your beatmap? usually 4 or 7
If you check the "Co-op" box then the Keyset is doubled, you can go from 1 to 18 keys

10: Extract hitsound, if you are converting the same midi for a second time with same options and you already extracted the hitsound, then you may uncheck it.
Custom hitsound = checked , use grand piano hitsound made by LordRaika instead of making Automap-chan create hitsounds.
The hitsounds used are located in Grand Piano folder, you may replace them with your own hitsound if desired. you will need to update the file names in convert.csv if different from default names.
Pro: Save a lot of time. Less files.
Con: Bigger size per file, only piano available as instrument choice, less pitch and duration variety for each note
Recommended use only when piano is the only instrument in your midi, and your song does not have a lot of sound variety.

Merge notes faster than 1/4: create less files by merging the different duration of same pitch into a 1/4 duration note if the duration is shorter than 1/4.
Example, if your note is duration of 1/8 or 1/16 it will become 1/4 with this option checked, a 1/2 note will stay as 1/2.
11: Create your beatmap!

Step 2: Create a folder in osu/songs
Step 3: Once the program finish running, drag the output (hitsounds + .osu file) into the folder created in step 2
Step 4: Edit the metadata and/or add picture
Step 5: play
------------------------------------------------------------------------------------------------------------------

Hit Sound Limitations
1. Volume
use audacity to change all the hitsound files volume:
http://theaudacitytopodcast.com/tap095-how-to-use-chains-in-audacity-to-save-time/

2. File Size
To further compress hitsound file size, use a program like WinLame to convert wav files to ogg, then rename them all into wav. Currently secretly supported by osu.
To rename file on windows:
1. Open cmd
2. navigate to folder containing all hitsound file with "cd" command
3. use the following command: "ren *.ogg *.wav"

------------------------------------------------------------------------------------------------------------------
Update (July 30, 2016)
Made a new tool that convert all LN in a map into short notes. It will be same start time, same column, same volume for hit sound.
I shall call it Rice Cooker

DL : https://drive.google.com/open?id=0B_DjSSnDr_wyNlNXZzdTOXc0ZnM

More tools here https://osu.ppy.sh/forum/p/5392330
Evening
Looks really interesting and promising, will be waiting for the public release x)
Rori Vidi Veni
This informative post will be deleted anyway, just move along
Agka

Rori Vidi Veni wrote:

.ssc(yes, Stepmania does take keysounds)?


aaaaaaaaaaahahahahahahahahahahahahahaha i'm here to laugh at your ignorance, you made me log in for this ahahahahahaha

it does but you're limited to playing as many simultaneous sounds on a single row as lanes you have, so if you have, like, a 4k chart, stepmania won't be able to play more than 4 new sounds at any given row. and that's not only a format limitation - it's a stepmania limitation.

consider yourself informed.
NlHIL
.
XeoStyle
This project is awesome (Kuchizuke Diamond is so fun), I'm really interrested to use it too but I don't have any knowledge about java and stuff, so meh ... :c
Anyway really good job dudehacker !
abraker
Wow I'm impressed by the demo file! For a converted map, it's pretty damn good.


pls make S3M, xm, it, etc tracker file converter.. PLEASE
Topic Starter
Drum-Hitnormal

abraker wrote:

Wow I'm impressed by the demo file! For a converted map, it's pretty damn good.


pls make S3M, xm, it, etc tracker file converter.. PLEASE
I have no clue what those are, the only rythme game i play atm is Osu.
abraker

dudehacker wrote:

abraker wrote:

Wow I'm impressed by the demo file! For a converted map, it's pretty damn good.


pls make S3M, xm, it, etc tracker file converter.. PLEASE
I have no clue what those are, the only rythme game i play atm is Osu.
Oops they are actually called module files, trackers are what they are made with. The best way I can describe them is that they are like midi files that also contain samples for the sounds to be played in a 8bit or 16bit format. Most chiptune music is made with tracker software which saves in one or more of those formats.

You can read more about them here
Topic Starter
Drum-Hitnormal

abraker wrote:

Oops they are actually called module files, trackers are what they are made with. The best way I can describe them is that they are like midi files that also contain samples for the sounds to be played in a 8bit or 16bit format. Most chiptune music is made with tracker software which saves in one or more of those formats.

You can read more about them here
Ok i understand the file format now, but my question is do you have a source where you can get plenty of anime/VN/vocaloid/touhou music in mod format?
I think midi is more popular format, so I dont see the need to make a new program for MOD files. If you do have a good source where I can find songs i cant find in midi then I will consider making it for MOD files as well, also depends on how complicated the format is, i havent done a full research on it yet.
abraker
Why just anime/VN/vocaloid/touhou music? LR2 or stepmania have some good stuff without them and chiptune or game music can be used some really good maps at a higher difficulty. There is a whole database right here.
PyaKura
Wow really cool stuff right there.

This could open up a whole new way of dealing with/creating new keysounded maps. Hope to see more as there are great pieces I have in mind which I'd like to map but eh
O2MasterFX
Can you add a bpm change from midi to osu?
Topic Starter
Drum-Hitnormal

O2MasterFX wrote:

Can you add a bpm change from midi to osu?
do u mean timing sections for SV?
PyaKura
I believe he means red lines as in tempo (BPM) changes
Topic Starter
Drum-Hitnormal

PyaKura wrote:

I believe he means red lines as in tempo (BPM) changes
those red line is timing section lol
it could be easily added as feature. i already have it inside my program just not shown to user.
PyaKura

dudehacker wrote:

those red line is timing section lol
Ok that was confusing considering most of us use "SV" to refer to green lines specifically
Topic Starter
Drum-Hitnormal

PyaKura wrote:

dudehacker wrote:

those red line is timing section lol
Ok that was confusing considering most of us use "SV" to refer to green lines specifically
right my bad, i forgot about green lines. never did SV for my maps
Aqo
Made some maps with this software. This is fun.

Kuchizuke Diamond filesize: 552KB Difficulty: 3.7*

Extra Magic Hour filesize: 4.4MB Difficulty: 4.6*

SPOILER
hey this software is great. any chance you'll make it output notes sorted by pitch in 7K instead of randomly?

just do a per-chord pitch sorting while doing a minimal amount of taking hands into account

lets say the input midi file has this:


going from top to bottom, right hand here has 4 notes and left hand has 2 notes
right hand plays A,F,C,A
left hand plays F,F

so the output note placement should be:



the general way your algorithm should work is like this:


i.e. every time there's a chord:
step 1: make a list of all right hand notes, sorted by pitch
step 2: make a list of all left hand notes, sorted by pitch
step 3: place all the right hand notes going from right to left going from highest pitch to lowest
step 4: place all the left hand notes going from left to right going from lowest pitch to highest

this algorithm should be super simple to implement and it would place all chords in a way that is both pitch-relevant and hands-accurate.

as for pitch differences between different chords/notes on different timings, only leave one condition where if the music repeats the map also repeats but if the music doesn't repeat then the map also doesn't repeat, no need to take pitch-relevancy into account between different timed notes because there simply isn't enough columns in the game to do this perfectly and writing an algorithm that gives a semi-perfect solution would be way too complicated.

for example if the midi goes like this (looking at right hand only):


first five notes repeat, then it starts changing. the 6th and 8th note are the same one in the music, but it doesn't have to be the same one in the output note placement, because that would overly complicate the algorithm. it's enough that in the output the first 5 notes would be all on the same column while the following ones be on different ones, for example:



this would be a theoretically "perfect" transcription but the algorithm for this would be rather complicated to take higher density stuff into account. whereas a simple solution could give something like:



which is fine too really

the only "problem" can arise around the purple area of columns 3,4,5 which can either belong to right hand or left hand depending on the density in the music. the simplest solution to this would just be to just ditch previous note relevancy and just place notes in remaining room when you run out of columns, prioritizing placing right hand notes in the rightmost available columns, and left hand notes in the leftmost available columns.

algorithm-wise this should be very simple to write, just one loop with a few conditionals on numbers. Any chance for this to happen? If you make this it would mean the outputs of your program would already be pretty much playable chart files with almost no requirement to "fix the notes" from a mapper.
ArcherLove
this is very brilliant to the point it depressing to me as a mapper lol
winnerspiros
Can you make it convert to max 18 keys (co-op 9keys) ?
Topic Starter
Drum-Hitnormal

winnerspiros wrote:

Can you make it convert to max 18 keys (co-op 9keys) ?
i dont know how those beatmap are made, if you give me a beatmap like that maybe i can.
winnerspiros

dudehacker wrote:

i dont know how those beatmap are made, if you give me a beatmap like that maybe i can.
for keys the format is keys=10,12,14,16,18 | key count: 11,13,15,17 doesn't exist
for hit objects the x value goes from 14 to 497
I think everything else is the same.

Here are some x valus for every key (hope it helps) :


18 keys
key1=14
key2=42
key3=71
key4=99
key5=128
key6=156
key7=184
key8=213
key9=241
key10=270
key11=298
key12=327
key13=355
key14=384
key15=412
key16=440
key17=469
key18=497

16 keys
key1=14
key2=42
key3=71
key4=99
key5=128
key6=184
key7=213
key8=241
key9=270
key10=298
key11=327
key12=355
key13=384
key14=440
key15=469
key16=497

14 keys
key1=14
key2=42
key3=99
key4=128
key5=164
key6=201
key7=237
key8=274
key9=310
key10=347
key11=384
key12=420
key13=457
key14=493

12 keys
key1=42
key2=64
key3=106
key4=164
key5=201
key6=237
key7=274
key8=310
key9=347
key10=384
key11=448
key12=493

10 keys
key1=42
key2=64
key3=106
key4=164
key5=237
key6=274
key7=310
key8=384
key9=448
key10=493
Topic Starter
Drum-Hitnormal

winnerspiros wrote:

dudehacker wrote:

i dont know how those beatmap are made, if you give me a beatmap like that maybe i can.
for keys the format is keys=10,12,14,16,18 | keys 11,13,15,17 dont exist
for hit objects the x value goes from 14 to 497
I think everything else is the same.

Here are some x valus for every key (hope it helps) :


18 keys
key1=14
key2=42
key3=71
key4=99
key5=128
key6=156
key7=184
key8=213
key9=241
key10=270
key11=298
key12=327
key13=355
key14=384
key15=412
key16=440
key17=469
key18=497

16 keys
key1=14
key2=42
key3=71
key4=99
key5=128
key6=184
key7=213
key8=241
key9=270
key10=298
key11=327
key12=355
key13=384
key14=440
key15=469
key16=497

14 keys
key1=14
key2=42
key3=99
key4=128
key5=164
key6=201
key7=237
key8=274
key9=310
key10=347
key11=384
key12=420
key13=457
key14=493

12 keys
key1=42
key2=64
key3=106
key4=164
key5=201
key6=237
key7=274
key8=310
key9=347
key10=384
key11=448
key12=493

10 keys
key1=42
key2=64
key3=106
key4=164
key5=237
key6=274
key7=310
key8=384
key9=448
key10=493
ok will try it later. can u send me an existing 18k beatmap?
winnerspiros

dudehacker wrote:

ok will try it later. can u send me an existing 18k beatmap?
I guess this??
Topic Starter
Drum-Hitnormal

winnerspiros wrote:

dudehacker wrote:

ok will try it later. can u send me an existing 18k beatmap?
I guess this??
Okay i investigated the format, and its possible to have a convert for this. However i need do some heavy change in my code for this to happen, since everything was made assuming max is 9 key. It might take me a while to make it because i have other more general things to improve on first, such as selective note input for multiple tracks and more hitsound quality vs size options. Since 18k is assumed to be played by 2 players with 9k each, the pattern algorithm also need reworked to reflect this change.
Bobbias
For changes like this, I would suggest you consider putting your code up on github so other people can do more than just suggest changes. For example, I might be able to make the necessary changes to allow for up to 18k and submit a pull request with the changes.
Topic Starter
Drum-Hitnormal

Bobbias wrote:

For changes like this, I would suggest you consider putting your code up on github so other people can do more than just suggest changes. For example, I might be able to make the necessary changes to allow for up to 18k and submit a pull request with the changes.
but my structure is super messy too ashamed to put it on github, maybe after i clean it up. Also need look up how to use github properly.
But the biggest reason is aqo is the one who made pattern algorithm and he doesn't want it to be known to people. I can send you a copy of source code if you get his permission.
Aqo
it's not that I don't want it to be known to people I just feel that mappers would fall into despair if they knew how simple it is
Bobbias
LOL. I havent checked the converter out properly yet (that is, I havent actually tried anything it's created yet), but I honestly don't think releasing the note generation algorithm is going to affect anyone. Most mappers are too disconnected from the community to even check something like this out.
ArcherLove
bobby pls...............
Bobbias
Consider that there are a LOT of people who have made maps. when I say mappers, I mean anyone who has made a beatmap. Many mappers never check the forums at all, and of those who do I'd bet not every one of them will have seen this thread, so my point stands.
pwhk
in fact picking out sounds from an mp3 takes a lot of time when mapping, which this converter skips that completely by using midi.

and mp3 to midi is very difficult for computers
Topic Starter
Drum-Hitnormal

pwhk wrote:

in fact picking out sounds from an mp3 takes a lot of time when mapping, which this converter skips that completely by using midi.

and mp3 to midi is very difficult for computers
Indeed i looked up mp3 instrument/vocal recognition researches, it is too complicated for me to understand how. But i believe in a few years people will release free library that could achieve this. It will make mapping a lot easier.
Topic Starter
Drum-Hitnormal
Update Log: March 18, 2016
- 10k-18k support for coop play
- midi playback
- instrument change for each track in midi
- volume change for each track in midi
- select which track to use as hit objects and which track to send to background/Storyboard
- difficulty setting for beatmap note density
abraker

dudehacker wrote:

Update Log: March 18, 2016
- 10k-18k support for coop play
I want to see an 18k liveplay so bad now
show more
Please sign in to reply.

New reply