CREATING SONG PACKS FOR BEAT2X
by miq01

Index
  1. Contents of the pack folder
  2. Creating songlist.bxs
  3. Creating the events file for each song
  4. How to detect milliseconds
  5. Pack installation
  6. Pack distribution

UP

1. Contents of the pack folder

The pack contents must be located in a folder called with the name of the pack. This folder must contain:

For example, if we create a pack called ExamplePack with two songs called song 1 and song 2, the pack folder must be named ExamplePack and contain these files:

UP

2. Creating songlist.bxs

The text file songlist.bxs (with exactly this name and in lower case) contains the name of all the pack songs and the sequence of execution (first song<->first level, second song<->second level, and so on). In ExamplePack, if we want the game to start at song 2, the contents will be:

song 2
song 1


At the end of the file there must be a line feed, and the name of the song must match the name of the ogg file but with no extension.

UP

3. Creating the events file for each song

The text file containing the song events (button presses) must have the same name of the ogg file, but with bxe extension.

In this file there is one event per line, and in one line there must be the button the player should press and its millisecond (counting from the start of the song). For example, if we want the player to press A (left arrow) at 2375ms, and B (right arrow) at 2780ms, we'll write:

A 2375
B 2780


But what if we want to use a pattern of button presses inside a song? Let's say that, for example, our song has a 4 by 4 beat and that every time the bassdrum plays (300ms between each bassdrum sound) we want the user to press a button (so a total of 4 button presses). Besides, we want that sequence to be repeated 4 times. We could write something like this:

X 1740
Y 2040
A 2340
B 2640

X 2940
Y 3240
A 3540
B 3840

X 4140
Y 4440
A 4740
B 5040

X 5340
Y 5640
A 5940
B 6240

...

 

As you'll notice, it would be quite tedious to look for each millisecond for all the 16 bassdrum sounds. To make things easier, we can use patterns. Let's see an example of how they work:

def 1 BASSDRUM 4x4
X 1740
Y 2040
A 2340
B 2640

end

use 1 2940

use 1 4140

use 1 5340

...

 

In this example, we first define a pattern by writting a header with this syntax:

def <PATTERN_ID> [<PATTERN_NAME>]

where PATTERN_ID is a unique number that identifies the pattern being defined, and PATTERN_NAME is a string of characters. PATTERN_NAME is not mandatory, but PATTERN_ID is. Since it is unique, next patterns must have different ids.

After the header, we must add the button presses as explained before. And after that, there must be the word end.

It's important to notice that after defining a pattern, it will be processed as well. For example, in the previous example, aside from defining the bassdrum pattern we are also telling the game to expect the player to press X at 1740, Y at 2040, A at 2340 y B at 2640.

In order to use a pattern after defining it (don't try to do it before, or try it and expect weird things to happen), we must use the following syntax:

use <PATTERN_ID> <MILLISECOND>

In the previous example, use 1 2940 tells the game to reuse pattern number 1 starting at millisecond 2940. After this, the game will expect this sequence of button presses: X at 2940, Y at 3240, A at 3540 and B at 3840.

Using patterns is not restricted to 4x4 beats. One could use it for repeating song verses of choruses, or any part of the song that repeats during time.

UP

4. How to detect milliseconds

As there is no editor for Beat2X at this moment, an audio editor must be used. I'm working with Sound Forge for Windows, but it is also possible to do it with Audacity, which is open source and available for Linux, OS X and Windows. It's a bit tedious but the use of patterns considerably reduces the amount of work to be done.

UP

5. Pack installation

Once the pack is finished, the folder containing it must be copied inside Beat2X's packs folder. After running the game it will be detected automatically, its high-scores table will be initialised and it will be available from the "Choose Songpack" menu.

UP

6. Pack distribution

Before distributing a pack, its folder must be compressed, so that anyone wanting to use it just have to uncompress it inside Beat2X's packs folder.

UP