How to create a song for UltraStar Deluxe


EDIT: I wrote an updated version on this subject, so check out the newer tutorial instead. Also, YASS now supports duet versions, so you don’t have to follow my roundabout approach anymore.

Ach ja, karaoke is fun. UltraStar Deluxe is a free program that allows you to engage in that fun, but while there is a sizeable database of songs available, not everything is. However, creating a new song for UltraStar Deluxe is relatively easy, though pretty time-consuming, so here is a guide to hopefully help some newcomers not make the same mistakes I did and save some time in the process.

Step 0: Programs

While, technically, everything can be done in UltraStar Deluxe itself and a simple text editor, it is not very user-friendly and better alternatives exist. To create the karaoke file and set all the meta data and lyrics, I recommend UltraStar Creator and Yass to fine-tune the timing and pitch of the lyrics.

Step 1: Setting up a new Song

Go into the directory where all your songs are located. By default, this is the “songs”-folder in the ultrastardx program files (You can set your own directory in the config.ini). Create a new folder named [Artist] - [Song Title]. This will be the folder where all the assets go into. You will at least need the .mp3 of the song you want to create, for example by downloading it from YouTube. Additionally, you can add a cover image and a background video/image.

For this tutorial, I will create the Song “Heart to Heart” by Nakajima Tomoko from the anime series Pretty Cure.

Creating a new song folder

Step 2: Creating the Karaoke File in UltraStar Creator

Open UltraStar Creator. First, you have to select the song you want to create the file for. Next, fill in all the meta data. If there is a cover or background video/image in the same directory, it will automatically fill them in, though they can still be changed later. The BPM should also have been recognized automatically.

Creating a new song folder

Paste the lyrics of the song into the large text field and correct them if necessary. Words are separated by a space and individual lines by a page break. You will now have to split individual syllables with a “+”.

For example: Maybe I am a pirate in disguise will become May+be I am a pi+rate in dis+guise. Listen closely to the singing to split the words correctly. Shorter words often consist of only a single syllable, so they don’t have to be split.

Splitting syllables

Once every syllable is split, it is time to time them. On the bottom left, click the Start icon and press the space bar every time you hear a new syllable. You can also hold the space bar for the duration of the syllable, though it is easier to simply tap it once. The current and next syllables are displayed on the bottom of the screen. If the song is too fast, you can reduce the playback speed with the slider above the play button. Try to be accurate, but also do not waste too much time on this, since we will re-time the lyrics anyway in the next step. When you are happy with your results, save the file.

Timing syllables

If you open the file with a text editor, it should begin with the metadata, followed by a single syllable/word per line in the format [Type] [Start] [Duration] [Pitch] [Lyric].

Step 3: Fixing the Timing in Yass

Open Yass. When starting Yass for the first time, it will ask you to set a path for a library. Simply enter the directory where all your songs are located. All your songs should be listed now. Search for the new song and click on the edit button (Note and pencil) in the top.

There are a few shortcuts, that will make editing in Yass easier:

  • Left/Right Arrow: Swap between syllables in line
  • Up/Down Arrow: Swap between lines
  • Ctrl: Select beginning of a syllable, can be moved with arrow keys
  • Alt: Select end of a syllable, can be moved with arrow keys
  • Shift: Selects entire syllable, can be moved with arrow keys
  • Ctrl + W: Toggle Ticks
  • Ctrl + U: Toggle Audio
  • Ctrl + B: Toggle Instrument
  • Ctrl + I: Toggle between playback speeds (100%, 50%, 33%, 25%)

Additionally, you can split a syllable by clicking at the top of the block. This will create another block with a ~, which denotes a repeated tone. To edit the lyrics, right-click into the text area at the top right. Before correcting the timing, we have to fix one error.

