BMS製作に興味がある人のためのBMS製作の解説

この記事はBMSをちょっとだけやっていて、曲もちょっと書いていて、BMS製作に興味がある!という人に向けた記事です 2020年現在の情報をかき集めているので古いものはバッサリカットしているよ

BMSが何かわからない人はググってください 22年も続いている長いコンテンツなので、いかがでしたかブログとは無縁の世界が広がっています

各種ソフトウェアの導入

BMS製作にはいくつかのソフトウェアが不可欠です AviUtlのガッツリ導入よりかはしんどくないです

1.BMSプレイヤー
2020年現在主流なBMSをプレイするソフトウェアは以下です 一応Lunatic Rave 2を導入済みとして話を進めます

Lunatic Rave 2 (しばしばLR2と略されます)
・Beatoraja

2.BMSビューワー
上のものに加えて、BMSを再生するだけしてくれるBMSビューワーというのが存在します どっちを導入してもよいですがmbmplayがおすすめです

mbmplay
・ubmplay

3.BMS編集ソフトウェア
BMSはテキストエディタで編集可能な実装ですが、BMS編集ソフトウェアを用いることで簡易にすることができます iBMSCのほうが新しいのでおすすめです

iBMSC
・BMSE

4.音切り補助ソフトウェア
BMSで曲をプレイする際にはパラデータを切り出してBMSファイルに置いていくような感じの作業があり、そういった作業を「音切り」と呼ぶのですが、それを補助するソフトが存在します 上二つは絶対導入したほうがいいです

mid2BMS
WoslicerIII
・BMHelper

以上で結構です これさえあればBMS製作がいつでもできます

BMSビューワーで再生するにはexeファイルにD&Dする以外に、BMS編集ソフトウェアにビューワーを設定することでも可能です 上記で挙げたビューワーには検索すれば設定方法が出てくるのでそれに従いましょう
上記以外でもたくさんありますが、物好きはここを参照してください
https://w.atwiki.jp/laser_bm/pages/16.html

では早速作りましょうか!

BMSの作成:曲を作る

まずは曲を作ってミックスまで終わらせてしまいます このとき、多くの連続した音に対してLFO・オートメーションを使わないようにすると音切りがやりやすいです

ミックスはBMSプレイ時の音量に大きく影響します 2mixだと音が小さいのでクリップさせるのを前提としています 音が割れているとわかるかギリギリぐらいまで音を大きくしましょう

BPM変化がある場合、音切りでめちゃくちゃ苦労します マジでやめとけ

BMSの作成:音切り・配置

音切り・配置とは、DAWの音を出力して、音を文字通り裁断して、1つのBMSファイルに定義していく作業のことです

裁断する音は言うまでもなく譜面で鳴らすキー音になりうるものがよいです

また、音切りするときには気を付けるべきことがあります、

BMSは「たたくと特定の音が出る」のみの実装であるから、
・BMSプレイヤーから出る音それぞれには何もエフェクト・LFO・その他線形的な変化はかけられない
BMSファイルの実装から、
・1つのBMSファイルに定義ができる音の合計は1295個まで
ほとんどのBMSプレイヤーはこのような仕様をしています、
・1つの定義の同時発音は不可
インターネットランキングに譜面を登録する際の規則から、
・1分以上の音を定義に含んではならない

以上4点です 特に一番最後はBMS作成ベテランであっても見落とすことがあるので十分に気を付けましょう

音切りのやり方には数種類あります、

mid2bmsの使用:ソフトウェアmid2bmsを使って音切りをします midiの入出力が必要です
ぶつ切り:連続する任意の区間を出力してその音を切って配置をします LFO・オートメーションがかかっている音はこの処理をします
単音出力:単純に一音だけを出力してBMSに定義します ドラム系の音はこのような処理をするとよいです

BMSの作成:音切り・配置:mid2bmsの使用

最近は技術革新があって、midiを読み込んで音切りをしてくれるものがあります mid2bmsです

使っているDAWがmidiをインポート・エクスポートできることが前提においているので片方しか対応してないといった場合にはこの項目は飛ばしてください

まずはタブ「Start Page」でAdvanced Modeを有効にします とりあえずいじれるオプションが増えます

次にタブ「[1]Mid2MML」で指示通りに従います よく使用するだろうオプションを書いておきます

blue mode/red mode/purple mode:基本的にblue modeだけで問題ないです purple modeはポルタメントがかかっている音の処理だけに使います
開始wav定義番号:音が定義されるはじめの番号を二桁の36進数(01,02,03…zx,zy,zz)で指定します 最初に行うときは01を指定します
音符同士の間隔:単位が"拍"なのでBPM依存です 長すぎれば出力するwavは長くなりますし、短すぎれば音の末尾と頭が重なってしまいます 一度処理する音を聞いて判断するとよいです
Timebase値:使用するDAWの値に合わせたほうが合理的ですが、わからなければデフォルト

