###### tags:`2022`
# えびです - .BMSONのザックリとした作り方
## 2024/11/29追記 : この記事は情報が古いです!こっちの方が参考になります!☞ [BMSON経由でかんたんBMS製作 - ネビュラ今子](https://note.com/nebulaimako/n/n849876ac7df0)
えびです。
この記事は2022/10/01に書かれたものです。
手を動かしながらだと多分1時間くらいで読み切れると思います。
何か間違ってたりヤバいこと書いてたら
[Twitter@ebideath](https://twitter.com/ebideath) にDMかリプライください…🙇♂️よろしくお願いします。
## [サンプルデータあります](https://drive.google.com/file/d/1hQRxTtX5qDWrSun2KiTCXn3R3Z7YMYa2/view?usp=sharing)
ダウンロードして使ってください。
## 0. そもそも.bmsではなく.BMSONで作るメリットって?
メリット:
- ==音切りが爆速になる== ヤバい
- MIDIを使わない場合、.bmsと比べて音切りの手順が単純
- 定義数が実質無限
- ステムデータ(とMIDI)だけ用意すればいいのでDAWを介さず準備が楽
- 第三者が音切りを助けてあげられやすい
- ファイル数が少ないので容量が軽いし、遊ぶときに読み込みが早い
- JSONをもとに作られたフォーマットなのでJSONが扱える人はいじりやすい
デメリット:
- 新しい音切りの手順を覚えるのがだるい
- まだ人気がないのでツールが出そろってない、不安定
- Q&AがBMSに比べて圧倒的に少ない、調べても情報が少ない
- ==LR2では遊べない!そのためbeatoraja導入不可避==
- 遊べる人が減るためBMSイベントではBMSONファイルのみの登録だとインプレが少なくなりがち
- 差分譜面を作る人にとってはBMSファイルの方がやりやすいらしい
間違ってたらgomen
## 1. BmsONEをダウンロードして使い方を読む
~~https://github.com/excln/BmsONE/releases/tag/beta_021~~
(20240122追記)
現在、BmsONEが公式サイトからダウンロードできない状態みたいなので、取り急ぎ僕の持ってるバージョンのものを二次配布します。
免責事項に従って内容は一切変更してません。
BmsONE_win64_b021_20170923.zip
https://drive.google.com/file/d/1BSa60vBxb2-lpvVHyGROi05D-UshMeVT/view

ダウンロードして起動
https://excln.github.io/bmsone.html
↑ここの==2.2、2.3を読んでBmsONEを触りましょう==、BmsONEの使い方がザックリわかるはずです
ページ最上部にあるサンプルデータ使いながら見ると良いかもです
BmsONEの使い方がわかったら次へ
## 2. 必要なもの用意する
- 曲のステムデータ (サンプルのものでOK)
- ステムのMIDIデータ (stem.mid、サンプルのものでOK)
- DOMINO https://takabosoft.com/domino
- MID2BMSON http://ogut.sakura.ne.jp/app.html
- BmsONE https://github.com/excln/BmsONE/releases/tag/beta_021
↓全部そろえるとこんな感じ

### 2.1 曲のステムデータ(wav)について
==(サンプルデータはこの工程は済んでいます)==

各トラックを書き出してステムデータを用意するときは、
01_xxx.wav
02_yyy.wav
03_zzz.wav
と、分かりやすいように↓のような名前を付けておきましょう

この時、ドラムパートはキック、スネア、ハイハットなど叩きたい音ごとに分けておきましょう
### 2.2 ステムのMIDIデータ
==(サンプルデータはこの工程は済んでいます)==
↓これはMIDI出力前のプロジェクトファイル
これらをイイ感じのMIDIに調整して出力します

WAVのループ素材(水色のトラック)は切りたいリズムに合わせて、↓のようにMIDIトラック(赤色のトラック)を用意しておきます

メロディーなど上下するMIDIは1直線に直しておきましょう

↑これを
↓これにする

CUBASEだと ==MIDI > 移調設定 > 範囲外のピッチを整理 > C4-C4==
で1発でMIDIを1直線にできます


他のDAWでも同じ機能があるかは知りません
また、アルペジオなどもループ素材と同様、切りたいリズムに合わせて、
MIDIトラックを用意しておきます

↑これを
↓これにする

で、全てのMIDIが一直線になったところで、
1つ目のMIDI(01_xxxトラックのMIDI)をすべて==C4==に、
2つ目のMIDI(02_yyyトラックのMIDI)をすべて==C#4==に、
3つ目のMIDI(03_zzzトラックのMIDI)をすべて==D4==に...します。
全文同時に表示するとこんな感じ。

各トラックのMIDIをまとめて書き出します。
ここでは`stem.mid`としておきます
CUBASEのMIDI書き出し方法はこちら↓
https://sleepfreaks-dtm.com/for-advance-cubase/smf-3/
余計な情報はオフにして、ロケーター範囲で書き出しましょう

書き出したMIDIは一度CUBASEに読み込んで、正しく書き出せているか確認した方がいいです
サンプルデータの.midを参考にしてください
## 3. DOMINO
DOMINOを起動して、stem.midをドラッグアンドドロップします。

`MIDIデータを解析してコントロールマクロを復元しますか?`
と聞かれるので、はいを選択
読み込めたら、トラックのプロパティを押します

編集対象から各トラックを選択し、==数字とチャンネル番号が同じになるよう変更させます==


↓これは数字とチャンネル番号がズレてるのでダメです

チャンネル番号が調整できたらOKを押し、
SMF書き出しからmidファイルを書き出します

ステムデータと同じフォルダにstem.midとして書き出してください
## 4. MID2BMSON

MIDIに合わせてBMSONファイルを出力するソフトです
==ここではザックリ説明しますが、困ったら付属のreadme.txtを読んでください。==
zipをダウンロード、解凍した中に、`in_json_template.json` があるのでテキストエディタで開きます。(わからなかったらメモ帳でOK)

開いたらこんな感じ。
この↓緑色のとこだけ書き換えます。

midi_fileの部分は先ほど書き出した==stem.mid==に
bmson_fileは==output.bmson==に(なんでもいいです)
wav_filesは用意したステムデータの名前を入れます。==「,」の数に注意==
オレンジ枠の中身はコピペで==wavの個数に合わせて数字をコピペ、keys_offset_inはすべて0==にしてください。

🦀
`in_json_template.json` が編集できたら、==ステムとMIDIがあるフォルダに保存してください==
↓こんな感じ

この状態で、`in_json_template.json`を`mid2bmson.exe`にドラッグアンドドロップします。

↓のようなウィンドウが出てきて、音切りに成功したら
`output.bmson`が生成されているはずです。

エラーが出たら`in_json_template.json` に記述ミスがあります。
wavの名前が間違えてるとか、midファイルがないとか…
エラーとread.meをよく読んでみてください。
## 5. BmsONE

BMSONファイルが生成できたら、BmsONEを起動してBMSONファイルをドラッグアンドドロップで読み込みましょう

こういう画面になってたらおおむね音切りは成功です。
あとは微調整です。たぶんこれはMID2BMSONかBmsONEのバグなんですが、
wavの読み込み位置がズレてる場合があります。。
その時は ↓のgifのように、BmsONEの左上のペンマークをONにし、
==Shiftを押しながら、wavの読み込み位置がズレてる音を最初に合わせてあげます。==
==あとは、ズレてるwavの一番最初のノートをいったん消してもう一度クリックでおいてあげると波形が正しく読み込まれます(説明が難しい)==

あとたまに正しく音切りの位置がMIDIに沿って読み込まれてない場合があるので、
その時は、
https://excln.github.io/bmsone.html
ここの2.3の要領で音切りの位置をマウスでぽちぽち追加してあげればOKです。
# おわり
ざっくり以上の作業で仮置きはできました。
あとは譜面を作ったり、たぶんプレイモードが24keyになってるので7Keyにしたり、タイトルや難易度を打ち込めば完成です。
### [様子](https://twitter.com/ebideath/status/1575771896053788674)
なお、紹介した手順だと一度に最大16トラックまでしか音切りできないため、
==16トラックを超える場合は分割して生成して手動で(テキストエディタとか使って)BMSONを合体させるしかないっぽいです。==
頑張って16トラックに収めるか、テキストエディタとにらめっこするか・・
https://twitter.com/Ogu3rd/status/1574901713214984192

あと、現状==BmsONEだとBGAの設定ができないみたいなので、BMSONファイルを直接テキストエディタで開いて設定してやる必要があります==。
↓の方法を参考にしてください。
https://twitter.com/ebideath/status/1577120500253270017
BmsONEは7keyに設定すると7key以上の音を表示しないので、わざわざ14keyで開いて最後に7keyに戻す、みたいな手間が要りますね…
あと24keyと7keyはキーの順番がすこし違うみたいなので注意です
それと、BMSONプレイヤーはfbmsonplayというものを使えばuBMPlayで再生できるらしいのですが、僕の環境ではuBMPlayの起動にエラーが出まくるのでまだ試せてません。。。
https://w.atwiki.jp/laser_bm/pages/110.html
この記事がきっかけで少しでもBMSONが普及したら幸いですわー