見出し画像

bmson差分作成手順

2021/02/12 時点での情報です。情報が古くなっている場合、ここに書いてある通りにはならないかもしれないのでご留意ください。

bmson差分の作り方や、BOFXVIPMS差分企画に提出したギミック譜面の解説みたいなのをnoteにまとめて欲しい、という要望があったので作成。

ここではBmsONEの基本的な使い方と、beatorajaのBMSON拡張定義を使用したギミック譜面の作り方を解説します。

PMS(9KEY)差分作者向けの内容となっていますので、BMS(7KEY)差分作者の方はそれに置き換えて読んでください。

必要なもの

BmsONE

こいつがなければ始まらない。

差分作者はこれで主に、音の配置と音切りをメインに使う。

最新バージョンのbeatoraja

bmsonに対応した再生プレイヤー。

Bemuse等でも再生は出来るが、スクロール定義ほかbeatoraja拡張定義に対応してないのが痛手なのでここではあえて取り使わない。

確認用の再生もこれで行う。(筆者の環境では、9keyモードのbmsonをfbmsonplayで再生することが出来なかった。読み込んだ直後にフリーズ)

uBMSC(v3.5.0以降)

.bms -> .bmson への変換出力が可能。BmsONEからでも変換は可能だが、スクロール命令が無視されてしまうため変換する際はこちらを推奨。

テキストエディタ

メモ帳でもVSCodeでもなんでもいい。拡張命令を自分で手書きする際に使う。

BmsONEの基本的な使い方

まずは配布元の説明を読め。

「2.3 音声ノーツの配置」の項にだけ目を通せば80%は理解出来ると思います。後は実際に手を動かせば完全理解できるはず。

重要なのは、「編集モード」と「書込モード」の2つを使いこなすこと。

「編集モード」:上部ツールバーから矢印アイコンを押すとこれになる。

主にこのモードで音をキーレーンに配置していく。

BGMレーンにある音を左ダブルクリックするとキー音として配置可能。

キーレーンに配置した音をBGMレーンに戻したいときは、ダブルクリックすれば戻せる。範囲選択から右クリ→BGMレーンに移動、で一括移動も可能。


「書込モード」:上部ツールバーから鉛筆アイコンを押すとこれになる。

主にこのモードで音切りをしていく。

BGMレーンにある音を切りたい部分で左クリックすると音を切れる。

絶妙にズレた音を切りたい場合は、上部ツールバーのグリッドから192を選択し、これで音を切る。

192分より細かく切りたい場合は、その右のグリッド設定(歯車アイコン)から下のように自分で新しい間隔を追加する。

画像4


後は習うよりとにかく慣れろ!自分で実際に手を動かすことが重要。

beatoraja拡張定義の記述方法

Wikiの楽曲製作者向け資料 の説明だけだと分からない人にはあまりにも分からないので、ここで補足解説しときます。

(2021/02/12時点での情報です)

ln_type (BMSInfo)
ロングノートの種類を明示的に指定します(1:LN, 2:CN, 3:HCN)。

画像1

赤枠で囲った部分に、"ln_type": 1 といった感じで記述すればOK。

数値の部分は1~3の好みで変えましょう。

ln_typeは、BMS拡張定義の#LNMODEのbmson互換みたいなものです。


t (Note)
ロングノート(l>0)の場合にその種類を指定します(1:LN, 2:CN, 3:HCN)。ln_typeよりも優先されます。 同一の譜面上で混在させることも可能です。

画像2

青枠で囲ったようにLNノーツを選択し、画面上部の選択オブジェクトの欄を下に引き伸ばしてウィンドウを出現させ、

赤枠の拡張情報欄に、"t": 3 といった感じで記述すればOK。

Wikiの説明にもあるようにln_typeよりも優先され、同一の譜面で混合させることが可能。

また混合させて使った場合、選曲画面ではln_typeの指定に関係なく、数値が最上位のものが表示されます。

(例えば"t": 3が記述された部分が一つでもある場合、選曲画面ではHCN表記になる)


up (Note)
trueでかつ、ロングノートの終端位置に配置する場合、そのロングノートの終端音になります。

tと同じく選択オブジェクトの拡張情報欄に、"up": true のように記述すればOK。

ただこれはぶっちゃけあんま使い道ないです。相当特殊なギミック譜面作りたい場合に限られる。


scroll_events : ScrollEvent[] (BMSON Root)
ScrollEvent : {"y","rate"}
譜面のスクロールスピードの倍率を指定します。BPMによるスクロールスピード補正と重複します。 倍率をマイナスにすると譜面が逆走します。

説明の前にまずはこれを実装して下さった人に感謝。いやマジで助かった。

BmsONEだとubmscのような便利な時間編集機能が無い為、

元がbmsonの9鍵差分を作る際にソフランを組み込もうとしても、BPM変更でやる従来のやり方がどうしても出来なかった。(低速にしてもノーツ間隔修正してくれないので曲が乱れてオワタッタ)

そこで解決策になるのがこのスクロール定義。BPMを崩さずにソフランを組み込める為、bmsonとの相性が抜群。

それでこのスクロール定義の記述方法なんですが少々特殊で、

上に載せたuBMSC(v3.5.0以降)、もしくはテキストエディタからでしか記述出来ません。

BmsONEの拡張情報欄に書いてもbeatorajaは読み込んでくれません。Wikiの説明にもある通りBMSON Rootに書かないといけません。

以下の画像が記述例。infoの真上か、それと同じ階層であればOK。

画像3

"rate"はスクロール倍率、"y"はそのスクロールの開始位置(BmsONEでノーツ選択した際に一番左下に出てくる数値をyに記述する)

よく分からなかったら、uBMSC(v3.5.0以降) で適当にSCROLLレーンにオブジェを配置したbmsをbmson出力してテキストエディタで見てみれば理解出来ると思います。


これらのBMSON拡張定義を使った自作差分の紹介

最後に、冒頭でも説明した通り私はBOFXVIPMS差分企画でこれらの拡張定義を使った9鍵bmson差分を2譜面提出しました。

もし興味があれば見ていってもらえれると嬉しいです。

逆走スクロール ("rate": -1) を使用

ln_typeとt, SCROLL定義を使ったWAVE変速を使用

この記事が気に入ったらサポートをしてみませんか?