Created by AndrewFM

[ Program Download and Source ]
[ Discord Server ]


The VOEZ Song Editor is a chart creation program for the rhythm game VOEZ. Any custom songs you create with the program can then be exported and modded to be playable in both the Nintendo Switch and Android versions of the game.

You can see some of the cool stuff that people have created with this editor in the video gallery below:


  • Chart: Mee? Nah
    Song: RE:UNION -Duo Blade Against- (Ice vs. モリモリあつし)
  • Chart: .png
    Song: One Way Street (Siqlo)
  • Chart: Mee? Nah
    Song: Memory of Skyblue (Ujico*)
  • Chart: lixteR
    Song: Sakura Fubuki (Street)
  • Chart: AndrewFM
    Song: Bonetrousle (Smooth McGroove & Voia)
  • Chart: lixteR
    Song: ray (roop loves THB)
  • Chart: sit
    Song: Alexandrite (WAiKURO)
  • Chart: Mee? Nah
    Song: Xhroria (An + Feryquitous)
  • Chart: Mee? Nah
    Song: Heat Ring (James Landino)
  • Chart: sit
    Song: Sadistic Confusion (An)
  • Chart: Mee? Nah
    Song: Bring the Light (Night Keepers)
  • Chart: Mee? Nah
    Song: Ever Free (Massive New Krew)
  • Chart: 注水的矿工
    Song: Aphasia (闫东炜)
  • Chart: Mee? Nah
    Song: R.I.P. (eicateve)
  • Chart: Mee? Nah
    Song: Summer Dream (shigump)
  • Chart: Mee? Nah
    Song: Lucky (Lucy, too)
  • Chart: sit
    Song: Nhelv (Silentroom)
  • Chart: Mee? Nah
    Song: Wicked Fate (M2U)
  • Chart: lixteR
    Song: Flower, snow and Drum'n'bass (kanone feat. Sennzai)

How to Use

Contents
.

Starting a new Project

In order to start a new project, start by navigating into the ActiveProject folder, and then creating a new subdirectory in there for your song. At minimum you need to place the following file into the folder:
Optionally, you can also add any of the following into your subdirectory:
Note that the length of your "song_" audio file will be the length of your project's song. If you want your song to be shortened, you need to edit the file with an audio editor.



Boot up the program and you should see the song you added in the list of projects. Each project is three beatmaps in one... one for Easy difficulty, one for Hard, and one for Special. Select your song, then select the difficulty that you'd like to start building, and hit 'Edit' to enter the main editor interface.

.

General Interface and Tools




From left to right, the tools are:
  1. Play/Pause: Resume or pause playback of the song. While the song is paused, the interface enters edit mode. While the song is playing, edit mode is disabled.
    • Keyboard Shortcut: Spacebar
  2. Playback Time: Change the playback speed of the song to make it slower/faster. Useful for calibration and tweaks.
    • Keyboard Shortcuts:
    • 1 Key - 0.25x Playback Speed
    • 2 Key - 0.5x Playback Speed
    • 3 Key - 1.0x Playback Speed
    • 4 Key - 2.0x Playback Speed
  3. Editing Mode: Change which type of note is currently being placed, or change between note editing mode and track editing mode.
    • Keyboard Shortcuts:
    • Z Key - Place Click Notes
    • X Key - Place Slide Notes
    • C Key - Place Swipe Notes
    • V Key - Enter Track Editing Mode
  4. Grid Snapping: Change the grid snapping/time signature used in edit mode. This controls the increments at which notes are placed, and the increments at which the tracks are scrolled. Anything time related in the interface and edit mode is snapped to this grid.
    • Keyboard Shortcuts:
    • Shift + 1 Key: Turn off the Grid
    • Shift + 2 Key: 16 Beats per Measure
    • Shift + 3 Key: 12 Beats Per Measure
    • Shift + 4 Key: 8 Beats Per Measure
    • Shift + 5 Key: 6 Beats Per Measure
    • Shift + 6 Key: 4 Beats Per Measure
    • Shift + 7 Key: 3 Beats Per Measure
    • Shift + 8 Key: 2 Beats Per Measure
    • Shift + 9 Key: 1 Beat Per Measure
  5. Scroll Speed: Change the speed at which the notes scroll down along the tracks. This is a visual change only, it does not affect the timings of the song at all.
  6. Audio Assistance: Provides a few audio guide tools:
    • Metronome: When this is enabled, a click will be heard every time one beat elapses.
    • Hit Sounds: When this is enabled, a sound will play whenever a note on a track intersects with the play line.
    • Note Quantization: Colors the click notes different colors depending if they fall on-beat, on half-beat, on quarter-beat, etc.
  7. Beats Per Minute: Adjusts the BPM value for the song. If this value is not correct, then the time signature grid (and thus, the notes you place) will be out of sync with the beats in the song. Calibrating this value is the very first thing you should do before starting creating a beatmap for your song. Performing this calibration is explained in the next section.
  8. Save: Saves all of your edits to disk. Note that this will overwrite your previous save files every time. If you want to keep periodic backups, you'll need to manually backup the ActiveProjects folder from time to time.
  9. Scrubber: This bar shows the current playback progress through the song, and allows you to navigate to any time in the song by clicking and dragging the scrubber.
    • Loop Point: You can right-click the scrubber to set a loop point at its current location. Once the loop point is placed, the scrubber can be jumped back to that position at any point by pressing the Enter key, or by pressing the Middle Mouse Button, or by right-clicking the Play button.
    • While the song is paused, you can use the Arrow Keys/WASD keys, or the Scroll Wheel on the mouse to frame advance/rewind the scrubber. Hold down the Shift key to advance the time at a faster rate.
  10. Timer: The current song time. The number on top is the time in seconds, the number on bottom in parentheses is the cumulative beat count.
