A guide to MajdataEdit/View

god help your soul



The very basics

  1. Getting started with Majdata
    a. Downloading the application
    • Enter this link and click on the zip file to download the application.
      Where to click for download
    • Then, extract the application into your folder of choice. Just make sure it's in an easy to find place because you'll be coming here a lot more often :)
      b. Launching the application
    • Inside of the zip file, you'll find "MajdataEdit.exe". You'll want to launch this.
      • If, by chance, doing this gives you an error, you can try launching the included .bat file. This should resolve most issues.
        Where to click to launch
    • Give it a moment, the program should launch shortly. If it asks you if you want to update, do so! Newer versions often include many, many bugfixes that you'll appreciate.
      What you should see once the app opens
    • Congrats! You now have the program downloaded and opened up. That is what it should look like upon your first launch.

The UI

Let's take a walk around the program and familiarise ourselves with the UI.

  1. MajdataView
  • Below you'll find a picture with an overview of the MajdataView UI.
    MajdataView UI
  • If you've set a background visual, then this image will show whenever you pause playback. Use it as a reference for which notes go where.
  • What the options do:
    • Toggle Fullscreen: Toggles fullscreen.
    • Change Window Size: Opens up a preset list of resolutions for you to pick from in order to change your window size. This does NOT mean that you aren't able to manually resize the window by dragging it out. You can still do so.
    • Chart metrics: A breakdown of what your chart contains, including the clear percentage for both FiNALE and DELUXE scoring.
    • Timestamp: The current time of your chart playback.
    • maimai Table of Sensors: Now this is important.
      • This is what you will be referring to when placing TOUCH notes. Slides will also follow along to these sensors, but you don't have to worry about that for now.
  1. MajdataEdit
  • Consider this your workbench. You'll be working over on this side most of the times.
  • First, you'll want to start a new file. What you'll need for that:
    • A folder to neatly organise your files. (trust me)
    • A music file named "track.mp3".
    • (optional) Other information about your song like Title, Artist, BPM, etc.

