doubledepth

#STOP sequenceに関する備忘録

iBMSC/μBMSC, BananaBeats, beatoraja, Bemuse, Pulsusおよびraindropは、小数値#STOPをsupportしています。BMSON対応機種は、#STOPの値を「192分音符を1とした場合の」として扱います(⁴⁄₄拍子1小節の長さを基準値1とする小節長のように)。#STOPの値を「192分音符の個数」として素朴に解釈できない状況は、構文解析器や変換機に対していくつかの““““闇””””をもたらします。

#STOP01 0.57142857142857142857142857142857142857142857142857

前述の停止時間は「192分音符の⁴⁄₇の長さ」、すなわち336分音符1個分とみなすことができます。このような微小な値はたとえば、#STOP sequenceを敷き詰めることによって#BPMを変えずにscrollingを遅らせる、いわゆるsleep()的な手法で役立ちます。BMSON対応機種で期待通りに動作する例

前述のBMS図表例に現れるrhythmは、⁴⁄₄拍子小節の7等分、14等分、336等分、そして停止時間としての336分音符です。これらの最小公倍数336を小節分解能として定めれば、図表内のrhythmは不足なく表現できます。しかし小節分解能336をそのままBMSON形式に変換すると、変換後の図表からは拡張の余地が失われます。拍分解能84の環境では、32分音符などを表現できません。

BMSON "resolution": 84
Grid 4 7 8 12 14 16 24 32 48 56 64 84 112 168 192 336
Pulse 84 48 42 28 24 21 14 7 6 4 3 2 1

このような理由から、BMSON変換時は192分音符を暗黙裡に(実際の有無を問わず)仮定するほうが無難と考えられます。先の例でいえば、lcm(192, 336)を便宜上の小節分解能とみなし、それを4で割った値を拍分解能として採用します。こうしておけば、変換後のBMSON図表をBmsONE上でも普通に編集できます(Grid 3264192を選んでも問題なくnotesを書き込める、という意味です)。

書き忘れ追記

以下のBMSは小節分解能1であるにもかかわらず、
#TITLE not divided, but…
#BPM 140
#WAV01 kick.wav
#STOP01 0.57142857142857142857142857142857142857142857142857
#00109:01
#00111:01
BMSONizeする際は、拍分解能336が必要ですGrid 192を確保しつつ、停止時間336分音符を表すため)
{
  "info": {"init_bpm": 140, "resolution": 336, "title": "not divided, but…"},
  "lines": [{"y": 1344}, {"y": 2688}],
  "sound_channels": [{"name": "kick.wav", "notes": [{"x": 1, "y": 1344}]}],
  "stop_events": [{"duration": 4, "y": 1344}],
  "version": "1.0.0"
}

μBMSCに関する補足

  • 図表に*.mp3が指定され、resourcesが*.mp3である場合、μBMSCは*.mp3を再生します。
  • 図表に*.wavが指定され、resourcesが*.mp3である場合、μBMSCは*.mp3を再生しません。
  • 図表に*.mp3が指定され、resourcesが*.wavである場合、μBMSCは*.wavを再生しません。
  • UserがμBMSCを終了するまでの間、previewed filesはlockされます。μBMSCが別の図表を開いた後でさえ、前の図表のpreviewed filesをμBMSCは解放しません。もし名前の変更を試みると:

    μBMSC Editorによってファイルは開かれているため、操作を完了できません。

    ファイルを閉じてから再実行してください。

    また、長い音声をuserがpreviewし、即座にμBMSCを終了すると、μBMSC終了後も音声は再生され続けます。Preview関連のこれらの挙動は、旧iBMSCとは異なります。


地味ーーーに最新の作品群を例に出してくるところに

ふと好感を持ったりしたり

