---

UltraStar.de - Karaoke



Guide to Creating Songs Yourself and Altering Them

1. The TXT File

Header

The Header (the beginning) of a TXT file MUST contain the following fields:

#TITLE:
#ARTIST:
#MP3:
#BPM:
#GAP:

Exemplary minimal Header:

#TITLE:Superstar (demo)
#ARTIST:Jamelia
#MP3:Jamelia - Superstar (Demo).mp3
#BPM:110
#GAP:50

Additionally, it MAY contain the following fields:

#RELATIVE:yes
#VIDEO:
#VIDEOGAP:
#RESOLUTION:
#START:

Exemplary expanded Header:

#TITLE:Superstar (demo)
#ARTIST:Jamelia
#MP3:Jamelia - Superstar (Demo).mp3
#BPM:110
#GAP:50
#RELATIVE:yes
#VIDEO:Jamelia - Superstar (Demo).mpg
#VIDEOGAP:10
#RESOLUTION:80

Meaning of the fields

#TITLE:
The song title. It will be shown in the song list, so in this example you cannot see that this song is sung by Jamelia.

#ARTIST:
The interpreter of the song.

#MP3:
The name of the mp3 file.

#BPM:
Speed of the song in beats per minute. It usually means the number of quarter notes or stressed beats per minute.

#GAP:
Commencement of the text after the song has been started in milliseconds.
You can calculate when the text actually begins with the following formula:

start time = first time stamp / BPM / 4 * 60 seconds + GAP.

In this example:
129 / 110 / 4 * 60 sec + 50 msec = 17.59 sec + 0.005 sec = 17.595 sec

If the time stamps are relative, the formula simply is:
start time = GAP

#RELATIVE:
This shows whether the time stamps are set back to 0 after each line or not. "Yes" means they ARE set back to 0. If this line is missing in the Header, the time stamps are automatically interpreted to be absolute. Relative time stamps considerably simplify the editing of a TXT file because when you want to add a break you only need to change the time stamps of the current line (when you have absolute time stamps you have to change all time stamps in the file.) If you want to change already existing time stamps from absolute to relative, you have to change ALL time stamps which is a lot of work. But maybe there will be a tool for doing this in the near future, who knows...

#VIDEO:
Name of the video file. Only MPEG-1 files are compatible at the moment. By the way: you only see the video itself and cannot hear the sound.

#VIDEOGAP:
The same as GAP for the mp3 file. But this time for the video of course.

#RESOLUTION:
I do not know about this one yet. But I would be happy if somebody told me :-)

#START:
Here you determine at which second UltraStar shall begin to play the song. This is especially useful when you are working on a song and want to listen to the changes you have made. Then you do not need to listen to the whole song from the beginning to the end.
By the way, with this feature you can skip a long intro.

Information on Sound and Text

Below the Header you will find the real information on sound and text. Depending on the time stamps (whether they are absolute or relative,) it looks a little different (see #RELATIVE):

Absolute Time Stamps (#RELATIVE:no):
My example is the TXT file from the UltraStar package.

: 129 2 15 Peop
: 131 1 15 le
: 132 3 15 al
: 135 1 15 ways
: 137 1 13 talk
: 139 1 15 a
: 141 2 10 bout
- 152
: 161 2 15 All
: 163 1 15 the
: 164 2 15 things
: 167 1 15 they're

The first value means the time stamp which indicates when the tone begins which is to be sung. The second value indicates the length of this tone in beats. If the following tone does not begin right after the previous one, you have breaks. In our example: there is a break lasting for 1 beat after "always", "talk", "a" and "things". The third value indicates the pitch of the tone (0 = C1.) After that you see the syllable which belongs to the tone. UltraStar determines if the following syllable still belongs to one word by blanks: if there is NO blank after the syllable, the next syllable still belongs to the word; if there is a blank after the syllable, the next syllable will be classified as the beginning of a new word.

The line
- 152
indicates that everything following it shall be shown in a new line on the screen. It can also look like this:
- 152 153
Here, the first value indicates the time when the previous line shall disappear from the screen and the second value indicates when the following line shall appear.

Now the Same Example with Relative Time Stamps (#RELATIVE:yes and #GAP:17595):

: 0 2 15 Peop
: 2 1 15 le
: 3 3 15 al
: 6 1 15 ways
: 8 1 13 talk
: 10 1 15 a
: 12 2 10 bout
- 23
: 9 2 15 All
: 11 1 15 the
: 12 2 15 things
: 15 1 15 they're

As you see, only the time stamps change.

To indicate the end of a TXT file, you need a line which only contains an "E".

Another remark: I had the impression that the text was displayed too late. I think the text should rather begin after 17.0 seconds.

Questions and Comments

Feel free to contact us.