You'll want to ensure that the mp3 file has the following properties:

  • A constant bitrate of 128kbps -> 320kbps
  • Has a sample rate of 44100Hz
  • Once you do, click on File on the top left corner and click on New.
    Where File to New is
  • Locate the track.mp3, then select it.
    What the track.mp3 would look like
  • Your UI should then look like this:
    MajdataEdit, finally
  • Welcome to MajdataEdit, your new hell home.
  • Let's walk through the UI together.
    A very messy MajdataEdit UI breakdown
  • I know that's a lot of information to take in, so let's break it down one by one.
    • Timestamp + Linecount: Displays the current time of your chart and current selected line's number.
    • Difficulty type: Where you can select your chosen difficulty. Your selections are: EASY, BASIC, ADVANCED, EXPERT, MASTER, Re:MASTER, ORIGINAL.
    • Difficulty number: This is where you'll be putting in your difficulty number. Most follow maimai's difficulty number system, but realistically speaking you can put anything in here, even text. It will be displayed properly.
    • Offset: This is perhaps one of the most important aspects of rhythm game charting in general. This is important to line your music up correctly.
      • Negative numbers moves the chart forwards. Positive numbers moves the chart back.
      • (-) = EARLY / (+) = LATE
      • The unit for offset is Second.
    • Display options: This button is a shortcut to the Editor Settings. We'll get more into this later.
    • Playback options:
      • TextFollow: Makes it so that the text cursor follows along with the notes in your workspace.
      • Square icon: Automatically reset your play position to where your cursor previously was.
      • Play/Pause icon: Toggles between playback and pausing the chart.
    • Waveform: A visual representation of your audio. This can aid you in lining up beats. Also it just looks cool.
    • Your workspace: Simai is a text-based charting format, so you'll be typing everything, including your notes and timings.
    • Ribbon: There are several options here. I'll clarify what each one does.
      • File: Allows you to make a New file, Open a previous chart, or Save the currently open file. The Export Video option allows Majdata to automatically export your chart into an MP4 file, placed in the same folder that your track.mp3 is located.
      • Edit: Most of these options allow you to manipulate your chart in various ways.
        • Mirror L-R Selection: Mirrors your note selection (highlighted) in the x-axis. E.g. 1 becomes 8, 7 becomes 2, etc.
        • Mirror U-D Selection: Mirrors your note selection (highlighted) in the y-axis. E.g. 1 becomes 4, 7 becomes 6, etc.
        • 180° Mirror Selection: Mirrors your note selection (highlighted) by 180°. E.g. 1 becomes 5, 7 becomes 3, etc.
        • 45° Rotate Selection: Mirrors your note selection (highlighted) by 45° clockwise. E.g. 1 becomes 2, 7 becomes 8, etc.
        • 45° (CCW) Rotate Selection: Mirrors your note selection (highlighted) by 45° counter-clockwise. E.g. 1 becomes 8, 7 becomes 6, etc.
        • Map info: This is another submenu to help you input the metadata for your chart.
          • Title: The title of your song goes here.
          • Artist: The artist of your song goes here.
          • Designer: The chart designer goes here.
          • The image: This is the cover art for your chart. If you already have a file called bg.png/jpg then this will automatically be selected for you.
        • Find and replace: Basic find and replace. Find something, then replace it with another thing.
      • Setting: These options allow you to change how Majdata works according to your preferences.
        • Volume: Allows you to edit the volume of the various types of notes in your song.
        • Editor Settings: Allows you to edit the your preferences as to how MajdataView works. The "Display options" shortcut from earlier also leads you here.
          • Language: Chinese, English, Japanese
          • Rendering mode: Switches between Hardware (Using your GPU) and Software (Using CPU). Change this if you're encountering glitches or performance issues.
          • Chart Refresh Interval (ms): Don't bother with this option.
          • Bright: Changes how bright your background will be. The lower the value, the darker your background will be and vice versa.
          • Speed: How fast your note approaches the ring. This is equivalent to maimai's values, so just pick whatever you feel comfortable with.
          • Touch speed: Same concept as above, just with touch notes. This is also equivalent to maimai's values.
          • Display at center: Allows you to choose what information you want to be displayed at the centre of MajdataView upon playback.
            • Combo: Displays a combo count. (crazy i know)
            • Score (Classic): Displays a score count for FiNALE score evaluation.
            • Achievement (+) Classic: Displays an accuracy count (that goes up with every note) for FiNALE evaluation.
            • Achievement (-) Classic: Displays an accuracy count (that goes up with every BREAK note) for FiNALE evaluation.
            • Achievement (+) Deluxe: Displays an accuracy count (that goes up with every note) for DELUXE evaluation.
            • Achievement (-) 1 Deluxe: Displays an accuracy count (that goes up with every BREAK note) for DELUXE evaluation.
            • DX Score: Displays a score count for DX Score evaluation.
            • Normalized Score (+): Display a retrofitted score count (that goes up with every note) for FiNALE score evaluation. This is exclusive for Majdata and does not apply to maimai.
            • Normalized Score (+): Display a retrofitted score count (that goes up with every BREAK note) for FiNALE score evaluation. This is exclusive for Majdata and does not apply to maimai.
          • Realign Viewer: Resets the position of MajdataView to be placed to the left of MajdataEdit.
      • Tools: These are tools that can assist you in your charting process. There's only two, but hey, they exist if you need them.
        • BPM Tap: A tool that can help you figure out the BPM of a song by process of tapping along to the beat.
        • Map Impossible Notes Detection: This only works with charts without DX functions for now. Helps you detect whether your chart contains any impossible notes.
      • SimaiWiki: This is a shortcut to the 3simai wiki. Surely you won't need it if you're already reading this guide..? (I'm joking, it's a fantastic resource for you to refer to.)
      • GitHub: This is a shortcut to the program's GitHub page.
      • Check for Updates: Prompts the program to check for an update, and tells you if one is available.
        That's the end of the UI walkthrough. By now you should be able to find any settings you need in Majdata.

Making the chart

As we are going along explaining the concepts, we'll be building out a chart template to help you get an idea as to how you can begin charting.

  1. BPM and Beat divisors
    a. BPM
    • This will be the first step you'll want to do in the process of creating a chart. Here are a few tips to finding the tempo of a song:
      • Google it: If it's a decently popular song, you can easily look up the BPM info for the song. This can be from the artist telling you themselves, from another game like osu! or the wiki page for that song if it's from another game, etc.
      • ArrowVortex: Although this is a program designed to make Stepmania charts, it has a fantastic BPM detection tool. Look here for a guide on how to get the BPM from ArrowVortex.
      • BPM Tap: As a last resort, you can tap the BPM out yourselves using the BPM Tap tool in Majdata. This may be unreliable because it involves human error.
    • Once you have the BPM, you can type it into your Workspace as follows:
      (bpm value) || e.g: (150)
      
  • Let's say we have a song that is 150BPM. We'll start our template as follows:
    (150)
    

Note that for songs that have multiple BPM changes, you can just write down a new BPM value at any point in the chart.

b. Beat divisors

  • Often when you're charting a song, you will want to split one beat into many parts. This is where the "Beat divisors" come in handy.
    • The way to notate this is: {Divisor} where the divisor is the number of parts you want in a beat.
    • Usually, you'll want this number to be an even number, like {4} or {8}, but sometimes odd divisors are used in a song. You'll want to figure that out by yourself.
  • Let's say your song starts with a decently fast pace of {8}. Our template now looks like so:
    (150)
    {8}
    

