BMSは、1998年に矢根浦雄氏によって開発されたリズムゲーム用のファイル形式です。この形式は元々BM98(コナミのゲーム「ビートマニア」のシミュレーター)向けに開発されましたが、現在ではBMSという用語は、ビートマニア風の音楽データシステム全般を指す言葉として広く使われています。
ヤネ氏によって、公式のBMSフォーマット仕様ではBe-Music Sourceであることが確認されている。 [ 1 ]
BeatmaniaやBeatmania IIDXシリーズと同様に、このゲームの目的は、画面上部から降りてくる音符を叩くことです。
現在、ほとんどのBMSファイルはBMSイベントで配布されており、そこでは複数のアーティストが楽曲を公開し、スコアを競い合っています。[ 2 ] 2004年から開催されている最大のBMSイベントは、AOiRO_MANBOWが主催するBMS of Fighters(BOF)です。[ 2 ]毎年250曲以上が発表されています。
BMSフォーマットでは音楽を複数のトラックに分割する必要があるため、BMS用の楽曲のほとんどはBMSファイル形式のために特別に作曲されたオリジナル楽曲であり、既存の楽曲をBMSで使用することは困難です(分離されたステムが利用可能な場合を除く)。
BMSファイルは、音符の配置方法と、プレイヤーが特定のアクションを実行したときのゲームの反応方法を記述します。これは、#文字で始まる「指示」行を含むプレーンテキストファイルです。各指示行は、以下の形式で記述されます。
#[定義設定者] [定義者]
定義設定者と定義者の間にはスペースが必要です。
BMSファイルは通常、ヘッダーフィールドとメインデータフィールドで構成されます。以下は、テキストエディタでBMSファイルを開いたときの簡単な例です。
*---------------------- ヘッダーフィールド #プレイヤー1 #ジャンルサンプル #タイトルサンプル #アーティストサンプル #BPM 120 #レベル5をプレイ 合計 100 #ランキング2位 #bmp00 ミス.bmp #bmp01 1.bmp #wav01 1.wav *---------------------- メインデータフィールド #00111:01010101 #00211:0101010001010100
オリジナルの BM98 から存在し、オリジナルの BMS データで使用されているコマンドは次のとおりです。[ 3 ] [ 4 ]
後に開発され、広く普及したコマンドには以下のようなものがある。
メインフィールドデータは の形式で記述されます#XXXYY:ZZZZZZ。XXX は測定番号、YY はチャネル、ZZ は36 進数の 2 桁の数値を使用して測定の構成要素を定義します。定義子と構成要素を区切るコロンが必要です。
Beatmania IIDX に取って代わられた Beatmania により、オリジナルの BMS フォーマットが時代遅れになったため、Beatmania シリーズの変更点を取り入れた他のフォーマットが開発されました。有名な拡張フォーマットとしては、7 ラインと 1 つのターンテーブルでのプレイを可能にした Be-Music Extend フォーマット (.bme) や、プレイヤーがノートの最後までキーを押し続ける必要があるロング ノートの使用を可能にした Be-Music Long note フォーマット (.bml) などがあります。.bms をベースにした .pms 拡張機能も存在し、これはPop'n Music のシミュレーションを目的としており、9 ラインを使用します。さらに、ファンが作成したカスタム チャート用のMuse dash Melon Loader で使用される .mdm もあります。これは、ゲームの 2 つのレーンに 4 ラインを使用し、特殊効果やボスの動きを制御するために他のいくつかのラインを使用します。
シミュレーター自体もファンによって開発されている。
bmson は、wosderge によって最初に開発されたJSONベースのフォーマットです。このフォーマットの本来の目的は、開発者、アーティスト、チャート作成者など、誰でも簡単に実装して使用できる BMS の代替フォーマットを作成することでした。bmson は、チャートで使用できるキー サウンドの数に制限がありません。これは、キー サウンドが 1296 個に制限されている BMS とは異なります。このフォーマットが提案された後、バージョン 0.26 フォーマットが、Bemuse や raindrop などのいくつかの BMS プレーヤーに実装されました。[ 7 ] [ 8 ] bmson の最初の実装後、これらのゲームの開発者や他のいくつかの開発者が協力して、bmson バージョン 1.0 の技術仕様を作成しました。[ 9 ]