.

Setting the BPM

Click on the BPM button to enable BPM editing mode. While active you can use the Scroll Wheel on the mouse, or the Arrow Keys/WASD Keys to edit the value of the BPM. Hold down the Shift key to scroll the value at a faster pace. (This is the standard control scheme for editing any numeric values in the editor)

While BPM editing mode is enabled, if you start playing the song, the screen will pulse at the current BPM rate that you have set. Adjust the BPM value until the pulsing rate is perfectly in sync with the music. The playback speed options and the metronome can be helpful with this calibration.

When done, click the BPM button again to exit BPM editing mode.

.

Track Editing Mode



Track Editing mode allows for the adding, deleting, and editing of tracks, which are the vertical columns that notes scroll over. Once you have tracks placed down, they need to be configured to adjust their duration, animations, etc... to begin editing the properties of a specific track, left click on it to bring up the track edit window:

The track window is divided up into three different tabs, each of which looks and behaves the same. These tabs are switched between using the three buttons at the top left of the window. Each tab is used to modify a different attribute about the track... from left to right, they are Position, Scale, and Color.

Use the left mouse button on the different fields in the window to select them from editing. Each tab has three main values:


All three of these value types can be animated over time. This is the purpose of the Keyframes section of this editing window. Each keyframe defines a new value to animate towards, the time the animation should start, the time the animation should end, and the transition style between the two values. Note that the value in a keyframe is the value the track will be at once it reaches the End time of the keyframe.

The buttons at the bottom of the window are used for working with the keyframes. From left to right, they are:
  1. Previous Page: Navigation for when you have multiple pages worth of keyframes.
  2. Next Page: Navigation for when you have multiple pages worth of keyframes.
  3. Add: Adds a new keyframe. By default it will add a new keyframe after the currently selected keyframe. You can hold the Shift key to instead add the new keyframe before the currently selected keyframe. Note that keyframe times cannot overlap, and they cannot exceed the spawn/despawn bounds of the track. The window will not allow you to add a keyframe if there is no empty time gap in the spot you're trying to add it, so adjust the start/end times of the keyframes to make room for a new one if you run into this problem.
  4. Delete: Deletes the selected keyframe.
  5. Copy: Copies ALL keyframes in this tab to the program's clipboard.
  6. Paste: Pastes the list of copied keyframes. This will not append the keyframes to the list, it will overwrite the whole list with the pasted contents. Also note that each tab has its own clipboard, so if for example, you copy keyframes from the Position tab, you can only paste in into another Position tab.
  7. Mirror: This button only exists for the Positions tab. Clicking it will mirror the track's position and mirror all of its keyframes' positions so the track is on the opposite side of the screen. You can use this option to help make symmetric animations. If you hold the Shift key, then only the selected keyframe will be mirrored, rather than all the keyframes.
Tip: You can hold the Ctrl key while ajdusting the track's start/end time to shift the time of the entire track, all its keyframes, and all attached notes simultaneously. Likewise, if you hold the Ctrl key when editing a keyframe's start/end time, it will simultaneously shift the time of all keyframes that come after it as well.

.

Note Editing Mode



Set the Editing Mode selection to any of the other options other than track, to enter note editing mode. This mode allows for the adding, deleting, and editing of notes onto any of the tracks you've placed down. To edit the attributes of a placed note, hover over it with the mouse, and left click it. The following window will open:


The three buttons on the top will change which type of note this is. The value fields below will change attributes about the note: .

Editing Song Info

After saving your song at least once, navigate back to your project's subdirectory on your harddrive, and there will be a new file called "info_song.json". Open this file up in a text editor to edit the information about your song:

{
  "info":{
    "version":"1.04",
    "name":"The Song Name",
    "author":"The Author",
    "bpm":155,
  }
  ,"level":{
    "easy":1,
    "hard":1,
    "extra":1
  }
}

.

Exporting to Android

In order to play your modded songs on Android, you must install VOEZ Remaster onto your device, which is a modded APK of VOEZ that is setup to be able to load project files off of your device's SD card.

Once you've downloaded and installed the APK, you will find another folder called "voezfanmade" packaged with the download. Place that folder into the top directory of your device's SD card. Inside the voezfanmade folder, you'll find another folder called "fanmadeSongs", which is where you'll be placing all of your custom songs made with the editor. For each of your projects, create a folder inside "fanmadeSongs" to contain the files for that project, and name it whatever you want. However, the folder name should only contain letters and numbers, should be all lowercase, with no spaces and no special characters. Also you'll be using this folder name below, so take note of it.

