#WAV
, #BMP
, #BPM
, #STOP
を各01
-ZZ
まで扱える
#WAV00
も一応変換されるが、肝心の#xxx[DE]x
が無視されるので、地雷は事実上非対応
- 不可視objects (
#xxx[31-49]
)は可視notesに変換されるので、変換前に除去しておく
#RANDOM
分岐が存在する図表を変換すると、強制終了する
- 'SPACE' (U+0020) indented channels (
#xxxyy:…
)を持つ図表を変換すると、強制終了する
- LongNotesは
#xxx[51-69]
も#LNOBJ
も始点側が可視notesに変換され、終点側は捨てられる
- 分解能は「
240
/拍」。「BMSEが表現できないrhythm」は変換時に丸められうる
- 非ASCIIの文字を扱う場合は、変換対象の図表をUTF-8 encodingでcopyしておく
- 変換後に
"judge_rank"
や"total"
を編集する(基本値100
)
- 9k/10k/14k図表は、変換後に
"x"
と"mode_hint"
を編集する
#STOP
objectsが存在する場合、変換後に"duration"
を編集する(通常は値を5倍に)
停止時間はBMSでは192分音符単位でしたが、BMSONでは"resolution"
の値に依存します。
(BMSON "resolution": 240
)
note | BMS | BMSON | LRS |
4 | 48 | 240 | 480 |
5 | N/A | 192 | 384 |
8 | 24 | 120 | 240 |
16 | 12 | 60 | 120 |
32 | 6 | 30 | 60 |
64 | 3 | 15 | 30 |
128 | N/A | N/A | 15 |
192 | 1 | 5 | 10 |
BMSON仕様によれば停止時間は分けて書けますが、それを解釈できる実装は現在Bemuseのみです。分割記述なしなら、Bemuseに加えてbeatorajaとPulsusも、図表著者の期待通りに"stop_events"
を解釈してくれます。raindropとBananaBeatsの"stop_events"
解釈はよくわかりません。
変換後のBMSON図表の"resolution"
を変更すれば、「BMSEで表現できないrhythm」も編集することは可能です。たとえば128分連打を「192分音符と共存可能な形で」表現するなら、分解能に480
を指定し、"y"
座標を15
刻みで加算しつつnotesを書き込みます:
{"info":{"init_bpm":140,"judge_rank":100,"mode_hint":"beat-7k",
"resolution":480,"title":"128th note","total":150},"lines":[{"y":0},{"y":1920},{"y":3840},{"y":5760}],"sound_channels":[{"name":"kick.wav","notes":[{"x":1,"y":1920},{"x":5,"y":2880},{"x":1,"y":3360},{"x":3,"y":3375},{"x":5,"y":3390},{"x":7,"y":3405},{"x":1,"y":3420},{"x":3,"y":3435},{"x":5,"y":3450},{"x":7,"y":3465},{"x":1,"y":3480},{"x":3,"y":3495},{"x":5,"y":3510},{"x":7,"y":3525},{"x":1,"y":3540},{"x":3,"y":3555},{"x":5,"y":3570},{"x":7,"y":3585},{"x":1,"y":3600},{"x":3,"y":3615},{"x":5,"y":3630},{"x":7,"y":3645},{"x":1,"y":3660},{"x":3,"y":3675},{"x":5,"y":3690},{"x":7,"y":3705},{"x":1,"y":3720},{"x":3,"y":3735},{"x":5,"y":3750},{"x":7,"y":3765},{"x":1,"y":3780},{"x":3,"y":3795},{"x":5,"y":3810},{"x":7,"y":3825},{"x":1,"y":3840},{"x":5,"y":4320}]},{"name":"kick.wav","notes":[{"x":3,"y":2400},{"x":7,"y":3120},{"x":3,"y":4080},{"x":7,"y":4560}]}],"version":"1.0.0"}
BmsONEは現時点では、128分音符や、"stop_events"
、"bga_events"
、"layer_events"
、"poor_events"
を編集できません。それら非対応のrhythmや、非対応eventsの"y"
座標や"duration"
値は、BmsONE上で分解能を変更したとき変更に追従しないので、自分で書き換える必要があります。