doubledepth

Comma-Separated ProductVersions

完全に自分用備忘録。
%SystemRoot%\SysWOW64
filenameProductVersion
BWContextHandler.dll1,0,0,1
CAPICOM.DLL2,1,0,2
ctl3d32.dll2,31,0,0
FlashPlayerApp.exe32,0,0,330
FlashPlayerCPLApp.cpl32,0,0,330
icuin.dll61,1,0,0
icuuc.dll61,1,0,0
NTSVC.OCX1,0,0,1
VBPrnDlg.dll2,1,0,0
wvc.dll1,0,0,1

Microsoft EdgeHTML 18.17763検証用の仮想Windows 10Visual Basic 6.0 Runtime Plus 2.2をほぼ最小限の構成で導入し、SysWOW64配下filesのProductVersionをscriptによって一括出力した。その際に、奇妙な値が混じっていることに私は気がついた。これは運用上の理由? ただのtypo?

このFlashは先週の“Patch Tuesday”にて更新された版だが、たまたま持っていた古い版を確認したところ、そちらはFileVersionProductVersionも両方とも32,0,0,238になっていた。

(翻訳)Windowsモジュールの製品バージョンとファイルバージョンの違い」とかFileVersionInfo.ProductVersion プロパティとかVERSIONINFO resourceとかを読んだ。

FileVersion
Version number of the file?for example, "3.10" or "5.00.RC2". This string is required.
ProductVersion
Version of the product with which the file is distributed?for example, "3.10" or "5.00.RC2". This string is required.

つまりこれら、内部的には決まりがあっても、表に出る部分はただの文字列? もしそうなら、Versionを律儀にcheckするappsをほとんど見かけないのも、そりゃそうだよね……

まあ、BMS関連appsが使いうるruntime librariesに限れば、「Comma区切りかFullstop区切りの数字4組」みたいな感じで決めつけちゃっても大丈夫っぽいけど……ていうか決めつけるけど……

こんな状態でversion管理できているのが不思議。Registryを見る限りでは、「最新版のfileを登録すると、そのfileの過去版のGUIDも全部まとめて登録される」ような感じっぽいけど。わからん。

Batchy Jobs

C:\Users\IEUser%SystemRoot%\System32\systeminfo.exe /FO CSV /NH

"IE7VISTA","Microsoft® Windows Vista Enterprise ",

唐突に登録商標(R)とか商標(TM)とか出してくる。ASCII前提の小細工は死ぬ。

C:\Users\IEUser%SystemRoot%\System32\wbem\wmic.exe os get Caption /format:CSV

Node,Caption
IE7VISTA,MicrosoftR Windows Vista? Enterprise

次はどこからいつ襲ってくるんだ。

先日の続き

未練がましく調べている。環境によってはWSHを導入する選択肢が現れる。しかし導入済みならversionを問わずinstallingがskipされるから、選択肢が意味を持つOSは事実上Windows 95/NT4.0のみWSH 5.6未満環境を必ずWSH 5.6に引き上げる」なら最高なんだけど、残念ながら違う。

WSHの再頒布条件がどこかに書いてあったか探していて、WSH 5.6の公式日本語Helpをいまさら得た。この頁を初めて見た当時の私は、三種類のEXE filesのうちどれを選べばいいかさえ分からなかった。そういう右も左も分からぬ人にこそ薦めたいpackageなんだけどな〜これ。

結局WSHのlicenseはまだ見つからない。このinstallerがVisual Basic製でないのなら、VB Runtimesを再頒布するのは条項に抵触しているはずだし、大量に含まれる選択肢それぞれのlicensesを探して確認することも私には難しい。もう腹を括って諦めるしかないか。

Visual Basic 6.0 Runtime Plus 2.2

Visual Basic 6.0関連の脆弱性修正をこれほど反映してくれているthird-party packagesを私は他に知らない。uBMplayやnazobmplayが用いるDX7VB.DLL/DX8VB.DLLなんかも一発で揃ってしまう。このpackageで揃わないBMS関連Visual Basic apps動作環境なんて、VB6JP.DLLくらいでは。

