編集
オブジェクトに対する編集操作を行うメニューのグループです。
元に戻す
直前の操作を取り消します。作業履歴をひとつ戻ります。
BMSE はメモリが許す限り何度でも “元に戻す/やり直し” を行えます。
やり直し
取り消した操作を再実行します。作業履歴をひとつ進みます。
BMSE はメモリが許す限り何度でも “元に戻す/やり直し” を行えます。
切り取り
選択状態のオブジェクトを切り取ります。
BMSE のオブジェクト配置データは、別のソフトに渡すことができます。
コピー
選択状態のオブジェクトを一時的に記憶します。選択されたオブジェクトそれぞれの内容、つまり番号や値と位置を、クリップボードという一時的な保存場所に格納します。
BMSE のオブジェクト配置データは、別のソフトに渡すことができます。
貼り付け
コピーもしくは切り取りによって一時的に記憶されたオブジェクトの内容を、描画地点から最初に小節線が現れる小節に転写します。
- 貼り付け先の例
-
#000
#001
#001
#005
#002
貼り付けるとオブジェクトが選択された状態で出力されます。配置済みのオブジェクトの真上にも重なって出力されます。
BMSE のオブジェクト配置データは、別のソフトに渡すことができます。
#999
以降で貼り付けを行うと、#999
に貼り付けます。
貼り付け時、#999
より後方に溢れたオブジェクトは消滅します。
選択されたオブジェクトをドラッグなどで移動しているとき、
#000
より前方#999
より後方- BPM 変更レーンより左方
- BGM レーン 32 番より右方
に溢れたオブジェクトは、選択状態を解除したとき消滅します。
書込モード中も貼り付けは実行することができます。
削除
選択状態のオブジェクトを削除します。
すべて選択
メインパネル上にある全オブジェクトを選択状態にします。
検索・削除・置換
様々な条件でオブジェクトを検索し、該当オブジェクトに対して選択や削除や置換などの処理を行う検索・削除・置換ウィンドウを開きます。
編集モード
メインパネルのカーソルを に変更します。
BMSE 起動直後はこのモードが選ばれています。
おもに Microsoft Office 関連製品などを導入済みの一部の環境では、ツールバーの が隠れていて押下できない状態になっている場合があります。必要ならツールバーを修正してください。
- BMSE 使用者でツールバー崩壊現象を見たことがない方は、致命的なセキュリティホールを塞がないまま放置している可能性があります。
書込モード
メインパネルのカーソルを に変更します。
消去モード
メインパネルのカーソルを に変更します。
BMSE はメモリが許す限り何度でも “元に戻す/やり直し” を行えます
いまとなっては解説が必要ですが、
-
譜面を開いた直後の状態です。
BMSE は配置データに対する操作すべてを一時的に記憶します。
Undo Buffer Size ・Undo Counter に注目。 -
オブジェクト 01 を移動しました。
譜面に対する操作 1 ターンごとに、行った操作が一時的に記憶されていきます。
-
オブジェクト 02 を移動しました。
現在の作業履歴の状況はメニューの【ヘルプ → バージョン情報】から参照できます。
-
オブジェクト 03 を移動しました。
Undo Counter の値は “現在位置のターン / 保持されている履歴アイテムの最新ターン” です。
(後述) -
オブジェクト 04 を移動しました。
Undo Buffer Size の値は、一時的に記憶されている作業履歴の容量です。
-
まとめて選択して移動しました。
ここから以降 “元に戻す/やり直し” を行った例を以下に示します。
-
“元に戻す” で作業履歴を 1 ターンずつ戻ります。
(0 ターンより前には履歴がないので戻れません) “やり直し” で作業履歴を 1 ターンずつ進みます。
(5 ターンより先には履歴がないので進めません)
これは、感覚的には Web ブラウザの “戻る/進む” と似ています。
-
“元に戻す/やり直し” 中に新しい操作を行うと、
“やり直し” の移動先が変わります。 たとえばターン
5
から4
に戻って、そこでオブジェクトを書き込むと、その操作が新しいターン5′
として記憶されます。ターン
5′
からは4
や3
に戻ることができますが、ターン4
から “やり直し” しても、もはや旧ターン5
に進むことはできません (ターン5′
に進みます)。 -
一時的に記憶されている作業履歴が初期化されるタイミングは、
新しく譜面を開いたとき、 新規作成時、 BMSE 終了時、となります。これらの操作を行ったとき、 Undo Counter はリセットされ “ 0 / 0
” に戻ります。(他のソフトではファイルを保存した時に作業履歴を破棄するものもありますが、
BMSE は間に保存を挟んでも “元に戻す/やり直し” が可能です。) -
「メモリが許す限り」を超えると BMSE が強制終了します。
バックアップは作成されますが、たとえばオブジェクト 100 個を一挙に貼り付けて 50 個まで貼り付け完了した時点でメモリが不足した場合、バックアップ側には残り 50 個が貼り付けられないまま保存されます。
メモリに余裕がない環境では、こまめに保存して BMSE を再起動する・
「すべて選択 → 切り取り → 貼り付け」のような「Undo Buffer Size が大きい操作」は避ける、などの工夫で対処してください。 メモリ不足エラーの前兆として、
「貼り付け」などの編集操作に非常に時間がかかったり (このときストレージデバイスへの書き込み音が確認できる場合もあります)、ページファイルを拡張する Windows OS からの警告が表示される場合もあります (動的拡張を許容する環境に限る)。幸運にもこういった兆候を確認できた場合は、即座に譜面を保存して BMSE を閉じてください。 -
“元に戻す/やり直し” が有効な操作は、基本的に配置データへの操作のみです。
ファイルや譜面ヘッダへの操作は記憶されません。設定パネル項目の変更、定義リストに対する登録・消去・リネームの各操作は元に戻せません。
定義リストに対する移動 ()、未使用定義を消去、定義リストの整列は、ファイル操作が絡まないので “元に戻す/やり直し” が可能です。
- 拡張命令タブやダイレクト入力枠は “元に戻す/やり直し” の対象外です。テキストボックス内コンテキストメニューから “元に戻す” ことは可能ですが、これは BMSE 自身とは無関係の機能であり、通常 1 ターンしか操作を遡行できません。
- オブジェクトパネル内 “拍子” タブは配置データとして専用チャンネルを持つため、これに対する操作は “元に戻す/やり直し” が可能です。
BMSE のオブジェクト配置データは、別のソフトに渡すことができます
コピーもしくは切り取りによって一時的に記憶されたオブジェクトの値と座標は、一種のテキストデータとしてクリップボードに格納されます。これを経由して配置データを渡すことができます。
あくまで値と座標のみを扱います。
BMSE ClipBoard Object Data Format は以下の書式になっています。オブジェクトひとつひとつが以下の情報を保持しています。
b xx a yyyyyyy n…
b
-
0
なら、xx
は BGM 以外のチャンネル番号1
なら、xx
は BGM の列番号[01-32]
xx
-
- x 軸座標 (2 桁の符号なし 10 進数整数)
a
-
0
なら、オブジェクトの属性は可視・通常1
なら、オブジェクトの属性は不可視2
なら、オブジェクトの属性はロングノート
yyyyyyy
-
- y 軸座標 (7 桁の符号なし 10 進数整数
[0000000-3072000]
) - 値はメインパネル全長における、グリッドの分解能座標を示す
- 複数小節にまたがる場合、各小節ごとに [192 × 小節長] を加算
- 貼り付け可能な値の上限は
3071999
- y 軸座標 (7 桁の符号なし 10 進数整数
n…
-
- オブジェクトの値 (可変長 10 進数。型はチャンネル番号に依存)
bxx
が008
なら、有効数字 7 桁の符号つき実数 (BPM 変更値)bxx
が009
なら、有効数字 7 桁の符号つき整数 (STOP 値)- それ以外なら、定義番号の 10 進数換算値
1
~ 1295
- BPM / STOP の 8 桁以降の値は、浮動小数点数で大雑把に表す
BMSE ClipBoard Object Data Format を利用できるアプリケーション
- bMoL
- クリップボード内の配置データを変更し、配置の横軸伸縮を実現。
- BmWh
- クリップボード内に配置データを作成し、任意の連番配置を出力。
- BmrF
- BMSE でコピーした配置データを解析し、配置通りに WAV を生成。
- woslicerII / woslicerIII
- BMSE 型の UI で音声を裁断し、切った通りに配置を BMSE に出力。
- Be-Music Helper
- MIDI を裁断しやすく組み換え、
woslicer と連携して BMSE に配置。 - Mid2BMS
- MIDI から音を裁断して BMSE に配置するまでを自動化。
- iBMSC
- BMSE のクリップボードデータを iBMSC に貼り付け可能。ただし複数行の BGM は 1 行しか貼り付けられないし、
iBMSC の配置データを BMSE に渡すこともできないので、それを前提に運用する必要はあります。 - μBMSC
- BMSE のクリップボードデータを μBMSC に貼り付け可能。
μBMSC の配置データを BMSE に渡すことはできませんが、 iBMSC の前述の不具合は修正されており、 woslicer, Be-Music Helper, Mid2BMS と連携できるはず。
また、クリップボード拡張ソフト (たとえば Clibor や CLCL など) を導入すれば、クリップボード履歴を配置データバンクとして活用でき、コピー操作の自由度が向上します。
- Windows 10 Version 1809 以降は、
OS の標準機能でクリップボード履歴が使えるようになりました。クリップボードアイテムをピン留めすることもできるし、前述のクリップボード拡張ソフトとの併用も可能で便利です。
検索・削除・置換
条件を指定してメインパネルを検索し、絞り込んだオブジェクトに対して各種処理を適用します。
このウィンドウから “実行” した操作は “元に戻す/やり直し” が可能です。
このウィンドウはモードレスです (開きっぱなしでも譜面編集が可能)。
検索対象の指定
全オブジェクトから検索するか、すでに選択されているオブジェクトから検索するかを決定します。後者は絞り込み検索を行う際に便利です。
- まず “全てのオブジェ” からごく大雑把に条件を指定し、
“選択” する。 - その結果をさらに、
“選択されているオブジェ” から絞り込み検索。 - 絞り込んだ選択オブジェクトを目視確認。問題なければそのまま “置換”。
……などのように、
小節範囲の指定
検索する小節の開始番号と終了番号を範囲指定します。
オブジェ番号の指定
検索する定義の開始番号と終了番号を範囲指定します。
左右ともに同じ番号を入力して、特定番号のオブジェクトを “選択” し、メインパネル上から見つけやすくする、などの使い方もあります。
列の指定
検索する対象レーンを限定します。各列選択肢 から有効・無効を切り替えます。選択されている (チェックされている) レーンだけが検索されます。
- 反転
- 全列のチェック状態を入れ替えます。
- 全解除
- 全列を非選択状態にします。
- 全選択
- 全列を選択状態にします。
処理
検索条件に合致した対象に適用する処理を、操作選択肢 から指定します。
- 選択:
- 検索条件に該当したオブジェクトをすべて選択します。
- 削除:
- 検索条件に該当したオブジェクトをすべて削除します。
- 置換:
-
検索条件に該当したオブジェクトの全番号を、任意の番号に置換します。
入力フォームに、置換する定義番号を指定します。
たとえば初期状態から条件を変えずに置換を実行すると、メインパネルにある全オブジェクトの番号が
01
になります。
右下の “実行” ボタンを左クリックすると、指定した処理を実行します。
注意点など
-
“検索・削除・置換” ウィンドウが非アクティブのとき、このウィンドウの右上の を左クリックすると BMSE が強制終了します。バックアップは作成されません。
-
拡張命令タブには “検索・削除・置換” は適用されません。
-
ラジオボタン は、常に選択肢のどれかひとつだけが有効化されます。複数の項目を同時に有効化したり、すべて同時に無効化したりすることはできません。
-
不可視オブジェクトおよびロングノート専用オブジェクトは、検索条件に指定できません。
不可視・ロングノート・地雷などを検索したい場合
- iBMSC
/μBMSC で処理する: -
BMSE とほぼ同じ感覚で “検索・削除・置換” が使用でき、さらに不可視オブジェクトやロングノートオブジェクトも検索できます。
- 正規表現で処理する:
-
サクラエディタ や Mery などのテキストエディタでは、文字列の検索条件に正規表現を指定することによって、大雑把に検索できます。
- フリーゾーン
-
^\s*#\d\d\d[12]7:[0-9A-Fa-f]+$
- 不可視
-
^\s*#\d\d\d[34][1-689]:[0-9A-Za-z]+$
- ロングノート (Shift + 書き込み型)
-
^\s*#\d\d\d[56][1-689]:[0-9A-Za-z]+$
- 地雷
-
^\s*#\d\d\d[DEde][1-689]:[0-9A-Za-z]+$
正規表現と BMS 書式に関する知識があれば、さらにきめ細かく絞り込んで削除や置換を行うことも可能ですが、ここでは解説しません。
- GDAC2 + 対応レーンスクリプトで処理する:
-
BMSE で開くことができる譜面も GDAC2 では開くことができない場合があります。適当にレーンスクリプトをカスタマイズするか、面倒なら既存のレーンスクリプトを流用してください。
BGM 本数は最低でも 32 本は用意してください。 レーンスクリプト “BM98 7LineData” は既定で不可視オブジェクトを配置でき、不可視オブジェクトのみを検索することもできます。
“裏オブジェ” を検索すれば、不可視オブジェだけが選択されます。
レーンスクリプト “Rhythm-it” で譜面を開いて “裏オブジェ” を検索すると、ロングノートのみが検索されます。
BMSE がサポートしていないフリーゾーンや地雷などを検索・編集したい場合は、
pmsee-v.gsc を書き換える例なども参考にしてください。 #LNOBJ
を使用する:-
BMSE 上で、ロングノートを [Shift + 左クリック] では書き込まずに、
#LNOBJ
(ロングノート終端定義) を用いるのも有効です。この場合、ロングノートの始端は通常の可視オブジェクトから変更する必要がなく、終端は譜面エディタ上ではすべて 1 種類の可視オブジェクトとして扱えるため、“検索・削除・置換” からの一括処理が容易になります。 拡張命令タブ内に
#LNOBJ XX
を記述します。XX
は任意の未定義の#WAV
定義番号です。可視オブジェクトの後方に可視オブジェクトXX
を書き込むことで、任意の可視オブジェクトからXX
までの区間が (再生ソフト上では) ロングノートになります。小文字を認識しないソフトがあるため、定義番号は大文字で指定してください。
#LNOBJ
を使う譜面はファイル拡張子を “.bml” に変更してください。#LNOBJ
命令を知らないソフトは、通常の可視オブジェクトと#LNOBJ
を区別できません。譜面拡張子を変更しておけば、#LNOBJ
使用譜面を非対応ソフトは読み込まないので、比較的に安全です。
#LNOBJ
は、ある意味では緑色ロングノートよりも便利です。
- 可視オブジェクトの後方に、可視オブジェクトを書き込むだけでよい
- 元々の可視オブジェクトをロングノートに置き換える手間が要らない
- エディタ上で見分けづらいなら、終端番号を一括選択して色分け
- ロングノートの一時解除は、終端を一括選択して BGM に水平移動
- ロングノートに戻す場合は、終端を一括選択して演奏領域に水平移動
- ロングノートの永久解除は、終端を一括削除するだけで済む
#LNOBJ
は事実上すべての BMS エディタで編集できる- 緑色ロングノートは、
BGM に移動すると BMSE が強制終了して危険
そのかわり #LNOBJ
は、
#LNOBJ
のサポート状況
- 非対応
- BM98k, BM98de, MixWaver, bemaniaDX, BM2DXEmu, MacBeat, BmsToAvi, BMSV, BMEV, nBMplay, BMS2WAV, BMS Printer, BmsListSorter, BME2WAV, otama, GALLI, SMB, KbMedia
- 非対応 (ただし Shift で書き込む緑色ロングノートには対応)
- Banana
Beats, DDR (DDR モードのみ), Aqua'n Beats, O2mania ( #LNTYPE 1
宣言必須), o2play (バグ多め), WAview, in_bm2 - 対応
- beatoraja, Bemuse, Pulsus, Angolmois, Sonorous, QMS, Qwilight, rhythm-it! (1.61+,
#LNOBJ FZ
まで), ruv-it!, nazo (#LNOBJ FZ
まで) + Glasopal (#LNOBJ ZZ
まで), BMX2WAV, LunaticRave2, ナナシグルーヴ, feeling pomu 2nd, forgetalia++, forgetalia#, charatbeatHDX (1.09+), BMIIDXView2015 (3.01+), iBMSC (3.0+), μBMSC, mBMplay, uBMplay, PMSee-V - 複数の
#LNOBJ
定義に対応 - raindrop, TechnicalGroove
#LNOBJ
をサポートしていない再生ソフトは、すくなくとも日本ではもはやほとんど使われていませんが、代替不可能な用途がある WAview などにも対応したい場合は、#LNOBJ
の使用を避けてください。各ソフトウェアの正式名称や入手先に関しては bmsplayer data などをご覧ください。
“検索・削除・置換” は応用が利きます。工夫すれば地雷オブジェクトなども #LNOBJ
と似た要領で配置できたりするので、いろいろお試しください。
“検索・削除・置換” ウィンドウの操作
- 左クリック、
Tab、 Shift + Tab - 各カラムにフォーカスを移動
- 左クリック、方向キー
- 各カラム内の項目を移動もしくは選択
- フォーム右クリック、アプリケーションキー
-
入力フォームのコンテキストメニューを開く
- IME は常にオフになる
- テキストボックス内の操作はダイレクト入力枠を参照
- を左クリック、 項目にフォーカスして Space
- フォーカスがあるチェックボックス項目の有効無効を切り替え
- ボタン左クリック、
Space、 Enter - フォーカスがあるボタンを押下
- か [閉じる] を左クリック、
Alt + F4 - “検索・削除・置換” ウィンドウを閉じる
- Alt + F6
- メインウィンドウと子ウィンドウ間のフォーカス移動 (各ウィンドウを左クリックする操作と等価)
- タイトルバー右クリック
- コントロールメニュー (システムメニュー) を開く
- 中央カラム BGM 列の垂直スクロールバー
-
- ホイール回転で設定値量ずつスクロール
- ノブを左ドラッグでライブスクロール
- トラックを左クリックでページ単位スクロール
-
【Windows 2000
/XP 以降】 トラックを [Shift + 左クリック] で、クリック位置に瞬時にスクロール
- トラックを右クリックでコンテキストメニュー開く
- 矢印アイコンを左クリックで行単位スクロール
- Home、
End でリスト先頭/末尾へスクロール - Page Up、
Page Down でページ単位スクロール
番号入力フォームの制限
- 小節範囲の指定フォーム
-
- 文字列長: 3 文字まで
- 入力すべき値: 10 進数整数
- 記号や多バイト文字:
0
とみなす。先頭が数字なら数字部分のみ解釈 - 負数: 範囲として解釈
- 小数: 始端側切り上げ、終端側切り捨て
- 空の値や
0
: 範囲として解釈
- オブジェ番号の指定フォーム
-
- 文字列長: 2 文字まで
- 入力すべき値: 36 進数整数
- 記号や多バイト文字: 謎解釈 (?)
- 負数: 範囲として解釈
- 小数: 始端側切り捨て、終端側無視
- 空の値や
0
: 範囲として解釈
- 置換番号の指定フォーム
-
- 文字列長: 2 文字まで
- 入力すべき値: 36 進数整数
- 記号や多バイト文字: 謎解釈 (?)。結果によっては BMSE が強制終了
- 負数: 強制終了
- 小数: 強制終了
- 空の値や
0
: 定義番号00
に置換
数値入力は桁を揃えなくても受け付ける。大文字小文字も問わない。#001
小節を 1
と指定したり、定義番号 0A
を a
と指定してもよい。
マルチバイト文字は数字より大きいインデックスとして扱われるので、おそらく文字コード換算と思われる (ただし変換規則は筆者にはわかりません)。
番号 00
のオブジェクトは、編集中は他のオブジェクトと同様に扱えるが、保存されない。00
は一時的な置換先 (他の番号に影響を与えない隔離番号) として利用できなくもないが、安全性が疑わしいので推奨はしない。
不正な置換による強制終了後、編集作業バックアップ譜面 ___bmse_temp