This is also how you can figure out the Offset for a song.

  • Place a couple of notes down (it can be anything), and listen to the tapping sounds.
  • Adjust your offset until the tapping sounds line up with the beat of the song.
  1. Note notation
    For this section, we'll continue building out our template slowly.
  • maimai has several types of notes, and a few more in maimai DX.
    a. TAP notes
    • Format: N, ; N being the number for the corresponding button. Refer to the image in MajdataView for the button numbers.
    • Example: 1,2,3,4,

The comma

  • The comma is the symbol that you'll be typing the most often while charting.
  • Its main purpose is to confirm placement of notes.
  • For example: 1, would place a TAP note at position number 1. Without a comma, the note would not show on the chart.
  • The comma does not have to accompany a note. By placing a comma by itself, you create an empty space in the chart.
  • Let's say your song starts with a short empty space, followed with a spin. Your template should now look something like this:
    (150)
    {8},,,,1,2,3,4,5,6,7,8,
    

b. HOLD notes

  • Format: Nh[x:y], ; N being the number for the corresponding button, x being the beat divisor, y being the multiplier for the beat divisor.
  • Example: 6h[4:1], - This would display a HOLD note at 6, for a quarter note's length.
  • If you do not specify a timing for the HOLD note, it will display a TAP note that is [128:1], which will behave like a TAP note in gameplay, with visual and audio differences.
  • After the spin, your song continues with a HOLD note at button 2 for a half note's length. Your template should now look something like this:
    1
    2
    3
    (150)
    {8},,,,1,2,3,4,5,6,7,8,
    2h[2:1],
    

Note how the example above shows the hold at 2 to be on a different line. The lines actually do not matter, they are mostly only for organising your notations. It will keep the previous beat divisor and BPM that you have applied.
c. TOUCH notes

  • Format: AN(f), ; AN being a composite that makes up the name of the sensor you want the touch note to be at. Refer to the image in MajdataView for the sensor names. You can also append f to any TOUCH note to create a "firework" effect.
  • Example: A1,B2,Ch[4:1],D4,E5f, - The centre TOUCH note can be turned into a HOLD (this is exclusive to the centre sensor)
  • Let's say you want to add in a centre TOUCH HOLD note with a "firework" effect. Your template should now look like so:
    1
    2
    3
    (150)
    {8},,,,1,2,3,4,5,6,7,8,
    2h[2:1],Chf[4:1],
    

d. The various modifiers

  • You can append these modifiers into every note type except for TOUCH.
  • These modifiers can be used in conjunction with each other. They aren't mutually exclusive.
Modifier Example Applicable types
b - BREAK 1b,2b,3b, TAP, HOLD, SLIDE start, SLIDE end
x - EX (exclusive to DX) 1x,2x,3x, TAP, HOLD, SLIDE start
f - Hanabi A1f,A2f,A3f, TOUCH
  • Let's put this newfound knowledge into our chart template.
    1
    2
    3
    4
    (150)
    {8},,,,1,2,3,4,5,6,7,8,
    2h[2:1],Chf[4:1],
    1bx, 5b, 3xb, 1bxh[8:1], 8x,
    

e. SLIDE notes

  • Format: a-p[x:y](b) - a is the location of the start point, - being the slide type, p is the location fo the end point, [x:y] dictates the duration of the SLIDE, much like how HOLD works. You can also append b after the end point OR the duration to turn the SLIDE into a BREAK SLIDE.

Note that the start point of a SLIDE acts as a TAP note; meaning that it can have its own modifiers and will be evaluated as a TAP note.

  • Example: 1x-5b[8:1],
  • For a visualisation of these slide types (and a more detailed explanation as this topic is really complex), you can find them here.
Type/Shape Example Additional Notes
- - Straight line 8-4[8:1], You cannot set the end point as something that is adjacent with the start point.
^ - Auto-Arc 1^3[8:1], This will take the shortest path from your start point to your end point around the rim.
< and > - Arc left and Arc right 7<4[4:1],2>2[2:1], Goes from the start to end along the rim in the respective directions.
v - V-shaped 6v3[8:1], Start to center (straight) to end (straight).
s and z - S and Z-shaped 4s8[4:1],1z5[4:1], You cannot set the end point to anything other than the direct opposite of the start point.
p and q - CW and CCW 1p5[8:1],2q6[8:1], Curves around the centre.
pp and qq - CW and CCW (through centre) 8qq4[4:1],6pp1[4:1], Curves through the centre point.
V - Reflective 1V35[4:1], This one has a bit of a unique format. You have to include a Reflection point (the 3 in the example) for the slide to reflect off of and end at the desired point.
w - Fan/Wi-Fi 4w8[4:1] Similar to s and z, you cannot set the end point to anything other than the direct opposite of the start point.
  • You can chain these slides together by making the end point act as a new start point; The duration will be set at the last end point and will affect the length of the entire slide.
  • Example: 8-4-6^1[1:1]b,
  • There is no limit to how many points you can chain together.
  • Let's add some of these slides into our template.
    1
    2
    3
    4
    5
    (150)
    {8},,,,1,2,3,4,5,6,7,8,
    2h[2:1],Chf[4:1],
    1bx, 5b, 3xb, 1bxh[8:1], 8x,
    1-5-7-2-5-8[4:7],
    

