forum

Beatmap Help Tool (Last change at 22.11.2021 18:05 UTC)

posted
Total Posts
14
Topic Starter
frukoyurdakul
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.

  1. Select file: Obvious as it's name.
  2. 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:

  3. 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.
  4. 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.
  5. 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?
  6. 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.
  7. 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.
  8. 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.
  9. 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:

    1. 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.
    2. Reopen the window with the same values: If you check this mark, after you apply the SV changes the window will open again.
    3. Copy time: Just go to the editor and copy the starting time.
    4. Set first SV: Write the first SV value. Seperate the decimal point by comma.
    5. Set last SV: Write the last SV value. Seperate the decimal point by comma.
    6. 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.
    7. Copy last time: Appears when you click the first checkbox, and from the editor you can copy the last time.
    8. 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.
    9. 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.
    10. 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.
    Now, let's look deep to this Target BPM. For example: The note you're standing on is at 150 BPM. The last note is on 200 BPM. If you enter the values as 1-3, it will put a 1.00x timing point to the first one and 3.00x timing point to the last one, and it will also change the SVs of the notes between equally. If you don't put a value on it and the change contains variable BPM, the last note's SV will be equalized according to 150 BPM 3.00x SV, which will result 2,66x SV on 200 BPM. Because of that reason, it has multiple usages on variable BPM songs.
  10. 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:
    1. 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.
  11. 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.
  12. 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.
  13. 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.
  14. 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.
  15. 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.
  16. 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.
  17. 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.
  18. 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 UTC
Update 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



What I'm planning to do:

  1. Writing an MSN integration for finding maps easily (if I can)
That's pretty much it. Instead of keeping this to myself, I decided to make it public, and I hope you mappers out there find this program useful. Remember: This is not a finished program, it may contain some bugs like locking or failing something that I haven't catched yet, so please send me a PM with the reason and a photo of fail screen if you experience such thing. Also you can contact me for suggestions on how I should develop it or design the look of it, I will be very appreciated. Please give feedback, thanks in advance. Happy mapping!
Nifty
big like
Xinnoh
👍
AyeAries
Interesting concept. Good job for making this. 👍
Midnaait
Oh god you'll save us so much time
Topic Starter
frukoyurdakul

Midnaait wrote:

Oh god you'll save us so much time
It is my main purpose yeah :D
Surono
no more to do manually, really great work. <3 <3
Ideal
cool stuff, will be useful
Topic Starter
frukoyurdakul
Thanks man! Please let me know if you experience bugs or errors.
Midnaait
Hey it's me again, going to bring some feedback after 1 month of use lol

Bugs/problems I had so far

  1. If a map with a timing/inherited point that has decimal numbers as offset, it doesn't let you to do anything (I already told you about that some time ago lol)
  2. I think that's it :^)

Some suggestions/features for the future

  1. An option to copy source and tags from one diff and paste it into the rest? It's a pain to do that when you have a lot of diffs :^
  2. A button to remove unnecessary timing/inherited points (for example you have multiple green lines on the same frame in different places (happened to me a lot of times)
  3. Show 1 or 2 more decimals of the SV instead of rounding them to the nearest hundreth lol

Welp that's all I have to say, cool program ;)
Topic Starter
frukoyurdakul

Midnaait wrote:

Hey it's me again, going to bring some feedback after 1 month of use lol

Bugs/problems I had so far

  1. If a map with a timing/inherited point that has decimal numbers as offset, it doesn't let you to do anything (I already told you about that some time ago lol)
  2. I think that's it :^)

Some suggestions/features for the future

  1. An option to copy source and tags from one diff and paste it into the rest? It's a pain to do that when you have a lot of diffs :^
  2. A button to remove unnecessary timing/inherited points (for example you have multiple green lines on the same frame in different places (happened to me a lot of times)
  3. Show 1 or 2 more decimals of the SV instead of rounding them to the nearest hundreth lol

Welp that's all I have to say, cool program ;)
First of all, thanks! About the bug: It's actually a good thing that the program doesn't allow you to edit it, I haven't thought about it but it did it automatically :D I'm saying this because decimal offsets cause many problems on osu! itself too, so if you try to change anything on that section, even if you do the results won't be accurate, so either way it needs to be fixed on the beatmap itself, no one will notice a 0.5 ms shift don't worry lol

About the others: Those are nice ideas, I will add them soon.

Edit to this post: After more complaints about this issue, I chose to prevent any action from the program and instead warned the mappers that the map has decimal offsets, and not fail since it really wasn't my intention.
Remus
Wow, it looks very nice :o
Pozy
This is beautiful q.q
Servatory
as basic as I know, mania hitsound works as a sample rather than an independent hitsound like most modes (whereas you add soft-hitnormal or taiko-normal-hitnormal on STD/CTB and Taiko, in mania you just add the hitsound without renaming the file)

In mania, you shift+left click on notes to open the sample option and then you have the option to choose the hitsound, and set the hitsound volume on the note you clicked before. That's all the thing I know from mania, I'm not a programmer or such with programming skill. Sorry if this is the least I can tell you...
Please sign in to reply.

New reply