Professional Documents
Culture Documents
BMS Creation Notes
BMS Creation Notes
BMS Creation Notes
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
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.
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)
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)
woslicerII
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.
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.
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.