doubledepth

これが本年最後

毎度、大変お世話になっております。Phleguratoneです。

この度は、長尺BMSイベントにご参加いただきありがとうございます!

まさか、前にKOBAKOであったような「パッケージ内の各BMSを繋げてMix BMSにする」というアイディアが当イベントで実現されるとは思ってもいませんでした。

(・既存のパッケージをDL済みの場合、改めてパッケージをDL or Copyする必要がある

 ・サブタイトル欄にタイムテーブルが書かれてあるせいでbeatorajaでプレイした場合、選曲画面がはみ出た文字で埋まってしまう

 の2点が気になりましたが……

こちらこそ毎度お世話になっております! そして長尺BMS event開催ありがとうございました! KOBAKOのAll Mix差分はばらばらなBPMを巧く繋ぐなあと感嘆しきり。KOBAKO本体はもうDownloadできないのかな。ご指摘の二点は普段選曲画面を使わないDrag-Drop派の私には完全に盲点でした、連呼されるマンコンバッでlistを汚してしまったことをお詫び申し上げます……

貴サイトの方も毎週チェックしてはいるのですが、

特に11月のMetric modulationの下りとか面白く読ませていただきました。

の記事で、Lemna氏の存在を知れたのも有り難かったです(余りに気に入ったのでBandcampで全音源購入してしまいました)

余力があれば、Web拍手で何個かMetric modulationが使われてる曲とか紹介出来たらとは考えております。

それでは、良いお年を!

音楽通の氏に当日記を面白がっていただけたというのは面映ゆいものがあります。Lemna氏の曲は虚心にものを数える間だけ救われてる私にぶっ刺さったので皆さんにも刺さるとよいなと思いました。Web拍手で教えてくださるというのは正直めっっっちゃ心惹かれるご提案ですけれども、Phlegura氏がnoteなどにまとめられた記事にも私は興味があります! というわけで(?)良いお年を!

BMX2WAV Searcher

7月以降のSearcherの更新内容を全部見落としていたことに私は気がついた(すみません)。格段に便利になっていた。まず#PREVIEWがsupportされた。これは元々はraindrop拡張preview関連tagsのひとつだったが、beatorajaは#PREVIEWのみを採用し、以降それが普及しつつあるようだ。ちょっとややこしい振る舞いとしてSong preview autodetects audio files now.というのがある。

#PREVIEW (音源ファイルパス)

選曲時に対象の楽曲バーにカーソルを合わせることで自動演奏されるプレビュー音源を指定します。指定されていない場合、フォルダ内にあるpreview(*).wav(ogg)をプレビュー音源として自動指定します。

自動検出は既存のBMS fileのhashを変えずに#PREVIEWに対応できるようにするための措置だろうか。そんなところまでSearcherが面倒を見なくても大丈夫な気はするし、実際Searcherはそこまではお世話しない。#PREVIEW preview.oggに対して音源がpreview.wavだとSearcherが強制終了するという問題はあるにせよ、ちゃんとpreview音声が鳴って興奮した。ありがとうございました。私はBMSEの#WAV定義listのような「照準即演奏」型をもともとは想像していたが、今思うに、それはうざい。

あと、directoryごとにseparatorが挿入されるようになって、これがわりと良かった。BOFUやBMS衆議院選のように各作品がteam分けされている場合も、teamごとにseparatorが挟まる。

あと、特に勉強しなくても猿真似できるsample scriptsが用意されていて良かった。例:

bmx2wav_seacher.class.nutbmx2wav_seacher.nutのcharsetは、ANSI(日本語Windows環境の場合、CP932Shift_JIS)じゃないと駄目っぽい。ここではbmx2wav_seacher.nutを編集する。

EXE化済みbeatorajaでAUTOPLAY:
  local beatoraja = {
    name = "beatoraja",
    function execute( target_entry, entries ) {
      if ( target_entry.is_dummy ) {
        return;
      }
      ::BMX2WAV.create_process(
        "D:\\beatoraja0.7.5\\beatoraja.exe",
        "-a \"" + target_entry.path + "\"",
        "D:\\beatoraja0.7.5"
      );
    }
  };

これを実行した場合、当環境では実際のcommand-lineは以下のような感じになる:

"C:\Program Files\Java\jre1.8.0_231\bin\javaw.exe" -Xms4096m -Xmx8192m -jar "D:\beatoraja0.7.5\beatoraja.exe" -a "D:\b m s\fo on as so.bms"

create_process()の第三引数は「既定のディレクトリ」らしい。よくわからないがこれはたぶんWindowsのshortcut.lnkとかのPropertyでいうところの「作業フォルダー」というやつじゃないかしら。AUTOPLAYだとあんまり意味ないけど、普通に手動演奏してscoreを残したい場合とかだと、ここの値がnullのままじゃうまくいかないような気がする。よくわからんけど。

Meryで開く:
  local mery = {
    name = "Mery",
    function execute( target_entry, entries ) {
      if ( target_entry.is_dummy ) {
        return;
      }
      ::BMX2WAV.create_process(
        "D:\\apps\\Mery\\Mery.exe",
        target_entry.path,
        null
      );
    }
  };
BMSのHashを得る(Windows 7以降で有効):
  local get_sha256 = {
    name = "SHA256",
    function execute( target_entry, entries ) {
      if ( target_entry.is_dummy ) {
        return;
      }
      ::BMX2WAV.system(
        "certutil -hashfile \""
        + target_entry.path
        + "\" SHA256"
      );
    }
  };

結果は「スクリプトの標準出力ダイアログ」(SeacherのToolbarのButton-2)に表示される。

「実行結果として得たHash値に基づいてInternet Rankingの当該頁を開く」とかもできそうだけど、「スクリプトの標準出力ダイアログ」からHash値を持ってくる方法がわからない。まあできなくてもいいや。

あとは前述の関数群を、bmx2wav_seacher.nutの末尾あたりから、contextmenu-itemsとして登録するだけ。

  ::Searcher.entry_processors.items.append( beatoraja );
  local sub = ::SubMenu( "ファイル操作", [shell_execute, notepad, get_sha256] );

すぐ上の"絶対パスの表示"foreachらへんを真似すれば、複数の対象のHash値を列挙したりすることもできそう。

英数字を眺めていたらお腹が熱くなってきて叫びだしそうになったので終了。

BTS差分

私が最初に組んだ全曲版はraindropで遊べなかった。選曲後の読み込み中、Memory使用量が1 GiBを超えたあたりで強制終了していた。現在の短縮版は普通に演奏できるようになっていたが、その事実に気づいたのが今朝なので、readme.htmlでその旨に触れられなかったのが心残り。

raindropは唯一の32-bit BMSON実装なので、test環境としても重要だ。私は32-bit環境を検証するためにWindows 10の開発環境をdownload中だ。までしか使えないとかさあ…… [追記] この開発環境は64-bit Windows 10だったので終了

raindropでABCが突然無音になって驚いた。non-ASCII filenameを持つresourcesは読み込まれないようだ。私はreadme.htmlの機能対応表に項目をもう一列足すべきだったし、ASCII resourcesを同梱すべきだったかもしれないが、ZIP書庫の内容をいまさら改変するつもりはない

For Long time BMS players差分を登録しました

2017年に開催されたTechno Genre BMS Event “B.T.S. -Brilliant Techno Square-beatoraja専用差分です。BTS_Packageに対して適用してください。詳細はreadme.htmlをお読みください。

この差分は“For Long time…”のいくつかのrulesに抵触している可能性がありますが、登録期限日まで粘っても全条件を達成することは難しいと判断したため、現状の形のまま登録に踏み切りました。奇しくも全曲digest動画が数日前に公開されたので便乗させていただいた部分もあります。

先日のtest用BMSONの書式の誤りが発覚したついでに

いくつかのBMSON実装に対し、いくつかの検証を試みた。

最小のBMSON(仕様上はvalidであるはず):
{"info":{"initBPM":9}}
受理する:
Banana, beatoraja, raindrop
拒絶する:
Pulsus
想定外?:
Bemuse
{"version":"1.0.0","info":{"init_bpm":9}}

こうすればBananaBeatsの選曲画面もBPMを認識する。

余分な終わり波括弧RIGHT CURLY BRACKETinvalid):
{"info":{"initBPM":9}}}
受理する:
Banana, beatoraja, raindrop
拒絶する:
Bemuse, Pulsus