備忘録:
  • 2010年代前半の脆弱性修正は網羅されている。2010年代後半の脆弱性修正は未収録とはいえ、過去10年間最も悪用例の多い『Microsoft Office』のバグ」などは対処済みなので、2004–2006年頃までの更新しか反映されていない日本のpackagesを初心者に紹介するよりは遥かに安全。
  • Windows 95–10に適用可能。自分の環境(OS Version, Processor Architecture, System Root, installed runtime/ActiveX, Registry Entries, …)を把握したうえでCommand-line Interpreterを管理者権限で起動して云々、みたいな「Casual usersを捕まえるなら後回しにしたい解説」を短絡できる。
  • 所定の位置に既に同名のfileがある場合は、そのfileのinstallingがskipされてしまう(ProductVersionの新旧やRegistry Entriesの有無など一切合切無視される)。尤もそこまで照合したうえで賢く振る舞ってくれるinstallerは、Microsoft謹製のRuntime packageくらいではある。
  • Full installationを選ぶと約300 filesがinstallされる。7-Zipでも中身を覗けないので、必要なものだけ欲しい人は手動導入不可避。でも「“:が打てない場合はShift+(日本語106/109 keyboard用のdriverが当たってない状況)」みたいな気が滅入る追記を消せたのはこいつのおかげ。
  • Uninstallすると、System Directory内にinstallされたfilesはそのまま残されるがinstall時に追加されたRegistry Entriesは一掃される。OS Built-in Runtimes(たとえばWindows ME以降のMSVBVM60.DLL)の登録は残るようなので、おおむね導入前の状態に戻せると考えてよさそう。[追記] 私は勘違いしていた。Installed filesのほとんどは、uninstall時にちゃんと一掃される。一部は残る。
  • あれ? でもWindows ME同梱のMSVBVM60.DLLってたしかSP5相当とかだから、これ更新してくれないとBMSEとか動かねんじゃね? でも元からあるやつは古くても据え置きだから、これに丸投げするのは結局むりじゃね? え、これ確認すんの糞面倒くさくね…… [追記] SP3相当らしい。細かい挙動差までは確認していないが、BMSE 1.3.8もuBMplay 1.4.4もVB6 SP3版で普通に動作した。私は“VB5”“VB6 SP5”を勘違いしていたようだ。
  • あとはinstaller自体の素性が信頼できるかどうかだが、技術者でも専門家でもない私には判断できない。英語は読めないし日本語の情報も皆無なので、非公式helpを書いていなかったら私は近づいていなかったと思う。VirusTotalの検査結果はおおむね安全であるように見える

あ、でもこのpackageがlicense的に白いか黒いか私にはわからんわ、はい終了〜あっ涙出てきた……

Virtual Machineが起動も削除もできなくなった

状況を改善できなかったので諦めて他の作業を進めた。“Windows Subsystem for Linux”を新環境に導入した。Linuxと縁がない私にはLinuxの利点が長らく分からなかったが、幾多の自信ニキがこぞって喜んでいたことにあやかり軽率に導入した結果、Command Promptから直接w3mやBashを使えるようになったのは僥倖だった。最近のWindows 10上でLynxは日本語版英語版もよくわからなくなっていただけに、助かった。って、なんかLynxのwebpagesもHTTPS化している……いつのマン

Command PromptからWSL経由でBOMつきUTF-8のBMSを列挙する:
cd /d "D:\bms\Be-Music West II"
bash
find . -type f \( -name '*.bms' -or -name '*.bme' -or -name '*.bml' -or -name '*.pms' \) -exec file {} + | grep "(with BOM)"
Command Promptからw3mする:
bash
w3m https://hitkey.nekokan.dyndns.info/bmse_help_full/

grid2secはInternet Explorer 5.01以降で動作する(IE5.0は駄目)。ということはこのscriptはWindows 3.1上でも動作するはず。30年前のOS…… 見たことさえない……

HTML Help Frequently Asked Questions

旧住所:

