BMSE 1.3.8 における、既知の不具合や注意点

2024年時点でヘルプ筆者が把握している不具合を整理しています。最新の情報は、テキストによる簡易まとめ [https://hitkey.nekokan.dyndns.info/bmse_buglist.txt] (外部リンク)を参照してください。[追記] 2024年現在は、この HTML 文書の内容が最新です。

ここに記載されているバグの多くは、フォーク版 BMSE 2.x [https://github.com/Nekokan/BMSE/releases] (外部リンク) で修正されたようです。BMSE の使い心地を愛する方はぜひご確認ください。


即死系 (バックアップも作成されません! 注意!)

ビューワの設定ウィンドウ】 左側の設定リストから、末尾のリストアイテムを選択して削除し、そのまま別のリストアイテムを選択する:

BMSE 初回起動時なら、ビューワ設定ウィンドウ上で “BMS Viewer” を選択して “削除” ボタンを押します。すると “BMS Viewer” の設定だけでなく設定リストの選択カーソルも消滅します。リストカーソルが消滅した状態でリストを操作すると、BMSE が強制終了します

“削除” ボタンには別の問題もあるので、ビューワの設定ウィンドウは使用しないほうが無難です。bmse_viewer.ini をバックアップしてからメモ帳などで直接編集することを推奨します。

可能なら 01-FF に変換】 定義番号 74 以降を選択して実行する:

#WAV74#BMP74 以降の定義番号を選択している状態で、変換ウィザードを実行して FF 形式への変換が成立した場合、BMSE が強制終了します

変換ウィザードを開く前に、#WAV01#BMP01 を選択してください。

BMSE.exe】 プロセスを強制的に終了する:

これを不具合扱いするのはさすがにあんまりですが、他に書く場所がないのでご寛恕ください。何らかの形で応答なし状態に陥ると、バックアップは作成されません

Select Theme】 不正な書式のテーマファイルを選択する:

色コードが空っぽだったり記号だったりすると BMSE が強制終了します。

検索・削除・置換】 タイトルバー右端の 閉じるボタン (小) を非アクティブ状態で左クリックする:

モードレスダイアログの利点を諦めて、検索・削除・置換ウィンドウを操作するつど閉じる習慣をつけてください。

または、絶対に 閉じるボタン (小) に触らないように気をつけながら編集してください。

#983#999】 小節長が 1 より大きいとき、拍子を短縮する:
  1. #983#999 のどこかの小節を、4/4 拍子より長くしている。
  2. メインパネルの現在位置#501 以降にしている。
  3. #983#999 のどこかの小節を、4/4 拍子より短くする。

前述の条件をすべて満たすと BMSE が強制終了します。このとき編集作業の一時バックアップファイルは生成されません。垂直スクロールバーに与えられる 16 小節分の終端マージンと関係がありそうですが、詳細は不明です。

プレビューウィンドウ2.147E+9 より大きい座標を入力する:

符号つき 32 ビット整数の範囲外の値がフォームに現れた瞬間、BMSE が強制終了します。

表示高さ表示幅±3.4028235E+38 の範囲外の数値を入力する:

単精度浮動小数点数の範囲外の値を入力すると、BMSE が強制終了します。

【フルパス定義】 #WAV#BMP の内容にコロンが含まれる譜面を開く:

2004年12月14日 Beta 10 で修正され、2005年6月2日 1.2.0 で再発しました。

修正された Beta 10 ~ 1.1.11 でも、該当する定義アイテムを音声プレビューすると BMSE が強制終了します。

リネーム】 入力文字列にコロンを含める:

同上。

リネーム】 入力文字列に [? " > |] を含める:

BMSE が強制終了します。[\ /] はパス名コンポーネント分離符として解釈されます (パスの定義)。

Materials 仕様では [< >] を含む文字列が定義されます。これを用いた譜面を BMSE は読み込めますが、プレビューやファイル参照は機能しません。

リネーム】 存在しないディレクトリを指定する:

BMSE が強制終了します。「存在しないディレクトリを参照する譜面」を「開く」のは問題ありません。

リネーム256 bytes より長い名前文字列を指定する:

BMSE が強制終了します。また、長すぎる名前文字列が定義された譜面を BMSE に渡すと、未起動なら起動に失敗し、起動済みなら応答を停止します。

bMoL】 最高ライン数 100 以上の番号分別を行い、貼り付ける:

BMSE が強制終了します。「編集中の BMS は以下に保存しました。」と表示されますが、実際はバックアップは作成されていません。

bMoL】 最高ライン数 33 以上の番号分別を行い、貼り付けた配置を移動する:

移動した時点で BMSE が強制終了します。「編集中の BMS は以下に保存しました。」と表示されますが、実際はバックアップは作成されていません。

【保存】 ヘッダの数値入力フォームの有効範囲外の数値を指定して、保存を試みる:

たとえば “#VOLWAV 65535” などと指定すると、譜面を保存できなくなります。オーバーフローエラーを見た後で、これを正常な値に戻して再保存すると、ファイルは既に開かれています” エラーが発生し、やはり保存できません。

このとき bmse.ini の設定の一部が勝手に変更される場合もあるようです。

ファイルは既に開かれています” エラーを見てしまうと、「このエラーが発生するパス」への保存が一時的に不可能になります。編集内容を保存したい場合は「別の名前を付けて保存」してください。

【保存】 読み取り専用のファイルに対して、間接的に保存を試みる:
  1. 譜面ファイルの【コンテキストメニュー → プロパティ】を開き、譜面に対して読み取り専用属性を付与します。
  2. これを BMSE で開き、適当に編集して変更フラグを立てます
  3. 【現在の編集データの破棄を伴う操作】(新規作成・他の譜面を開く・現在の譜面を開き直す・BMSE を閉じる) を実行します。
  4. 「保存しますか?」の問いに対して「はい」を選択します。

すると保存に失敗し、バックアップも作成されないまま、【現在の編集データの破棄を伴う操作】が実行されてしまいます。強制終了するわけではありませんが、実質的には同じようなものです。

BMSE を閉じる際の実行確認ダイアログに期待する「間接的な保存」は、このようにうまくいかない状況がありうることに注意してください。普段から明示的に「上書き保存/名前を付けて保存」を実行していれば、読み取り専用の譜面に出くわした場合も落ち着いて「別の名前を付けて保存」することができます。

BMSE は編集中にビューワなどを呼び出す際に、編集中のディレクトリに対して一時的な譜面 “___bmse_temp.bms” を出力します。これに対して読み取り専用属性と隠しファイル属性を付与したうえで BMS 配布時に同梱すると、BMSE ユーザを混乱に陥れることができるかもしれません。やめてください。

【保存】 “ファイルは既に開かれています” エラーの後で、間接的に保存を試みる:

ひとつ前の項目と、その前の項目をお読みください。【現在の編集データの破棄を伴う操作】の実行確認ダイアログは上書き保存しか選択できないし、このエラーを見た後は上書き保存ができなくなっているので、「別の名前を付けて保存」しなかった時点で詰んでいます。

【拡張命令タブ】 巨大な分岐命令などを用いる譜面を開く:

ANSI 換算で 63349 bytes 以上の拡張命令を使用した譜面を開くと、Windows 95/98/ME は強制終了します。Windows 95/98/ME のメモ帳も、64 KiB 以上のテキストファイルを編集できません。あらかじめワードパッドなどで拡張命令部分を分離してください。

【プレビューウィンドウ】 ファイルサイズが約 11.4 MiB を超える画像:

Windows 95/98/ME は強制終了します。画像を描画する API にファイルサイズ制限があるようです。

【プレビューウィンドウ】 幅か高さが 16383 pixels を超える画像:

たとえば幅 16384 pixels の画像をプレビューしようとすると、Windows 95/98/ME は強制終了します。

Windows 95/98/ME は、32768 pixels 以上の長さを 0 pixel として解釈します。たとえば 32768 × 10 pixels の画像は、0 × 10 pixels とみなされます。


エラー落下系 (バックアップが作成されます)

【メインパネル】 ロングノートオブジェクトを BGM レーンに移動する:

[Shift + 左クリック] で配置できる、配置データチャンネル #xxx51-69 のロングノートオブジェクトを、演奏領域以外に移すと不具合が発生します。

  • BMSE 1.3.9 Beta 14 で修正パッチが当たりました。
【メインパネル】 拡張子がない定義に対して、オブジェにファイル名を表示する”:

たとえば [TETRINET / 葱&柳 [https://web.archive.org/web/20130121103233/http://shammy.kdn.jp/bm/index.html] (外部リンク)] などを開く際は注意が必要です。

条件を満たしても、当該オブジェクトが描画されない間は強制終了しません。

検索・削除・置換】 半角英数字でない文字を指定して置換する:

置換後の文字列が妥当な定義番号にならなかった場合、強制終了します。値によってはバックアップ譜面も不正な文字列に置換され、その場合はバックアップ譜面を開いた時点で再び強制終了します。

ダイレクト入力枠】 チャンネル #xxx01 (BGM) を指定する:

BMSC [http://tixlab.com/software/bmsc.shtml] (外部リンク) では BGM レーンも直接入力可能ですが、BMSE でそれをすると強制終了します。

ダイレクト入力枠】 メインパネルに小節が少ないとき、遠い小節を指定する:

たとえば 4 分の 4 拍子の、100 小節以内の譜面で、#99911:11” などを指定すると強制終了します。

運が悪いと【譜面を開く → 先頭数小節を適当にコピ ー → End キーで譜面末尾に移動 → 貼り付け】だけで、この不具合と同様の再描画エラーが発生する場合があります。

BPM 変更】 入力フォームに ±1.79769313486231E+308 の範囲外の数値を指定する:

バックアップは作成されますが、過信は禁物です。

STOP】 入力フォームに -21474836482147483647 の範囲外の数値を指定する:

バックアップは作成されますが、過信は禁物です。

【開く】 BMSE に扱えない数値が指定された譜面を開く:

扱えない数値が指定された譜面を開くと、数値入力フォームの制限に抵触し、オーバーフローして強制終了します。バックアップは一応作成されますが、内容が空っぽになったり改竄されたりするのでほぼ無意味です。

命令文 超えてはならない範囲
#BPMxx ±3.402823E+38
#STOPxx -21474836482147483647
#xxx02 ±170.666…
#PLAYER 05
#PLAYLEVEL -21474836482147483647
#BPM ±1.79769313486231E+308
#RANK -3276832767
#TOTAL ±1.79769313486231E+308
#VOLWAV -3276832767

#BPM#TOTAL±4.94065645841247E-324 よりも微小なら、0 になります。

編集】 Undo Buffer Size が使用可能メモリ量を超える:

バックアップは作成されますが、過信は禁物です。たとえばオブジェクト 100 個を一挙に貼り付けて 50 個まで貼り付け完了した時点でメモリが不足した場合、バックアップ側には残り 50 個が貼り付けられないまま保存されます。

メモリ不足エラーの前兆として、「貼り付け」などの編集操作に非常に時間がかかったり (このときストレージデバイスへの書き込み音が確認できる場合もあります)、ページファイルを拡張する Windows OS の警告が表示される場合もあります (動的拡張を許容する環境に限る [https://atmarkit.itmedia.co.jp/fwin2k/win2ktips/077setpgflmin_max_eq/077setpgflmin_max_eq.html] (外部リンク))。幸運にもこういった兆候を確認できた場合は、即座に譜面を保存して BMSE を閉じてください。

「幸運にも」というのは「Windows 10 でメモリが足りなくなると突然画面が死ぬことがある [https://win2k.org/blog/2020/03/12/1994971/] (外部リンク)」という恐ろしい話を見たからです。


挙動がおかしい系 (動作は継続します)

[註] この節は趣旨を外れて Tips めいています。ご容赦ください。

#999】 小節末尾線上にオブジェクトを配置できてしまう:

これを保存すると #999 末尾に 192 分音符が +1 個分追加され、リズムが狂います。

#999】 小節挿入を行うと、#998 に空小節が挿入され、#999 の内容は消える:

つまり、[#999 での小節挿入] と [#998 での小節挿入] は同じ結果になります。

#999】 小節削除を行うと、#000 が削除され、旧 #001-#999 が新 #000-#998 となる:

つまり、[#999 での小節削除] と [#000 での小節削除] は同じ結果になります。

【拡張 BPM 変更/STOP】 各 1296 個以上配置した状態で、保存するか外部ビューワを呼び出すと、保存を中止する (これは仕様)。このとき配置済みの拡張スクロールオブジェクトの値が、先頭のものから順に 11295 の連番に書き換わってしまう

値が改竄されたことに気付かずに保存してしまうと、台無しです。

この不具合を回避するためにダミー分岐を利用した例もあります。

【BPM 変更】 1255 の整数値と ±65535 の実数値を重ねると、両方保存される:

つまり、同じタイミングで 2 種類の BPM 変更命令が競合する譜面になります。どちらが優先されるかは実装依存です

もうすこし詳細な外部資料も参照できます [https://hitkey.nekokan.dyndns.info/exbpm-object.htm] (外部リンク)

【拡張 BPM 変更/STOP】 型変換は元の値に戻せない場合がある:

BPM 変更/STOP オブジェクトを他のレーンに移動させないでください

【拡張 BPM 変更/STOP】 値を使い回すことができない:

値を使い回す譜面は、読み込み時に多重定義に書き換わってしまいます。

拡張スクロールオブジェクトを 1296 個以上配置したい場合は、iBMSC [https://hitkey.nekokan.dyndns.info/ibmsc_ja/] (外部リンク)μBMSC [https://github.com/zardoru/iBMSC/releases] (外部リンク) をご利用ください。

値が書き換わらない範囲で大量の拡張スクロールオブジェクトを配置している場合、編集後に iBMSC/μBMSC を通すと重複定義が整理されてファイルサイズが削減できる場合があります。たとえば 19.85 KiB3.43 KiB

ダイレクト入力枠】 “元に戻す/やり直し” が効かない:

不具合というより仕様です。

  • BMSE 1.3.9 Beta 14 で修正された……ような記憶があります。
ダイレクト入力枠】 譜面ファイルを開かない限り機能しない:

起動直後などにダイレクト入力を行うと、変更フラグが立つにもかかわらず、入力した内容は反映されません。

テキストファイルを新規作成し、拡張子を変更して編集開始すれば、この問題のみならず別の問題も回避できるのでおすすめです。

  • BMSE 1.3.9 Beta 14 で修正されました。
ダイレクト入力枠】 配置済みオブジェクトの真上に直接入力すると、不具合が発生する場合がある

オブジェクトが一時的に単体選択できなくなったりします。再現条件は不明です。

ダイレクト入力枠】 小節長 (#xxx02:n) を直接入力すると、表示が変に:

本来なら、指定された小節長を基準にメインパネル全体が再描画されるべきところが、Grid などの一部の再描画にとどまるような感じです。

  • BMSE 1.3.9 Beta 14 で修正されましたが、「ダイレクト入力で小節長を短縮して『元に戻す』と、前後数小節が吹っ飛ぶ」というエンバグも発生しました。
VScroll】 不可視状態でもキーボードから操作できてしまう:

このフォームを不可視にできる環境は、MS12-027 の脆弱性が未修正です

VScroll】 ツールバーを非表示にしても隠れない:

おそらく仕様です。

VScroll】 不可視状態のはずなのに、ツールバー行頭を占有する:

このフォームを不可視にできない環境は、脆弱性が適切に修正されています

VScroll を明示的に表示すれば、このフォームを正しい位置に表示できるはずです。うまくいかなかった場合は、うまくいかないなりの対処もご覧ください。

【ツールバー】 bmse.ini の既定値として誤字 Gird キーが生成される:

カスタマイズ時は Grid キーに変更しない限り、真偽値が反映されません。

ただし、MS12-027 の脆弱性が修正された環境では Grid ドロップダウンリストを非表示にすることも不可能になるので、もはや気にする必要はありません。

【ツールバー】 “最初から再生” ボタンの左端が欠けている

気にしないでください。

【ツールバー】 ドロップダウンリスト垂直スクロールバーコンテキストメニューが無意味:

気にしないでください。

変換ウィザード】 [(Shift +) Tab] のフォーカス移動順序が一部変:

マウスを使ってください。

変換ウィザード】 拡張命令タブや他の譜面の内容が検索されない:

挙動がおかしいという趣旨とはもはや関係ありませんが、以下の仕様に関しては特に気をつける必要があるのであらためてまとめます。

  • 【未使用定義を消去】 拡張命令用の定義が空定義に化けうる
  • 【未使用ファイル削除】 拡張命令専用のファイルが消されうる
  • 【未使用ファイル削除】 同位の他譜面の専用ファイルが消されうる
  • 【定義リストの整列】 拡張チャンネル文の参照番号がずれうる

変換ウィザードは BMS フォルダをバックアップしてから実行することを強くおすすめします。また拡張命令タブの内容は、他のあらゆる編集工程の完了後に記述することをおすすめします。そして譜面を開く際は最初に拡張命令タブを確認することをおすすめします。

右クリックでオブジェを削除する】 書込モードで効かない:

2006年3月23日 1.3.2 で修正され、2006年10月29日 1.3.6 で再発しました。

  • BMSE 1.3.9 Beta 14 で修正されました。
Select Theme#xxx[3-4][8-9] の上辺・左辺 (ObjectLight) が、可視オブジェクトの設定色と黒との中間色にならない

2005年1月13日 1.1.0 からのバグです。

設定パネル】 数値入力フォームに小数部分がある間、変更フラグが下りない:

バグかもしれませんが、当ヘルプは暫定的にこれを小数フラグとして扱っています。

設定パネル】 プレイモード・難易度表示・判定を変更したとき、タイトルバーにアスタリスクが表示されない:

UndoCounter も加算されませんが、内部的には変更フラグが立った状態です。

定義リストドラッグ・アンド・ドロップでなんでも定義できてしまう:

#WAV 定義リストに BMP を登録できたりするので、変換ウィザードで定義を整理する工程はほぼ必須です。

ちなみに BMSC [http://tixlab.com/software/bmsc.shtml] (外部リンク)iBMSC [https://hitkey.nekokan.dyndns.info/ibmsc_ja/] (外部リンク)/μBMSC [https://github.com/zardoru/iBMSC/releases] (外部リンク) は拡張子フィルタを適用します。

定義リスト】 リストアイテムを一行単位でしか入れ替えられない:

複数行の入れ替えには BMS List Sorter [https://childs.squares.net/program/bmslsort/index.html] (外部リンク)iBMSC [https://hitkey.nekokan.dyndns.info/ibmsc_ja/] (外部リンク)/μBMSC [https://github.com/zardoru/iBMSC/releases] (外部リンク) をご利用ください。

定義リスト】 新規作成後から譜面を保存するまでの間、プレビューやリネームが不可能:

譜面ファイルが存在しない時点では BMSE.exe が基点パスとなるため、外部ビューワなども鳴りません。BMSE.exe の同位から参照できるファイルはプレビュー・リネーム可能です。ビューワ用の一時ファイルも、この時点では BMSE.exe の同位に出力されます。

何はなくとも最初に保存して、一時ファイルではない実体の譜面ファイルを作ってください。もしくはテキストファイルを新規作成し、拡張子を変更して編集開始すれば、この問題のみならず他の問題も回避できるのでおすすめです。

定義リスト#BMP へのドロップ定義変更フラグが立たない:

おそらくバグと思われます。#WAV へのドロップは変更フラグが立つからです。

#BGA#BGA タブの定義リスト選択カーソルが [(Shift +) テンキー±] で移動せず、なぜか #BMP タブの定義リスト選択カーソルだけが移動する:

#BMP#BGA は定義番号を共有しているはずなので、常にカーソルが連動する挙動こそ正しいように思われます。連動しないのはこのケースのみなので、おそらくはバグと思われます。

[Ctrl + Shift + テンキー±] は #BMP でも #BGA でも正常に動作します。

#BGA】 妥当でない値を #BGA 入力枠に入力できてしまう:

#BGA 入力枠は単なるテキストボックスなので、無関係な文字列なども指定できてしまいます。

プレビューウィンドウ “Copy” ボタン からの貼り付けに限定すれば安全です。

プレビューウィンドウ】 PNG 形式の画像をプレビューできない:

Visual Basic 6.0 の仕様です。

プレビューウィンドウ】 負数座標 (左上方向) に非対応:

ヘルプ筆者は BM98 3.31 Drink Edition に同梱された例 [https://web.archive.org/web/*/http://mru.hp.infoseek.co.jp/] (外部リンク)でしか #BGA 負数座標の使用例を見たことがありませんが、#BGA をサポートする実装は負数座標もサポートしています。唯一の例外が BMSE です。(エディタという性質上、致し方ないとは思います)

リネーム】 リネーム実行時、変更フラグが立たない:

リネーム後に保存せずに BMSE を終了すると、終了の確認が促されることもなく本当にそのまま終了し、「変更前の定義名」と「変更後のファイル名」が食い違ってしまいます。

ユーザがとりうる対策はふたつあります。終了コマンドから間接的に保存する習慣を捨てることと、リネーム機能を使わないことです。

リネーム重複定義が考慮されない:

重複定義のひとつをリネームすると、重複する他の定義は元の名前のまま残されます。元の名前のファイルはもはや存在しないため、元の名前のまま残った定義は参照もリネームもできなくなります。

ユーザがとりうる対策は、リネーム機能を使わないことです。

リネーム】 ファイル名に使えない文字も入力できてしまう場合がある:

Windows 環境では [\ / : , ; * ? " < > |] が禁止文字として警告されます。コンマやセミコロンは入力できる環境のほうが多いはずですが、これらを列挙パスの区切り文字などに使っているプログラムは誤解釈する可能性があり、またセミコロンは記憶媒体用のファイルシステム ISO 9660 [https://ja.wikipedia.org/wiki/ISO_9660] (外部リンク) において特殊な意味を持つので、使用を避けるほうが無難です。実際に CD-R などでファイル名からセミコロン以降が消えたという事例もあります。

[Unicode Character 'SPACE' (U+0020) $ % & ' = ^ ¥  ] なども、場合により処理が面倒な文字です。「見えない文字」は潜在的に危険なので使用を避けましょう。特にファイル名の最初と最後、および拡張子のピリオドの直前には空白を置かないでください。

[.] は拡張子の前置符としてのみ使用してください。ピリオドから始まる名前は、Mac OS の Finder でファイルが見えなくなるそうです。ピリオドが連続する名前は、環境によってはファイルを消せなくなるそうです。リネームフォームに「ピリオドで終わる名前」を指定すると、実際のファイルはピリオドが含まれない (拡張子なしの) 名前となり、譜面から参照できなくなります。

拍子BMSE から指定できない拍子を、ナビゲーションが正しく表示できない:

小節長 1.01562515.984375 など、拍子タブから入力できないけれども 64 分音符で表現できる値が該当します。メインパネル上では正常に編集可能です。これらの拍子を一時的に変更してから元に戻すと、65/64” や “1023/64” などのように正しい値で表示されるようになります。

拍子】 読み込み時、小節長を 0.015625 の倍数値に丸める:

仕様です。BMSE で開いた時点で、64 分音符で割り切れる小節長に変更されています。丸め処理が行われたかどうかの判断が難しい場合がしばしばあるので、見分ける自信がない方は、対象譜面を BMSE で開く前にbms diff tool [https://stairway.sakura.ne.jp/smalltools/minibmsplay/diff.htm] (外部リンク) に 2 回ドラッグ・アンド・ドロップして「比較」してください。

拍子】 読み込み時、16 より大きい小節長を 16 に切り詰める:

同上。

拡張命令】 読み込み時、65536 文字以降が破棄される:

Windows 2000/XP 以降は拡張命令タブの内容が溢れても強制終了することはなく、無言で超過分が破棄されます。譜面に改竄があったかどうかは勘で見分けるしかありません。

さらなる落とし穴として、拡張命令タブの内容をクリップボードに格納しようとすると、非 ASCII 文字列が含まれる場合に奇妙な現象が発生する場合があります。コピーしたはずの内容に対してペースト文字数が明らかに足りていない場合は、コピー範囲を狭めて再度コピーしてください。

BGM】 読み込み時、小節あたり 32 行までを解釈し、以降は破棄する:

これも判別しづらい仕様です。何も考えずに BMSE で開き、何も変更せずに別名で保存して、元譜面と別名譜面を WinMerge [https://winmergejp.bitbucket.io/] (外部リンク) などで “比較” するという方法が、個人的には検出しやすいのではないかと思います。

【BMSE がサポートしないチャンネル文】 読み込み時に破棄する:

基本的には破棄されますが、破棄されないチャンネル文もあります。

番号 処理 解説
00 破棄 永久欠番チャンネル
05 破棄 [BM98] Extended Object / [LunaticRave] #SEEKxx
0A 保持 [nanasi] BGA LAYER2 の 配置データチャンネル
0B-0E 保持 [nanasi] BGA / LAYER / LAYER2 / POOR の不透明度変更
[1-6]7 破棄 [BM98] フリーゾーン関連の配置データチャンネル
97-98 破棄 [forgetalia] BGM / KEY の動的音量変更
99 破棄 [pomu] 動的テキスト変更 (#TEXTxx 定義は保持)
A0 保持 [nanasi] 動的判定変更 (#EXRANKxx 定義も保持)
A1-A4 保持 [nanasi] BGA / LAYER / LAYER2 / POOR の ARGB 値変更
A5 保持 [nanasi] キー反応 BGA (#SWBGAxx 定義も保持)
A6 保持 [nanasi] 動的オプション (#CHANGEOPTIONxx 定義も保持)
D1-E9 破棄 [nanasi] 地雷 (#WAV00 定義も破棄)
SC 保持 [Bemuse] スクロール変更 (#SCROLLxx 定義も保持)
SP 保持 [Bemuse] 二点間のノート間隔を線形補完で変更 (#SPEEDxx 定義も保持)

Extended Object、フリーゾーン、動的音量変更、動的テキスト、および地雷はダミー分岐に包含すれば、拡張命令タブの内容として残すことができます。

ヘルプ筆者はチャンネル #xxx00 の用例を Nam-A-Mix [https://twitter.com/senobeya/status/205294916501372931] (外部リンク) しか知りませんが、これもダミー分岐に括れば普通に保護できます。

拡張命令】 BMSE は #SWITCH [https://hitkey.nekokan.dyndns.info/cmdsJP.htm#SWITCH] (外部リンク) 系の拡張分岐命令に非対応:

#SWITCH n#ENDSW は「拡張命令タブに隔離すべき区間」とは認識されず、読み込み時、この区間内は通常の (非分岐の) 命令文として解釈されます。

幸い #SWITCH 実装組は入れ子の #RANDOM もサポートしているので、#SWITCH をまるごとダミー分岐で包む」という方法で対処できます。(ただし、#SWITCH 区間が入れ子の #RANDOM を含まない場合」に限られます。)

#RANDOM 1
#IF 1
  #SWITCH 3
  #CASE 1
    // ダミーで括らないと分岐から外される
    #00116:03030303
    #SKIP
  #DEF
    // ダミーで括らないと分岐から外される
    #00116:07070707
  #ENDSW
#ENDIF
#ENDRANDOM

インデント (行頭の空白) は便宜上のものです。BMSE やナナシグルーヴはインデントをサポートしていないので、本番コードではインデントを使わず、全行を行頭側に寄せてください。

ナナシグルーヴ仕様において、#ENDRANDOM分岐を入れ子にする場合は必須とされています。実際にナナシグルーヴでは、入れ子の有無を問わず #RANDOM n ひとつにつき #ENDRANDOM ひとつを書いて分岐を閉じておかないと、閉じられていない #RANDOM 分岐が 47 回現れたあたりで強制終了します。したがって、常に #ENDRANDOM を書くほうが安全です。

拡張命令】 読み込み時、[#] から始まらない行が破棄される:

行の破棄が行われたかどうかの判断が難しい場合がしばしばありますが、仕様です。%URL%EMAILインデントされた行 [https://hitkey.nekokan.dyndns.info/cmdsJP.htm#INDENT-STYLE] (外部リンク)、隠しメッセージなど、すべて捨てられます。これらはダミー分岐でも保護できません。

特に #ENDIF をインデントしていると、BMSE が分岐区間の終端を認識できず、メインパネルに描画されるべき内容がまるごと拡張命令タブに収容されたりします。インデントしないでください。

プレビューウィンドウ】 画像の上限以降の領域は描画されない:

Windows 2000/XP/Vista での幅・高さの上限は 32767 pixels です。

Windows 7/8/8.1/10/11 での幅・高さの上限は 65534 pixels です。

Windows 95/98/ME では、描画しきれない画像を読み込むと問答無用で BMSE が強制終了するので、ある意味ではわかりやすいのですが、Windows 2000 以降では上限に抵触したかどうかの判断が難しい場合があるかもしれません。

ステータスバー】 グリッド座標が明らかに間違っている場合がある:

たとえば 4 分の 4 拍子小節の 2 拍目にあるオブジェクトは、Grid 6 のとき “Position: 1/6” と表示されます。3 連符リズムはどこかで不正確な値が表示されるものと心得てください。正確な座標は Grid FREE からご確認ください。

検索・削除・置換】 オブジェクトを属性で絞り込めない:

不可視やロングノートだけを検索したい場合、iBMSC [https://hitkey.nekokan.dyndns.info/ibmsc_ja/] (外部リンク)μBMSC [https://github.com/zardoru/iBMSC/releases] (外部リンク) を使うのが手っ取り早いでしょう。抵抗がなければ正規表現を使えるテキストエディタなどで編集するのもおすすめです。

検索・削除・置換】 置換先番号を空や 0 にすると、オブジェクト番号 00 になる:

この状態のまま保存すると、番号 00 のオブジェクトはすべて消えます。落ち着いて “元に戻す” を実行してください。

検索・削除・置換】 置換しない場合も、置換番号枠がグレーアウトしない:

Tab フォーカスが “処理” フィールドを通過すると、必ず “置換” が選択されます。微妙に不便ですが、マウスを使えば問題ありません。

ビューワの設定】 リストアイテムを “削除” したとき、詳細設定枠が更新されない:

たとえば以下の例で viewer B を“削除” したいものとします。

  1. viewer B を選択する →
    リスト 詳細設定枠
    viewer A viewer B の設定
    viewer B (selected)
    viewer C
  2. viewer B を “削除” した
    リスト 詳細設定枠
    viewer A viewer B の設定
    viewer C (selected)
  3. “OK” 後
    リスト
    viewer A
    viewer B

viewer B を削除すると、リスト上では次位置にあった viewer C が選択されます。しかしウィンドウ右側には、削除された viewer B 用の設定内容が残り続けます。これに気づかずに “OK” すると、viewer C の内容として viewer B の設定を保存したことになります。最終的には、「viewer B を “削除” したと思ったら、viewer C が消えていた」というわけのわからない結果がもたらされます。

削除ボタンには別の問題もあるので、ビューワの設定ウィンドウは使用しないほうが無難です。bmse_viewer.ini をバックアップしてからメモ帳などで直接編集することを強く推奨します。

ビューワの設定】 既存アイテムと同名の設定は、追加が反映されない場合がある:

再現条件は不明です。

ビューワの設定bmse_viewer.ini の書式が繊細:

ビューワ設定ファイルは、行の順序に強く依存します。行の内容はほぼ問われません。特定の項目の値を空にする場合、その行を空行にしなければなりません。

しかし「表示する名前」に該当する行を空にすると、以降のリストアイテムは解釈されません。たとえば設定ファイル先頭に改行を挿入すると、それだけでリストは空っぽになります。

各設定の終端には空の行が必要です。リストの最末尾アイテムもです。メモ帳で編集する場合はわかりづらいのでご注意ください。

BPM】 新規作成時および #BPM 未設定譜面を開いたとき、値 120 が適用される:

BMS 仕様書 [http://bm98.yaneu.com/bm98/bmsformat.html] (外部リンク)は、#BPM の既定値を 130 と規定しています。

2005年11月9日 1.3.0 にて、BMSE の BPM 既定値も 130 に変更されました。しかし実際には、#BPM 130 が適用されるのは BMSE 単独起動時のみです。


よくわからない系 (調査中)

【ErrorNo.401】 モーダル フォームが表示されているときはモードレス フォームを表示できません:

再現方法失念。(クリップボード拡張か何かの外部アプリケーション併用時?)

【ErrorNo.521】 クリップボードを開けません:

再現方法失念。(2009年末、bMoL を導入して遊んでいた時だったような?)

【ErrorNo.10】 この配列は固定されているか、または一時的にロックされています:

再現方法失念。

【ErrorNo.-2147417848】 オートメーション エラーです。
起動されたオブジェクトはクライアントから切断されました。:

再現方法失念。なんぞこれ……

【BMSE 多重起動中】 ウィンドウ間でクリップボード情報をやりとりして undo か何かすると、何か起きたような:

うろおぼえすぎる。

BMSE ウィンドウが非アクティブ、かつキーボードにもマウスにも触れていない状態で、放置していると数分後に突然強制終了する:

再現条件不明。2010年3月頃に Windows XP SP3 上にて頻発、バックアップも作成されず困りました。いつのまにか再発しなくなりました。Windows Update か何かのおかげでしょうか。

BMSE 起動直後からビューワ選択枠がフォーカスされているように見える場合がある:

再現条件不明。ヘルプ著者は Windows 11/10 でのみこの現象に遭遇しています (仮想環境も含め、結構な頻度で)。

外観をカスタマイズしていない既定の Windows 11/10 では、通常状態のビューワ選択枠は「白背景に黒字」、フォーカスを得たビューワ選択枠は「青背景に白字」で表示されます。通常なら BMSE 起動直後のビューワ選択枠は「白背景に黒字」なのですが、この現象が発動すると「青背景に白地」で表示されます。

この現象が発生すると、ビューワ選択枠を左クリックしても反応がなかったり、クリックした一瞬だけビューワ選択リストボックスが展開されかけて一瞬で元に戻ったり、「ビューワ選択枠にフォーカスが残ったまま」他の選択リストボックスを操作できたりします。

起動直後にビューワ選択枠がフォーカスされていた場合、フォーカスが外れるまで [Shift] + [Tab] → [Tab] → [Tab] のようにキーを何度か叩くとよいでしょう。