","version":"1.0.0","info":{"init_bpm":120,"level":3,"resolution":240},"lines":[{"y":0},{"y":960},{"y":1920}],"sound_channels":[{"name":"kick.wav","notes":[]}]}「KEYとBGMで同じ音が同時に鳴る場合はBGM側を破棄する」というBMSON仕様がある。これを満たすための処理を微妙に間違えていた。修正後は正しく"notes":[{"y":960}]に変換される。v0.0.5画像自体の変換はうまくいっていたが、出力されるBMSON図表の画像定義関連に致命的なBugがあった。FilePathの定義を変換する際に、FilePath文字列の加工を誤っていた。このBugを修正した。FileNameのみを定義している大多数のBMS図表には、このBugの影響はありません。eventsでは稀に相対pathを定義している図表が存在しますが、それらがもし画像形式のLAYERを用いていたなら、v0.0.4までの変換器では誤変換される可能性があります。child/title.bmp#00104:01#00107:0002#00204:03#00207:0704#00304:05#00307:0706↑こういうPathの定義が、v0.0.4までは↓こんなんなっちゃってたので、"bga":{"bga_header":[{"id":1,"name":"..\\cyc-foonmain_00000.bmp"},{"id":2,"name":"___alpha_layer_../title.png"},{"id":3,"name":"./cyc-foonmain_00000.bmp"},{"id":4,"name":"___alpha_layer_.\\title.png"},{"id":5,"name":"child/cyc-foonmain_00000.bmp"},{"id":6,"name":"___alpha_layer_child/title.png"},{"id":7,"name":"___undefined_alpha.png"}],v0.0.5以降ではちゃんと↓こうなるように修正した。"bga":{"bga_header":[{"id":1,"name":"..\\cyc-foonmain_00000.bmp"},{"id":2,"name":"..\\___alpha_layer_title.png"},{"id":3,"name":"./cyc-foonmain_00000.bmp"},{"id":4,"name":"___alpha_layer_title.png"},{"id":5,"name":"child/cyc-foonmain_00000.bmp"},{"id":6,"name":"child\\___alpha_layer_title.png"},{"id":7,"name":"___undefined_alpha.png"}],"bga_events":[...],"layer_events":[...]},変換Logから抜粋する通り、上位階層への参照はBMSON仕様違反なので、画像を変換しない。"___undefined_alpha.png"],以下のような定義は、BMSONの仕様に違反する。BMSON図表内のPath文字列は、必要なら「BMSに定義されている通りの位置を参照するように」変換されるが、BMSONとしては正しくない。正しさが保証されないpathを食わされたまま頑張りたくないので、画像そのものは変換しない。/D/bms/title.bmpBMSONの仕様に違反するかどうか判断がつかなかったが、Windows固有の「Drive名つき相対path」も、すくなくともこの変換器では違反として扱う。必要ならBMSON図表内文字列のみ変換される。Pathの書き間違いのように見える#BMPz4定義は、「もしこのBMS図表がD-Drive上に存在するなら、BMS図表と同じfolder内にあるかもしれないtitle.bmpが参照される」という意味であるはずだが、自信がない。pathの検証処理はかなり楽な部類だと思う。pathまわりは私には難しすぎる。ファイルやフォルダ作ってみたよ!」とか最近知ってがっくりきたし。Syntaxの実装がうまくいかない」と書いたが、普通にうまくいっていた。私が眠すぎて勘違いしていただけだった。残りはコメントHDX/IIDXvにおいて、前述の#TITLEの値は以下の文字列としてparseされる。codeに変換されていれば、正しく変換されている。*/ムー",ただ、このHDXの特徴は影響範囲が広すぎて難しい。すくなくとも変換時には使いどころなさそう。a//b\\\\c/../\..\/.\../..\\\title.bmp”は、“../title.bmp”ではなく、“a”を探す。"のNormal図表で強制終了するBugを修正した。04#04154:04この例はLongNoteとして解釈されるほうがよさそうだったのでそのようにしたが、各laneの最初のNoteが「#xxx5n、かつ突然の#LNOBJ」だった場合などについて真剣に考慮してはいない。0123なら値23と見做すように変更した。Syntaxを実装した。変数HDX_COMMENTから真偽値で有効無効を切り替える。私の理解した通りに実装したつもりだが、明示的文字列がWeb版の構文解析結果と異なり、うまくいかなかった。果てしなく眠いので修正は後日に。v0.0.3ImageMagickについて「Portable版でも可」と書いたが、v0.0.2まではむしろPortable版しか使えなかった。v0.0.3からはInstaller版にも対応した。Installer版を使用されていた方、申し訳ございません。以下にConfigの詳細を書いた。JavaScriptの文字列値なので、WindowsのPath区切り文字“\”は引用符内では二重に記述する必要がある(“\\”)。面倒ならSLASH区切りでも大丈夫。SLASH区切りではうまくいかない状況があります。常に“\\”を使ってください。指定したPathにfolderが存在しない場合は、変換実行時に自動的に作成される。filesが既に存在する場合、変換実行時に前回の出力済みfilesを確認なく上書きする。fileの位置」ではなく「Folderの位置」。ImageMagickをinstallした場所によっては、Scriptを管理者権限で実行する必要があるかも。Byte-Order-Markが見つからなかった図表のうち、変数FORCE_CHARSETS内で文字符号化方式が指定されていない図表は、ここに指定したEncodingで読み込まれる。Name”を指定できる。"HKEY_CLASSES_ROOT\\MIME\\Database\\Charset"配下SubKeysを参照されたい。...};TARGET_FOLDER配下に「個別に文字符号化方式を指定したい図表」がもしあれば、そのpathとEncoding名をCOLONで組にして指定することができる。複数の組をCOMMAで区切って列挙できる。path、または「TARGET_FOLDERから子方向へのpath」が有効。pathが構築される。指定された位置に図表が存在すれば、Pathと組にされたEncodingで読み込む。指定された位置に図表が存在しないなら読み込みをskipする。3;Rhythmの表現精度を、0から3までの整数値で指定する。9007199254740991を超える値は引用符で括られる。1:beatorajaが解釈できる範囲内に値を丸める(2147483647以下)。2:BmsONEが解釈できる範囲内に値を丸める(24000以下)。3:[v0.0.13]「便宜上の192分音符」を仮定しない(結果、既定値240を下回る可能性も)。[Abusive]”)。BmsONEならうまく変換できる可能性もあるので、そちらをお試しください。参考までに、Bemuse/raindropの上限は1.7e±308。BMSON仕様やPulsusの上限は4294967295。true;trueなら、「省略してもしなくても大部分の実装で解釈が変わらない値」を省略する。具体的には"sound_channels"配下の、"c":false、"l":0、および"x":0。pairsは出力されない。("y":0を省略すると実装によって解釈が異なるので、これは省略しない。pairを省略しない。CircularRhythmをsupportしたい場合や、BMSON仕様を遵守したい場合は、falseに変更されたい。codeを改行しない。BMS図表内で一度以上参照されている#WAV番号のitemが未定義である場合、BMSONへの変換時にこの変数の文字列値が"name"の値として使われる。name文字列を指定する。"CON"とか書くと叱られる。とある実装のとあるBugを回避するために追加したつもりだったけど、いつのまにか直ってた?(気づいてなかった)。不要なoptionではあるけど、せっかくなので残しておく。Commentを解釈する。falseなら、PNG画像filesを実際には生成せず、図表上での定義内容の変換のみにとどめる。filesを検索し、BMS形式へ変換する。v0.0.2LongNotesが変換されないBugを修正した。原因は「文字列値の一文字目」の修正漏れだった。一部の画像がPulsusで警告される現象を、ImageMagickにPNG32を強制することで回避した。"t"に反映するよう変更した。BMSON変換例もLongNotesが変換されていなかったので修正した。path、または上位階層を通過するpath」は、おそらくBMSON仕様に違反するはず。今のところ、変換時に実際に参照する必要がある#BMP[00-zz]の画像files以外は素通しだが、本来なら音声などもpathを正規化・検証する必要があるかもしれない。2を用いたBMSを変換できなくなっていたのを修正した。#999を用いたBMSを変換すると無限loopに陥っていたのを修正した。必要なImageMagickの最小versionを一年前の7.0.8-14から最新版7.0.9-6に変更。Uploadし忘れていたため欠番。BigNumber.jsのversionを7.2.1から9.0.0に変更。v0.2.1BMSON形式からBMS形式へ変換する際、BMS仕様に準拠するLAYER画像を出力する。一部のBMS-on定義番号の置換に失敗していたbugを修正した。"bga"関連の"id"番号を詰めてから変換するようにした。"lines":[]を「小節線のないBMS」に変換できるよう修正した。変換後のBMSのData文の長さが、LR2の文字列長さ上限(102400)を超えないようにした。v0.2.0BMSON形式からBMS形式への、(BMS-on記法による擬似的な)変換をsupportした。定義されたBMS-onが別の#WAV定義に上書きされると変になるのを修正した。tagsをsupportした。値を右から左に渡すだけ。v0.1.11#ARGBおよび透過channels(#xxx0B–0E)の変換をsupportした。(例)LAYERとして#BGAを切り出す際に、canvasを透過し忘れていた。このbugを修正した。前述のbugの修正に伴い、v0.1.10の例示BMSに、出力画像確認用のHTML文書を追加した。v0.1.10#EXBMPに部分的に対応した。channelを含まないBMP画像のみ変換する。4のような、余計な空白を含む値に対応しきれていなかった。Notes/Eventsが出尽くした後も、長さ一拍未満の小節が続く間は図表を継続するようにした。COLONで区切られたHEADER文や、SPACEで区切られたDATA文も、受け入れるようにした。dddと同一視するようにした。0を"init_bpm":0に変換してしまっていたbugを修正した。0を"total":0に変換できなかったbugを修正した。#DIFFICULTYの打ち間違いを(ある程度)吸収するようにした。3;のとき、"resolution"を最小化するようにした。前述の処理が酷くbuggyだったので一時的に無効化した。sequenceを従来は無視していたが、今回から変換するようにした。v0.1.7#BMP定義があるが#xxx0[467A]がない図表を変換しようとすると強制終了する問題を修正。STOPから始まり数字が後続する文字列を、有効な小数値として解釈するように変更。図表基底名の重複に対処するために、出力される図表名に元の拡張子も含めるように変更。stringを複数行に複数回記述する、異なる値の多重定義を受理するように変更。v0.1.6#BMP00/#BGA00が存在する図表で、bga関連idの並べ替えが失敗していたbugを修正。commandをやめた。magickのみを使う。v0.1.5#EXRANKと#CHANGEOPTIONの変換後の"y"座標が再計算されなかったbugを修正。option_events[n].notesをoption_events[n].triggersに改称した。拡張子*.m4vも動画とみなすようにした。v0.1.4必要なImageMagickの最小versionを一年前の7.0.7-11から最新版7.0.8-14に変更。#CHANGEOPTIONzzも変換するようにした。v0.1.3#TEXTzz・#EXRANKzzも変換するようにした。v0.1.2#BGAの不正な値を受け入れていたbugを修正。出力されるBMSONのbga関連idをsortするように修正。出力されるBMSONのbgaHeaderに余計なkeysが生えていたbugを修正。#MOVIEと#VIDEOFILEにごく大雑把に対応(bga_eventsの"y":0が空いていれば挿入)。「同じ内容のBGA関連notesが連続する場合、後続分を休符に置き換える処理」をやめた。v0.1.1#BGA関連処理を多少改善した。#BMPの多重定義を検出する処理が穴だらけだったのを改善した。v0.1.0#BGAzzの変換に対応した(つもり)。(例)#BMP00が変換されていなかったbugを修正。v0.0.17LongNotesの入れ子が現れうるbugを修正。Notesを一個も配置していない音声定義は変換しないように修正。v0.0.16#LNOBJ(複数定義可)の参照先に音声が定義済みならBMSON拡張定義"up"に変換。v0.0.15指定されたOUTPUT_FOLDERが存在しない場合に異常終了していたv0.0.14のbugを修正。C-yy)は波形始端とみなすように修正。‘SOLIDUS’も使えるように修正。v0.0.13BMS-on記法において、各#WAVの最初のnoteが継続指示("c":true)なら波形始端("c":false)とみなすように修正。基底名が一文字の図表(“tit”の0.bmsなど)が変換対象として列挙されなかったbugを修正。始端と終端の定義番号が異なる#nnn[51-69]型LongNotesを、BMSON拡張定義"up"に変換。「便宜上の192分音符」を仮定しない設定を追加。v0.0.12BMS-on記法において、波形始端("c":false)に競合する継続指示("c":true)は無視するように修正。C-yy)と同名のfile(C-yy)が実際に存在する場合は波形始端とみなすように修正。GrooveGauge増加率を、変換前と変換後で可能な限り一致させるように修正。longでない#PLAYLEVEL値を"level_string"に隔離するように修正。v0.0.11BMS-on記法の変換をsupport。v0.0.10#SCROLL/#SPEED/#EXTの変換をsupport。Scrolling関連命令に不正な値が指定される状況をちょっぴり想定し、ちょっぴり対処。v0.0.9#RANKと#TOTALの誤変換を修正。v0.0.8#STP(bemaniaDX書式)を実装。2(MGQ書式)を実装。notesが変換されないBugを修正。v0.0.5FilePathの定義を変換する際に、FilePath文字列の加工を誤っていたのを修正。v0.0.4#xxx5nの行に#LNOBJの番号が現れると強制終了するBugを修正。変数HDX_COMMENTを追加。される未定義#WAVに任意名を設定できる変数BLANK_AUDIOを追加。v0.0.2LongNotesが変換されないBugを修正。一部の画像がPulsusなどで警告される現象を、ImageMagickにPNG32を強制して回避。"t"に反映するよう変更。