BMS Creation Notes

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 18

BMS Creation Notes (for bmson)

You can also see this document in video form by clicking here

Currently we cover:
Compatibility and Flexibility
Common Rules in BMS Events
Creating Keysounds
woslicerII
What it is used for
How it works
woslicerIII
What it is used for
How it works
BMHelper
What it is used for
How it works
iBMSC
Setting up uBMPlay (and PMSee-V)
Changing measure subdivisions
Beat section
Expansion field

Viewers:
uBMPlay - http://ucn.tokonats.net/software/ubmplay/
PMSee-V - http://sakukoba.ninja-x.jp/ponila/

Editors:
BMSE - http://ucn.tokonats.net/software/bmse/
iBMSC - http://www.cs.mcgill.ca/~ryang6/iBMSC/

Misc.:
woslicer - http://cerebralmuddystream.nekokan.dyndns.info/
woslicerII bugfix version - https://twitter.com/wosderge/status/246852579550699522
Mid2BMS - http://mid2bms.web.fc2.com/
BMHelper - http://sky.geocities.jp/exclusion_bms/bmhelper.html
BMHelper (English translation) - http://vsrg.club/forum/showthread.php?tid=322

Document for understanding the BMS format, by hitkey

Here and here are documents about BGA encoding written by .RED. (Japanese)
Compatibility and Flexibility:
● Sound files must be under 1 minute to register on LR2IR.
● The BMS format supports a max limit of 1295 keysounds.
● Any .txt file included in the folder can be viewed in LR2.
● BGAs are usually in MPEG-1, or they consist of BMP images. AVI is also
functional but usually has issues, and filesize is very large. WMV is also
functional.

Common Rules in BMS Events:


● “BMS must be playable in LR2”
● “BMS must be keysounded”
● “Only unreleased BMS allowed”
○ Song can be released before the BMS, just not the actual BMS file/archive
● “Must contain at least one SP Chart (5key or 7key)”
○ Some BMS events are themed and only do charts of a specific kind (i.e. 9keys only)

Creating Keysounds
This guide should be applicable to all DAWs, but for the examples, I’m using FL Studio 10.

First things first: Decide what music will stay in background and what will stay in
foreground. To do this, you’ll want to disable the channels/tracks in your DAW with the
synths and instruments you’d want to be playable, and keep the pads and other
“unplayable” sounds turned on, then you’d want to render the song in sections
shorter than 60 seconds to avoid the LR2IR filter.
For drums, percussion and other sounds that aren’t modified a lot be it in pitch, filters or
other effects, you’d want to render them directly from the DAW. Usually you want to
render them as 16 bit in wave, or as ogg-vorbis (192kbps or below)

If your drums/instruments/synths are for instance being modified with an automated


cutoff filter, then render the sequence where the filtering happens and slice the
sequence properly in woslicer. (You can use BMHelper to do all the slicing for you.
Details in the BMHelper section.)

Using tools to help you will ultimately speed up the entire process of creating
keysounds, so make sure to learn how to use them!

Now for creating keysounds for the rest of the instruments is a bit trickier.
You want to open a score of any of the playable synths/instruments, and save the
score(s) as a MIDI file/MIDI files.
Now you open your MIDI files with BMHelper to separate the notes based on length,
velocity and pitch, then open the new MIDI file in the same instrument.
Now you render the entire score, and you slice it with woslicer! (or continue with the
BMHelper+woslicerII route)

That really concludes how to create keysounds for BMS files!

woslicerII

What it is used for:


➔ Slicing wave files (either wav or ogg) snapped to BPM and step divisions. You
navigate the software by using the keyboard. It also shows the waveform of the
file you’re cutting, which is very helpful. The yellow line denotes where in the
waveform you are listening from.
How it works:
➔ Open a wave/ogg file you want to slice by dragging it into the window
➢ Previews do not work with 32 bit float wave files.
➔ [Z] places down slice points
➔ [C] clears all the slice points
➔ [V] adds BMSE clipboard object data to your clipboard, this way you can paste
the timing directly into your editor.
➔ [B] pastes BMSE clipboard object data as slice points.
➔ [T] saves a .wos file in the same location as the wav. These can be opened by
woslicerII again for further progress.
➔ [Y] opens the .wos file if it can find one in the same location as the file you’re
slicing.
➔ [M] exports your sliced audio files.
➔ [P] previews the slice point you’re currently on, and jumps to the next one.
➔ [Enter] previews the point you’re currently on and doesn’t skip to the next point.
➔ [Ctrl]+[X] cuts the highlighted sequence (red highlight) and stores it as BMSE
clipboard object data.
➔ [Ctrl]+[C] copies the highlighted sequence as BMSE clipboard object data.
➔ [Ctrl]+[V] pastes BMSE clipboard object data in the highlighted sequence.
➔ [1]~[4] changes BPM. [1][2] changes 1 at a time and [3][4] changes 0.01 at a time
➔ [5][6] changes sound bleeding (on the tail of the sound)
➔ [7][8] changes visual offset
➔ [0] lets you turn on wavFF mode (base16), keep it OFF unless you know what
you are doing.
➔ [Q][W] changes the grid size.
➔ [A][S] sets which sound you’re starting with in hexadecimal values, this is used
for BMSE Clipboard Object Data so that you can correct which value the #WAV
is.
➔ [E][R] is preview volume. You probably want to keep it as 0 which is しない.
woslicerIII
Don’t use this if you like the capabilities of BMHelper.