To create 2 slides that start from the same point...

It is recommended to use the * notation. For example: 8-6[8:1]*-3[8:1],
The reason for doing this is that this will be evaluated as a single TAP note rather than two simultaneous TAP notes in Majdata and AstroDX.

f. BOTH/EACH notes

  • Format: N1/N2/N3/[...], ; To place a BOTH/EACH note, you just need to add a / in between your notes in any set of notes.
  • You can combine multiple note types together.
  • There is no limit (at least until you use every type of note in existence) to how many you can put.
  • Example: 8x/1b-5b[8:1],2x-5[8:1]b/3/E2,
  • Finally, let's put in some BOTH notes into our template.
    1
    2
    3
    4
    5
    6
    (150)
    {8},,,,1,2,3,4,5,6,7,8,
    2h[2:1],Chf[4:1],
    1bx, 5b, 3xb, 1bxh[8:1], 8x,
    1-5-7-2-5-8[4:7],
    {16} 1/5,2/6,3/7,4-8[8:1]/8-4[8:1],5/1,6/2,7/3,8b/4b,
    

g. Miscellaneous notations

Please note that...

This is by no means a comprehensive list of additional notations.
You should check out the official simai notation spec for a more comprehensive list.

  1. Comments:
  • Format: || Text
  • You can notate comments similar to how you would comment in coding.
  • Example: 1,2,3,4, || Everything after these two symbols will not be parsed by simai. The next line will be unaffected.
  1. Custom timing change for SLIDE only:
  • BPM based:
    • It's possible to change the BPM for one single SLIDE only and not have to deal with the mess that you'll make by changing the BPM of the entire chart.
    • Format: a-p[bpm#x:y], ; Pretty much similar to the normal SLIDE notation, but this time with the BPM value and the # symbol.
    • It is generally recommended to work with the BPM by multiplying and dividing the BPM to make sure it still lines up with the music, rather than inputting a custom value yourself. Divide by 2, multiply by 2, that sorta deal.
    • Example: 4w8[75#16:1],
  • Time based (seconds):
    • It's possible to change the duration of the slide by using a specified amount of time rather than basing it off of beats.
    • Format: a-p[timeUntilStart##timeUntilEnd],
    • This is... very jank. I would recommend to avoid notating your charts like this. Period. Almost everything you will need to do you will be able to by using the BPM method.
    • Example: 5bw1[1.2796208530805728##0.2132701421800931], ; Adapted from 躯樹の墓守 MASTER - You can quickly see how this can get really messy.
  • Please do note that these changes will also change the x:y timing, so please adapt accordingly.
  1. Pseudo BOTH/EACH notes
  • You know how there's this section in Kyu-kurarin where the notes PLAY like a BOTH, but they appear to be TAPs? There's an easy way to notate this with 3simai.
  • Format: N1`N2`N3, ; Same rules from BOTH notes apply.
  • This works just like a BOTH note. No differences aside from how the guide sound will sound and how they will look.
  • Example: 4hbx[32:1]`5hbx[32:1],
  1. Zero-length HOLD notes
  • Also in that Kyu-kurarin section up there and perhaps more clearly this section in c.s.q.n, you can see that there are HOLD notes that basically play like TAP notes.
  • Format: 4h,Ch, ; Yes, you literally just do not input an [x:y] duration. That's it.
  • Despite playing like TAPs, they will still be evaluated as HOLDs. As such, you will still technically lose double the amount of accuracy/points if you miss these notes in AstroDX.

Closing remarks

At this point, you should have a good understanding of how to start charting in Majdata and a basic grasp of the 3simai format. I hope that this has encapsulated most of what you need to get started. If you have any questions, you can send me a DM or ping me at @davidscann.


Credits

-myself obviously lol
-arcanumdelta for staying up until 4am watching subway surfers maimai gameplay and helping me finish this long overdue guide
-beerpsi for the incredibly detailed visualisation and guide that you should STILL check out
-celeca for making the 3simai format
-bbben for making MajdataEdit/View

made with love 💖


Last thing though, consider joining the AstroDX Discord server! We have a lively community who will be willing to guide you through the process of charting (especially me haha). This is also where I'll be the most active for the time being.
https://sht.moe/astrodx

Edit
Pub: 19 Sep 2023 19:55 UTC
Edit: 19 Jan 2024 07:54 UTC
Views: 6662