各オプションを確認したら「処理開始」をクリックしてください
すると処理する音のトラック一覧が表示されます ここで「変更する」を押します

ここの設定ですが、BMSに配置される形が大きく変わってくるので一個づつ説明します

Drums?:同じ音階の音は同じレーンに配置され、音程が違う音はもう一つのレーンに配置されます
OheShot?(Oneshotのtypoか?):音符の長さが無視されます
Chord?:複数音階にまたがる音をまるごと一つとして処理します
Ignore?:チェックがつけられたトラックを無視します

複数つけるのはたぶん非推奨のように思われます(筆者はやったことない)

適用→終了をおします すると作業フォルダにいろんなファイルが増えています

そのうちのmidファイルをDAWに読み込んで出力します パラ出力とかいろいろな方法でなんとか出力します

次にタブ「[2]WaveSplitter」で指示通りに従います よく使用するだろうオプションをまた書いておきます

TailCut Threshold:末尾で切るタイミングを音の大きさを利用して指定してくれます -72くらいがよいでしょう
無音検出時間:mid2bmsは一定の長さの無音を検出すると次の音に移ったと判断します これが小さすぎれば想定よりも音が増えますし大きすぎれば音が少なくなります 最適解になる設定はありませんが0.5~2秒が妥当です

音切り開始を押します この処理は長くかかることがありますがいっぱい待ちましょう

完了するとまた作業フォルダにファイルが増えています

text6_bms_blue.txttext6_bms_blue.bmsにリネームしてrenamedフォルダに突っ込みましょう

"."以降の文字(拡張子)が出てこない人はエクスプローラのタブ「表示」のファイル名拡張子にチェックを入れてみましょう

突っ込んだtext6_bms_blue.bmsをビューワーを使って一度再生してみましょう なにか異常が見つかれば音切りに戻ります

ここでわかりやすい異常といえば曲が崩壊しているぐらいなので、特になければmid2bmsを用いた音切りは完了です mid2bms自体は後で使うこともあるので開いたまんまにでもしておきましょう

音切りのやり方を複数混ぜている場合には、できたbmsファイルはBMS編集ソフトウェアに読み込んだままにしておきましょう

BMSの作成:音切り・配置:ぶつ切り

連続する任意の区間を出力してその音を切って配置をします WoslicerIIIを使います

ファイルを読み込むといろいろ操作可能になります BPMを合わせて、ずらしは0、フェードは0でやります 背景に波形が表示されるので真ん中の線を見ながらマーカーを入れていきます

入れ終えたら「総出力」ボタンを押して出力してください いっぱい作業フォルダに音が出力されます

また、配置を簡易にするために「ファイル」から「クリップボード出力」をしましょう すると出力番号を聞かれるので音が定義されるはじめの番号を二桁の36進数(01,02,03…zx,zy,zz)で指定します(mid2bmsの開始wav定義番号と同じです)

BMS編集ソフトを開いて、ファイルを定義してください まとめてD&DでOKです その後にクリップボードにある配置情報をDAWを参照しながら配置していきます すべて配置し終えたら完了です

音切りのやり方を複数混ぜている場合には、できたbmsファイルはBMS編集ソフトウェアに読み込んだままにしておきましょう

BMSの作成:音切り・配置:単音出力

所謂、手動音切りです 一音一音丁寧にDAWから出力して、BMS編集ソフトウェアでファイルを定義して、DAWを参照しながら配置していきます すべて配置し終えたら完了です

BMSの作成:譜面作成

音切り・配置が終わったものとして、譜面作成に入ります BMS編集ソフトウェアで譜面を作ります BMSにおける難易度分布は、各々自由に決めていますが、所謂本家に従うものが多いです 自由にやれ
BMS編集ソフトウェアの横の部分にはタイトルやジャンルやアーティストなどを指定できる欄があります

#TITLE:タイトル
#ARTIST:アーティスト
#GENRE:ジャンル
#BPM:初期BPMです BPMレーンでも変更可能です

譜面に関するものはこうです

#PLAYER:プレイ様式の指定です mid2bmsから出力されたbmsを編集する際にはここが3-Doubleとなっていることがあるので音を全部BGMレーン(赤いとこ)に移動した後で1-Singleや3-Double等に変更しましょう SingleはSPで、DoubleはDPです PMSは9鍵
#RANK:判定の設定です ほとんどは3-easyです 普通は難易度毎に変更する必要はありません
#DIFFICULTY:難易度の指定 これを指定しないと全部Normalとして表示されたりします
#TOTAL:プレイするときにゲージが回復する%を指定します 100であればフルコンボしたときに100%回復します
#LNOBJ:定義の一つを犠牲にLNが配置できるようにします(LNは別の配置のしかたもあります iBMSC上では単純にえんぴつツールで該当ノートを伸ばすだけでできます)

BMSの作成:他画像等を追加

BMSには映像や画像が追加できます 音と同じように定義できます 緑色のレーンです 3つのレーンがあります