What it is used for:


➔ Slicing wave files (either wav or ogg) snapped to BPM and step divisions.

How it works:
➔ It works the same way as woslicerII but with cursor input rather than keyboard..
Open a wave file you want to slice, type in the correct BPM for this pattern, adjust
if you want to add an offset or audio amplification, then divide the sound file into
patterns of you choice and choose to export all files.
➔ This version of woslicer is worse than woslicerII due to it generating clicks as the
beginning of each sliced sounds, so I’d recommend using woslicerII.

BMHelper
What it is used for:
➔ Reading MIDI scores, then modifying that score so that each note are separated,
ready to be loaded back into the DAW, rendered as sound file and sliced using
i.e. woslicer.
➔ In case you don’t understand Japanese, the English version is recommended.

How it works:
➔ Open a MIDI score with the software.
➔ Click the button on the left side in the middle.
➔ You will be presented with a new window, this is where you input your settings for
how you want the note separation to be like.

➔ Here you can fix interval gap, which order everything should be sorted in,
minimum variances in length and velocity. By just leaving the default settings on,
it will sort each note after length, pitch and velocity, and the result will show up in
the bottom window.
➔ If your stem contains a lot of automation so that the same two notes don’t sound
the same (a filter sweep or something), a better idea would be to check the
“Leave MIDI-sequence as is” option. This simply means BMHelper will not
attempt to consolidate all of the same notes into one sample, and return your
original midi. You can then proceed as usual.
➔ Now you click “MIDI file output”. You’d want to open the new file in your DAW
with the same synthesizer/instrument, render the new sequence, and slice it with
woslicerII.
➔ Press “Copy cutting position”. Then press B in woslicerII after loading your stem
audio and set the BPM and offset in woslicerII to automatically slice the stem.
Press M to export the slices into your BMS folder. Optional: convert to ogg at this
stage.
➔ Press the “Transpose” and set the keysound offset. (01 by default, goes up to
ZZ) You want the keysound offset to be the first free slot you have for keysounds.
➔ Press “Keysound Data” and copy this data into the bms file itself (via notepad)
and save before doing anything else. Then press “BMS -> Clipboard” to copy the
slice-sample data and paste into your BMS editor. Voila, your stem is now
completely exported and rearranged into your BMS. Repeat for all other stems.

iBMSC
BMSE can be tricky to get up and running. iBMSC is, straightforward, and the recommended
way to edit BMS files.
When first opening it up you’ll be greeted with this screen.

At the right you can see the Header section. The only obligatory information there is
BPM - the most accurate way to call this would be “4ths per minute” but you probably
want to fill in the title, artist and genre anyway.

#PLAYER is to change between SP, DP or Couple Play (which is also DP)


#RANK is the judgerank. The standard is 3 (EASY). Depending on the BMS player, the
timing is different for each rank, though some players ignore this tag.
#LEVEL (Play Level) sets the number displayed in song select (such as 12)
The #WAV section at the right should be filled with the keysounds you need. Keysounds
have to be located in the same folder as the BMS file. After that you can add them
(synchronized in the correct order in relation to the song you are charting) in the B* field.
The B* field are for notes played in the background. If you want to make them playable,
you add them in the A* field.

The WaveForm tab lets you add a sound file and iBMSC will display the waveform of
the sound. This tool is helpful for knowing how long a sound lasts when creating
Charge Notes. (aka Long Notes)
Setting up uBMPlay (and PMSee-V)
uBMplay can be tricky to get going - fortunately someone already did most of the hard work.
First of all, get this package. https://dl.dropboxusercontent.com/u/3740759/ubmplay_fix.zip
You’ll see a bunch of files. Run ubmplay_fix.bat as administrator.

