設定パネル
譜面ヘッダ設定や、
基本・拡張・環境の各タブを左クリックして、グループを切り替えます。タブ自体にフォーカスがあるとき、矢印キーでタブを切り替えることもできます。
基本タブ
譜面のヘッダ情報を設定します。
プレイモード
譜面のプレイモードを指定します。モードによってメインパネルの演奏レーン数も変動します。BMS 書式における対応コマンドは “#PLAYER [1-4]
” です。
1 Player
- 1 枚の譜面を 1 人で遊ぶ
- グルーヴゲージ数 1
#PLAYER 1
2 Player
- 2 枚の譜面を 2 人で遊ぶ
- グルーヴゲージ数 2
#PLAYER 2
Double Play
- 2 枚の譜面を 1 人で遊ぶ
- グルーヴゲージ数 1
#PLAYER 3
9 Keys (PMS)
- 1 人用、
#PLAYER 3
-
拡張子 .pms に変更必須
(5 Keys DP と区別するため)
13 Keys (oct/fp)
- 1 人用、
#PLAYER 3
-
拡張命令
#OCT/FP
記述必須(7 Keys DP と区別するため)
プレイモードに関する注意点
プレイモードを変更したとき、テーマファイルは自動では変更されません。
BMSE は以下のプレイモードをサポートしません。
- 18 Keys (PMS)
- Battle Play
-
- 1 人用譜面 2 枚を 2 人でプレイしてスコアを競う、
BM98 専用モード #PLAYER 4
(大半のアプリケーションは無視するか誤動作する)
- 1 人用譜面 2 枚を 2 人でプレイしてスコアを競う、
- その他 (外部資料
を参照)
-
フリーゾーンなどの BMSE 非対応チャンネルが絡まないものなら、
BMSE で編集できます。たとえば O2mania 用のテーマファイルが BMSE-dttvb に同梱されています。
ジャンル
選曲画面やロード画面にジャンル情報として表示する文字列を指定します。普通はその曲のジャンルを記述します (“TECHNO
” とか “HOUSE
” とか)。
BMS 書式における対応コマンドは “#GENRE string
” です。不要ならコマンドは省略できます。値は空でも構いません。
タイトル
選曲画面やロード画面にタイトル情報として表示する文字列を指定します。普通は曲名を記述します。タイトルの後に続けてプレイモードや譜面種別を併記する場合もあります (“-14Keys HYPER-
” とか)。
BMS 書式における対応コマンドは “#TITLE string
” です。互換性のため、必ず何らかの値を指定してください。
一部のアプリケーションは、タイトルの値の一部をサブタイトルとして解釈し、タイトル情報とは区別して表示します。(ただし多少の問題
あり)
一部のアプリケーションは、サブタイトルや譜面種別を明示的に指定できる拡張命令をサポートしています。以下は拡張命令タブに記述できます。
#SUBTITLE string
-
サブタイトルを指定します。暗黙の副題文字列は誤解釈されうるので、問題を回避したい譜面著者は以下のように副題を分離します。
#TITLE title
#SUBTITLE -14Keys HYPER-
#DIFFICULTY [1-5]
-
譜面種別を指定します。曲に対して譜面が複数枚用意されているとき、それらを分類できます。値が大きいほど困難な譜面です。
この情報は選曲画面で譜面種別をフィルタリングする際に使われます。便利なので、近年の BMS 著者は大半がこの拡張命令を使用しています。
#TITLE BEGINNER
#DIFFICULTY 1
#TITLE LEGGENDARIA
#DIFFICULTY 5
アーティスト
選曲画面やロード画面にアーティスト情報として表示する文字列を指定します。普通は作者名を記述します。作者名の後に続けて原曲作者名や BMS 作者名や映像作者名や譜面作者名などを併記する場合もあります。
BMS 書式における対応コマンドは “#ARTIST string
” です。不要ならコマンドは省略できます。値は空でも構いません。
一部のアプリケーションは、補助作者名を明示的に指定できる拡張命令をサポートしています。以下は拡張命令タブに記述できます。
#SUBARTIST string
- 映像作者名や譜面作者名などを指定します。複数の
#SUBARTIST
命令を併記できる機種もあります。
難易度表示
選曲画面やロード画面に表示する譜面難易度情報を 10 進数で指定します。プルダウンメニューから 0
~ 8
を選択できるほか、半角英数字を直接入力することができます。値が大きいほど難易度が高いことを示します。
値の解釈範囲や表示方法はアプリケーションにより異なります。値が 0
のとき特殊な表示を行うものや、文字列値を解釈できるものもあります。
BMS 書式における対応コマンドは “#PLAYLEVEL n
” です。
- このコンボボックスに文字列を入力して保存すると、文字列値が保存されます。しかしそれを BMSE で読み込むと、値
0
になります。 - このコンボボックスに小数がある間、小数フラグが立ちます。
- 難易度の基準は曖昧なうえ、時代や文脈によって大幅に異なります。
BPM
その譜面のプレイ開始時点での BPM (初期 BPM) を、
BPM (Beats Per Minute) は 1 分ごとの拍数 (4 分音符数) を示します。
BMS 書式における対応コマンドは “#BPM n
” です。大半のアプリケーションは小数値も解釈します。互換性のため、必ず値を指定してください。
- 小数値の初期 BPM を反映しないアプリケーション
- BMS Viewer, BMS2WAV, otama, GALLI, KbMedia (bmse.kpi),
forgetalia
- このテキストボックスに文字列を入力して保存すると、文字列が保存されます。しかしそれを BMSE で読み込むと、値
0
になります。 - 初期 BPM は、拡張 BPM 変更命令 (“
#BPMxx n
”) とは別のものです。
拡張タブ
譜面のヘッダ情報を設定します。拡張タブ配下のヘッダはおおむね省略が許されていますが、#RANK
・#TOTAL
はゲーム性に直結するので調整しましょう。
#RANK![[https://hitkey.nekokan.dyndns.info/cmdsJP.htm#RANK] (外部リンク)](Capture/external.gif)
演奏時に要求されるタイミングの正確さを選択します。判定が広いほどスコアを得やすくなります。具体的な判定幅や省略時解釈は、アプリケーションにより異なります。#RANK [0-3]
) をサポートしています。
- Very Hard
#RANK 0
(判定がとても狭い)- Hard
#RANK 1
(判定が狭い)- Normal
#RANK 2
(標準的な判定)- Easy
#RANK 3
(判定が広い)- Very Easy
#RANK 4
(判定がとても広い・BMSE 非対応) #DEFEXRANK
- 判定を詳細に指定・
BMSE 非対応 - Random
#EXRANK
(判定を動的に変更・BMSE 非対応)
BMSE がサポートしていない拡張判定を編集するには
#RANK 4
- テキストエディタなどで譜面を開き、
“ #RANK
” の値を書き換えて保存します。 #DEFEXRANK n
-
- 一応 iBMSC で編集可能です。
“ #EXRANK
” というラベルがついているフォームに値を指定してください。保存後にテキストエディタなどで譜面を開き、“ #EXRANK
” を “#DEFEXRANK
” に直して保存します。 - 普通にテキストエディタから編集するほうが早いという説もあります。
- μBMSC では “
#DEFEXRANK
” を普通に読み書きできるよう修正されました。ただし、ラベルだけは “#EXRANK
” のまま変更されていません。気になる方は Theme ファイルを編集して、正しいラベルに変更してください。 - 詳細は外部資料を参照してください。値
100
は#RANK 2
と等価です。 #RANK
を指定したうえで#DEFEXRANK
も指定しておけば、後者をサポートしていない機種にも対応できます。
- 一応 iBMSC で編集可能です。
#EXRANKxx n
-
- 2P 側や BGA を使用していない譜面なら、
【判定を変更する位置だけを未使用レーンに仮配置 → テキストエディタから置換】ができます。 - BMSE は動的判定チャンネル文
#xxxA0
を拡張命令タブに隔離します。地雷やフリーゾーンの場合のようなダミー分岐は不要です。
- 2P 側や BGA を使用していない譜面なら、
#TOTAL![[https://hitkey.nekokan.dyndns.info/cmdsJP.htm#TOTAL] (外部リンク)](Capture/external.gif)
グルーヴゲージの上昇量を 10 進数で指定します。たとえば #TOTAL 200
なら、ゲージは最大で +200 % 増加します。
ここでもし演奏オブジェクト総数が 200 個なら、最も正確なタイミングで演奏オブジェクト 1 個を処理できたとき、ゲージは +1 % 増加します。
ゲージ初期値やクリア認定ラインは、アプリケーションやその環境設定によって異なります。これが難易度に影響する場合もあります。
- クリア認定ラインが
80 %
のとき、#TOTAL 60
の譜面は、 -
- ゲージ初期値 22 % の nazobmplay
ではクリア可能
- ゲージ初期値 9 % の MixWaver
ではクリア不可能
- グルーヴゲージの種類によっても、ゲージ増加量の扱いが変わります。
- ゲージ初期値 22 % の nazobmplay
未指定時に各機種が適用する既定値は互換性がまったくないので、必ず何らかの値を設定してください。
- このテキストボックスの内容が空もしくは
0
もしくは文字列のとき、BMSE から保存すると BMS コード中の #TOTAL
行が省略されます。 - 演奏オブジェクト総数はアプリケーションによって変動します。ロングノートの終端を演奏オブジェクトとして数えるかどうか次第で、グルーヴゲージの伸び率も変動するかもしれません。
#VOLWAV![[https://hitkey.nekokan.dyndns.info/cmdsJP.htm#VOLWAV] (外部リンク)](Capture/external.gif)
譜面を再生したときの音量を、元の音声ファイルに対するパーセンテージで指定します。音声ファイルそのものを改変するわけではありません。
#VOLWAV 100
もしくは #VOLWAV
記述省略時、その譜面は元の音量で再生されます。#VOLWAV 200
なら 2 倍の音量になります、すくなくとも KbMedia Player (旧 bmse.kpi, 現 kbbms.kpi) では。値によっては環境にダメージを与えるのでご注意ください。
この命令はアプリケーションやハードウェアに大きく依存するため、現在は「うかつに設定しないほうが無難」とされています。
アプリケーションが解釈するオブジェクトすべての音量が変更されます。演奏音と BGM に音量差をつけたい場合は、その機能を有する Lunatic
- このテキストボックスの内容が空もしくは
0
もしくは文字列のとき、BMSE から保存すると BMS コード中の #VOLWAV
行が省略されます。
#STAGEFILE![[https://hitkey.nekokan.dyndns.info/cmdsJP.htm#STAGEFILE] (外部リンク)](Capture/external.gif)
選曲画面やロード画面に表示する画像を指定します。いわゆるスプラッシュスクリーンです。テキストボックスに画像ファイル名を直接記述するか、参照ボタン を左クリックして参照ダイアログから画像ファイルを選択します。
#STAGEFILE
を指定すると、ステージ読み込み中に、指定した画像が表示されます。
#STAGEFILE
を他の状況に使用する機種もあれば、逆に一切表示しない機種もあります。
#STAGEFILE
省略時、各機種は既定のロード画面を表示するでしょう。
既定のロード画面は一般的に、静止画で #TITLE
や #ARTIST
や #GENRE
などの曲情報を表示します。スプラッシュムービーを表示する機種もあります。
タイトル画像の一般的な形式は、
通常は譜面の同位の画像ファイル名を指定します。パスの定義を解釈できる機種もあります。
- 同位の階層を参照する例
- 1 階層上位を参照する例
- 1 階層下位を参照する例
- パスの定義をファイル参照ダイアログから行うことはできません。
-
パスの階層区切り記号にスラッシュを使用すると、下位方向では参照ボタンが反応しません。他にも不具合が生じる状況があります。
一部の機種は、選曲画面などに別の装飾を適用できます。
#BANNER imagefile
-
300 × 80 pixels のバナー画像を表示します。近年リリースされる BMS や PMS の多くがこの拡張命令を使用しています。
GIF アニメーションは使用できないようです。 #COMMENT "string"
-
引用符で括った文字列を表示します。おもに選曲画面にテキストが表示されます。年に 10 作くらいはこの拡張命令を見かける印象があります。
#BACKBMP imagefile
-
本来は DDR の独自拡張命令で、演奏画面の背景画像を指定できます。
Lunatic
Rave2 用スキン “OVER ACTiVE DX+” は、これをオープニングイメージとして使用します 。曲情報は、任意のフォントおよび任意のレイアウトで装飾されます。
beatmania IIDX のような演出が支持され、近年では本来の DDR 仕様と異なる用例が珍しくありません。
#BMP00![[https://hitkey.nekokan.dyndns.info/cmdsJP.htm#BMPXX] (外部リンク)](Capture/external.gif)
演奏ミス時に表示される既定のミス画像を指定します。テキストボックスにファイル名を記述するか、 からファイルを選択します。
既定のミス画像の一般的な形式は、#BMP00
は、一部の機種のみ再生できるようです。
省略時の解釈はソフトウェアにより異なります。大半の実装では演奏ミス時に映像表示領域が数秒ほど黒く塗り潰されます。
メインパネル POOR レーンの「ミス画像を途中変更するオブジェクト」とは別物です。#BMP00
に画像が定義されているなら、#BMP00
の画像が表示されます。
POOR レーンに 1 個でもオブジェクトを配置すると、その地点から演奏終了までの間 #BMP00
は再表示されません。ミス画像の使いまわしが必要なら、#BMP01
以降に定義したミス画像を、#000
先頭に配置します。
- BGA・
LAYER・ POOR レーンに画像オブジェクトが配置されていないとき、一部のアプリケーションは #BMP00
を表示しません。 - #STAGEFILE と同様に、一部のアプリケーションではパスも定義できます。
- 【変換ウィザード → ファイル名を連番に変換】を実行すると、
#BMP00
に定義したファイルも “00.bmp
” や “00.png
” などにリネームされます。
環境タブ
メインパネル演奏領域の表示方式を設定するリストボックス群です。このタブの項目は譜面ヘッダには関与しません。
キー表示 
セパレートのとき、すべてのレーンを等幅で表示します (デフォルト)。
ハーフのとき、隣接する鍵盤レーンを【表示幅】の半分で表示します。
ハーフ表示が可能なアプリケーションでは、偶数番目の鍵盤レーンの演奏オブジェクトは、ピアノ様にレーンライン上に表示されます。
ハーフ表示の同時押し配置では、鍵盤デバイスにおける手前同士・奥同士の組み合わせは見やすくなり、手前+奥の組み合わせは重なって見づらくなります。隣り合うロングノートの視認性には特に気を払う必要があるでしょう。
ハーフ/セパレート は、プレイモードを問わずいつでも変更できます。
-
ハーフ表示は厳密には、
[隣接鍵盤レーン 1 本につき、表示幅 1 /4 短縮] -
選択したオブジェクトは他のオブジェクトより前面に描画されるため、ハーフ表示中は隣接オブジェクトが完全に隠れる場合があります。
-
ハーフ表示中はオブジェクトを必ずしも見ため通りには選択できません。水平方向の選択判定は、常にレーン座標と一致します。
キー配置 
- プレイモードが 9 Keys (PMS) か 13 Keys (oct
/fp) のとき、この項目はメインパネルの表示に影響を及ぼしません。
7 Keys・
5 Keys・
適切に設定すれば、使わないレーンにオブジェクトが配置されてしまう編集ミスを未然に防ぐことができます。表示幅も 2 列 (4 列) 節約できます。
5 Keys・
スクラッチ (1P / 2P) 
- プレイモードが 9 Keys (PMS) か 13 Keys (oct
/fp) のとき、この項目はメインパネルの表示に効果を及ぼしません。
スクラッチレーンを、鍵盤レーンの左右どちら側に表示するかを選択します。演奏領域 1P と 2P それぞれに対して個別に指定できます。
スクラッチは、筐体や専用コントローラでは “円盤を回す” ことで入力するオブジェクトです。打鍵とは別種の操作が要求されるため、同じ譜面でもプレイ環境により難易度が極端に変わる場合があります。プレイ環境を考慮する際に、このレイアウト変更メニューが役に立ちます。
参考: beatmania 筐体のスクラッチレイアウト
- 5 鍵盤
-
- 7 鍵盤
-
5 鍵盤筐体レイアウトにおいて、 「鍵盤左端のキー」と「鍵盤右隣のスクラッチ」を片手で同時に処理することは困難です。
一般的なサイズの人間の場合、
5 鍵盤筐体レイアウトのダブルプレイにおいて、
レイアウトを問わず、鍵盤同時押しとスクラッチの片手複合は困難です。
スクラッチと鍵盤両端のキーを片手で同時に入力することは不可能です。
片手側のオブジェクトを瞬間的に両手で処理することは可能ですが (俗にいう “引越し”)、タイミングが詰まっている場合はそれも困難です。
タイミングをずらして両方拾うにしても、配置によっては曲芸じみた操作が要求されます。
オブジェクトを捨てるにしても、スクラッチ 4 個を見逃すとグルーヴゲージが 24 % 減ります。ステージをクリアするための条件としてグルーヴゲージ 80 % 以上が要求される場合、譜面の最後にこういった配置があると大変です。
キーボードでプレイする場合、スクラッチ位置の制約はありません。
遊ぶ側はアプリケーション設定でレイアウトを変更できますし、特にこだわらなければ専用コントローラでも肘や足を使えますから、気にしなければしないでも問題ありません。
beatmania の文脈に沿った譜面を作成するなら、
設定パネル概要
設定パネルの数値入力フォームについて
- IME は常に無効になります。
- 有効数字 15 桁です。
16 桁以降は丸められます。 - 小数部分を含む数値 (浮動小数点数も含む) がフォームにある間、小数フラグが持続します。小数部分が
0
のみの連続なら、小数とみなしません。 - 有効数字とは別に、フォームごとに有効範囲が定められています。範囲外の値を読み込むと強制終了したり、終了できなくなります。
(オーバーフロー、不正なプロパティ、保存時オーバーフロー、ファイルは既に開かれています)
設定パネルの有効範囲について
- 以降で示すのは「BMSE における有効範囲」です。他のアプリケーションでは有効範囲は異なる場合がほとんどです。
- プレイモードやキー配置からレーンを非表示にしたとき、配置済みのオブジェクトは元の場所に残ります。非表示状態のまま読み込みや保存ができ、変換ウィザードや “検索・削除・置換” でも検索されます。
- プレイモード指定と衝突して不思議な見た目になるソフトもあります。普通の譜面を作るなら、非表示レーンのオブジェクト消し忘れにご注意ください。
#PLAYER
-
- 有効範囲
0
~5
- (内部的には符号付き 16 ビット整数型:
-32768
~32767
?) - 文字列や空の値が指定されれば値
0
を適用 #PLAYER
省略時は値1
を適用- 値
0
ならプレイモードを適用しない (註) - 値
1
なら 1 Player を適用 - 値
2
なら 2 Player を適用 - 値
3
なら Double Play を適用 - 値
4
なら 9 Keys (PMS) を適用 (註) - 値
5
なら 13 Keys (oct/fp) を適用 (註)
[註] 値
0
/ 4
/ 5
は BMS の書式仕様とは無関係です。単に BMSE がそのように解釈することを示しています。以降の項目についても同様です。 - 有効範囲
#GENRE
,#TITLE
,#ARTIST
-
- [Windows 11
/10 /8.1 /8 /7 /Vista /XP /2000] -
- 各 43679 bytes まではフォームに表示される?
- 各 65535 文字までは読み込まれる (65536 文字目以降は切り捨て)
- 保存するだけなら 15 万文字以上でも問題なく保存できる?
- ただし ASCII 文字と非 ASCII 文字が混在する値は意味不明な結果に
- [Windows ME
/98 /95] -
- 各 32766 bytes までは表示され、読み込まれ、保存できる
- 32767 bytes 以降は表示されず、読み込まれず、入力できない
- やはり ASCII 文字と非 ASCII 文字が混在する値は意味不明な結果に
- [Windows 11
#PLAYLEVEL
-
- 符号付き 32 ビット整数型:
-2147483648
~2147483647
- 文字列や空の値なら値
0
を適用 #PLAYLEVEL
省略時は値1
を適用
- 符号付き 32 ビット整数型:
#BPM
-
-
倍精度浮動小数点数型 (64 ビット):
- 文字列や空の値なら値
0
を適用 #BPM
省略時は値120
を適用
-
#RANK
-
- 符号付き 16 ビット整数型:
-32768
~32767
- 範囲内なら
0
~3
に丸める - 負数や文字列や空の値なら値
0
を適用 #RANK
省略時や3
以上なら値3
を適用- 値
0
なら VERY HARD - 値
1
なら HARD - 値
2
なら NORMAL - 値
3
なら EASY
- 符号付き 16 ビット整数型:
#TOTAL
-
±4.94065645841247E-324
~±1.79769313486231E+308
- 文字列なら値
0
を適用
#VOLWAV
-
- 符号付き 16 ビット整数型:
-32768
~32767
- 文字列なら値
0
を適用
- 符号付き 16 ビット整数型:
#STAGEFILE
,#BMP00
-
-
ファイル参照ダイアログを経由する場合、パス長さ上限は ANSI コードページ換算で 256 bytes (半角英数字なら 256 文字分)
(257 bytes 以降は、ダイアログから読み込む際に切り捨てられる)
- 参照ボタンは 260 bytes まで有効
- パスが無効なら参照ボタンが反応しない
- ファイル参照ダイアログを経由しない場合、
[ #GENRE
,#TITLE
,#ARTIST
] と同様に 1 行テキストボックスに関する制限が課せられる
-
BMSE 上で扱えるパス長さの上限に関する冗長な注釈
BMSE が扱えるパス長さ上限は ANSI コードページ換算で 256 bytes です。
Windows 95
Windows における “ANSI” の文字符号化方式はシステムロケールによって異なり、一般的な日本語環境ではコードページ 932 (別名 Windows-31J) が使われます。この文字セットはおもに日本語を表すための文字を収録しており、ハングルなどを書き表すことはできません。コードページ 932 では、いわゆる半角英数字や半角カタカナは 1 byte で、その他の文字は 2 bytes で表現されます。
Windows 2000に拡張されました。たとえば D: ドライブ直下に以下のような名前のファイルを作成できます。
一二三四五六七八九十 一二三四五六七八九十 一二三四五六七八九十 一二三四五六七八九十 一二三四五六七八九十 一二三四五六七八九十 一二三四五六七八九十 一二三四五六七八九十 一二三四五六七八九十 一二三四五六七八九十 一二三四五六七八九十 一二三四五六七八九十 一二三四五六七八九十 一二三四五六七八九十 一二三四五六七八九十 一二三四五六七八九十 一二三四五六七八九十 一二三四五六七八九十 一二三四五六七八九十 一二三四五六七八九十 一二三四五六七八九十 一二三四五六七八九十 一二三四五六七八九十 一二三四五六七八九十 一二三四五六七八九十 .bmp
この 254 文字の名前は、
- この長すぎるファイル名は、
UTF-8 換算では 754 bytes で表現されます。ファイルシステムの文字符号化方式として UTF-8 を採用している近年の Linux などにおいて、名前長さ上限は各階層ごとに UTF-8 換算で 255 bytes です。したがって、この長い名前のファイルは Linux にコピーできません。 - 古い Mac OS 標準 (HFS) フォーマットボリューム
では、ファイル名の上限は 31 bytes (!) です。
2015年9月30日にリリースされた OS X El Capitan (OS X 10.11) まで、この形式はサポートされていました (読み込み限定)。 - 古い Windows には 8.3 形式
という命名規則制限がありました。
Windows 11 環境下においても、たとえば BM98k をビューワとして呼び出す場合 など、いまだに 8.3 形式を意識する必要があります。
検証用に、#STAGEFILE
・#BMP00
・#BMP01
に定義します。この譜面を保存してテキストエディタで開くと、以下の結果が得られるでしょう。
#STAGEFILE 一二三四五六七八九十
一二三四五六七八九十 一二三四五六七八九十 一二三四五六七八九十 一二三四五六七八九十 一二三四五六七八九十 一二三四五六七八九十 一二三四五六七八九十 一二三四五六七八九十 一二三四五六七八九十 一二三四五六七八九十 一二三四五六七八九十 一二三四五六七八 #BMP00 一二三四五六七八九十
一二三四五六七八九十 一二三四五六七八九十 一二三四五六七八九十 一二三四五六七八九十 一二三四五六七八九十 一二三四五六七八九十 一二三四五六七八九十 一二三四五六七八九十 一二三四五六七八九十 一二三四五六七八九十 一二三四五六七八九十 一二三四五六七八 #BMP01 一二三四五六七八九十
一二三四五六七八九十 一二三四五六七八九十 一二三四五六七八九十 一二三四五六七八九十 一二三四五六七八九十 一二三四五六七八九十 一二三四五六七八九十 一二三四五六七八九十 一二三四五六七八九十 一二三四五六七八九十 一二三四五六七八九十 一二三四五六七八
保存された文字列値は、
では、テキストエディタなどから直接 “長すぎる名前.bmp
” を指定するとどうなるでしょう。#STAGEFILE
や #BMP00
に対してそれを指定した場合、#WAV
に定義すると、#BMP01
以降に定義すると、
いまのところ、
- ファイル名の長さ上限が、
ANSI コードページ換算で 100 bytes -
- BMSC:長い名前文字列を切り捨てます。
- ファイル名の長さ上限が、
ANSI コードページ換算で 260 bytes (?) -
- raindrop:起動時に読み込まれる BMS フォルダに長い名前のファイルが存在すると、起動できません。また非 ASCII 文字のファイル定義は無視されます。フォルダ名や文字列値定義の非 ASCII 文字は問題ありません。
- パス長さ上限が、
ANSI コードページ換算で 256 bytes -
- GDAC2:長い名前を定義すると保存できず、参照すると強制終了します。
- BMSE:長い名前文字列を切り捨てます。または強制終了します。
- uBMplay:長い名前が定義された譜面を読み込むと強制終了します。
- Lunatic
Rave 2 や nazobmplay をはじめ、 2010年代以前の BMS アプリケーションはほとんどが「Unicode でないプログラム」です。長い名前の定義は正常に再生されないか、もしくは何らかの不具合が発生します。
- 「Unicode 非対応プログラム」だが、パス長さ上限は 256 文字
-
- BMX2WAV v1 系:定義名が ANSI コードページで表記可能なら、長い名前も参照できます。
- QMS-Player:同上。
- 「Unicode 対応プログラム」
-
- iBMSC:長い名前も正しく参照できますが、音声プレビューは ANSI コードページ基準です。長い名前や ANSI コードページで表記不可能な名前はプレビューされません。
- BMX2WAV v2.2.1:定義名が ANSI コードページで表記可能なら、長い名前も参照できます。譜面の文字符号化方式が何であれ、
「非 ANSI 文字を含んだファイル定義」は受理されません。 - ruv-it! や charatbeatHDX
・BMIIDXView2015 や Banana Bests や Bemuse や Pulsus や μBMSC や mBMplay や Qwilight は、長い名前も正しく参照できます。
このように互換性に関する問題が発生しうるので、過度に長いファイル名を使わないでください。また言語環境の差異やファイルシステムごとの文字符号化方式の差異に起因する多くの問題を回避するために、ファイル名は半角英数字のみで構成することを強く推奨します。
- ところで2016年夏以降、
“ .
NET Framework 4.6.2” 以降では 260 文字を超えるファイル名を扱えるようになり、
Windows 10 も 260 文字の制約を外せるようになりました (開発者向けの日本語解説
)。古い API の動作に影響があるかどうか、ヘルプ筆者は検証できていませんが、互換性に関する問題はこれまで以上に発生しやすくなったといえそうです。古いソフトウェアを動かせなくなる日は近づいているように見えます。