The first error to correct is the start of the first syllable. Change its starting position until it lines up perfectly with the audio. Then go into the errors (red box at the top), select “Non-zero first beat” and click correct at the bottom. This will set the correct offset (#GAP) for your lyrics in relation to the song. Skip this part, if your first syllable is already timed correctly. You can ignore all the other errors for now.

Non-zero first beat error

The timeline is split up into beats, which themselves are split into four smaller segments, which I call ticks. In most cases, a syllable is a multiple of four or two ticks long. I have yet to see a song where the start/length of a syllable was an uneven number of ticks or a syllable doesn’t start/end on or, two ticks off, a beat. Regularly play back the melody without the audio (Ctrl + U) to hear, if it sounds right from the ticks alone and adjust if necessary.

From here on out, one has to simply time all the syllables correctly. The timing you did in the UltraStar Creator should give you a good foundation to edit them. In my experience, it is easier to time them by reducing the playback speed to 50%. Since most songs have repeating parts, one can often copy the melody of entire segments to later parts.

Now we got onto the errors. The page errors are the easiest to fix, so we start here.

Page breaks

As long as there are no lyrics from different lines overlapping, you can simply click on “Correct All” and Yass automatically sets the page breaks timed and spaced out in-between the lines. If you have overlapping lines or want to adjust them yourself, you can simply drag the page breaks (thin grey dashed line) to the left or right on the editor timeline. Click at the top right on the “more pages” button to view two lines at the same time. The page breaks should be somewhere in-between.

“Short page breaks” are a result of not enough space (time) between two lines. Either shorten the last syllable, or combine the two lines into one. If neither is possible, you will simply have to live with it. Since it is more of a recommendation, than an actual error, it will be at most a bit surprising for the singer when the next line shows up so fast, but nothing fatal or game-breaking.

Next, we look at the “Connected notes”. This error occurs, if there is no space (time) between the end of a syllable and the start of the next word. “Correct” will shorten the syllable by one tick. I wouldn’t use the “Correct All”-button here and go through each syllable individually instead, since not every syllable needs to be corrected, especially if they are short and sung together directly after each other. For example, while “Why why why” has slight pauses between the “why"s when sung, “kimi ni” has not and the “ni” could practically belong the same word.

Connected notes

In this case, one can still argue to shorten the “mi” anyway, since it is four ticks long, but once a syllable is only two ticks long, I wouldn’t shorten them. In doubt, sing the line out loud and see, if there is a small pause between the two words or not. This will also vary depending on the language.

The last remaining error should be the “Uncommon golden bonus”. Yass calculates a range for how many notes should be “golden”, meaning special notes giving more points. It is up to the creator what notes should be golden, but I recommend long notes at the end of certain lines or certain parts of the lyrics that one wants to highlight. Select a syllable and press on the “Mark as golden”-button (Golden star) at the top to mark the syllable as golden. A gauge should appear in the bottom left indicating the amount of golden notes. Try to mark notes as golden, until you are somewhere in the yellow area, though again, this is only a recommendation.

Before going into the next step, this is as good a time as any to test your progress and verify, if the lyrics are timed correctly.

Step 4: Pitching

Pitching the song will be the most time-consuming part. Either drag the boxes up or down, or use the arrow keys while holding Ctrl. Toggle the instrument using Ctrl + B.

You can use a program like ultrastar-pitch to automate the pitch detection process. I also created a tool for automatically pitching the lyrics based on the estimate of a trained model, but the former seems to yield better results (My pride is in shambles). Try both if you want, though the results must be manually corrected either way.

Pitched notes

I am effectively tone-deaf, so there are not a lot of tips I can give out. I mostly change the pitch and play back the song until the the tone “goes under” in the singing or starts to sound similar. Use a pitch-detector like onlinemictest, so you can sing the song yourself and estimate the correct pitch. Also regularly play back the notes without the audio (Ctrl + U) and listen if it sound right or whether a single note is off.

Shout out to my friend correcting my wrong pitches. You are a hero, bro.

Step 5: Miscellaneous

Once you have pitched everything, you are essentially done. Sing the karaoke a few times to catch any errors left.

If the song contains a long intro or outro, you can add the #START and #END-Tags. #START is measured in seconds, so to jump 20.5 seconds into the song, add #START:20.5 above the #BPM-Tag. #END is measured in milliseconds (for some reason), so to end the song at 4 minutes and 15 seconds, add #END:255000.

Consider uploading your song to usdb.animux to expand the library for everyone else.

Creating a Duet

UltraStar Deluxe supports Duets, meaning two different sets of lyrics for multiple players. Fortunately, conversion to a duet is quite simple. Create a copy of the karaoke file and append [DUET] to the file name, for example Nakajima Tomoko - Heart to Heart [DUET]. This file can stay in the same directory as the original file. Open the new file in a text editor and change the #TITLE to also contain the [DUET] at the end.

Delete everything except the meta tags and add “P1” (Player 1), “P2” (Player 2) and “E” (Denotes file end) on separate lines. Now add the all the lines from the original file under their respective player:


While this will already work, the page breaks for the individual players are now off, so we will dive back into Yass. Upon reloading the library, Yass will now show the duet version with two microphones(?) and a “[DUET]” lable next to it. Editing the duet version will automatically create two new files in the song directory, ending on [P1] and [P2] respectively. Restart Yass and reload the library again. You can now edit the individual parts of a player. Edit the file for player 1 and correct all the page break errors. Repeat this step for Player 2.

As a side note: Not sure if it is a bug on my end, but Yass won’t let me edit the duet version anymore, if the [P1] and [P2] files are in the directory.

Open the duet version in a text editor again. Yass has reformated the content a bit (adding a player for every line), but it does not contain the new page breaks yet. Delete everything, but the meta tags again and add “P1”, “P2” and “E” like shown before. Now paste the lines from the [P1] file under P1 and the lines from [P2] under P2. It should look like the example above, now this time with the new page breaks:

Line1 with new page break
Line3 with new page break
Line2 with new page break
Line4 with new page break

Do not edit this file in Yass if you don’t want Yass to change the format again. You can keep the [P1] and [P2] files, if you want to only sing the respective parts of the song. Otherwise, just delete them, as the duet file contains all the data.

You can switch the players in UltraStar Deluxe by pressing the space bar while selecting the duet version.

Originally published on February 5, 2022. Last modified on April 9, 2024.

local_offer UltraStar
calendar_today 2022