ありがとうございます! 作例への到達しやすさやhyperlinkの寿命などをうっす考慮してはいます。Tools絡みでなく感想を書きたい作品も多いのですが(というか手元ではmemoを書くようにしていますが(書かないと忘れるので)、機会を逃すとなかなか踏ん切りがつきません。

μBMSC 3.1.0

Open-sourced iBMSC was discovered and forked by Agka (a.k.a. zardoru).

変更された箇所は、release notesやDolphinsssz氏のTweetsなどに列挙されています。

すごいscrolling

uBMSCでは、BPM値とSTOP値の上限が引き上げられます。これは、ギミックBMSを作成することがはるかに簡単になることを意味します!

従来は65535.9999が上限でした。μBMSCでは上限値が10e12(10兆)に引き上げられました。この変更によって、たとえば∂○ν○ゞ<俺が衆議院に襲来だ!!!!のBeginner図表(syugiin_89_B.bms)のような糞scrollingを、μBMSCはGUI上から直接編集できるようになりました。実際にこの図表をμBMSCで保存し直しても、内容は改竄されません(定義番号や記述位置は入れ替わりますが)。

音声関連

もう一つの修正:OGGのサポートが改善されました。.wavが指定されていても、uBMSCは.oggファイルからサウンドを再生します。

  • 図表に*.wavが指定され、resourcesが*.oggである場合、μBMSCは*.oggを再生します。
  • 図表に*.oggが指定され、resourcesが*.wavである場合、μBMSCは*.wavを再生します。
  • 「System Localeが表現できない文字」を含むpathも再生可能になりました(E.g. 🎹.ogg)。
  • OGG fileのみ倍速再生される場合があります。この問題は既に認識され修正されたようです(?)
  • 旧iBMSCはMIDI fileをpreviewできましたが、μBMSCはMIDI fileを拒絶します。

BMSE ClipBoard Object Data Format

BMSEクリップボードデータのサポートも改善されました。これでBMSEのように正しくペーストされます。これは、BMHelperまたはwoslicerからクリップボードのデータを貼り付けるために、BMSEを使用する必要がなくなったことを意味します。

旧iBMSCが正しく解釈できなかった「複数行のBGM channels」を、μBMSCは解釈できます

その他いくつかの変更点

  • 起動時のsplash screenが表示されなくなりました。これはeditorsにとって嬉しい変更です。

  • MenubarからAboutが削除されました。従来のAbout画面はtoolbar右端から確認できます。

  • 起動時のEncodingがUTF-8に固定されました。「非ASCII文字を用いる非UTF-8図表」を開くと、CJK環境では文字化けします。これを避けるためには、いまのところ以下の手順が必要です:

    1. μBMSCを単独で起動する。
    2. 設定からEncodingを変更する(編集する予定の非UTF-8図表のencodingに合わせる)。
    3. 編集する非UTF-8図表を開く。

    μBMSCに非UTF-8図表を直接dropする場合も、設定からEncodingを変更したのち図表を開き直す必要があります。これは非英語圏のusersにとっては痛みを伴う変更ですが、UTF-8への移行を促すという観点からは一定の効果が見込めるかもしれません。

  • [Ctrl + Wheel Up/Down]によって、main paneを拡大縮小できるようになりました。

  • MenubarのEdit Go To Measure…から、任意の小節番号に瞬時に移動できます。従来は、main paneのscrollbar context menuここにスクロールScroll Here」を実行するか、main paneのscrollbar trackを[Shift + Left Click]することによって、代替的な結果が得られました。

  • Main pane右上隅のView menu iconが無効化されました。Show/Hideはmenubarに統合されました。Main pane右上隅のiconはもはや飾りです。

  • Sidebarの、拡張項目の折り畳み状態を示すiconsが、明示的なtextに置き換えられました。

  • #WAV listに複数filesをdropしたとき、itemsが英数字順に整列するようになりましたBMSEおよび旧iBMSCでは、「Explorer上で選択されたfilesの並び順」が#WAV listにも反映されていました。日本語版Windows 10環境で確認したところ、1F3B9\你好.oGg(中国語filename)や1F3B9\안녕하세요.Ogg(韓国語filename)はそもそも#WAV listに登録すらされませんでした。どうやらsortの基準はUnicode codepointではなく、drop関連の挙動はSystem Localeに依存するようです。

  • 言語やSystem Localeが何であれ、小数点は常にU+002E FULL STOPとして出力されるようになりました。ということは、旧iBMSCの場合、French環境やGerman環境などでは小数点がU+002C COMMAで出力されていたのでしょうか? 私はそれをまだ確認していません。

要望など(issues

  • 地雷の編集は今後実装されそうです。[追記] version 3.2にて実装されました。書き込みmode時、Ctrl+Shift+Clickで地雷noteを書き込むことができます。

  • 分岐をtree-viewで編集したい」という、実装されることを期待しない要望が投稿されています。それとは別に、いまのところiBMSCはmain pane上に全分岐を可視化してしまうので、分岐系の図表が編集しづらくなっています。可能なら当座はBMSEように「分岐部分をExpansion Code内に隔離し、main painからも隔離して欲しい」です。

  • iBMSC supports #EXRANK, but this is a typo. The correct is “#DEFEXRANK.” nanasigroove and beatoraja implement #DEFEXRANK. Is-m always uses this command. Usage examples: “Road on [Fixed]

返信など

このプレイヤーをご存じですか?

情報ありがとうございました。記憶にあるような、ないような……。もしかするとDEE (Digital Emergency Exit)の旧contents(BMS関連softwaresを網羅してcommentsを加えた投票型list)あたりで見かけたかもしれませんが、今ちょっと探した感じでは当該URLが出てきません。ごめんなさい。

これに似たsoftwareの存在も思い出しました。例によって今ぱっと詳細を挙げられませんが、たしか紹介いただいたsoftwareよりもさらにcompactで、ほとんどplayable BMS Viewerといったてい……なんといったかしら、名前が英字4文字だったような気がします。

私の頭の中から固有名詞が揮発しすぎていて危機感をおぼえます。

私はBMS衆議院選を少し遊びました。なんというかBMSON形式でreleaseしたほうが演奏感が向上しそうな図表をいくつか見かけました。

(2)

Thunderbirdのprofileが消えた

CCleanerのv5.31.6105またはv5.32.6129が原因かもしれないそうです。私はprefs.jsの復元に失敗し、「すべての送信済みmails」と「2014年3月以前の受信済みmails」を失いました。私はThunderbirdのprofileをbackupし忘れていたので、多くの記憶を失って消沈しています。いくつかの重要な個人情報を取り戻すために、私はもう暫く努力しなければなりません。

中途半端に復帰しました

数週間ぶりにBMSを遊びました。現在開催中のBMS Event “B.T.S. -Brilliant Techno Square-がとても楽しかったです。私は地味な渋いBMSに飢えていたということに気づかされました。

Deepesced Linkzが最高に楽しいです。Rhythm gamesでは稀有な部類の8分音符推し曲、かつ8rhythm game調kusofumenでした。対照実験のごとく同梱された低難度図表は、いわば「Rhythm game向けの強調を施さないKEY音」のようなものであり、著者氏がrhythm gamesのを浮き彫りにしようとしているように私には感じられました。

素朴な図表としては、深部 shin-buもじつに私好みでした。全図表におそらく誤りが存在し(叩かなくても鳴るKEY音)、この曲調でそれは致命的に残念なので、勝手に修正して楽しんでいます。

しばらく留守にします

今月は頻繁に留守にしていましたが、あらためて当siteの更新がしばらく停止することをお知らせします。来月半ばには復帰する予定です。

にcharatbeatHDX VIOLET v1.15がreleaseされていたことに今朝気づきましたが、更新点を確認する暇がないので取り急ぎmemoだけ。

(2)

拍の見立てとBemuse拡張#SPEED

LR2やBemuseは、一定間隔で明滅するindicatorを演奏画面内に持っています。たとえばBMS event “WE LUV VGBMSから星の入り江を選曲すると、LR2やBemuseのindicatorはこの図表を一小節につき6回分明滅させるでしょう。Indicatorを「BeatやPulseの指標」とみなしてよいなら、“星の入り江”の明滅は明らかに不自然であり、ここに実装上の微妙な困難があります。

図表“星の入り江”のBPMは123に設定され、全小節長は1.5に設定されています。図表著者Ogu氏はこの歌を「8分の12拍子」として解釈されたはずだし、それは音楽的には正解のひとつであるはずです。

「8分の12拍子(一拍は八分音符×3個分)」。「8分の12拍子」とは、「8分音符×3個分」が一拍相当として見立てられたです。小節長は12÷8です。


しかしながら、前述した通りこの歌が四拍子であるにもらずかかわらずLR2やBemuseのindicatorはこの図表を一小節につき6回分明滅させます。ここでは歌と図表の間に齟齬が生じています。

「4分の6拍子(一拍は八分音符×2個分)」。LR2やBemuseのindicatorは「拍に見立てる」という概念を知らないので、Astra walkthrough系(二拍子系または三拍子系)と“星の入り江”系(四拍子系)を区別できません。8分音符2個分の時間が経過した時点で音価は即座に一拍として計上され、indicatorが働きます。


以下のように図表を変更すれば、LR2やBemuseのindicatorは図表著者の期待通りに四拍子として明滅するようになり、歌と図表の齟齬が解消されます。これはLR2やBemuseの実装に寄せた別解です。

「4分の4拍子(一拍は八分の三連符×3個分)」。小節長を元の⅔に短縮し(つまり長さ1)、BPM初期値も小節長と同じ比率で元の値の⅔にします(つまり#BPM 82)。

さて、indicatorはgroovyになりましたが、図表のscrolling speedも元の⅔になってしまいました。Indicatorの整合性を保ったままscrolling speedを元の状態に戻せるでしょうか? LR2の場合、汎用性のない負数STOPなどを持ちだせばどうにかできるかもしれませんが、真っ当な手段ではおそらく不可能でしょう。Bemuseでは独自拡張#SPEEDを定義することによって問題を解決できます。

#BPM 82
#SPEED01 1.5
#000SP:01

#000の先頭から図表末尾までの間、図表は82×1.5=123 BPM相当のspeedでscrollingします。このように理にかなったindicator制御が可能になるので、Bemuse独自拡張#SPEEDが広範に普及することを私は大いに歓迎します。(あくまで応急処置としてですけれども。しかしながらBMS形式では「8分の12拍子」と「4分の6拍子」を原理的に区別しようがないので、根本的解決は不可能と考えられます。)

余談ですが“星の入り江”の14 keys NORMAL図表が好きです。音声の定位を指で味わえる点もさることながら、指一本で20万点を狙える簡単さが今の私にとってちょうどよい塩梅でした。20万点を狙いだすと#033#034が牙をく構成も好みです。

LR2のFullscreen modeについて

に実施されたWindows 10の大型更新“Creators Update”を適用後、LunaticRave2をFullscreen modeで表示できなくなる」という症状が、NVIDIA GeForce環境で発生していたようです。私は匿名氏に垂れ込みをいただいて初めて知りました(ありがとうございます!)。この問題を解決できるかもしれない方法がununique氏のTweetsに書かれています。[追記] あるいはWindows 7互換modeでLR2を起動すれば、GPUの設定に触ることなく・LR2の垂直同期をOFFにしたままで・従来通りにLR2をFullscreenで表示できる、との情報も見かけました。

Microsoft Update関連の別の話題として、既にsupportが終了したWindows XP/2003/Vista/8に対する新たな更新programsが、にreleaseされました。公式のSecurity Advisoryなどに詳細があります。手動で更新したいusersにとっては非公式まとめもわかりやすうございます。

LR2の懐が広すぎてつら

(^^)に以下のBMS codeを追記すると、LR2はこの図表を正しく演奏します。

#BPM01 4.76e42
#00108:01
#00102:3.4e40
#00202:3.4e40
#00302:3.4e40
#00402:3.4e40

HDX/IIDXvにおいて小節長はfloat型です。float型の値3.4e40Infinityと等価となり、不正な値として棄却されます……

[追記] HDX/IIDXvに限らず、BMS appsの大半はこの図表を正しく演奏できないようです。Angolmois(C)やbeatoraja 0.4.2はこの図表を(おそらくほぼ正しく)演奏します。

charatbeatHDX VIOLET v1.14

BPM変更位置が可視化されました(不可視化も可能)。私はこの特徴を歓迎します。

(じつのところ、私もBPM変更やSTOP sequencesを自分のprogramで可視化するつもりでいました。図表は重力に従って落下します。STOP sequencesは「停止時間に応じて増減する突起物」です。突起物が存在する判定線に引っかかっている間、図表の落下は阻害されます。図表の落下を食い止めている突起物は、時間経過により縮みます。停止時間の可視化は、図表編集時にさえ有益です。図表著者が歌を変えずに停止時間を設定したいなら、停止地点以降の図表全体を機織りのように巻き取る形で停止時間を制御できます。)
A chart “F! O! O! N! ...Foon...”  is pinched-and-pulled.

v1.14初回起動時は音声が一切鳴らず、charatbeatHDX_v1.14\FILES\html\08.html内の対処法『WASAPIに設定してもDirectSoundに変更されてしまう』を試しても依然として鳴らないままでしたが、32-bit版を単独起動したり色々試していたらいつのまにか鳴るようになりました。

体調が悪い状態が続いています。糞暑い日と糞寒い日が交互にやってきて私の体力を失わしめます。

日記

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

その他

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