Populate this new project folder with your project files. It should contain all of the following files, named and formatted exactly as described: Since your music files are likely in wav/ogg format for use with VOEZ Song Editor, you can use a program like Audacity to convert them to mp3 for use with the game.

Additionally, in your project folder, you should create one more text file called "songconfig.txt". This is just another file with equivalent information as the "info_song.json" file, but just formatted differently. Example contents of this text file are below; just modify it with the relevant contents for your song:

id=583d38a5c5effc000d2365fc
name=Ascension to Heaven
bpm=200
author=xi
diff=6-11-16
version=Switch
You may need to configure the app settings in your device to allow VOEZ Remaster to have read permissions on your SD card, but other than that, you should be good to run the app and play your custom songs at this point!

.

Exporting to Nintendo Switch: What you will need

.

Setting up the Asset Bundler

Create a new 2D Unity project. In the Project window, add the following three folders to your project's Assets: Inside the Editor folder create a new C# Script called CreateAssetBundles. Its contents should be:

using UnityEditor;

public class CreateAssetBundles {
    [MenuItem("Assets/Build AssetBundles")]
    static void BuildAllAssetBundles()
    {         
        BuildPipeline.BuildAssetBundles("Assets/AssetBundles", BuildAssetBundleOptions.UncompressedAssetBundle, BuildTarget.StandaloneWindows);
    }
}

Inside the assetbundle folder, create another folder called songs.

That's it. This is a one-time setup, and you can reuse this Unity Project from now on for exporting any future tracks that you create.

.

Bundling a Track Mod

Create a new folder for your song inside of the assetbundle/songs folder. The name of this folder can be anything, though keep it all lowercase, no spaces, no special characters, just letters and numbers. Remember the name of the folder because you will need to reuse it several times later.

Populate this new folder with your project files. It should contain all of the following files, named and formatted exactly as described: Since your music files are likely in wav/ogg format for use with VOEZ Song Editor, you can use a program like Audacity to convert them to mp3 for use with the game.

For the image_blur file, change the import settings in the Inspector to match the following (otherwise the blurred image will look pixelated in-game):



For all other files, the import settings can be left as the defaults.

Once all of the project files are there, select all of them in the Project window, and at the bottom of the Inspector, you will see a dropdown called "AssetBundle". From that dropdown box, select New..., then name the new AssetBundle songs/XXXX, where XXXX is the same name as the folder you created for your project files.

Once everything is done succesfully, your setup should be looking something like this:



From the menu options at the top of the Unity Window, select "Assets > Build AssetBundles". Once this process finishes running, the bundle for your project files will be available in the AssetBundles/songs folder. The bundle file is the one that's named the same as the project folder you created. It won't have any file extension, so rename it to add the extention ".assetbundle" onto the file. Then open the file up in your hex editor:



You want to look for the part of the file that has the second occurance of the unity version number (5.5.0p1, highlighted in green in the image above), and find the value located two bytes after the version number (0x05, highlighted in red in the image above). Change that value from 05 to 26. Then save the file.

All done. Your project is bundled and ready to be put onto the Nintendo Switch.

.

Deploying the Track Mod

In your titles folder for LayeredFS on the microSD card for your Switch, create the following directory structure:

0100A7F002830000/romfs/Data/StreamingAssets/songs2.0

The 2.0 at the end of the folder name denotes the version number that your songs will be categorized under if you sort by version in the game's song menu. It helps to have all your custom songs in their own category so you can find them easily. You can change that number to something else, but just don't use one of the actual version numbers from the original game, otherwise you'll overwrite the entire song list for that version.

Inside that songs folder, place the .assetbundle file you bundled for your project. Additionally, in that folder you need to have a song_asset_list.json file. That is a listing of all the songs that will be listed under that version category. Click here to download an example song_asset_list.json file to use as your base.

Open the song_asset_list.json file in a text editor, and add your new song as an entry in the list. The song_asset_list.json file downloaded above has two placeholder entries in it, just to illustrate the format and structure of the file. You should remove/replace those with your song(s). Your entry should look like:

{
  "info": {
    "author": "Song Author",
    "bpm": 120,
    "id": "XXXX",
    "name": "Song Name"
  },
  "level": {
    "hard": 7,
    "easy": 1,
    "extra": 10
  }
}

The values to put here can be taken from the info.json file outputted by VOEZ Song Editor for your project. The only additional piece of information is the "id" field, which should be set to have the same name as your assetbundle.

That's it. Now start-up/restart VOEZ on your Switch with LayeredFS, and you should find your song in the songs list.

Tip: Install ftpd on your Switch, and use a FTP client like WinSCP or Filezilla on your computer. With those, you can transfer files to the MicroSD card on your Switch over Wi-Fi, instead of having to turn off the console and eject the card every time you want to add/modify the files.