https://msdn.microsoft.com/ja-jp/library/ms669980(v=vs.85).aspx#i_m_using_microsoft_internet_explorer_3.x_on_a_windows_95_operating_system._when_i_try_to_look_at_the_help_for_html_help_workshop__i_don_t_see_anything._what_s_wrong_

新住所:

https://docs.microsoft.com/ja-jp/previous-versions/windows/desktop/htmlhelp/html-help-frequently-asked-questions#im-using-microsoft-internet-explorer-3x-on-a-windows-95-operating-system-when-i-try-to-look-at-the-help-for-html-help-workshop-i-dont-see-anything-whats-wrong

僕は ついてゆけるだろうか 機械処理の賢さに (二週間ください)

あっ

raindrop 0.600bのみならず、BananaBeats 20180529も、たぶんnon-ascii resourcesを参照できないっぽい。俺はなぜ勘違いを…… わざわざ修正したreadmeでさらに間違うなんて……

beatoraja 0.7.5, Bemuse 47.1, Pulsus 0.5.3は、以下のBMSONを正しく再生できた。
{
"version":"1.0.0",
"info":{
"title":"🎹",
"artist":"🎹",
"init_bpm":140,
"judge_rank":84,
"total":32,
"level":1,
"mode_hint":"beat-5k",
"resolution":2
},
"lines":[{"y":0},{"y":8},{"y":16},{"y":24}],
"sound_channels":[
{
"name":"🎹.wav",
"notes":[{"x":1,"y":8},{"x":1,"y":21}]},
{
"name":"สวัสดีค่ะ-สวัสดีครับ.wav",
"notes":[{"x":1,"y":10}]},
{
"name":"ជម្រាប សួរ។.wav",
"notes":[{"x":1,"y":12}]},
{
"name":"안녕하세요.wav",
"notes":[{"x":1,"y":14}]},
{
"name":"你好.wav",
"notes":[{"x":1,"y":16}]},
{
"name":"𠮷野家.wav",
"notes":[{"x":1,"y":17}]},
{
"name":"v_o.wav",
"notes":[{"x":1,"y":18}]},
{
"name":"v_foon.wav",
"notes":[{"x":1,"y":19}]}
]}

これらの実装ではUnicode filenameを使えそうだが、beatorajaの場合は「BMSON形式に限り」という但し書きが付く(BMS形式のencodingはいまのところANSIだけがsupportされている)。

BTS差分を微修正した

登録期間内であれば書庫を修正しても構わない、という事実に登録期限90分前に気がついた。

  • "level"の値を11から10に変更した。(“rehabilitation” [ANOTHER]から変え忘れていた)
  • "poor_events"配列内の"id":255が連続する箇所を"id":256に修正した。
  • "child\\a.wav""child/a.wav"に変更した。45078087 bytesが削減された。
  • raindrop上で“ABC”の一部の音声が鳴らない件について、readme.htmlに加筆した。

可能ならASCII-renamed resourcesを追加したかったが、実装間の差異が最大化されたほうが面白いかなと考え直し、cross-reference tableに新項目を一段足すにとどめた。

ちなみにBananaBeatsで全曲版を遊ぶと、closing songの後のbonus trackが鳴らなかったりする("duration"が加算されるはずの箇所で応答なし状態に陥るため)。

賞味期限が十数年前に切れたMEVIUS(旧称MILD SEVEN)を発掘した

かつて「BGAのススメ」なる素晴らしいBMS映像関連情報まとめがあった。当siteもBMSE非公式Helpからhttp://bga.albalunaweb.net/53.htmlhttps://albalunaweb.net/bgamemo/2197.htmlを参照していた。今はどちらもWayback Machine上にさえ残っていないが、同名のDiscord Serverを見つけたTopicsを静的に参照できる形ではなさそうなので、次回更新版では言及を避ける予定。

RAREWARESがHTTPS化していた。折しも環境移行中だった私はsoftwaresを再びdownloadした。x64版oggdropXPd V.1.9.2に複数filesを一括dropすると強制終了する。Generic版は大丈夫。