BGAレーン:画像を表示されます
LAYERレーン:BGAレーンで表示された画像の上にここのレーンに置いた画像を表示させることができます カラーコード#000000近辺は透過されます
POORレーン:BGAレーン/LAYERレーンとは関係なく、ミスをしたときに表示されます

BMSの作成:小節長

BMSにおける1小節の処理は特殊で、4/4拍子で1という値が定義されています iBMSC上ではこのようなことはあまり気にする必要はないのですが、BMSEで開いたりすると微妙に値が丸められてしまうこともあるので複雑な値を扱う際には気を付けましょう

BMSの作成:仕上げ

他にやることといえばこうです

譜面のテストプレイ:BMSプレイヤーを用います LR2ならばLR2body.exeに読みこませることでできます
音の末尾のチェック:末尾に無音が残っていないかチェックします めんどいときは飛ばします
重複定義をする:mid2BMSで処理ができます タブ「[3]DupeDef」に従いましょう
BMS全体の容量の削減:たいていはoggへの変換だけです 適当に変換ソフトを用います
1分以上の音があるかどうかチェックする:エクスプローラでソートしたり様々な方法でチェックします
圧縮する:zipでもrarでもなんでも BMSファイルがある階層で圧縮するのではなく、BMSファイルがあるフォルダ1つを圧縮しよう

これらがすべて終われば、あなたも立派なBMS作家です おめでとう…

最終的なフォルダ構成(例つき)

最終的なフォルダ構成はだいたい以下に近くなります 例として私のBOFXVでのチーム「癖譜面これくしょん(BOFXV)」の作品「NowIt'sTimeToRaze!!!」を挙げます ファイル名やフォルダ名に2バイト文字が含まれるとめんどいかも?縦にカッチリ並ぶようにしたかったんですがnoteのコードブロックの仕様でえぐいてになってますね コピーして適当なテキストエディタにはっつけてご覧ください

nakaiankow_now_it_s_time_to_raze // <アーティスト名_楽曲名>で記述
├_Nakaiankow_NowIt'sTimeToRaze!!!.bms.noobj // 「noobj」と示すように未配置譜面です 未配置譜面は拡張子だけを変えておくやり方をお勧めします このファイル単体を圧縮する方もいます とにかく未配置譜面はBMSプレイヤーに認識させないようにするのが吉です
├_Nakaiankow_NowIt'sTimeToRaze!!!.bms // 譜面ファイルです 実際には複数ありますが省略させていただきました ご了承ください
├_Nakaiankow_NowIt'sTimeToRaze!!!_bgi.png // BackGroundImageですが、BackGroundAnimationがBMSで定義されているため、使われていません 消し忘れました
├_Nakaiankow_NowIt'sTimeToRaze!!!_miss.png // ミス画像です 緑色のレーンのPOORに定義されています
├_Nakaiankow_NowIt'sTimeToRaze!!!_stagefile.png // 楽曲選択時に表示される画像です #STAGEFILE で定義されます
├_Nakaiankow_NowIt'sTimeToRaze!!!_title_cregits.txt // 複数人が関わったBMSなのでクレジットを書きました BMSプレイヤーではテキストファイルも選曲画面で見ることができます
├_z_bga_01_01.bmp // BackGroundAnimationの中身です 緑色のレーンのBMPに定義されています 連番BMPとよばれる紙芝居を超高速でやるような手法で動画っぽく動かします 00年代後半以降のBMSは一本の映像ファイルが定義されることも多いです
├_z_bga_01_02.bmp
…
├_z_bga_04_16.bmp
├_z_layer0000.png // BackGroundAnimationのLAYER部分です 緑色のレーンのLAYERに定義されています
├_z_layer0001.png
…
├_z_layer0063.png
├01_000.ogg // ぶつ切り分や単体切り分の音声ファイルです 私は出力した順番で連番をつけ、WoslicerIIIで切り出して定義しています01_001.ogg
…
├57_023.ogg
├58.ogg
├b_3x Osc #12_v100l64o4ap.ogg // mid2bms分の音声ファイルです midiを読むときにきかれるChord?のチェックの有無とかで末尾のファイル名がちょっと変わります
├b_3x Osc #12_v100l64o4gp.ogg
…
└b_Xpand!2_00006_ccgceg.ogg

その他あると便利なもの

必要に応じてソフトウェアをインストールしておくと作業がやりやすい

音声編集ソフトSoundEngine Free、Audacity他)
一括リネームソフトAllRename、Flexible Renamer他)

参考(になる)文献

BMSまとめ @wiki https://w.atwiki.jp/laser_bm/pages/1.html
Mid2BMS Wiki http://wiki.mid2bms.net
BMS command memo (JP) https://hitkey.nekokan.dyndns.info/cmdsJP.htm

…今BMSイベントに出たいって言ったね?じゃあここを見ようか
BMS EVENT LITE https://hitkey.nekokan.dyndns.info/bmsevt.htm#ALL