※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

 「BMSとは何か」というレベルの解説はしません。
ここではBMSを作るにあたって知っておく必要のある、BMSの仕様をいくつか書いておきます。

BMSの規格仕様についてはこのサイトで深く考察されており、このページでもこのサイトからいくつか引用しています。もし興味があればご一読ください。

 BMSではコマンド*1によって記述された一連の命令を1行とし、それを連ねることでBMS全体を構成します。
コマンド行は必ずシャープ#で開始し、以下の文法を取ります:
#COMMAND␣contents
COMMANDで表されるのがコマンド部、半角スペース1個を開けて記述されたcontentsがその中身となります。たとえばタイトル定義は次のように書きます:
#TITLE たのしいピクニック
"#"で始まらない全ての行はコメント行として解釈され、BMSの再生には影響しません。おそらく#を含まなければBMS内にアスキーアートを入れ込むことも可能ですが、予期せぬエラーを招きかねないので、やめたほうがよいでしょう。

以下に、重要なコマンドを列挙します。列挙されないコマンドは、BMSEを使って制作する限り気にする必要はありません




#PLAYER

 1がSP譜面、2がCP(カップルプレイ)譜面、3がDP譜面、4がバトル譜面を表しますが、ほとんど死にコマンドとなっており、SP譜面なら1、DP譜面なら3にするという決まりくらいしか現在は残っていません。
