Hello everyone. I am frukoyurdakul, and I study computer engineering. As you know, most of us suffer some problems while mapping such as dealing with unsnapped notes, setting wrong BPM, adding multiple SV changes, adding hitsounds and naming all of them which is wasting time etc. Since I also suffer from these I decided to create a tool that helps me to do some stuff. It has multiple functions that I use on most of my maps, and I think you should use something like this to save some time dealing with them one by one in editor. So, let's introduce the program:
It is called "Manage Beatmap" and it literally does that: It manipulates the file in some ways. It has several buttons in it and I will explain their functions one by one. Here is a picture of how it looks:
The download link is at the bottom of this post. You can watch the tutorial video too. Update video has been uploaded aswell. (Sorry for my shitty English by the way.) Unfortunately this works on Windows only. Warning: If you try to open it and it doesn't open, permissions might be the issue. Try running it as administrator first. Now, let's explain all of the functions I've created so far.
What I'm planning to do:
It is called "Manage Beatmap" and it literally does that: It manipulates the file in some ways. It has several buttons in it and I will explain their functions one by one. Here is a picture of how it looks:
The download link is at the bottom of this post. You can watch the tutorial video too. Update video has been uploaded aswell. (Sorry for my shitty English by the way.) Unfortunately this works on Windows only. Warning: If you try to open it and it doesn't open, permissions might be the issue. Try running it as administrator first. Now, let's explain all of the functions I've created so far.
- Select file: Obvious as it's name.
- Add hitsounds to the folder: Opens another window to add hitsounds to a specific folder. This requires Windows Media Player installed since it has a play function. What you do is pretty simple: You just drag the hitsound into the area, and some options will show up. Multiple drag and drops are possible, only .wav and .ogg extensions are allowed. Also, a quick tip: If you drag more than one hitsound at once, it will play them concurrently, which may cause sudden high volumes, so be careful. This is also noted in the window as well, if you don't read and experience, you will remember all the time anyways, but a warn is good. Anyway, it works for Standart, CTB and Taiko for now, I don't really know how Mania hitsounds work, so if you tell me in the future I can add the feature in it. After you put the files, you simply choose the hitsound type for each one, and then it generates the hitsounds when you press save button. Here are some pictures of how it looks:
- Prepare the map to hitsounding: For the mappers that are interested in making beatmaps with custom hitsounds, this function prepares the map for hitsounding. The most annoying part is to put all the inherited points initially, and hitsounds must be done between two notes, not on them. I'm recommending it this way because you need to consider the human error, the accuracy error and all of that. So in order to give flexibility, the green points must be put before the note. This function exactly does that: It places inherited points between two notes, for every note.
- Set all whistle sounds to claps: For a taiko mapper like me, I think it's getting annoying from time to time. So, you just click the button and it changes all the hitsounds for you.
- Position the notes (Taiko mode): Puts the notes by looking it's hitsound value. Don't use this on STD, CTB and Mania maps!! -for taiko guys- It puts the small don onto top-left of the area, small kat to top-right, big don to bottom-left and big kat to bottom-right. I think it's neccessary while modding maps in silent eh?
- Insert new timing: Replaces the map's current timing with the new timing. When you open this function, a window something like will appear:
You need to paste the timing content and selecting one of the options from the drop down list. After that, the timing will be replaced, and all of the inherited points and notes will be snapped accordingly. In order to use that function, your map has already been timed smoothly and shouldn't include unsnapped notes or green lines. The timing content you pasted should also be smooth,
otherwise the program will not apply the new timing. It will be explained with more details in the upcoming video. - Change BPM of the selected point: Applicable in one timing point at a time. What does it do? It shifts everything due to it's snappings, including inherited points, bookmarks (if the map has any and check the box) and the next sections. Because of rounding issues, some might shift +2 or -2 ms with inherited points as well, so I also put a function that runs after these kinds of changes. After you make your change, before it saves it to the file, it asks you to that you wanted a backup or not, after that it warns you with some message boxes about what you should do next, and then a message box appears which asks "Some of the notes may have shifted ± 2ms maximum, alongside with green points. If you exit, then open again, then press Resnap All Notes at 1/12 grid snap divisior and save the map, this function can edit the green lines that snapped on notes themselves. Do you want the adjustment?". If you press yes to that, it will adjust everything that unsnapped. This function is applicable for multiple files.
- Change offsets of the selected timing points: Changes the offsets of the notes, timing points and bookmarks (if you check it). This function is also applicable for multiple files.
- Add inherited points to change SV smoothly: Probably the most useful function on this program for mania and taiko SV mappers. It relatively (also looks BPM which will do hell of a job on variable timing maps) changes the SV by count (by notes or raw) with taking the first value as base one and puts the last one on wherever it lands. When you click this button, a window will pop up which looks like this:
What you should enter is:- Activate between time mode: Changes the count value to "Copy last time" which you should do exactly. The program will take the notes between and with that way you won't have to count all the notes.
- Reopen the window with the same values: If you check this mark, after you apply the SV changes the window will open again.
- Copy time: Just go to the editor and copy the starting time.
- Set first SV: Write the first SV value. Seperate the decimal point by comma.
- Set last SV: Write the last SV value. Seperate the decimal point by comma.
- Count: The amount of inherited points that going to be put. Has to be clarified and must be bigger than 0 and, enter an integer.
- Copy last time: Appears when you click the first checkbox, and from the editor you can copy the last time.
- Target BPM: Leave it blank or what does it say if your map has a fixed timing on the inherited points that going to be put. If it has a variable timing, put last BPM so the program will calculate it accordingly. I will explain it after these function explanations.
- Grid snap: Selects the gap between the inherited points. Choosing a 4/1 gap while the editor stands at 1/16 snap is not a good idea. It is also disabled if you check the box below it.
- Put points by note snaps: Without looking the grid snap value, it counts the notes only, and puts the inherited points by calculating their snap relatively to the target BPM. It will take the current note or the next note wherever the editor stands.
- Equalize the SV on all timing points: A very good function for variable timed songs. Let's say there is a map that contains human errors a lot and you timed it correctly with variable BPM that goes on and off all the time. Just click this button, enter the target BPM and SV, and it'll add or edit the inherited points. When you click this a window will appear like this:
Further explanation:- You just enter the BPM, SV value (seperating with comma) and then select a mode from that box. It has two options: Add or Edit. If you choose "Add", make sure that your map doesn't have any inherited points. It will add inherited points based on your input and the original BPM automatically Unfortunately it doesn't look the SV value since it's the initial one. You can choose the 2nd function with selecting everything after you put the points, though. If you want to choose "Edit", select the rows about the section before opening this. If you don't, the program will block you to continue.
Choose them with their BPM, and if you don't choose any BPM the program will not find something to calculate, hence it'll block you. After the selection, enter the target BPM and SV, choose "Edit" and press "Apply" to edit the current points.
- You just enter the BPM, SV value (seperating with comma) and then select a mode from that box. It has two options: Add or Edit. If you choose "Add", make sure that your map doesn't have any inherited points. It will add inherited points based on your input and the original BPM automatically Unfortunately it doesn't look the SV value since it's the initial one. You can choose the 2nd function with selecting everything after you put the points, though. If you want to choose "Edit", select the rows about the section before opening this. If you don't, the program will block you to continue.
- Increase SV step by step of selected inherited points: Assume that you put the inherited points already, and you want to make a change. Just select the inherited points and click the button. On the window that appears enter the last SV value to do the calculation. Important: It takes the 1st selected row as the initial value. So like if you have 1.00x already and you start from 1.10x, it will start to calculate from 1.10x, not 1.00x. So, just put an initial timing point to get the result correctly.
- Increase or decrease SV's of selected inherited points: Just changes the values of them, like if it has 1.20x and you entered 0,1 it'll result as 1.30x.
- Changes volumes on selected points: Basically does what the previous button does, but it does it on volumes instead. If the value is 70% and you entered 10%, the result will be 80%. These are good because it can be applied multiple points at once.
- Increase volume step by step of selected rows: Does exactly the same what "Increase SV step by step of selected inherited points" on volumes.
It takes the first one as initial and calculates the rest of them by looking what you've entered. Decimal is not allowed on this. - Delete all inherited points and delete selected inherited points: They do what they say. They are there because, on every change you have to refresh the osu itself to look at it. Instead, you can delete the changes here without deleting it from osu.
- Delete duplicate timing and inherited points: While they are not rankable, the function is there because, when you do so many actions, the program puts the values without looking if there is a timing point there before. This function removes the duplicate timing and inherited points by keeping the latter one. Not the first one, so be careful.
- Delete unnecessary inherited points: Basically removes the unnecessary inherited points. Such as: Two inherited points that have the same volume, SV, sampleset and kiai will be deleted if only detected successively.
- Copy metadata to the selected files: Gets the current metadata and bookmarks from the selected file, and copies to others. Edits are also possible. When you click, it will pop a window something like this:
Updates (Redownload if you downloaded it before 22.11.2021 18:05 UTCUpdate 1
Fixed a minor issue on adding SV functionAdded undo-redo function (has 10 size only, can be used by common shortcuts, more info in the Options window.)Added Turkish Language (French is pending)
Update 2
Forced comma as the decimal point seperator (apparently it caused issues on different cultures)Added "Between time" function to "Slider Velocity Changer" window.
Update 3
Fixed a small bug about the count part of the "Slider Velocity Changer".Fixed the bug on "Equalize the SV for all timing points".Improved visuals, made them flexible on language changes.
Update 4
Apparently a bug happened on between time function on "Slider Velocity Changer" about not adding a point to last note, which is fixed now.On "Slider Velocity Changer" window, fixed the bug about wrong input.The main window now shows whether it's a kiai point or not.
Update 5
On "Slider Velocity Changer", fixed a small bug about not selecting the last note when used.
Update 6
Fixed an error on "Equalize SV on all timing points" function about not changing the green point's SV at the exact position of the red point.Improved undo - redo function.Improved visuals.Added "Remove duplicate green and red points" function.Added "Copy tags and source to another files" function.Added multiple changes function to changing BPMs and offsets for mapsets.Removed uneccessary visuals.
Update 7
Blocked a button when a file is not selected.Corrected functions that includes multiple files selection.Fixed a problem on "Remove selected inherited points" function.
Update 8
Added a function which detects Ctrl + S keystroke while the map is open on osu! editor.Corrected undo-redo function.
Update 9
Fixed a problem on equalizing SV function.The program was immediately failing when a map has decimal offset timing points, so instead of making it that way, now the program blocks you to take an action and shows where the errors are. After fix from the file and refresh, it can be used.Added filtering with 3 buttons that you can filter the timing points as red only, green only and all.
Update 10
On changing BPM and offsets functions, added multiple-file change support and bookmark shifting.Added a metadata window and extended the functionality to title, titleunicode, artist, artistunicode, bookmarks, source and tags.
Update 11
Changed the button look, merged the functions into a drop down list.Insert timing function is added, where you will be able to replace a map's timing into another.Added re-opening the window check box to "Add inherited points to change SV smoothly" function.Added a function that removes unnecessary inherited points.
Update 12
Added "Prepare the map to hitsounding" function.Fixed a bug on "Add inherited points to change SV smoothly.
Update 13
Fixed issues regarding to applying SV on notes that are unsnapped (should also resolve attempts to put SV changes where the timing points are slightly off, such as omit barline resets etc...) This should also allow adding changes to notes that are snapped to 1/5
1/7, 1/9 etc... the snapping doesn't matter at this point.Fixed the tool adding duplicate green points where the SV is already equalFixed occasional crashes when "Reopen the window with same values" checkbox is checked.Added a "SV Offset" option that places the SV changes slightly off from the notes to prevent rounding errors. The value is adjustable, default is -3. Positive values have a question box, but is allowed to use if you know what you're doing. The program is also smart to not apply this operation if any of the notes in between are on a red point.Ditched the installer, now you just need to extract the files and run the program.
Update 14
Fixed a bug where the contents for the added SVs could be printed without a sorting order, causing the tool to incorrectly load beatmaps (caused after Update 13)Added a warning to the tool where it has SV changes on the notes already if attempted to update the current section SV values, with 3 options (yes, no, cancel which are explained in the popup)Fixed localization issues across the program entirely.
Update 15
Fixed a bug regarding to indexing of the file has been fixed while placing smooth SVsCrash fix on smooth SV changer where duplicate points exist inside the sectionBug fix related to a weird SV change result on one of the maps where the SV was above 80000x or something else, while placing SVs on a section that contained BPM changes
Fixed a minor issue on adding SV functionAdded undo-redo function (has 10 size only, can be used by common shortcuts, more info in the Options window.)Added Turkish Language (French is pending)
Forced comma as the decimal point seperator (apparently it caused issues on different cultures)Added "Between time" function to "Slider Velocity Changer" window.
Fixed a small bug about the count part of the "Slider Velocity Changer".Fixed the bug on "Equalize the SV for all timing points".Improved visuals, made them flexible on language changes.
Apparently a bug happened on between time function on "Slider Velocity Changer" about not adding a point to last note, which is fixed now.On "Slider Velocity Changer" window, fixed the bug about wrong input.The main window now shows whether it's a kiai point or not.
On "Slider Velocity Changer", fixed a small bug about not selecting the last note when used.
Fixed an error on "Equalize SV on all timing points" function about not changing the green point's SV at the exact position of the red point.Improved undo - redo function.Improved visuals.Added "Remove duplicate green and red points" function.Added "Copy tags and source to another files" function.Added multiple changes function to changing BPMs and offsets for mapsets.Removed uneccessary visuals.
Blocked a button when a file is not selected.Corrected functions that includes multiple files selection.Fixed a problem on "Remove selected inherited points" function.
Added a function which detects Ctrl + S keystroke while the map is open on osu! editor.Corrected undo-redo function.
Fixed a problem on equalizing SV function.The program was immediately failing when a map has decimal offset timing points, so instead of making it that way, now the program blocks you to take an action and shows where the errors are. After fix from the file and refresh, it can be used.Added filtering with 3 buttons that you can filter the timing points as red only, green only and all.
On changing BPM and offsets functions, added multiple-file change support and bookmark shifting.Added a metadata window and extended the functionality to title, titleunicode, artist, artistunicode, bookmarks, source and tags.
Changed the button look, merged the functions into a drop down list.Insert timing function is added, where you will be able to replace a map's timing into another.Added re-opening the window check box to "Add inherited points to change SV smoothly" function.Added a function that removes unnecessary inherited points.
Added "Prepare the map to hitsounding" function.Fixed a bug on "Add inherited points to change SV smoothly.
Fixed issues regarding to applying SV on notes that are unsnapped (should also resolve attempts to put SV changes where the timing points are slightly off, such as omit barline resets etc...) This should also allow adding changes to notes that are snapped to 1/5
1/7, 1/9 etc... the snapping doesn't matter at this point.Fixed the tool adding duplicate green points where the SV is already equalFixed occasional crashes when "Reopen the window with same values" checkbox is checked.Added a "SV Offset" option that places the SV changes slightly off from the notes to prevent rounding errors. The value is adjustable, default is -3. Positive values have a question box, but is allowed to use if you know what you're doing. The program is also smart to not apply this operation if any of the notes in between are on a red point.Ditched the installer, now you just need to extract the files and run the program.
Fixed a bug where the contents for the added SVs could be printed without a sorting order, causing the tool to incorrectly load beatmaps (caused after Update 13)Added a warning to the tool where it has SV changes on the notes already if attempted to update the current section SV values, with 3 options (yes, no, cancel which are explained in the popup)Fixed localization issues across the program entirely.
Fixed a bug regarding to indexing of the file has been fixed while placing smooth SVsCrash fix on smooth SV changer where duplicate points exist inside the sectionBug fix related to a weird SV change result on one of the maps where the SV was above 80000x or something else, while placing SVs on a section that contained BPM changes
What I'm planning to do:
- Writing an MSN integration for finding maps easily (if I can)