BMS(Be-Music Source file)とは
BMSとは、
1998年にやねうらおとNBKによって考案された、MOD感覚で音楽制作や演奏が可能な
ファイルフォーマットです。当初は「BM98曲データ」とも呼ばれ、
音楽ゲーム『beatmania』のシミュレータ『BM98』用の譜面データとして開発されました。現在では、BMSは同様のシミュレータ(BMSプレイヤー)で利用される譜面データや、ゲームシステム全体を指す言葉として広く使われています。
2000年代中盤までは、BM98をベースとした様々なプレイヤーが開発され、「ネットユーザーのPCには何かしらのBMSプレイヤーが入っている」と言われるほどの一大ムーブメントを巻き起こしました。企業運営のコミュニティサイトでも同様のサービスが人気を博し、人気楽曲がP2Pネットワークを通じて拡散されることもありました。ブームは沈静化しましたが、現在でも新作BMS楽曲が制作されるなど、根強い人気を保っています。かつてのBMS作曲家の中には、プロに転向した人や著名なボーカロイドプロデューサーも多く存在します。
BMSの構成要素
広義のBMSは、主に「BMSファイル」「
WAVEファイルまたはMIDIファイル」「
ビットマップ画像ファイル」で構成されます。
BMSファイル: 譜面を定義するファイルで、曲データの核となるものです。テキスト形式で記述されており、曲のテンポ、音符の配置、使用する音源などを指定します。
WAVE/MIDIファイル: BGMやキーを押した時の
効果音(SE)に使用されます。
WAVEファイルは音声データ、MIDIファイルは楽器の演奏情報を記述します。
ビットマップ画像ファイル: 演奏中に流れるムービー(BGA)に使用されます。
BMSファイルの基本フォーマット
ここでは、やねうらおが作成した初代『BM98』におけるファイルフォーマットについて解説します。他のBMSプレイヤーでも、基本的に同様の形式が使用されています。
BMSファイルは、ヘッダ記述とオブジェクト記述から構成されます。
ヘッダ記述
ヘッダには、プレイ人数、曲名、初期BPM(テンポ)などの基本情報や、使用するWAVファイル、BMPファイルなどを定義します。ヘッダの記述は、`#KEY VALUE` という形式で行われます。
以下に、ヘッダ記述の例を示します。
PLAYER 1
GENRE Sample
TITLE Sample
ARTIST Sample
BPM 120
PLAYLEVEL 5
TOTAL 100
RANK 2
bmp00 miss.bmp
bmp01 1.bmp
wav01 1.wav
オブジェクト記述
オブジェクト記述には、譜面に関する詳細な記述が含まれます。どの音をどこに配置し、どの鍵盤で鳴らすかを定義します。オブジェクト記述の書式は、`#aaabb:cccccccc`(aaa:小節番号、bb:チャンネル、cc:オブジェクト配置)です。
以下に、簡単なオブジェクト記述の例を示します。
00111:01010101 // 第1小節の1キーに#WAV01を四分音符単位で配置
00211:0101010001010100 // 第2小節の1キーに#WAV01を8分3連+8分休符×2を配置
ヘッダの主な記述
`#PLAYER x`: プレイヤー数を定義します。1でシングルプレイ、2でカップルプレイ、3でダブルプレイを指定します(省略時は1)。
`#GENRE`: 曲のジャンルを定義します。
`#TITLE`: 曲のタイトルを定義します。
`#ARTIST`: 作曲者を定義します。
`#BPM`: BPM(テンポ)を定義します。指定がない場合は130になります。
`#MIDIFILE`: MIDIファイルをBGMとして使用する場合に指定します。
`#PLAYLEVEL x`: 難易度レベルを指定します。指定がない場合は3になります。
`#RANK x`: 判定ランクを指定します(0: very hard, 1: hard, 2: normal, 3: easy。省略時は3)。
`#VOL
WAV xxx`: 元の音量を100としたときの全体の音量を定義します。省略時は100です。
`#WAVxx yyyyyyyy.wav`: 音声ファイル(WAVEファイル)を指定します(xxは01からFFまでの番号)。
`#BMPxx yyyyyyyy.bmp`: 画像ファイルを指定します(256x256, 65536色のビットマップファイル。xxは00からFFまでの番号、00はミス時の画像)。
`#TOTAL xxx`: ゲージの増量設定を行います。省略時は200+オブジェクト数となります。
`#RANDOM x`: 分岐命令で、1からxまでの乱数を生成します。
`#if , #ENDIF`: 分岐の開始と終了を指定します。
`#ExtChr`: Extended Object機能を使用する際に指定します。
チャンネル
チャンネルは、オブジェクトがどの種類の音や動作に対応するかを指定します。
01: BGMとして再生するWAVEファイル。
02: 小節の短縮化。
03: BPM変更。
04: BGAの画像ファイル切り替え。
05: Extended Object。
06: Poor時のBGA。
11-17: 1P側の演奏オブジェクト(11-15は鍵盤、16はスクラッチ、17はフリーゾーン)。
21-27: 2P側の演奏オブジェクト(1P側と同様)。
31-36: 1P側の不可視オブジェクト。
41-46: 2P側の不可視オブジェクト。
きくちゃんバージョンで追加された拡張
`#PLAYER 4`: バトルプレイ。
`#STAGEFILE aaa.bmp`: 曲開始時に表示する画像ファイル。
`#RANK 4`: 判定ランクの拡張。
`#BMP`:
JPEGに対応。
`#ExtChr`: 仕様変更、チャンネルナンバーの追加。
07 - BGAレイヤー
`#BGAn1 n2 x1 y1 x2 y2 dx dy`: 拡張BGA領域を設定。
`#
WAVxx`: Materialsフォルダからのファイル指定が可能(xxは01 - FZまで追加)。
その他、BMSの拡張として、7Key化(BME読み込み対応)、拡張BPM変更、#BMPにPNG、GIFなど
Susieプラグインに対応しています。
BMSの拡張フォーマット
BMSの拡張フォーマットとして、BME(7鍵盤)、BML(ロングノート)、PMS(9ボタン)などが存在します。
BME (Be-Music Extend format): 『beatmania IIDX』のような7鍵盤とターンテーブル用の譜面データ形式。
BML: 『KEYBOARDMANIA』のようなロングノートに対応した形式。
PMS: 『pop'n music』のような9ボタン用譜面データ形式。
さらに、BMSは、可視・不可視キーの拡張(16進数化、36進数化)、ロングノート(#LNOBJ、#LNTYPE)、ストップシーケンス(#STOP)、定義数の36進数化、拡張BPM変更(#BPMxx)、BGAに動画指定(#BMP aaa.mpg)、サブタイトル(#TITLE、#SUBTITLE)、譜面タイプ(#DIFFICULTY)、地雷オブジェクト(#WAV00)など、様々な拡張がされています。
派生フォーマット
BMSの書式を元にした派生フォーマットも多数存在します。
MBM (MacBeat): 独自拡張ヘッダ「#
WAVCMD」を追加。
フットペダル、ダブルスクラッチ: MixWaver1.0betaや、Virtual Orchestra Studio、MGQ、O2Maniaなどに採用された形式。
ギタドラシミュレーター向け: DrumMIDI、DTXMania、BandJAM、SESSION STREAMなどがあります(DTX形式が主流)。
*
KEYBOARDMANIAシミュレーター向け: MGQ、KMS、EMSなどがあります(PMS形式が中間ファイルとして利用)。
次世代フォーマット
BMSの拡張性の乏しさから、BMX、BM3、XBMS、BMS 2.0などの次世代規格が提案されましたが、実現には至りませんでした。一方、BMS-2やLRXが一部のプレイヤーで採用されました。
2015年には、BMSON(
JavaScript Object Notationベース)が公開され、BMSフォーマットとは異なる記述方式が用いられ、音声ファイルの分割が不要となりました。
主なBMSプレイヤーには、BM98、MixWaver、unofficial nazobmplay、Delight Delight Reduplication、bemaniaDX、Ruv-it!、LunaticRave 2、beatoraja、ふぃーりんぐぽみゅ せかんど、ナナシグルーヴ、おたま、
StepMania、DTXManiaなどがあります。
譜面作成ソフトには、BMS Creator、GDA Creator Professional Edition、BMx Sequence Editor、μbmscなどがあります。
ビュアーには、BMS Viewer、BMEV、nBMplay、WAview、uBMplay、PMSee-Vなどがあります。
キー音無しBMS
キー音無しBMSは、BGMのみで構成されたBMSファイルで、演奏感が薄いため、評価イベントへの投稿が禁止されたり、一部のプレイヤーでは使用禁止となる傾向があります。
歴史
黎明期
1998年6月、やねうらおによってBM98が配布され、J-Pop、ゲーム音楽、MIDI音源のアレンジなどが制作されました。8月には開発が中止されましたが、きくちゃんが開発を引き継ぎました。
全盛期
1999年になるとBMSレビューサイトが登場し、楽曲制作が活発化しました。これらのサイトで活動した作曲者は、同人CD制作やゲームへの楽曲提供などを行うようになりました。BMSフォーマットの拡張も進み、拡張BPM変更、ストップシーケンス、ロングノートなどの機能が追加されました。
停滞期と復活
2002年にBM98の開発が終了しましたが、BMS OF FIGHTERSなどのイベントが開催され、再び盛り上がりを見せました。高難易度譜面(発狂BMS)も登場し、インターネットランキングも人気を集めました。また、Lunatic RaveやRuv-it!などの新しいプレイヤーが登場し、BMSフォーマットの拡張も続きました。
現在では、beatorajaなどの現代的なプレイヤーも登場し、定例イベントが開催されています。高難易度譜面は、Stella/Satellite難易度表といった新たな形式に移行しています。
まとめ
BMSは、長年にわたり多くの人に愛されてきた音楽データ形式です。多様な拡張や派生フォーマットが存在し、様々な
音楽ゲームシミュレータで利用されています。BMSの歴史や仕組みを理解することで、さらに深く楽しむことができるでしょう。