/
_wsh_bms2bmson.js
v0.3.0
更新履歴
- v0.3.0
- μBMSC私家版3.5.0.2以降の2OCT themeで生成されたBMSから、
BMSONへの変換に対応。 - 24
/48 keys BMSONから、 μBMSC私家版2OCT theme用のBMS形式への変換に対応。 - 不正な書式
#LNMODE 0[0-3]
の正規化。
- μBMSC私家版3.5.0.2以降の2OCT themeで生成されたBMSから、
- v0.2.8
- beatoraja 0.8.3以降(?)の拡張、
BMSON用不可視・地雷notesへの変換に対応。 - BMSON用不可視・地雷notesからBMSへの変換に対応。
- その他修正。
- 必要なImageMagickの最小versionを12箇月前の7.0.10-34から最新版7.1.0に変更。
- beatoraja 0.8.3以降(?)の拡張、
- v0.2.7
- [Qwilight v1.10.12対策]
"info"
配下の主要な情報を省略せず出力するよう変更。 - [Qwilight v1.10.12対策] 設定項目OMIT_FALSYを隠蔽。
- 必要なImageMagickの最小versionを5箇月前の7.0.10-3から最新版7.0.10-34に変更。
- Big
Number .jsのversionを9.0.0から9.0.1に変更。
- [Qwilight v1.10.12対策]
- v0.2.5
- ImageMagickのversion検証用関数がpre
Release Versionを誤判定していたのを修正。
- ImageMagickのversion検証用関数がpre
- v0.2.4
- 必要なImageMagickの最小versionを4箇月前の7.0.9-6から最新版7.0.10-3に変更。
- BMSONへの変換時に非ASCII文字をescapeするoption
( ESCAPE
)を追加。_NON _ASCII - BMSONへの変換時に改行文字を
LF
のみにするoption( USE
)を追加。_UNIX _NEWLINE - 解説頁を
https://
に移した。hitkey .nekokan .dyndns .info /bmson /_wsh _bms2bmson/
- v0.2.3
#LNTYPE 2
を用いたBMSを変換できなくなっていたのを修正した。 #999
を用いたBMSを変換すると無限loopに陥っていたのを修正した。 - 必要なImageMagickの最小versionを一年前の7.0.8-14から最新版7.0.9-6に変更。
- [v0.2.2] Uploadし忘れていたため欠番。
Big Number .js のversionを7.2.1から9.0.0に変更。
- v0.2.1
- BMSON形式からBMS形式へ変換する際、
BMS仕様に準拠するLAYER画像を出力する。 - 一部のBMS-on定義番号の置換に失敗していたbugを修正した。
"bga"
関連の "id"
番号を詰めてから変換するようにした。 "lines":[]
を「小節線のないBMS」に変換できるよう修正した。 - 変換後のBMSのData文の長さが、
LR2の文字列長さ上限(102400)を超えないようにした。
- BMSON形式からBMS形式へ変換する際、
- v0.2.0
- BMSON形式からBMS形式への、
(BMS-on記法による擬似的な)変換をsupportした。 - 定義されたBMS-onが別の
#WAV
定義に上書きされると変になるのを修正した。 - いくつかのあまり知られていないBMS tagsをsupportした。値を右から左に渡すだけ。
- BMSON形式からBMS形式への、
- v0.1.11
- v0.1.10
#EXBMP
に部分的に対応した。当面はalpha channelを含まないBMP画像のみ変換する。 (例) #DIFFICULTY 4
のような、余計な空白を含む値に対応しきれていなかった。直した。 - Notes
/Eventsが出尽くした後も、長さ一拍未満の小節が続く間は図表を継続するようにした。 - COLONで区切られたHEADER文や、
SPACEで区切られたDATA文も、受け入れるようにした。
- v0.1.9
#EXRANK ddd
を #DEFEXRANK ddd
と同一視するようにした。 (本来の #EXRANKzz ddd
とは異なる)#BPM 0
を "init_bpm":0
に変換してしまっていたbugを修正した。 #TOTAL 0
を "total":0
に変換できなかったbugを修正した。 #DIFFICULTY
の打ち間違いを(ある程度)吸収するようにした。
- v0.1.8-2
var LIMITED
_RESOLUTION = 3; のとき、 "resolution"
を最小化するようにした。 - [v0.1.8-2] 前述の処理が酷くbuggyだったので一時的に無効化した。
- 値が
0
や負数の#STOP
sequenceを従来は無視していたが、今回から変換するようにした。
- v0.1.7
#BMP
定義があるが#xxx0
[467A] がない図表を変換しようとすると強制終了する問題を修正。 - FULL STOPから始まり数字が後続する文字列を、有効な小数値として解釈するように変更。
- 図表基底名の重複に対処するために、出力される図表名に元の拡張子も含めるように変更。
#GENRE string
を複数行に複数回記述する、異なる値の多重定義を受理するように変更。
- v0.1.6
#BMP00
/ #BGA00
が存在する図表で、 bga
関連id
の並べ替えが失敗していたbugを修正。- Image
Magick 7以降で不要になった convert
commandをやめた。magick
のみを使う。
- v0.1.5
#EXRANK
と#CHANGEOPTION
の変換後の"y"
座標が再計算されなかったbugを修正。 option
_events [n] .notes を option
_events [n] .triggers に改称した。 - 拡張子
*.m4v
も動画とみなすようにした。
- v0.1.4
- 必要なImage
Magickの最小versionを一年前の7.0.7-11から最新版7.0.8-14に変更。 #CHANGE
も変換するようにした。OPTIONzz
- 必要なImage
- v0.1.3
#TEXTzz
・#EXRANKzz
も変換するようにした。
- v0.1.2
#BGA
の不正な値を受け入れていたbugを修正。- 出力されるBMSONの
bga
関連id
をsortするように修正。 - 出力されるBMSONの
bga
に余計なkeysが生えていたbugを修正。Header #MOVIE
と#VIDEOFILE
にごく大雑把に対応(bga
の_events "y":0
が空いていれば挿入)。- 「同じ内容のBGA関連notesが連続する場合、後続分を休符に置き換える処理」をやめた。
- v0.1.1
#BGA
関連処理を多少改善した。#BMP
の多重定義を検出する処理が穴だらけだったのを改善した。
- v0.1.0
#BGAzz
の変換に対応した(つもり)。 (例) #BMP00
が変換されていなかったbugを修正。 - PNG画像を
生成出力しないようにもできる設定を追加( var GENERATE
)。_PNGS = false;
- v0.0.17
- Long
Notesの入れ子が現れうるbugを修正。 - Notesを一個も配置していない音声定義は変換しないように修正。
- Long
- v0.0.16
#LNOBJ
(複数定義可)の参照先に音声が定義済みなら BMSON拡張定義 "up"
に変換。 (例)
- v0.0.15
- 指定された
OUTPUT
_FOLDER が存在しない場合に異常終了していたv0.0.14のbugを修正。
- 指定された
- v0.0.14
- BMS-on記法において、自己参照は波形始端とみなすように修正。
- 各設定項目のPath区切り文字として、
U+002F ‘SOLIDUS’ も使えるように修正。
- v0.0.13
- BMS-on記法において、各
#WAV
の最初のnoteが継続指示なら波形始端とみなすように修正。 - 基底名が一文字の図表(“tit”
の 0.bmsなど)が変換対象として列挙されなかったbugを修正。 - 始端と終端の定義番号が異なる
#nnn[51-69]
型Long Notesを、 BMSON拡張定義 "up"
に変換。 - 「便宜上の192分音符」を仮定しない設定を追加。
( var LIMITED_RESOLUTION = 3;
)
- BMS-on記法において、各
- v0.0.12
- v0.0.11
- BMS-on記法の変換をsupport。
(変換test用samples)
- BMS-on記法の変換をsupport。
- v0.0.10
#SCROLL
/ #SPEED
/ #EXT
の変換をsupport。 - Scrolling関連命令に不正な値が指定される状況をちょっぴり想定し、ちょっぴり対処。
- v0.0.9
#RANK
と #TOTAL
の誤変換を修正。 - BigNumber.js v4.1.0 → v7.2.1
- v0.0.8
#STP
(bemaniaDX書式)を実装。
- v0.0.7
#LNTYPE 2
(MGQ書式)を実装。
- v0.0.6
- 重複するBGM notesが変換されないBugを修正。
- v0.0.5
- File
Pathの定義を変換する際に、 File Path文字列の加工を誤っていたのを修正。
- File
- v0.0.4
#xxx5n
の行に #LNOBJ
の番号が現れると強制終了するBugを修正。 - HDX
/IIDXvのC-like Comment Syntaxを実装。変数 HDX
_COMMENT を追加。
- v0.0.3
- Installer版Image
Magickに対応できていなかったのを修正。 - 一度以上参照される未定義
#WAV
に任意名を設定できる変数 BLANK
_AUDIO を追加。
- Installer版Image
- v0.0.2
- Long
Notesが変換されないBugを修正。 - 一部の画像がPulsusなどで警告される現象を、
Image MagickにPNG32を強制して回避。 #OPTION charatbeat
HDX :LONG MODE n も、 beatoraja用BMSON key "t"
に反映するよう変更。
- Long
- v0.0.1
- 初公開。
概要
BMS形式の図表群をBMSON形式に一括変換する、
G2R2014
動作環境
- Windows Vista以降
- Image
Magick 7.1.0以降(Portable版を推奨)
Installer版Image%Path%
特徴
- BMS仕様のBack
Ground Animationを、 BMSONの仕様に適合するように画像filesごと変換できる。 (元の画像には影響を及ぼさない。新たに画像を生成して元々のBMS folderに追加する形) - 変換対象図表のText Encodingを個別に指定できる。
- 倍精度浮動小数点数で表現しきれない値も正しく変換できる。
(あんまり意味ないけど) - BMSON仕様に無い不可視notesや地雷notes
の情報も変換して残す。後で何かに使えるかもできる。beatoraja 0.8.3以降で演奏可能。
使い方
- _wsh
_bms2bmson .js .txtを「名前をつけて保存」する。 - 保存したText fileを、メモ帳などのText Editorで開く。
- 先頭の
“Config” 区間内にある大文字の変数の値を、適宜設定する。詳細は別項を参照。 - 保存してText Editorを閉じる。
- このText fileの名前を変更する。名前末尾の
.txt を削除し、拡張子 .js にする。 - 拡張子
.js に変更したText fileを、 double-clickなどで実行する。 - 変換が完了したら、
Enterを押してConsoleを閉じる。 - 保存先として指定したfolderに、変換済みfilesが出力される。出力されたBMSON filesおよびPNG files
(あれば)を、元のfolderに全てcopyする。保存先folderの中身ごと「切り取り→上書き」が楽。
注意点
設定はScript fileをメモ帳などで直接編集することによってしか行えません。
Drag-and-Dropには対応していません。 File pathはJava
Scriptの文字列として指定する必要があります。 Windowsのpath区切り文字 “ \
”は、引用符の中では二重に書かなければなりませんので、ご注意ください。たとえば: var TARGET
_FOLDER = "C: \\Users \\IRUser \\Desktop \\BMS"; “
\
”のかわりに “ /
”を用いても構いません。 var OUTPUT
_FOLDER = "C: /Users /IRUser /Desktop /BMSON"; #RANDOM
や #SWITCH
にはいまのところ対応していません。分岐を持つ図表は変換せずskipします。 BOFU2017一括変換中に無視される図表が多くて申し訳なくなったので、今後対応するかも。 図表fileのHashの算出に
certutil .exe を用いています。 Windows 7以降ではSHA-256が、 Windows VistaではSHA-1が算出され、変換完了後に Log .txt に記録されます。 変換後の分解能を制限したはずであるにもかかわらず、
LIMITED
_RESOLUTION の制限を超える "resolution"
の値が出力される場合があります。これは「値をこれ以上丸めると、同時押しになるべきでないnotesが同時押しに化けてしまう」という状態を抑止した結果かもしれません。かわりにBmsONEなどで変換してみてください。 「透過用の画像とは別に、元の非透過画像がそのままBGA BASEとして使われる状況」もあるので、変換前の画像は消さないでください。
File名が
“ .
”(FULL STOP)から始まる図表は読み込みません。 Mid2BMSの中間filesや、 Mac OS特有のResource Forkなどがこれに該当します。これらは時々BMS書庫に同梱されています。 [v0.2.8] BMSON形式の地雷notesをBMS形式に変換する場合、
"mine_channels"
の最初の要素の "name"
値が #WAV00
として採用されます。それ以外の要素の"name"
値は捨てられますが、地雷notes自体はすべて変換されます。 BMSON形式へ変換する際の書式はμBMSC私家版v3.5.0.6に倣ったつもりです。
beatorajaやμBMSCの仕様が今後変更された場合、この変換器も可能な限り追従する予定です。
Configの詳細
var TARGET _FOLDER = "D: \\bms \\BOFU2017";
変換対象BMS群のroot folderをfull pathで指定する。\
”\\
”
var OUTPUT _FOLDER = "D: \\bms \\BOFU2017toBMSON";
変換されたfilesが出力されるべき場所、つまり保存先のroot folderをfull pathで指定する。指定したPathにfolderが存在しない場合は、変換実行時に自動的に作成される。
指定したPathにfolderが既に存在し、その配下に変換済みBMSON
var IMAGE _MAGICK = "C: \\Image Magick-7.1.0-portable-Q16-x64";
Image
var DEFAULT _CHARSET = "Shift_JIS";
読み込み時にUnicode Byte-Order-Markが見つからなかった図表のうち、変数FORCE
“Code Page Identifiers”"HKEY
var FORCE _CHARSETS = {"Chart Path": "Encoding Name", …};
TARGET
配下に「個別に文字符号化方式を指定したい図表」がもしあれば、そのpathとEncoding名をCOLONで組にして指定することができる。複数の組をCOMMAで区切って列挙できる。
Full path、またはTARGET
から子方向へのpath」が有効。後者の場合、TARGET
"Chart Path"
var LIMITED _RESOLUTION = 3;
Rhythmの表現精度を、0
から3
までの整数値で指定する。
0
:- 無制限。最高精度。
9007199254740991
を超える値は引用符で括られる。 1
:- beatorajaが解釈できる範囲内に値を丸める(
2147483647
以下)。 2
:- BmsONEが解釈できる範囲内に値を丸める(
24000
以下)。 3
:- [v0.0.13]
「便宜上の192分音符」を仮定しない(結果、既定値 240
を下回る可能性も)。
精度が足りずに微細なずれが同時押しに化けうる場合は、それを抑止するために変換後の"resolution"
2
vs. “Lots Of Spices [Abusive]”)。
参考までに、1.7e±308
。4294967295
。
var OMIT _FALSY = true;
var OMIT _FALSY = true;
[v0.2.7] この設定は隠された。
true
"sound
"c":
"l":
"x":
。これらの各key-value pairsは出力されない。"y":0
false
false
に変更されたい。
var LINIFY = false;
true
var BLANK _AUDIO = "___undefined___";
[v0.0.3] BMS図表内で一度以上参照されている#WAV
"name"
値は空文字列(""
)か、"CON"
var HDX _COMMENT = false;
[v0.0.4] true
var GENERATE _PNGS = true;
[v0.1.0] false
false
var BMSON _TO _BMS = false;
[v0.2.0] true
var ESCAPE_NON_ASCII = false;
[v0.2.4] true
var USE _UNIX _NEWLINE = false;
[v0.2.4] true
CRLF
のかわりに、LF
を使う。