最近のWestern Digital製HDD従来の方法ではIntelliParkを無効化できない。困った。

管理アプリケーションの承認UI」に永遠に待たされる問題、周辺機器のdrivers更新時にも発症するようになってしまっていた。常時無防備体勢を検討したくなる程度には煩わしい。

10拍子に7連符を入れたsolo」という字面から即座にrhythmを想像できる? 私は無理。Indianは数学が得意という俗説もさもありなんと思わせる事例だった。

BOFoon 2005–2008のwebpagesが復活していたので、BMS Event関連pagesを書き換えた。

輪切り者のRequiem

B.I.D.C関連BMS event pagesが復活していたようだ。私は先日ようやくこのことに気がつき、BMS eventまとめpagesからの参照先をWayback Machineから変更した。また、に終了した日本Yahoo! GeoCities配下にあったいくつかのBMS event pagesの参照先を、ついさっきWayback Machineに変更した。

Wayback Machineに依存しすぎるのは申し訳ないし怖くもあるので、BMS event pagesの移転先をWaybackの外に見つけることができた場合は可能な限りそちらを参照したい。ただし例えばBMS OF FOON 2005–2008に関しては、http://myk38k.nobody.jp/bms/event/01/bofoon2005.htmlとかに普通に存在するっぽいんだが、私がさきほど確認した時点ではこのURIに到達できなかったので、いまのところ仕方なくWayback Machineを参照している。[追記] いつのまにかWayback Machineの外に到達可能になっていたので参照し直した。

君の名はペイジ

私が常用しているapplicationの新しいversionをinstallしようとしたところ、証明書の更新に失敗したらしく、installerを実行しても砂時計状態が永遠に続く。Task Managerによると「管理アプリケーションの承認UI」なる見慣れないprocessが砂時計の発生源であるようだ。このtaskを終了させると「ファンクションが間違っています。」なるerror messageが表示される。Installerを実行してもapplicationを更新できないので様子見で古い版のinstallerを実行しようとしたところ、なんとそちらまでinstallできなくなってしまっていた。

「ユーザーアカウント制御設定の変更」から通知を一切行わないガバガバ設定に一時的に変更することによって、強引にinstallすることができた。Applicationの設定は案の定吹き飛んだが、最悪の事態は避けられたのでよかった。

BMSONに関するいくつかの小技

Pulsusの自動演奏

settings.json"gameplay" key配下"assistMode"の値"Disabled""Autoplay"に変更すると、Pulsusは図表を常に自動演奏する。BMSONのViewerとして最適だと思う。

自動演奏せずに長尺曲を任意の小節から遊ぶのも楽しい。BMSONのTesterとして最適だと思う。

"D:\Pulsus\Pulsus.exe" "D:\BTS_Package\readme.bmson" --measure 1136

Keyconfigや既定のBMS folderの設定なども、settings.jsonから行える。

BmsONEのあんまり参考になりそうにない小技

BTS差分の旧全曲版をBmsONEで普通に開くと、私の環境では起動に8分を要するMaster CacheだかBuffer Cacheだかが残っているらしい状態でも、起動に4分を要する。起動直後にMemory使用量は11000 MiB程度まで膨れ上がり、やがて4060 MiB前後に収束する。あらゆる編集操作に重石が乗せられたかのように遅延が生じる。

このようなBMSONも、音声を参照できない場所に隔離して開くと、BmsONEが瞬時に起動する。BTS差分の規模になると、無音声状態で編集しても私の環境では操作に遅延が挟まるのであんまり快適にはならないが、全音声を一度に読み込むよりは確実に楽。

無音声を基本状態として、必要な音声だけを部分的に参照させる方法も有効(BTS差分しくじりメドレーのような構成なら尚更)。たとえばD:\BOFooxXV\missから、misses.bmsonおよび030” folderをDesktopにcopyし、Desktop上で030地帯をBmsONEして、元の場所に上書きする、とか。

