メインコンテンツまでスキップ

BMSON作りガイド2024

あまり普及されていないbmsonフォーマット、従来のbmsと何が違うのか、初BMSでいきなりbmsonで作った私が簡単にまとめました。(それも前回の無名戦で)

参考にさせていただいたサイト、ドキュメント

えびです - .BMSONのザックリとした作り方
BmsONE 101 - The Basics

bmsonってなんぞや?

wosderge氏が開発した新しいBMSフォーマットである。2015年8月13日にフォーマットが公開され、現在も改良が続いている。(BMSまとめWikiより)

らしいですが、技術資料の最新のコミットからなんと9年。 おそらくそんなんあったなぁ、みるけどよくわからないという人が大半ではないでしょうか?

遅れてやってきた自己紹介

プレイヤーとしては本家五段、星8イージー安定。 作曲は初心者、BMSイベ初参戦の無名戦2024ではなかなかの結果でした。(インプレしていただいた皆さん、ありがとうございました。)

bmsonを使うメリット

  • だばぁの心配がない。
  • 読みこむファイル数が少ないため、速くなる(かも)
    • 使い回しの部分が微妙なためサイズは大きくなるかも
  • 音切りが爆速
  • 定義数が実質無限
  • ステムデータ(とMIDI)だけ用意すればいいのでDAWを介さず準備が楽
  • 第三者が音切りを助けてあげられやすい
  • JSONをもとに作られたフォーマットなのでJSONが扱える人はいじりやすい

bmsonのデメリット

  • 極限まで使い回すことを前提にしていないため、ファイルサイズは大きくなりがち。
    • 可能ではあるがそうなるとbmsonの意味がほぼ消滅
    • フレーズごとに分けるとよし。
    • ワンショット音源はエフェクトと要相談
  • 新しく音ぎりの仕方覚えるのがめんどい。
    • 自分はこれがBMSデビューなので抵抗がなかった。
  • bmsonを再生できるプレイヤーが限定される。
    • beatorajaはいいぞ
  • ぶつ切り前提のため、音に違和感
    • フレーズの中で末端フェードを入れたり。
  • 情報が少ない
    • なるべくこちらで更新していきます。

結論

工夫次第でなんとかなる!

さあ始めよう(キリッ)

材料

  • 曲(オートメーションは自由ただし、末端が他の音とかぶる場合があるエフェクトは注意。)
  • SMF1で出力できるDAW(Mid2Bmsonで読み込むのに必要)
  • bmsONE
  • 公式のダウンロードからは現在リンク切れしているため、ダウンロードする際はGithubよりダウンロードしてください。
  • Mid2bmson
  • beatoraja
  • プレビュー用プレイヤー(なくてもいいがあったほうが楽,Pulsus,raindropなど)

工程

1. 曲を作ります。

前述した通り、1音1音をファイルにするわけではないので、ベロシティがバラバラでもパンを振っていても大丈夫です。(ただし、フレーズごとにはまとまりがあると、フレーズでファイルを分けれて容量節約になるかも)

2.stemを出します。

キックなどのワンショット音源はサンプルそのままでもOK。 (エフェクトをかけている場合はかけた上で1音だけ出力とか) この時トラック番号(正確にはmidiチャンネル)がステムに紐づくようにわかりやすく名前付けしておくとgood

(重要)ベロシティについて

mid2bmsonはbmsonに出力する際、ノートのベロシティによって挙動を変えます。

  • 1:どこかに一つでもあればその音声ファイルが強制的にBGMになる
  • 127:強制的に継続フラグがOFF(音声が最初から再生されるようになる。)
  • 2:上二つが適用

ここで重要なのはVel.127の箇所でワンショット音源などの場合は全て指定することで1音を使いまわせますので使い回すのがわかっている場合は全て指定しておくと楽ですが、リードなどの旋律楽器の場合は悲惨なことになります。(フレーズごとに使い回すなど計画的な利用をお心がけ下さい) もしこれらの事情で編集する際は別名でmid2に入れ込む用のプロジェクトを作って編集しましょう。(出力後DOMINOなどで編集でもおk)

3.MIDIを出力します。

必ず1ファイルにまとめて出力。 MIDIチャンネルがそれぞれの対応するSTEMの名前に合っていることを確認しましょう。

4.Mid2bmsonで仮のbmsonを出します。

こちらMIDIに合わせてBMSONファイルを出力するソフトとなっております。

ダウンロードして解凍してきたzipの中にin_json_template.jsonがあるはずなので、STEMとMIDIが入ったフォルダにコピペして編集。 パラメーターを紹介すると、

  • midi_file:さっき突っ込んだmidiファイル
  • bmson_file:出力するファイルの名前、僕はbase.bmsonにしてます。
  • wav_files:Bmsonのsoundchannelsに出力するファイル名。記述した順から順にMIDIチャンネル1.2.と対応していく。ファイル存在チェックはされないので注意。
  • (keys_count):編集不要(今回は一旦全パートBGMに回して出力することを前提としているため。モード指定自体は下のinfoで行う。
  • (keys_offset_in/out):編集不要(理由は先述の通り)
  • (bgm_flag):全て1にしてください。bmson体験が劇的に向上します。
  • info:曲名、Artist、れべるなどなど...
  • ()のつくパラメーターはwavfilesの数だけ指定してあげないとエラーになるので注意。

いよいよ出力です。jsonファイルを解凍したmid2bmsonのexeファイルに投げ込みましょう。 エラーが出なければひとまずおk。

jsonがあったフォルダにbmsonが出力されているので、bmsONEで開き確認。

  • ワンショット音源の場合は赤三角で使いまわされているか。
  • フレーズで使い回す場合は正しい箇所で赤三角で使いまわされているか。
  • 意味もないところで赤三角がついていないか。
  • (赤三角がついたタイミングでその音声ファイルが最初に戻る。)
  • とりあえずプレビューを聞いてちゃんと聴こえればほぼ大丈夫。違和感があれば先ほどの項目を確認。

ひとまずお疲れ様でした。

5.あとは譜面作り。

ベースとなったbmsonから難易度ごとに別名保存して譜面を作りましょう。

やっぱり公式が一番わかりやすい 偉大なるbmsONE公式サイト

ちなみに7Kであればノートが選択された状態で対応するレーン番号(1Pのビューなら1番からスクラッチ、1鍵、2鍵など、BGMは0)の数字キー(キーボードのうえにある)を押せば、一括で移動できます。これがめっちゃ楽 まじで公式さんこれ一番マニュアルに書いたほうがいいかと...

そんな感じでキーボードを駆使しながらやっていきましょう。
ただし、BGAの編集はまだできないので一旦そのままで...(後日加筆予定)

あとはプレビューソフトがあればそれを使いつつやっていきましょう。おすすめはPulsus。

仕上げにbeatorajaでテストプレイすれば完璧!
ここまでお疲れ様でした!

まだまだ不十分なところもあると思うのでかひつしていきます。 画像もできたらつけたいです!

今後の野望展望

  • midiからのbmson変換をも少しわかりやすくできるソフトを開発
  • 譜面エディタを開発
  • 解説動画を作る
  • bmsonフォーマット自体をもう少し整備したい
  • ドキュメントも日本語訳して分かりやすく

長文でしたがいかがでしたでしょうか。 まだまだ情報が少ないのもあるので、自分から積極的に配信していきたいです。
ではみなさま、よいbmsonライフをお過ごしください。