Type 1 or 2 accordingly. uBMplay should work from that point on.

If it still doesn’t, run these commands from the .bat file on a command prompt as an
administrator, from the directory these files are located.
32 bits windows:
copy comdlg32.ocx c:\windows\system32\ /y
copy dx7vb.dll c:\windows\system32\ /y
copy dx8vb.dll c:\windows\system32\ /y
copy MSCOMCTL.ocx c:\windows\system32\ /y

regsvr32 c:\windows\system32\comdlg32.ocx /s
regsvr32 c:\windows\system32\dx7vb.dll /s
regsvr32 c:\windows\system32\dx8vb.dll /s
regsvr32 c:\windows\system32\MSCOMCTL.ocx /s

64 bits windows:
copy comdlg32.ocx c:\windows\syswow64\ /y
copy dx7vb.dll c:\windows\syswow64\ /y
copy dx8vb.dll c:\windows\syswow64\ /y
copy MSCOMCTL.ocx c:\windows\syswow64\ /y

regsvr32 c:\windows\syswow64\comdlg32.ocx /s
regsvr32 c:\windows\syswow64\dx7vb.dll /s
regsvr32 c:\windows\syswow64\dx8vb.dll /s
regsvr32 c:\windows\syswow64\MSCOMCTL.ocx /s

Once this is done, you copy the uBMplay files on the folder where iBMSC is located. And it
should be already set up for you.
Changing measure subdivisions
If you look at the right, you’ll see a subsection called “Grid”

.
The slot where the 24 goes is how many times you will subdivide this measure - basically the
notes’ snap. The number on the right (The 8 on this example) is where the major guide
markings within a measure go - it’s visual aid. The number below, the 4,75 indicates how much
to stretch the editor vertically. The 1,00 indicates how much to stretch the editor’s field
horizontally.

Beat section
The beat section is absolutely essential if you got meters that are not 4/4 or any derivations of it.
It allows you to change the length of a measure by multiplying its default length (four 1/4th
beats)

The numbers are formatted like so: Measure: Multiplier ( Numerator / Denominator )
It means the measure has a length multiplier that translates to a meter of Numerator /
Denominator. You can use it for presentational purposes - adjusting a measure’s length
does not move the notes’ location on the timeline.
To actually change the meter, click one of the measures from the list, then set the
numerator and denominator from the first row and click apply, or if you know exactly
what you’re doing, click the second row and set the multiplier manually.

Note: iBMSC will output these with commas instead of periods, so LR2 will slow down
the BPM rather than shorten the bar lengths, because of this, you need to open the
BMS file with something like Notepad, and replace all commas with periods. Do this
AFTER you have finished charting or else iBMSC will incorrectly read the file when you
reopen it. Notepad is your best choice as it already has a function to find and replace.

Expansion field
On the right, just as any other section you’ll see the expansion field. This area is for extended
BMS commands; that may or not be specific to a player. On iBMSC, usually #BMP commands
fall under here, as well as the events themselves. If you’d like to add a video BGA to your chart,
then type #BMP01 name.xxx in the expansion field, where name.xxx is the name of the file
you’d like to use as a BGA. Then you’ll have to find the sound in #WAV marked 01, which would
be at the top of the list, and place it in the BGA layer at the start of the chart.

This is the only way to add a BGA with iBMSC. BMSE has native #BMP support which makes it
easier to add BGAs.

If you however want to use a series of BMP files as a BGA, you’ll have to write in each
individual image as #BMP01 image_xx.bmp, #BMP02 image_xx.bmp, etc.
The fastest way to add all of them is to open a new BMS file, add the images as #WAV, then
open the BMS file in i.e. Notepad and replace every instance of #WAV with #BMP. Then you
copy every #BMP and paste it into the Expansion field in iBMSC.

You’ll still have to locate the corresponding #WAV numbers and add them in the BGA layer with
the correct sequence.

One of the commands you could and should add in case the charter differs from the song author
is #MAKER.
This command has the following format: #MAKER name
Replace name with the name of the chart’s author. Modern players like raindrop, bemuse and
stepmania may recognize this command and display it properly!

Alternatively, a format usually used to describe a chart’s author is artist / obj: name
under the #ARTIST tag, which is directly editable on the header field.

Another command you can add, though not supported by LR2, is #PREVIEW.
This command allows you add a preview sound file, which is supported by more modern
players.
The way to add this command is: #PREVIEW name.xxx
You’ll replace name.xxx with the name of the sound file you want to use for preview, i.e.
preview.ogg.

You might also like