これを受理する実装では、なんかできそうな気がしないでもない。

生の改行文字Raw newline charactersを含む文字列値invalid):
{"info":{"initBPM":9,"subtitle":
Ω"}}
受理する:
Banana, Pulsus, raindrop
拒絶する:
beatoraja, Bemuse

「拡張子を*.bmsに変えるとびっくりするBMSON」を数年前に作った気がするが行方不明。

beatoraja default skinのBGAに関する謎

Test用の書庫BMS版は期待通りに描画される。BMSON版はBGA canvasさえ透過されてしまう。

BMS版も、#BMP01 ___undefined_black.pngを明示的に定義すると、BMSON版と同じ結果に。

PNGがRGB(0,0,0)のときに、この現象が発生するようだ。

[追記] このTest用BMSONは書式が不正だった(最後の行の終わり波括弧RIGHT CURLY BRACKETが余分)。修正済

90年代RAVEおじさんが為す術なく降伏するBMS

Launch4j等でEXE化されたbeatorajaはIRに接続できない

これは事実です。

ただし、jarをwrappするだけならば問題ないです。

FYI: https://github.com/exch-bms2/beatoraja/pull/490

ご指摘ありがとうございました! 参考用に示してくださったこの変更は、きたるJava 11時代への布石として非常に重要な内容と思われますが、IRもこの変更の恩恵を受ける形なのですね。一般的なBMS usersがbeatoraja.jarのEXE化をためらう理由はもはや一切なさそう。

ちなみにbeatorajaのIRに関しては「beatoraja IRの登録方法・各IR特色 | GAF Talk」が私には非常に分かりやすい記事で助かりました。貢献者の方々に深く敬意を表します。

あと件の「SMBプロトコルを用いた〜」ですが、これってべつにbeatorajaの独自機能を使っているわけではなくnanasigrooveでも発動するらしいことを知りました(私の環境ではnanasigrooveが即座に強制終了しましたが)。つまるところこのBMSの仕掛けの成否はbeatoraja.jarの改竄云々とはまったく関係なかったわけでして、先日の記事で不正確な表現を用いたことをお詫びいたします。

BMS event関連情報の訂正

2020年に開催が予定されている「無名戦17 & A-1 10th」を「無名戦16 & A-1 9th」のまま誤って記載しておりました。全体頁個別頁のみならず誤植まとめさえ誤記しており、大変失礼いたしました。現在は修正済みです。ご指摘ありがとうございました。

botの気持ちになるですよ

私の人間たる事実性をWebsites二つから立て続けに疑われ、反駁し損なってpenaltyを課せられた。振り返ると自分の行為は確かにspammyだったが、予備知識を持たない人の多くは私と同じ轍を踏むに違いない。Lockされた機能は電話番号を入力すれば解除されるらしいが、それは御免被る。

On-demand resources loading on BMS (BOFoonXV#3)

ネカフェInternet Cafe、テザリング、vmwareで作ったまっさらのWindows 10 home (+Java)ですら再生できて、みんなどこで躓いてるんだろうと途方に暮れてたりします。

あ、vmwareだと選曲後に強制終了しますね。

ネカフェInternet Cafeとテザリングは演奏完了したので我ながら謎

本気すぎる検証に慄きつつ、最初から躓いている私は話題についていけず申し訳なさを感じます……Casual userたるもの、自分が用いるWindowsの「ネットワークの探索とファイル共有」の設定から見直す必要がありそう。あと「Launch4j等でEXE化されたbeatorajaはIRに接続できない」という噂が事実であれば、これもSMBBMSの成否に影響するかも。自分のcomputerのlog-in nameとpasswordは初回起動時に一度だけ入力し、以降は忘れ去ってしまったずぼらもいます。私です。

突然思い出したけど、自動起動するWindows IISを、どこかのtimingで黙らせたような気も……

BMSを遊ぶ時刻などの条件に応じて異なる内容のresourcesを出し分ける、この仕掛けに可能性は感じました。というか、この仕掛けの可能性が数年越しにようやく私にも理解できました。「単独のBMS file一枚に対し、適用すべき音声群が二組用意されていて、それぞれで曲調が一変する作品」というのが過去にありましたけれど(ありましたよね……?)、今回のSMB trickはそれをserver-sideで担ったようなもので、数年前にNekokan氏はこの着想を得ておられたのだろうなあと。

いまのところ#RANDOMは乱数を発生させるだけ、#IFは数値で分岐するだけなんですが、「BMSとは異なる層から、数値以外の条件で内容を分岐させること」も可能であるということを、このfoon BMSは示していると思いました。とはいえSMB file sharingではご覧の有り様(躓きまくり)、こういうのはBemuseなどのWeb-BMS環境でこそ発展しうる分野かもしれません。


[追記] YouTubeにも動画がuploadされていた。手元にあるはずのないpreview音声が、このBMSを照準しただけで再生されてる…… 凄…… 怖……

SMBプロトコルを用いたオンデマンドリソース配信型BMSの作成と運用

私の環境では音声や映像が再生されなかったのでなんじゃこりゃと思っていましたが、参考動画を見つけてなんとなく理解しました。通常BMS fileは当然ながらlocal computer内の音声・画像・動画を参照するわけですが、このBMSはbeatorajaの機能脆弱性(?)を悪用してNekokan Server内の音声・画像・動画をrequestさせるという仕掛けですね。参考動画とimpressionを確認した限りでは、serverにasccessした時刻によって(つまりこのBMSを遊んだ時刻によって)異なる内容の音声が充てられるようです。

(おもに自分用に)内容の一部を引用:
//LR2等にスコアを残させない。
#RANDOM 1
*---------------------- HEADER FOON

#PLAYER 1
#GENRE beatoraja独自機能
#TITLE SMBプロトコルを用いたオンデマンドリソース配信型BMSの作成と運用
#ARTIST 猫缶サーバー
#BPM 120
#PLAYLEVEL たかい
#RANK 0

#SUBTITLE -The BMS as a Service-
#STAGEFILE \\nekokan.dyndns.info\BOFoonXV\smbbms\smb-stage.png
#BANNER \\nekokan.dyndns.info\BOFoonXV\smbbms\smb-nobana.png

#DIFFICULTY 1
#TOTAL 80
#COMMENT "※本当は良い曲なんですが、あえてにゃあさんの世界観でお楽しみ下さい。"
#LNTYPE 1

//これらファイルを読み込みに行くのはセキュリティー上好ましくない気がしないでもないです。
#WAV00 \\nekokan.dyndns.info\BOFoonXV\smbbms\v_foon.wav
#WAV01 \\nekokan.dyndns.info\BOFoonXV\smbbms\paprika_000.wav
#WAV02 \\nekokan.dyndns.info\BOFoonXV\smbbms\paprika_001.wav
…
#WAV21 \\nekokan.dyndns.info\BOFoonXV\smbbms\paprika_072.wav
#WAVZW \\nekokan.dyndns.info\BOFoonXV\smbbms\current-mm.wav
#WAVZX \\nekokan.dyndns.info\BOFoonXV\smbbms\current-hh.wav
#WAVZY \\nekokan.dyndns.info\BOFoonXV\smbbms\announce1.wav
#WAVZZ \\nekokan.dyndns.info\BOFoonXV\smbbms\nekokanserver.wav
#BMPZY \\nekokan.dyndns.info\BOFoonXV\smbbms\smb-stage.png
#BMPZZ \\nekokan.dyndns.info\BOFoonXV\smbbms\smb1-movie.mp4


*---------------------- EXPANSION FOON
#LNMODE 2
#PREVIEW \\nekokan.dyndns.info\BOFoonXV\smbbms\kiteretsu.ogg

#IFなしの#RANDOMLR2IR回避できるのは知りませんでした。そのあとの部分は、Windows Explorerのaddress barに\\nekokan.dyndns.info\BOFoonXV\smbbms\と入力すれば分かると思います。私はpromptで行き詰まって先に進めませんでしたけど……

あと、このBMSを#RANDOMを消したうえで_wsh_bms2bmson.jsに投げてみたところ、怪しいpathについて対策していたはずなのに普通に変換されてしまいました。このbugは来年に修正します……

Windows 7の延長supportはに終了

windows 7 サポート終了一カ月前ですね。果たして皆様アップグレードはお済みなのでしょうか。

注意喚起ありがとうございます。こと日本においてはに施行された消費税増税の影響が大きいように思われます。あの日を迎える時点で乗り換え費用を捻出できていた個人userはとうにupgradeを完了していそうに思われますし、そうでない方は一か月あっても……(口を濁す)

でもまあ、「可能なら」とかの条件なしに必ずupgradeしましょう、というべきなんでしょうね。幸いといってよいのかどうか、Windows 7/8.1からWindows 10へのupgradeだけなら今もなお無償でできるので、computerを新調する余裕がなくてもOSだけは最新のものにしておきましょう〜

BMS界隈におけるWindows 7の意義はというと、私にはついぞ縁がなかったOSなので特に語れることがありませんが、う〜ん、2009年当時は64-bit環境に移行されるBMS作家の方々がぼちぼちおられたような曖昧な印象が残っています。現在はBMSの一般usersもbeatoraja, charatbeatHDX, mBMplay, Pulsusなどのsoftwaresによって64-bit化の恩恵に浴することができるようになりました。

曲変更はできたが演奏できる機種がない

数日前に私が組んだ差分に「長さ数十秒の音声を32分音符間隔で24小節間連続させた箇所」があり、この連続がbeatoraja上ではすべて無視された。しかし問題の音声単独で同様の状況を再現してtestすると、私が意図した通りに音声が24小節間中断された。ということは原因は別にありそうだ。

俺にふさわしいsoilをキメた

Toy Musical 3 Ver2.9にてSong listにfilterやsortが実装され、遊びたい難易度種別の未視聴曲などを探しやすくなった。「Shift_JISのだめ文字の後ろに無駄に余分なREVERSE SOLIDUSが表示されていたbug」も修正された。TRAINING MODEやSETTINGSも備わり非常にありがたい。OGG TO WAVE” option:

oggをwavに変換し2回目の読み込みから速く読み込みを完了するようにします。

コピー処理を行うので初回ロードが5倍ぐらい遅くなりますが、2回目からは30倍ぐらい速くなります(環境依存)。

空き容量監視や古いwavの削除処理は現在行っていないので注意

旧BMIIDXView2010などもかつて実装していた自動decoding(現在はmulti-thread decoding optionに取って代わられた)。Storageに余裕があるusersにとっては便利。Decoded WAV filesはToy Musical 3\ogg_to_wav\music\played song\配下にcopyされる。


Firefox 71、about:configbrowser.tabs.tabMaxWidthが効かなくなり、Multirow tabsも無効にされた。不便すぎる。私はtab幅の自動調整も画面外に押しやられるtabsも求めていない。

_wsh_bms2bmson.js v0.2.3

  • #LNTYPE 2を用いたBMSを変換できなくなっていたのを修正した。
  • #999を用いたBMSを変換すると無限loopに陥っていたのを修正した。
  • 必要なImageMagickの最小versionを一年前の7.0.8-14から最新版7.0.9-6に変更。
  • [v0.2.2] Uploadし忘れていたため欠番。BigNumber.jsのversionを7.2.1から9.0.0に変更。

私が変換をtestしたG2R2014〜BOFU2017にも#999持ちの図表は当然あったが、当時の変換器は曲終了時の小節線芸を無視していたので、このbugは今に至るまで発覚を免れてしまった。

BMX2WAV v2 Core TEST

TEM氏の開発日記より、19日の当日記に対して。(移転後に改めてlinkさせていただきますました

「定義されている音声が見つからない」がWAVファイルが存在していないを意味するならファイルが無いってメッセージボックスが出て中断する筈。BMSファイル上で定義されていない(WAVxxが無い)のならそれだけで中断はされない筈なのだが。

あっはいそうなりました、説明がうまくなくてごめんなさい。

進捗出力欄に警告が出る・変換は続行される:
// defined kick.wav, but audio file “kick.wav|ogg” is not exist
#WAV01 kick.wav
// #WAV index “01” is not used
#00111:02030405
進捗出力欄に警告が出る・Message boxも出る・変換が中断される:
// defined kick.wav, but audio file “kick.wav|ogg” is not exist
#WAV01 kick.wav
// #WAV index “01” is used
#00111:01020304

変換器は氏の意図した通りに働いているように見えますし、変換が中断される状況は私もまったく妥当だと思います。それはそれとして、私が試したとき偶々前者と後者の警告文(どちらも『指定されているオブジェクト WAVxx が使用されませんでした。』)が連続して進捗出力欄に出力されたため、変換が中断された際に状況がよく分からず私が混乱していた、といういきさつでした。


BMX2WAV v2に可能なら要望したい機能として、既定の分解能限界値をconfigでcustomizeしたい、というよりも使ってよいmemoryの上限をcustomizeしたいです。具体的にはBlackCityBOFU2016#551#STOP解除差分と元譜面をWAVに変換して、片方を逆位相にして合成し、対消滅するかどうか確認したい(#STOPを外すscript処理によって、差分の音が元の状態からどの程度ずれてしまったのか確かめたい)、というuse case。

分解能とMemory消費量の関係は私にはよくわからないですが、仮にもう5 GiBくらいMemoryを割くことで変換できるようになるのであれば、それができたほうが少なくとも私にとっては嬉しいです。


[追記] この差分、よく見たら「LongNotes区間内で停止した場合」の処理を完全に失念していた。もっとよく見たら小節長が全部おかしい。#00402:0.999999961200879343271のような気がする。#00502:1.000000038799120656731のような気がする(けどBigNumberで連分数展開すると²⁵⁷⁷³⁷⁸⁰⁄₂₅₇₇₃₇₇₉で収束してしまう……

備忘

"resolution": 4くらいのBMSONをBmsONEで開くと、0.1秒前後の短い音声がmain panel上で鳴らなくなる場合がある。このとき波形の描画もされない。拙作変換器、余計なことしかしない😢

必要に迫られていくつかの単機能scriptsを書いた。いまはBMSの#STOP#SCROLLに置き換えるscriptを書いている。あとはBMSE Conversion Wizardの代替scriptを書いてようやく準備が整う感じ。

The GateDP差分はBGM38列目が抜け落ちている。譜面編集後ならbms diff toolAnzu BMS Diff Toolが役立つが、譜面編集に「BMSEで開くと駄目なやつ」を見分けられるようにしたい。

new-BMSE v0.1

外観はBMSEと変わりなく見える。細部は微妙に異なるが、慣れ次第で収められそうな差異にとどまる。BMSE 1.3.8に存在した危なそうなbugsのうち、いくつかはv0.1時点で修正されているようだ。

  • 本家と異なり、いまのところMain Panelにfocusを合わせる手段がNew/Open/Reloadのみ。Main Panel上でUp/Down/Left/Right/PageUp/PageDown/Home/End keysを活用することは難しい。
  • Main Panel上でMouse Wheelでscrollできない。できると嬉しい。
  • theme folder内の*.ini fileを適当にcopyして数を増やすと、起動時に強制終了する。
  • 一般的な曲尺のBMSを開き、#000の上でcontext menuから小節を50回くらい挿入し、End keyを押すと、末尾小節まで移動するはずなのに移動しきれない(末尾小節がscrollable範囲外にあるため)。SaveしてReloadすると末尾小節まで移動できるようになる。元のBMSEから存在するbug。

고 고゙고゙고゙

64-bit版mBMplay v1.19.1107.0にmetaBoleroをdropしてみたが、System.OutOfMemoryExceptionの例外がthrowされた。範囲を縮めて試してみた。

#000#009までの短縮版は、mBMplayにBMSをdropしてから4分半後に起動した。Memoryは1250.1 MB。起動直後は1500 MBくらいに達していたようだ。最終小節は問題なく再生された。

#000#032までの短縮版は、mBMplayにBMSをdropしてから14分後に起動した。Memoryは3417.6 MB。小節を前後に送ると一時的に5559 MBくらいに達する。最終小節は問題なく再生された。

この傾向から予想するに、DDR4-2400型Memoryなら160 GiBほど積んだうえでBMSをdropして7時間半待てば、mBMplayはこの差分を完全な形で演奏できそうだ。計算上の総演奏時間は32日間と14時間13分20秒、待ち時間も込みなら約33日間。まあ演奏時間半年の差分とかに比べれば誤差同然。

BMX2WAV v2 Core TEST

Error Messagesが一括出力されるようになった。BMS fileが複数のerrorsを持つ場合、旧版BMX2WAVでは逐一修正しては変換してみる必要があったので、その手間が省けるようになったのはありがたい。

定義されている音声が見つからない・尚且つその定義が未使用の場合

指定されているオブジェクト WAVxx が使用されませんでした。

変換は継続される。

定義されている音声が見つからない・尚且つその定義が実際に配置されている場合

指定されているオブジェクト WAVxx が使用されませんでした。

変換は中止される。

使用されているオブジェクト WAVxx の音声が見つかりません。」とかのほうが、「音声を参照できない未使用定義」のmessageと並んだ場合に区別しやすそうかな? 中断された感も出しつつ。[追記] この案は「明示的に使用された未定義notes(わりとある)」と区別がつかないから駄目だな。

わりと見かける例ではある。「切る前の音を様子見で置いて、BMS完成後に消し忘れた」とか、LR2IRを汚さないよう、製作中あえて一分以上の無音音声を定義して配置しておき、公開する際は件の音声のみを削除して配布」とか。

#LNOBJ xx・かつ指定された#WAVxxが未定義の場合

NeedFix : 定義されていないオブジェクトが使用されました。

#LNOBJ xxには大抵は未定義の番号が指定されるので、これは見逃してほしいところ。#LNOBJ xxの番号に音声を明示的に定義すること」に意味がある機種もあったが、詳細を思い出せない。

未定義の#BMP番号をあえて配置することにより、LAYERを解除している場合

NeedFix : 定義されていないオブジェクトが使用されました。

BM98 Kikuchan VersionのHelp file「BMSファイルの書式」channel 07の解説より引用:

★注意

BGA同様、00番を指定してもレイヤーはクリア(消去)されません。

クリアするには未定義のBMP番号を指定するとよいです。

個人的にはこの挙動に依存する譜面には賛成しないけど、この挙動に依存する譜面は非常に多い。


当日記、小見出しをほとんど使ってこなかったから放置してたけど、このCSSクソだな…… 小見出しが小見出しに見えない…… 年末あたりに直そう……

Microsoft Visual C++ 2005/2008/2010/2012/2013/2015-2019 Redistributable (x64|x86)

Microsoft Visual C++再頒布可能packagesなどをせっせと導入していると、MSYS2やConEmuを真っ先にinstallする玄人らの気持ちがちょっと分かるような気がしてくる。私は英数字を見ると昏倒する性質なので、毎度手作業で済ませてしまうが…… これ、よく見たら2005(x64)や2015–2019の版がちょっと古いじゃないか。やっぱり手作業は駄目だな。🙅🙅だな。

[翌朝追記] VC++2013: 12.0.40664.0, VC++2015–2019: 14.23.27820.0

BMX2WAV v2 Core TEST , mBMplay v1.19.1107.0, new-BMSE v0.1, …

ようやく代替monitor用の端子を確保できたので、私は旧computerからの引っ越し作業を開始した。済み次第、前述のBMS関連softwaresの更新内容を確認する予定。なんかFastCopyとか使ってないのに超高速なんだが…… こないだも今回もUSB 3.0で条件は変わらないはずなのに何故だ……

MSDN関連URLsの所在があちこち変わっていた。DirectX 8.1 Runtime for Windows 2000に至っては消失しており、もはやdx7vb.dllを入手するためにはWeb Archiveに頼るほかない。Fork版new-BMSEはVisual Basic関連runtimeの導入が不要であり、これが普及するなら大変ありがたい。


自分が「気まぐれなBPM変更」としか感じられず見過ごしていたMetric modulationの用例は多そう。Cipaterは確実にそれ。Suite For The Ways Things Changeは怪しいがよくわからない。Diceは途中から幻惑してくる(polymeter loopの変化に身を委ねると、最終的に約85 bpmに感じられてくる)けど、rhythm自体がmodulateされるわけではない(私の体感では徹頭徹尾約170 bpm)。Thusnessとかもだけど、rhythmの割り方を変えるわけではないあたり、prog寄りの変拍子の系譜かな〜と感ぜられる(私はそっち方面には疎いので、あくまでなんとなく)。

PolyPolyPoly

Hidden Idealみたいな感じの、同一音階を同一rhythmで奏でるpiano二台の打鍵timingが徐々にずれていくBMSをどこかで遊んだ気がする。詳細を思い出せないが、もしかするとPiano Phaseのcopy BMSだったかもしれない。これをpolytempoと言わずして何がpolytempoか。

同様の調子で、100 bpm vs. 101 bpmのpolytempo楽曲を仮定する。この構造を先日の日記のようにpolyrhythmに換算することは、可能ではあれど、polytempoで表すよりも分かりやすくはならないだろう。なるほど、なんとなくわかってきた。しかしくしゃみと鼻水と寒気が止まらないので寝る。

:>=

 /\  /\

Baile de Favela (Afro Remix)は三連符(percussion)と四拍子のpolyrhythmだが、「約97 bpmの¾拍子percussion」と「約130 bpmの⁴⁄₄拍子」のpolytempoとも解釈できる……? この曲の構造やBPMはTwelve twisterのそれに近いし、私は初めて聴いたときにはMetric modulationを感じた。

そういえばさっきまで聴いていたDJ mixは、約160 bpmの曲から約120 bpmの曲に繋いでいた。120 bpmにおける四分音符一個分の長さは、160 bpmにおける三連符四個分の長さと一致する。Street Carnivalの中盤なんかももしかすると、BPMと時間割がばっちり嵌まったりしないだろうか。

Tempo modulation

そういえばmaru氏はこの技の使い手だった。(参考:Nekokan氏によるDropbox BMSのmirror

  1. False White(BMS edit)のBMS fileのcopyをBMSEなどで開く。
  2. BPM変更notesを全部消す。
  3. 開始時#BPMを160に変更して保存し、BMSEを閉じる。
  4. Copied BMS fileをNotepadなどで開き、末尾に以下のBMS codeを加え、保存して閉じる。
    #02602:1.333333333333333
    #02702:1.333333333333333
    #02802:1.333333333333333
    #02902:1.333333333333333
    #05802:1.333333333333333
    #05902:1.333333333333333
    #06002:1.333333333333333
    #06102:1.333333333333333
    #06602:1.333333333333333
    #06702:1.333333333333333
    #06802:1.333333333333333
    #06902:1.333333333333333
    #07402:2
    #07502:2
    #07602:2
    #07702:2
  5. LR2などで演奏し、Metric modulationの多義性を楽しむ。

Metric modulationを用いるBMS図表において、BPMが変わる場合は「rhythmの変化という事件そのもの」が、BPMが変わらない場合は「元のrhythmに対する新しい時間割の関係性」が、それぞれ強調されるように私には感じられる。両方狙うと「時間割の変化を示すための、比較対象としてのmotif」が要請され、それによって「旋律が延々変わらない」と評されるあたり、なんとも難しい。

Modulationの前後で共通するmotifがある場合は「共通部分のみspeed据え置き、新しい時間割部分のみspeed変更」とかもできると面白そう(local #SCROLL/#SPEED)。どの時間割を基準にbase #BPMを設定するべきかという問題もある。文脈で決まるなら楽なんだけど。


台風直撃中の群馬とか行けるわけなかった。WXAXRXPも行きたかった。

突然思い出したけど、Love AddictがまさにMetric modulationだ。当時radioから流れてきて凄まじく驚いた。私はTV programを一切見てないのでartistもtitleも一切が謎、歌詞もろくに聴いてなかったものだから周りに訊こうにも説明しようがなく、本当に困った。好きな歌手は誰だと問われて中島美嘉と答えたら老け専ととられた。私は彼女の外見を知らないし、容姿の趣味を答えたつもりもなかった。

Metric modulation

私がこの技の名を何度覚えようとしても忘れるのでとうとう日記に書いて記憶への定着を図る。テンポtempoを変えずに拍子をちぇんじchangeする高度なてくにっくtechnique」というめう氏の説明を信じるならむしろ、#BPMを変えるTwelve twisterはまさにeventの主旨にふさわしいともいえる。

Beat indicatorに干渉する方法はBMSではいまのところ小節長くらいなので、tris+dekaの中盤で判定線を6回光らせたい場合は結局#BPMを上げつつ小節長も伸ばすしかなさそう。それをやると技法の妙味まで薄れる可能性もあり、悩ましい。


この技に名前があるなら知りたい: “Burnin’ Rubber1:001:35あたり、この区間だけDrums+ Bass以外のinstruments全体がslideする。「4拍子と4拍子のpolymeter」? 「大袈裟な切分法」?

まだ届かない

DisplayPort connectorを注文して十日経つ。電器屋には雌雄逆の端子しかない。

先月releaseされたAKOKO AJEJIの著者は、fractal図形を延々拡大する動画でも知られている。【癖差分バトル】Pictured as Perfect [⇔]のようなGimmick図表の力を借りれば、polymeterもpolytempoもしっくり視覚化できそう。Local #SCROLL/#SPEEDはどうだろう。BMSON形式なら各noteごとに別個のscrolling-speedを指定できそう。音楽性と乖離した使い方が飛び交って終わりそう。

_⤴↘⤴↘⤴↘⤴↘⤴↘⤴↘_
> 何もしてないのに壊れた<
 ̄⤵↗⤵↗⤵↗⤵↗⤵↗⤵↗ ̄

まだ三回しか電源を入れていないPC monitorが突然映らなくなった。Manualには「スモークまたはスパークの明らかな症状」とかよくわからないことしか書かれていない。不貞寝。

寝ても覚めても微動だにしないprogress bar

作業の半分がおそらく終わりました。助言くださった方ありがとうございました、残り半分はFastCopyを試してみます。

Für Elodieみたいな曲調のBMSが過去に作られていたはずで、私は詳細を思い出そうとぼんやり頑張って先日奇跡的に思い出すことができたんですが、既にWeb Archiveからさえ辿れず。

kurakunaidesu(^o^)

私は一週間近く前からずっとdrive Backup中なんですが、一週間近く前からずっと「残り時間: 2日以上」のままcopyingが終わらないのでまともに身動きが取れません…… どうして…… Driverは導入済みのはずだし転送速度も40 MB/s以上出ているときもあるのに、私が確認したときは大抵20 KB/sとかで停滞している…… この状態でdownload folderとかに触るとfilerが強制終了するし、対象driveに置いてあるapplicationsを起動させるわけにもいかないので、まじで何もできません…… よりにもよって近代日本史上最大規模の台風が接近中のこの瞬間にこんな…… owarimasu(^o^)

乱魔ドスケベマジックドスケベマジック

Pupuly登録作品燈灯/FluorescenceのAnother図表は負数値#STOPを用います。beatoraja上でAnother図表をLR2やBemuseと同じように遊びたい方は、この差分を適用してください。少なくともbeatoraja 0.7.3までならこの対処法が有効です。

Jean-Jacques Francis de Satoshi

3日の当日記の続き。「Bemuseに連番BGAはさすがに無理やで」と某氏に教えていただきまして、私もそう思っていただけにTest-BMS eventの作例に驚かされたのですが(“Integrated Circuit”は元々非動画形式)、先日の日記をuploadした直後になんとなく仕掛けに思い至り、件のcomment欄をよく見たら答えが書かれていました。ほぼ私の予想通りの手法でした

ちなみにアップロード処理の中にFFMpegとBGAEncAdvanceをかませているので、BGAも(おそらく)自動でBemuseで扱える形式に変換できます。

今後Bluvel氏の会場を借りるBMS Event登録作品が、映像が動画形式であれ非動画形式であれ、試聴欄にBMSをuploadするだけで自動的にBemuse-ableになるのであれば、それは特にBMS作家の方々にとって極めて便利だと思います。(ちなみにBemuse向けの変換作業を手動で行う場合は、Bemuse server: Images, BGA, music previewなどの記事が参考になりそうです)

「一枚絵を置いておくだけの静止画BGAさえ動画化する必要がある」「差分ごとに別のBGAを設定したりはできない」「図表fileと異なる階層からresource filesを参照することはできない」などの、Bemuse特有の制約もいくつか存在はするので、変わった作りのBMS作品については必ずしもBemusizeがうまくいくとは限らない、という問題もありますが、その時はその時考えましょうという感じで。


Bemuse v47は書庫のURLを貼るだけで誰でも「これすき」とか紹介したりYouTube並みにcasualにBMSを遊べそうなので、BMS作家に限らず便利なんじゃないかな〜って思いました。

“nomoretry”

https://bemuse.ninja/?archive=https://uploader.bms.ms/data/130/130bms_no42.zip

☆2図表がGroovyですこなんだ

Bemuse on Test-BMS-Event

先日の当日記で言及した502 errorが、さきほど確認した時点では既に修正されていました! Google ChromeやVivaldiなどのBlink系Web browsersでは期待通りに働くように見えます。Firefoxではskin, song packages, audioの読み込みおよびdecodingが完了できませんでした。


これ、連番画像形式がBemuse上でもそのまま描画されているなら、地味に凄い技術なのでは……

珍しく私の記憶力が仕事をした

BMSイベント会場の試聴欄にアップロードするだけでbemuseで遊べるようになるの、便利だと思ったんですがそうでもない?

Bluvel氏が以前このように呟いておられました。私はこの案はこの案でとても便利だと思いますし、関連するとおぼしき実験的な登録も既にありました。とはいえさきほどaccessしてみたところ、残念ながらBluvel氏自身が立てたBemuseは現在“502 Bad Gateway”が返されましたが…… [翌日追記] には修正されていました!

Bemuse v47.0.0

当siteは最近わりと拍手をいただいていたのですがこれがどうやらSocial Engineeringの伏線だったようで、私は落ち込み打ちのめされておりました。しかし本日垂れ込んでいただいたこのnewsによって、私はちょっぴり元気を取り戻しました(ありがとうございました)。

今回の更新によって、私たちはBMSをURLだけでやりとりできるようになります—さながらYoutubeで動画をやりとりするように「BMSをBemuseで遊べるようにするためのsurverserver側の準備」さえ、もはや必須ではないのです!

Query stringはDropbox URLに限らず、「CORS(Cross-Origin Resource Sharing)を許容するdomain」にあるZIP書庫なら何でも構わないようです。以下にいくつか例を挙げます。

“シェルターキッズ(YAMD Pogp Edition Remix)”

https://bemuse.ninja/?archive=https://uploader.bms.ms/data/hyperremix3/yamd.zip

私は「既にuploadされた(Bemuseとは無関係の)BMS書庫のURL文字列」を指定すること以外は何もしていません。にもかかわらず、私たちはこのBMS作品を今すぐ遊ぶことができます。

ただし文字化けに対処するなら、元のBMS図表をBMSONに変換するか、またはBOMつきUTF-8で保存し直すなどの手順が必要でしょう。

“FREE "C" PHOTOS ][”, “The Fierce Battle (remix)”, “electoric foon pitch”

https://bemuse.ninja/?archive=https://uploader.bms.ms/data/pof2008_fullset_fix.zip

じつはこの書庫はいくつかのBMSesのmini packageなのですが、この場合はおそらく最後にparseされたBMS directoryのみがlistされます。[追記] すみません、よく見たところ全図表が列挙されていました。ということはつまり、packaged BMSesも普通にpackageまるごと遊べるってことですよね、これ……

“PARTY TIME IN MY DREAM”

https://bemuse.ninja/?archive=https://hitkey.nekokan.dyndns.info/haiji_party.zip

Nekokan Serverは管理人様がCORSに対応してくださったので「Nekokan Server上にuploadされているあらゆるBMS書庫」は既にBemuseで遊べるようになっています。RAR書庫はうまくいかないみたいですが……

Footpedalに関する補足

「MÚSECAのフットペダルは、通常レーンの下に通常とは区別されたオブジェとして降ってくること」を匿名氏に教えていただきました。ありがとうございました。最新のrhythm gamesを追えていない私の感度1/3000倍ぶりが露呈。動画をいくつかつまんだ限りでは、これはすくなくともBM3のfootpedalよりは前進したといってよい形であるように見えます。Buttonsとpedalは高低差を抑えて視覚化されており、私の想像していた形とは異なりましたが、判定の明示ですとか何かしら理由はありそう。


Tree and Two Chairsをぼんやり眺めていたら선릉역とか강남역とか종합 전시장とか見えて、あっここSeoulか〜ってなった。BMSではyororeri氏のcityなどが思い出される。

Comment返信

Johnnyです。ご無沙汰してます。

FP関連のプレイリストに触れていただいたようで。ありがとうございます。
当時、「需要が何だ! 拙作が何だ! これが正義と挑戦だ!」 という意味では内心ギラギラしてたのかもしれません(笑) 青さのなせる業です
自分は音ゲーというかゲーム自体からだいぶ離れてしまいましたが、世代も環境も変わった今の子達ならもう少し違った見方ができるかもしれません。(beatmania III や EZシリーズを知らないなら尚更)
まぁ、「BMSなんだ。好きにやりなよ」 程度の事例になれたら本望かなぁ(笑)

なお、当チャンネルには少しずつ過去作を上げる予定なので、ご自由にどうぞ。
季節の変わり目ですので、お互い身体には気を付けて。 かしこ

ご無沙汰しております! 以下、私の語りがうざいので折りたたみます!

本家BM3/EZ2xxは、私見ではdesignが良くありません。Footpedal deviceが絡むrhythm gameのうち最も成功したと思われるDrumManiaは、drum kitという物理的な要素を画面設計の根拠としています。仮にDrumManiaでfootpedal notesが左右端に降ってきたなら、それはやっぱり良くないでしょう。

BM3/EZ2xxは、DrumManiaのようにはfootpedal列の水平位置に根拠を与えることができません。BM3/EZ2xx系筐体の高さが画面化の手掛かりにならないでしょうか? いまなら誰もが想像できるでしょうけれど、SOUND VOLTEXようの3D画面なら、Z軸要素も図表に組み込める可能性があります。(beatorajaのskin関連scriptはかなりいろいろなことができると聞きます。scriptによるscrollingの立体化が可能であれば、3DのFP画面も実現できるかもしれません)

黎明期BMS player appsの既定のKEY配置L-Shift ZSXDCFVSDFJKLに変えてきたO2Jamは、PC keyboardの同時押し制限や手の大きさを考察していたし、画面側から図表の下層を問い直す挑戦でもありました。結果を見れば“O2Jam譜面”というgenreが定着したほどに大勝利を収めました。

oct/fpやFPPPには画面そのものへの思考はなく、「ここを足列とする」という取り決めの無根拠を解決しないまま本家BM3/EZ2xxに倣う楼閣が組み上げられました。視覚演出もやれるJohnnyさんがFPの3D化を思いついておられなかったはずがないのですが、当時は難しかったでしょうし、footpedalを前景化しすぎると持ってない人が怖不近という問題もあり、結局は既存のBMS画面の延長に落ち着くしかなかったという感じでしょうか。それでもワシはああいうの作りたいんじゃ、作ったった、という熱意は本当に尊敬しますが…… やはり私には評価が難しいです。

過去作期待してます。でじたるちゃんとか何年前でしたっけ(ぉ


#BMP listに対応した私家版μBMSC。ついさっき起動したところAntivirus softwareの検査が始まってしまったので私はまだ動作確認できていませんが、十中八九安全ですし、凄いぞ強いぞ恰好いいぞ。

Playlists of FPPP (Foot Pedal Package Project)

2008年に公開されたFPPPの内容を一覧できるYoutube playlist。いずれも名曲揃いで、譜面は例外なく抑制が利いているうえKEY音の選定も間違いないものばかり。専用の高品質な外観までもが作りこまれた贅沢な企画だった。改めて動画群を眺めて、やはり物凄く面白そうに見える。選曲も映像もギラギラしてないし萌えでもない、落ち着いた感じが個人的には好ましい。Gothic Fashionはわからない。


Foot pedal deviceをbeatmaniaようの平らな図表に落とし込むという根本的な部分が、当時の私には受け入れがたかった。「鍵盤の両側にturntablesがある画面」として自分を説得できればよかったのに。

comment返信

 #BMP listの追加、ついにバレてしまいましたか……

 ちなみにそのうち#WAV00もサポートされると思います。地雷譜面のお供にぜひ

私はGitHubのreleases tabしかcheckしていなかったため、先日匿名氏から件のcommitsを教えていただくまで迂闊にも一箇月の間このnewsを見逃しておりました…。改めて眺めればNekokan氏の後に魔法幼女氏のみならずraii氏までもμBMSCに貢献しておられたことに気付き、私は何も見ていなかったのだなあと反省することしきり…。そして後段は図表著者たちを非常に喜ばせるnewsです!


beatorajaの9 buttons PMS用のdefault skin、beatに同期して脈打つPop-kunが素晴らしいということをそういえば書き忘れていたことを思い出した。前からこうだっけ?

BMSパッケージ企画「ゆるゆる」#5

“Lycanthrope eyes”が楽しい。Ride cymbalのpanningの理由がnotes配列を見るとなんとなくわかる気がするあたりが好き。Single図表の鍵盤1番四つ打ちなど、clichéも味付け次第という感じ。BMPはこれで減色済みなのか〜って思った。10鍵盤で左右のnotes数を均等にされるとMixWaver時代を思い出す。

“INTELLIGENT”のbass LongNotesも好き。MP3? Why MP3?

“Regression 2099”のDP左右呼応感が好き。“ペラペラのもり”のDPも楽しい。ノッブはわからない。


μBMSCに#BMP listが実装された! 自分でbuildできる人なら既に試すことができるはず。

BMSパッケージ企画「ゆるゆる」

最近の私の生活にとてもよく合うrelease形態のBMS packageだった。平均5作品程度の小さなBMS作品集が、毎週末(土曜と日曜)に公開される。一日20分くらい触って間食気分で味わって消化していけるところが、個人的にとてもありがたかった。

いまのところ、“SGMJ”, “反響定位シミュレータ”, “not MAKURA”あたりが楽しい。SGMJは曲の短さも幻惑的なrhythmも簡潔な構成も好き。反響定位はまさにという感じ。MAKURAは#053#056のKEY音が演奏しなくても鳴るところが気になるけど、変な音を鳴らせるのは素朴に楽しい。

pupuly登録作品TRiAiNAも興味深かった。打鍵感はERASERのほうに軍配が上がる(ので個人的にはこっちのほうが好き)。

bms-language-support” v0.1.1

Visual Studio Code用のBMS構文強調器が更新され、GitHubにもrepositoryが設けられた

  • #LNMODEがsupportされた。
  • 妥当な拡張#BPM変更定義がerror扱いされていた問題が修正された。
  • READMEが詳細化された。
  • 日本語で書かれた簡易的な解説用Tooltipがhoverするようになった。すごいびっくりした。

Placement channelに未着手の拡張も、#SCROLLや#SPEEDなどをはじめいくつかあるようだ。

Tooltipの何が便利かというと、たとえば#SCROLLにmouseoverしたとき「#SCROLLのsupport状況」を表示してくれるところ。ここでsampleされるBMS appsは、LR2/nanasigroove/beatoraja/QMS-Player/Bemuseの5種類。nanasigroove初代はもはやほぼ使われていないだろうけど、拡張命令対応度を考慮すると外せない感じかな。ここにBM98やnazobmplayなども加われば、Richard Roe氏がいつぞや提唱されていた“Universal Format”にBMSを収めるうえでも多少は参考になりそう。需要はさておき。

READMEにtypoを見つけた: “51-39(1P Longnotes), 61-49(2P Longnotes)”

何の変哲もない妥当な#xxx03が、なぜかError扱いで赤くなる……

日記

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