LR2に至っては実際に使われているレーンによってSPかDPかを判断するため、完全に無視されるコマンドになっています。しかし例えばBMSEではDP譜面を作る場合にここを変更する必要があるので、ちゃんと設定したほうがよいでしょう。
カップル(#PLAYER 2)とバトル(#PLAYER 4)はBMSプレイヤー側で表現可能かつそのほうが都合がいいため、使ってはいけません。BMSEでいえば2 Playerではなくdouble playにしましょう。

#RANK

 譜面の判定の種類です。GREAT判定の幅が、0でVERY HARD(とても狭い)、3でEASY(とても広い)となります。名前からすればNORMAL判定(#RANK 2)が標準に思われますが、昨今のBMS界隈ではEASY(#RANK 3)が多いようです。BMSEで空のファイルを開くとデフォルトでEASY判定にされているのが大きな要因に思われます。
いわゆる発狂BMSなどのノーツが非常に多い譜面でHARD(#RANK 2)以上の判定を利用することは推奨しません。高密度譜面は正確に演奏するよりは降ってくるオブジェを余すところ無く叩くのが目的であり、そこに辛判定を導入するととたんにクソゲーと化すでしょう。逆に、密度は低いがクセのあるリズムであったり、連打を頻繁に叩かせるような譜面では、EASY判定ではその譜面の難しさを十分に表現できない場合もあり、VERY HARD(#RANK 0)が歓迎される傾向にあるかもしれません。

#GENRE

#TITLE

#ARTIST

 上からBMSのジャンル名、タイトル、アーティスト名を表します。ジャンルは省略してもよさそうですが、タイトルとアーティストは必ず入力するべきです。

#SUBTITLE

#SUBARTIST

 こちらは後期になって拡張されたコマンドです。前者はサブタイトルを、後者はサブアーティスト(作曲者に対して譜面作者やBGA作者など)を記述するためのコマンドです。LR2の曲決定画面ではSUB情報は表示されません。
LR2では#TITLEに特定の文字が含まれるときそれをサブタイトルとして扱う仕様があります。それを積極的に利用するなら#SUBTITLEは必要ないかもしれません。
BMSEではどちらも拡張命令として扱われるので、利用するなら直接テキストに打ち込む必要があります。

#COMMENT

 BMSに対するコメントです。「ひとつの ものごとに とらわれると すべてを みうしなってしまう にゃ」みたいなやつです。
もっぱらPMSについて使います。ふぃーりんぐぽみゅなど一部のPMS特化型本体で使われるに留まります。LR2では一切参照されず、BMSEでも拡張命令扱いです。当wikiはBMS制作に関する解説サイトですが、PMSも同様の手順で作れるということで一応載せておきます。

#BPM

 楽曲の開始前のテンポを記述します。途中でテンポを変化させるような命令が無ければ曲は最初から最後までこのテンポで演奏されます。曲構成の根本的な部分なので必ず入力するべきです。

#PLAYLEVEL

 譜面の難易度です。一般的に5keyなら8、7keyなら12、9buttonなら50が上限とされています。BMSEでこの欄をプルダウンボックスから選ぼうとすると1から8と0しかないので直接数値を入れたほうがよいでしょう。レベル0は基本的に「難度判定不能」を意味し、1よりも簡単という意味にはなりません。レベル0はレベルソートで最初にくるため、私としてはできるだけ利用しないことを推奨します。
例えば7keyで12以下の難易度を付けるなら、なるべく"本家"の基準に則ったほうがよいでしょう。設定された数字と実際の難易度があまりにかけ離れているとBMSイベントでは減点の対象になることがあります。

#DIFFICULTY

 譜面の種類(NORMAL,ANOTHERなど)を数値で記述します。普通は1から5までの整数で、1がビギナー譜面、5が最も難しい(いわゆる黒穴)譜面を示します。省略することもできますが、BMSプレイヤーがその譜面をどの種類と判定するのか分かりづらくなり、譜面作者の意図しない位置に置かれる可能性もあるため、特別な理由が無い限り記述することを推奨します。
BMSEでは拡張命令扱いであり、自分でテキスト上に書き込む必要があるため、もしかしたらこのコマンドに気づかない人もいるかもしれません。
LR2でレベルソートを行う場合、#DIFFICULTY 5の譜面はレベル値に関係なく最後に置かれます。例えばレベル10のノーマル(#DIFFICULTY 2)譜面、レベル5のアナザー(#DIFFICULTY 4)譜面、そしてレベル2の黒穴(#DIFFICULTY 5)譜面が用意されていた場合、LR2でレベルソートを行うとまずレベル5の譜面が最初に置かれ、次にレベル10の譜面、レベル2の譜面は最後に置かれます。
前述の#PLAYLEVEL 0を使いたい場合、併せて#DIFFICULTY 5としておくことで、その譜面がレベルソートで最初に(レベル1の譜面よりも前に)来ることを防ぐことができます。
"#DIFFICULTY 0"の場合難易度未定義になります。LR2では難易度フィルタ(NORMALだけ表示、HYPERだけ表示など)を使ったとき表示されず、レベルの色は灰色になります(スキンによっては表示されません)。隠し譜面には使えるかもしれません。

#TOTAL

 演奏レーンに置かれたノーツを全て最高の判定(P.GREAT)で処理した場合に増加するグルーブゲージの量です。
設定しないとゲージが回復できなかったり、簡単になりすぎたり、プレイヤーによってえらく変わってしまうため、必ず記述するべきコマンドです。BMSEでは「拡張」タブにあるのでしっかり確認しましょう。
どれくらいのTOTALが妥当かというのは、少々難しい問題ですので、実際に自分でプレイしてみてちょうどいい値を見つけたり、こことかこことかを参考にしてみてください。

#STAGEFILE

 主に曲決定画面で表示される大きな一枚絵(普通は640*480)の定義です。無くても構いませんが、あったほうが選曲時の期待度が高まりそうな気がします。BGAがあるなら用意したほうが無難でしょう。記述するのはファイル名ですから、当然.pngや.bmpといった拡張子が必要です。

#BACKBMP

 本来はPMSなどのプレイ画面の背景として用意する画像ですが、役割がSTAGEFILEと被っていたり、7keyなどではBGAがメインだったりであまり使われないコマンドです。
RED BELTというLR2の拡張スキンでは使われなくなったこのコマンドをプレイ前に表示されるタイトル画像として利用しています。特殊なフォントを使ったり、タイトルの代わりに絵を表示したい場合などに利用できます。その用途についてはこちらを参照してください。

#BANNER

 主に選曲画面で使われる楽曲のバナー画像の定義です。前述のRED BELTでは選曲画面にバナーも表示しますし、LR2標準の選曲スキンでも有効だったと思います。STAGEFILE同様無くても構いませんが、あれば曲の雰囲気をより伝えやすくなります。
BACKBMPともどもBMSEでは拡張命令扱いなので、テキストに直接書き込む必要があります。

#CHARFILE

 ふぃーりんぐぽみゅなど一部のBMSプレイヤーで使われる、キャラクターファイル(.chp)を指定するためのコマンドです。作り方を簡潔にまとめたサイトがあったと思うのですが、今探したところ見当たりません。残念。

#WAVxx

 音声ファイルの定義です。BMSの譜面は実際には定義情報の羅列であり、BMSプレイヤーはそれを読み取って対応するインデックスの音声を再生することで意図した音楽を構成します。もちろん必須ですが、BMSEでは画面右側にある定義リストに、エクスプローラーから音声ファイルをD&Dすることで自動的に記述してくれますし、BMHelperなどを使う場合も定義リストは自動で生成してくれるので、今や自分で手打ちする必要はほとんどありません。
存在しないファイル名を指定すると(少なくともLR2は)単に無視します。無音ノートを使う場合に「#WAVZZ muon」などと定義してそれを使うようにすれば、あるいは分かりやすいかもしれません。
以降の全てを含む定義情報は、一般的に01からZZまでの36進数で表されます(00は空白)。したがって、現在のBMS規格仕様では1295個が定義数の上限となり、数が増えがちなWAVは特に注意する必要があります。

#BMPxx

#BGAxx

 BGA表示用の画像(映像)ファイル定義です。こちらもBMSEではD&Dでまとめて定義できるので直接入力の必要はあまりありません。
昨今ではBGAを1本の動画にして、せいぜいミスレイヤーを追加するくらいが多く、この定義欄が埋まる事態は起きにくくなっているかと思います。
"#BGA"は使い方が複雑なので、必要ならこちらを参照してください。動画BGAが主流になった現在ではまず使われないコマンドです。

#BPMxx

 8ビット整数で表記できないBPMを使うときに利用する定義です。BMSEでは設定されたBPMが1~255の範囲外である場合に自動的に追加されます。
ある小節で1000bpmになったあと、一旦150bpmになり、そのあとまた1000bpmになるようなテンポ変化の場合、#BPM01 1000のような定義を使い回せばいいと感じますが、BMSEでは全て別扱いになります。頻繁にテンポ変化が行われる曲の場合、実質的に256以上や小数テンポへの変化は1295回までに制限されますのでご注意下さい。テンポ変化を直接書き込む場合はこの限りではありません。

#LNOBJ

 ロングノートの終端を表す定義インデックス(ZXなど)を書きます。
BMSには2種類のロングノート定義が存在します。詳細は割愛しますが、バグ回避や付け外しの容易さもあって、私はもう一方の方式よりこちらを推奨します。ただし、#WAV定義を無駄に一つ潰す必要があるため、定義数がギリギリの楽曲においてはもう一方の方式を採用せざるを得ない状況になる場合もあります。詳細は譜面制作?のロングノート節を参照してください。

#RANDOM

#IF

 不確定性の音楽を生み出す命令です。#RANDOM x(1以上の整数)で1からその数までの乱数を生成し、#IF x(1以上の整数)でそれぞれの場合に解釈する命令を記述します。これについて詳細に解説するのは私の手には余るので、もし使いたければここなどを参照してください。
私の知る限り#RANDOMを正常に扱えるエディターは存在しません。もし使うのであればテキストエディタで直接編集する必要がありますが、この世にはたくさんの驚異的なRANDOM BMSが存在します。
当wikiではこれ以上触れません



次:作曲
添付ファイル