あとあれ、LongNotesをBmsONE上でCtrl + Left-Clickや範囲選択で複数選択してから、既定では左側の一番下あたりにある「選択オブジェクト」欄の「拡張情報」入力枠に

"t": 3

とか入力すると、選択していたLongNotesが一括でHELL CHARGE NOTEに化けて気持ちいい(beatoraja拡張、いまのところbeatoraja専用)。Notesの長さも複数一括変更できたりする。

さらにさらに、BMSでは禁じ手だった「KEY音を多重定義して音量倍増」、BMSONではLayered Notesという神仕様があるのでがんがん使っていける。tudadadanだけ妙に控えめだなあ……ヨシ!みたいな

Bemuseでlocal BMS/BMSONを遊ぶ

Google ChromeやVivaldiなどのBlink系web browsersの場合:

遊びたいBMSをfolderごとBemuse選曲画面に直接dropすればよい。

たとえば(^^)を遊びたい場合は、yamajet_is_sugoi” folderを選曲画面にdropする。

Firefoxの場合:

「図表群およびそれらが参照するresources全部」を選択して、選曲画面に直接dropする。

たとえばWanted Beatを遊びたい場合、haleit_wanted” folderの中身を全部選択してまるっと選曲画面にdropする

DropしたBMSONに有効な"title_image"が定義されていれば、その画像が背景に描画される。

https://bemuse.ninja/?archive=https://www.dropbox.com/s/mhzxcmnzg9eciw1/BOFoonXV_koushien.zip?dl=1のようなURL直貼りさえ可能な現在、BMS/BMSONがBemuse上で著者の期待通りに動作するかどうかを作品公開前に検証しておくことは決して無駄にはならない、と私は思う。

beatorajaのheapを増やす

BTS差分readme.htmlにも書いたが、「beatorajaが使うことができるmemory」の割り当て量は増やすことができる。大量のresourcesを読み込んでも滑らかに遊べるようになったり多くの恩恵があるが、物理Memoryに相応の余裕が必要。試すなら自分の環境と相談して適当に指定されたい。

beatoraja-config.batbeatoraja-config.commandからbeatorajaを起動している場合は、それらをメモ帳で開き、以下の部分を適宜書き換えて保存する。-Xms8g -Xmx8gも確保できれば大安定。

java -Xms1g -Xmx4g -cp beatoraja.jar:ir/* bms.player.beatoraja.MainLoader

beatoraja.jarLaunch4jでEXE化する場合も、heapを指定できる。BTS差分のreadme.htmlを参照。

おみくじいっぱい宜候

先日の補足。BMSE Conversion Wizardと定義list複数項目移動の組み合わせは、複数のBMSesをまとめる際に便利だが、分解能制限を見誤るとrhythmが狂う。missでいうと、#IF 16|18|26|2736分音符44分音符は、BMSEやBMS List Sorterを通すと丸められてしまう。これらの分岐を私は初手でBMSONに変換して後から統合した。bmson is sound channel based.とあるように曲をがっちり固めてかかるのがBMSONなので、LEGO Bricksを組み変えるような工程(俗にいうBMSE作曲とか)はBMS形式であるうちに済ませておくほうが楽だなあと私は思った。

「ここでBPMが変わりますよ」という視覚的指標がない状況でBPM変更で翻弄する譜面はであり、ritardando中も#BPMは変えずにnotes間隔のほうを弄る“miss” #IF 70のような譜面が好ましい、と昔の私は感じていた。今はBPM変更地点はBPM Guideで視覚化できるし、見た目上の落下速度も#SCROLLで調整できるようになったのだから、ritardandoは愚直にBPMを変えていくほうがbeat indicatorも同期してよかろうと思うようになった。むしろ革命叙情のような糞譜面こそがこれらの新機能を生んだともいえるからして、糞にまみれる資質持ちは積極的に糞たらん。私にはもう何もわからん。

missしくじりメドレー

全分岐を順番に遊ぶだけの差分。Bemuse以外のBMSON対応機種で遊べるはず。私は曲変更どころか配置変更さえ一切していない(負数BPMを削っただけ)。

iBMSC/μBMSCでは定義list項目を複数選択して動かすことができる。この機能はとても便利だが、一枠動かす度に矢印iconを一回押下する必要があるので、Alt+↕を押しっぱなしにすることで連続入力できるBMS List Sorterのほうが(分解能などが対応している範囲であれば)楽。

𛁛𛂦゙𛀔𛀆𛁈𛀈

Deepesced LinkzBPM変更を#SCROLLに置き換えた差分Anzu BMS Diff Tool_deepesced_linkz_h.bmsと比較して差異が検出されないことを確認済み。元図表はscrollingの辻褄合わせに捏造された128分音符を持つので(#064)、安全に編集するならiBMSC/μBMSCが必要だ。BPM変更を解除した#SCROLL差分は128分音符を持たないので、BMSEでも安全に編集できる。

Notes patternやscrolling結果が同一であるにもかかわらず、original版のほうが#SCROLL版よりも楽しい。視界の端でrhythmicalに蠢くBPM欄もgrooveに寄与していた。私は考えを多少改めた。とはいえ#SCROLL版のほうが便利ではあり、それはBmsONE上でよりはっきりする。

#SCROLL差分のscrolling変動率はBMS版とBMSON版で共通だが、scrolling結果は異なる。beatoraja 0.7.5が"scroll_events"の小数値"rate"を無視するのが原因。これを回避すべく、私はBTS差分の旧全曲版では小数値がなくなるまで"rate"を整数倍した。#1001小節目のscrolling速度は2048 bpm相当まで跳ね上がった。これはこれで面白かったが、現在の短縮版では元の変動率に戻している。

今年もよろしくお願いします

BGAに重なるタイムテーブルが、てっきりそういうBGAなのかと思ってしまいました。

たしかにScreenShottimetable.pngみたいなBGA画像素材にも見えますね〜。"subtitle"の改行は歴としたBMSON仕様のひとつですが(“Multiple line subtitle may be possible by including a newline character \n”)、引用したmayが要請の程度としての「してもよい(may)」であるならば、あくまでも選択肢にとどまる仕様でしょうから、図表著者が確実を期すなら、comment氏が最初に解釈したように複数行textを画像化し、それを"bga"に定義して使うのが無難ではあるでしょう。

実際このtimetable文字列、beatorajadefault skin)とBemuse以外ではまともに表示されません。とはいえ私は選曲画面が崩れる副作用を予め知っていたとしても"subtitle"の画像化はしなかったと思います。可能な限り多くのresourcesを参照することに加え、可能な限り多くの仕様を活用することも今回の拙作差分の目的だったからです。まあ現在の短縮版では使用を中止した要素もありますけれども(小節数1000超え・BGA定義数1300超え・停止時間の加算など)。

日記

BMS関連

拙作BMS
bubble / hitkey
二次配布BMS
ノイズの海と鯨 / moka
PARTY TIME IN MY DREAM / HAIJI
BMSE非公式ヘルプ
Lite
Lite-online
Full
Full-online
buglist
iBMSC
Web (Japanese version)
issues
BMS差分
a­nal­gam
boléro
Ketch­up
quovadis
SELF
yellows
Do not use non-ascii filenames
雑多なメモ
bmsplayer data
bms benchmark
Secrets - Feeling Pomu 2nd
grid2sec
bmx2xxx
BMx Outliner
BMS command memo
BMS command memo (Japanese version)
BMS EVENT LITE
#RANDOM BMS list
BMS #OPTION command
BMS Bitmap test
Extended BPM
STOP Sequence
BMS Edge Cases
BMS extensions proposed by Sonorous (unofficial Japanese version)
BMS 2.0 (unofficial Japanese version)
BMS Editors
Do not use non-ascii filenames
BM98 Kikuchan Version 3.30 Revision #4.2
BMSON Checker
_wsh_bms2bmson.js

その他

HTML関連メモ
Dakuten on HTML
nest1000
EVS
Nervous Cascading
Source Han Sans test
User-Agent String
CSS Logical Properties