霧中蒼鳥

-The blue bird in the mist-

mBMplay

プレビュー向けの再生特化型BMSプレーヤー「mBMplay」特設ページ(兼オンラインマニュアル)。

mBMplay

何これ

BMSエディタからのプレビュー等に向いた再生特化型のBMSプレーヤーです。

主な機能

  • BMS/BME/BML/PMSの再生に対応
  • プレイスタイル(鍵盤数)によるプレイスキンの切り替え
  • 再生開始位置の指定及びシーク対応
  • 再生速度変更機能
  • HS-FIX対応
  • 秒間密度計測機能
  • 簡易テストプレイ機能 (v1.20.0222以降)

注意事項(必ず読んで)

このプログラムをダウンロードする前にいくつか注意事項があるので必ずお読みください。

必要環境

  • Windows10 1507以前の場合は.NET Framework 4.6.1以上のインストールが必要です。
  • DirectX9で使用する場合はDirectX End-User Runtimes (June 2010)のインストールが必要です。
    ※最新バージョンのWindowsで使用する場合でも上記ランタイムがインストールされていないと動作しません。

秒間密度計測機能について

このプレーヤーでは1ノート目の判定が出た瞬間から計測を開始し、1秒経過ごとにリアルタイムで計測しています。
このためシーク等で計測開始位置が変化したり再生速度を変更したりするとそれに伴って秒間密度も変化します。
また、処理落ち等で再生のたびに秒間密度が変化することがあります。

再生速度変更について

再生速度は-12(x0.5)~0(x1.0)~+12(x2.0)の範囲内で変更できます。
実際の倍率は以下のようになります。(小数第4位以下切り捨て、LR2におけるFREQとほぼ同等です)

-12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 0
x0.5 x0.529 x0.561 x0.594 x0.629 x0.667 x0.707 x0.749 x0.793 x0.840 x0.890 x0.943 x1.0
0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12
x1.0 x1.059 x1.122 x1.189 x1.259 x1.334 x1.414 x1.498 x1.587 x1.681 x1.781 x1.887 x2.0

なお、動画BGAの再生速度は変更されませんので注意してください。

簡易テストプレイモードについて

起動後にF10を押すかコマンドライン引数に-testplayを付けて起動することで簡易テストプレイモードになります。
簡易テストプレイモードでは秒間密度計測の代わりにスコアや判定数を確認できます。
ただし譜面は正規譜面固定、ゲージも通常ゲージ相当固定です。
判定も(LR2に近いとはいえ)独自のものなので最終的な確認は実際のプレイが想定されるBMSプレーヤーで行ってください。
一応判定タイミング調整も可能ですがコマンドライン引数からの設定が必要になります。
(詳しくは上記のコマンドライン引数の-jtimeの項目をご覧ください)

簡易テストプレイモードの判定幅について

簡易テストプレイモードの判定幅は以下のようになります。
(空POOR周りやスクラッチ/LN終端補正以外はほぼLR2のものとされる数値と同様です)

EASY NORMAL HARD VERYHARD
PGREAT +-21ms +-18ms +-15ms +-8ms
GREAT +-60ms +-40ms +-30ms +-24ms
GOOD +-120ms +-100ms +-60ms +-40ms
BAD +-200ms
空POOR(FAST) +500ms
空POOR(SLOW) -200ms

またスクラッチやLN終端にはGOOD以上の判定幅に以下のような補正がかかります。
(スクラッチのLN終端には補正率の高い方(現時点ではLN終端補正)のみがかかります)

EASY/NORMAL HARD VERYHARD
スクラッチ x1.2 x1.1 x1.1
LN終端 x1.5 x1.3 x1.2

※現時点ではDEFEXRANK等の拡張命令には対応していません。

簡易テストプレイモードのLN周りの判定について

簡易テストプレイモードのLN周りの判定は以下のようになります。

標準モード (LN1本につき2ノーツ) 従来モード (LN1本につき1ノーツ)
LN終端を過ぎても離さなかった場合 始点の判定+BAD 始点の判定
LN終端直後で離した場合 始点の判定+終端の判定 始点の判定
LN終端直前~丁度で離した場合 始点の判定+終端の判定 始点の判定か終端の判定のどちらか悪い方
LN途中で離した場合 始点の判定+BAD BAD
LN始点でBAD BAD+見逃しPOOR(表示上はBAD) BAD
LN始点で見逃しPOOR 見逃しPOORx2 見逃しPOOR

またLN終端では空POOR(SLOW)は発生しません。

ゲージについて

曲の先頭から開始した場合は20%、途中から開始した場合は2%スタートになります。
またTOTAL値未定義の場合は一律300が適用されます。

簡易テストプレイモード時のBAD以下の減少量は以下のようになります。
(ほぼLR2の通常ゲージと同様です)

BAD 空POOR 見逃しPOOR
-4% -2% -6%

既知の不具合

  • Windows7環境においてDirectSound使用時、VsyncをOFFにすると譜面スクロールがカクつく

画面の見方

mBMplay
プレイ画面
レーン毎のノーツカウント
(上から) ジャンル / タイトル (+サブタイトル) / アーティスト (+サブアーティスト)
(最上段) HS種別 / HS倍率
(それ以降) マスターボリューム / キーボリューム / BGMボリューム
BGA
(上段) 現在の再生時間 / 総再生時間
(下段) プログレスバー
曲再生速度
現在の小節 / 総小節数
現在のノーツ (最大コンボ) / トータルノーツ
総LN数 (LNが存在する場合のみ表示)
プレイレベル
判定ランク
現在のBPM
(上から) 最小BPM / 最大BPM (いずれもBPM変化が存在する場合のみ表示)
TOTAL値
(上から) ゲージ数値 / ゲージ表示
ゲージ総回復量
(左側) 現在の秒間密度
(右側上から) 最高秒間密度 / 平均秒間密度
レーンカバー数値 (変更直後のみ表示)
(上から) FPS / UPS (内部更新処理レート)

※簡易テストプレイモードでは以下のように一部変化します。

mBMplay
(FPS/UPSに加えて) 平均判定タイミング (+でFAST寄り、-でSLOW寄り)
最大コンボ (ラベルのみ変化)
(左側) スコア / ミスカウント
(右側) ジャッジカウント

操作方法

[*]の付いた項目は設定が保存されます。
※以下は全てデフォルトのキーアサインのものです。

画面内へBMSファイルをドロップ そのBMSを読み込み
↑/↓
マウスホイール上/下
シーク(小節送り/戻し)
単体 1小節
+Shift 4小節
+Ctrl 5秒前/後の小節の先頭
スペースバー
マウスホイールクリック
曲の先頭に戻す
+Shift 曲の再読み込み (#RANDOM再抽選)
+Ctrl+Shift LNモードを変更して曲の再読み込み (#RANDOM再抽選)[*]
簡易テストプレイ時はホイールクリック及び曲終了後/LNモード変更を除きAlt(もしくはCtrl)キーも必要
(再読み込みであれば+Alt+Shiftといった具合)
1/2 HS減少/増加 (最小: x0.25)[*]
単体 +-0.25
+Shift +-1.00
+Ctrl +-0.05
1+2同時押し x1.00に設定
3/4 マスターボリューム減少/増加 (0-100)[*]
単体 +-5
+Shift +-10
+Ctrl +-1
Ctrl+Shift+3 0に設定
Ctrl+Shift+4 100に設定
Q/W キーボリューム減少/増加 (0-100)[*] 増減量やCtrl/Shiftの組み合わせは
マスターボリュームと同様
E/R BGMボリューム減少/増加 (0-100)[*]
5/6 HS-FIX変更[*]
  • HI-SPEED (HS-FIX無効)
  • HS-MAXFIX (最大BPM合わせ)
  • HS-MINFIX (最小BPM合わせ)
  • HS-MAINNOTE (ノート数が最も多いBPM合わせ)
  • HS-MAINTIME (時間が最も長いBPM合わせ)
  • REG-SPEED (ソフラン無視)
7/8 曲スピード減少/増加 (-12 - +12)
単体 +-1
7+8同時押し +0に設定
9 レーン毎のノーツカウント表示[*]
0 プレイサイド変更[*]
  • 1P
  • 2P
  • 両方 (バトル)
F1/F2 レーンカバー上昇/下降[*]
単体 +-1.0%
+Shift +-10.0%
+Ctrl +-0.1%
+Ctrl+Shift +-0.05%
F3/F4 レーンカバー表示 (1P/2P)[*]
F7 FPS/UPS/平均判定タイミング(簡易テストプレイモードのみ)表示
F10 簡易テストプレイモード切り替え
Esc 終了

簡易テストプレイモードのキーアサイン

※以下は全てデフォルトのキーアサインのものです。キーアサインの変更にはmBMconfigの利用を推奨します。
※スクラッチ(トグル)はキー入力の度に回転方向が切り替わるスクラッチです。

1Pスクラッチ(トグル) 左Shift
1P鍵盤 (1鍵から順に)Z/S/X/D/C/F/V/G/B
2Pスクラッチ(トグル) 右Shift
2P鍵盤 (1鍵から順に),/L/./;/スラッシュ/:/バックスラッシュ

※SP(5/7Keys)プレイ時は1P/2P両方からのキー入力を受け付けます。

コマンドライン引数

[*]の付いた項目は設定が保存されます。

mBMplay.exe {-s [開始小節]} {-l [0 | 1]} {-t} {-nobga} {-vsync [on | off]} {-ups [内部更新レート]} {-testplay} {-jtime [判定タイミング]} {-ntime [ノーツ表示タイミング]} {-gr [グラフィック種別]} {-au [オーディオ種別]} {-position [manual | center]} {-display [ディスプレイ]} {-wscale [ウィンドウ拡大率]} {-filter [フィルターレベル]} [<ファイルのパス>]

-s [開始小節]

開始小節を指定します。

-l [0 | 1]

LNモードを指定します。[*]

0 標準モード (LN1本につき2ノーツ)
1 従来モード (LN1本につき1ノーツ、デフォルト)
-t

すでに起動しているmBMplayを終了させます。(エディタの停止用)

-nobga

BGAの再生を無効にします。(読み込みもしません)

-vsync [on | off]

垂直同期の有効/無効を設定します。[*]

-ups [内部更新レート]

内部更新処理のレートを設定します。[*]
0を指定すると描画スレッドとの同期処理になります。
OpenGLの場合は強制的に0になります。

-testplay

最初から簡易テストプレイモードで起動します。

-jtime [判定タイミング]

簡易テストプレイモードの判定タイミングを変更します。(単位はms)[*]
+でFAST方向に、-でSLOW方向になります。

-ntime [ノーツ表示タイミング]

ノーツの表示タイミング(位置)を設定します。(単位はms)[*]
(この設定の時間分前の時点で存在するであろうノーツの位置で表示します)
+側で早く(下へ)、-側で遅く(上へ)なります。

-gr [グラフィック種別]

使用するグラフィックAPIの種類を設定します。[*]

dx9 DirectX9を使用します。(デフォルト)
dx11 DirectX11を使用します。
dx12 DirectX12を使用します。
(ほぼ実験用、他のAPIよりもBGA等の動的テクスチャの更新処理が非常に重いのであまり推奨しません)
gl OpenGLを使用します。(OpenGL 3.1以上に対応したGPUが必要です)
vk Vulkanを使用します。
-au [オーディオ種別]

使用するオーディオAPIの種類を設定します。[*]

xa XAudio2を使用します。(デフォルト)
ds DirectSoundを使用します。
al OpenALを使用します。
(OpenAL Softを導入済みでかつシステム側の最大ソース数が1295以上に設定されている場合以外はあまり推奨しません)
-position [manual | center]
 

起動時のウィンドウ表示位置を設定します。[*]

manual 前回の表示位置に表示します。
center -displayで指定したディスプレイの中央に表示します。(デフォルト)
-display [ディスプレイ]

画面中央に表示する場合の対象ディスプレイを設定します。[*]

-2 起動時にマウスカーソルが存在するディスプレイに表示します。(デフォルト)
-1 プライマリディスプレイに表示します。
0以上 指定したディスプレイ番号のディスプレイに表示します。
-wscale [ウィンドウ拡大率]

ウィンドウの拡大/縮小率を設定します。(最小0.5)[*]
ただし1.0以外に設定した場合は画像の端が切れたり余計な線が表示されることがあります。

-filter [フィルターレベル]

拡大/縮小時に適用されるフィルターの適用条件を設定します。[*]

0 (無効) スキン側の設定に関わらずフィルターを適用しません。
1 (スキンに従う) スキン側でフィルターの適用が指示されている場合のみ適用します。(デフォルト)
2 (拡大/縮小時に強制) ウィンドウ拡大率が等倍以外の場合にスキン側の設定を無視してフィルターを適用します。
等倍の場合は「スキンに従う」と同様です。
3 (常時強制) スキン側の設定を無視してフィルターを適用します。

使用例

iBMSC:最初から再生

mBMplay.exe "<filename>"

iBMSC:現在位置から再生

mBMplay.exe -s <measure> "<filename>"

iBMSC:停止

mBMplay.exe -t

垂直同期有効、更新レート1000に設定

mBMplay.exe -vsync on -ups 1000

グラフィック種別をDirectX9、オーディオ種別をDirectSoundに設定

mBMplay.exe -gr dx9 -au ds

簡易テストプレイモードで起動、判定タイミングを-16msに設定

mBMplay.exe -testplay -jtime -16

Download

ダウンロードする前に以下のライセンスをよく読んで同意した上でダウンロードして下さい。

ライセンス(必ず読んで)

mBMplay Licence v1.0

Copyright (c) 2019 misty.ls04

以下の制限に従う限り、本ソフトウェアを使用、改変および再頒布することを許可します。

  • 商用利用、および本ソフトウェアを利用して金銭的対価を得る行為の禁止。
  • 不正な手段を用いて生成されたBMS(派生フォーマット含む)を再生することの禁止。
  • 不正な手段を用いて生成された画像等のデータを使用した本ソフトウェアの改変、スキンの制作および使用の禁止。
  • ソースコードを再頒布する場合、上記の著作権表示、本条件一覧、および下記免責条項を含めること。
  • バイナリ形式で再頒布する場合、頒布物に付属のドキュメント等の資料に、上記の著作権表示、本条件一覧、および下記免責条項を含めること。
  • 本ソフトウェアを変更を加えずに再頒布する場合は本ライセンス上でのみ可能とする。
  • 本ソフトウェアを改変した派生物を頒布する場合は本ライセンスもしくはそれに準じたより制限の強いライセンス上でのみ可能とする。

本ソフトウェアは「現状のまま」で、明示であるか暗黙であるかを問わず、何らの保証もなく提供されます。
本ソフトウェアの使用によって生じるいかなる損害についても、作者は一切の責任を負わないものとします。


いろいろゴチャゴチャ書いてますが最低限使用に関わる上から3つの条件には特に注意してください。

※このソフトウェアで使用しているライブラリのライセンスについては同梱のlicense_library.txtをご覧ください。
※skinフォルダ以下のファイル群及びmBMconfigと共有しているコードについてはライセンス適用外とします。これらの改変・再配布等は本体のライセンスに抵触しない範囲でご自由にどうぞ。

Download

mBMplay 本体

最新Ver: v2.21.1024.0

Download(このサーバーから)(64bit版)
Download(このサーバーから) (32bit版)

mBMplay v2.20.0816.0→v2.21.1024.0 更新パッチ:
既にv2.20.0816.0を使用している場合はこちらのパッチを適用して下さい。
※v2.20.0816.0専用です。それ以外のバージョンには絶対に適用しないで下さい。

Download(このサーバーから)(64bit版)
Download(このサーバーから) (32bit版)

mBMconfig
mBMconfig

mBMplay用のGUI設定ツールです。
mBMplayの詳細設定やスキンオプション設定、キーアサイン変更等が可能です。
使用方法などは同梱のreadme_mbmconfig.txtをこ覧ください。
※mBMconfigを導入しなくてもmBMplayは利用可能です。
※mBMconfigのライセンスはMITライセンスです。詳しくは同梱のlicense_mbmconfig.txtをご覧ください。

最新Ver: v2.21.1024.0

Download(このサーバーから)(64bit版)
Download(このサーバーから) (32bit版)

mBMconfig v2.20.0816.0→v2.21.1024.0 更新パッチ:
既にv2.20.0816.0を使用している場合はこちらのパッチを適用して下さい。
※v2.20.0816.0専用です。それ以外のバージョンには絶対に適用しないで下さい。

Download(このサーバーから)(64bit版)
Download(このサーバーから) (32bit版)

mBMplay / mBMconfig (for Linux)

Linux向けのmBMplay/mBMconfigです。

  • ほぼ実験目的で作られたものになります。BMS制作上の実用目的にはなるべく使用しないでください。
  • Linux Mint 19.3 64bit(実機環境)でのみ動作確認しています。
  • 64bitのみの対応になります。
  • .NET Framework 4.6.1以上に対応したMono(5.0以降?)が必要です。
  • その他のLinux版特有の注意事項などは同梱のreadme_linux.txtをご覧ください。

デフォルトスキンの一部パーツにLR2用スキン「Light Pop EX」及び.RED氏制作の「OVER ACTiVE DX+」(せな氏制作のボム含む)のパーツを使用しています。

更新履歴

mBMplay

2021/10/24 v2.21.1024.0

[設定ファイルバージョン:v2.20.0816.0 (変更無し) / キーコンフィグバージョン:v2.21.1024.0]

  • マウスボタン(左右クリックを除く)/ホイールによる操作に対応
  • 小節移動/数値変更操作のキーリピートに対応
  • 複数デバイスに跨るキーアサインに対応
  • 非アクティブ時にエディタ等から呼ぶと高確率でアクティブにならない現象を改善
  • OpenGL使用時にエディタ等から呼んでもアクティブになるようにした
2020/8/16 v2.20.0816.0

[設定ファイルバージョン:v2.20.0816.0 / キーコンフィグバージョン:v2.20.0816.0]

  • DirectX11に対応
  • DirectX12使用時のBGA更新処理を変更
  • OpenTKのバージョンを3.2.0.0に更新
  • NVorvisのバージョンを0.9.1に更新
  • OpenGL使用時の非同期更新処理に対応
  • 起動時のウィンドウ表示位置を変更可能にした
  • 起動時にウィンドウを画面中央に表示する際のディスプレイを指定可能にした
  • ウィンドウの拡大率を設定可能にした(最小0.5)
  • 描画時のフィルターレベルを変更可能にした
    (常時無効、スキンに従う、拡大/縮小時に強制、常時強制の4段階、デフォルトはスキンに従う)
  • ノーツ表示タイミング調整を追加
  • レーン毎のノーツカウント機能を追加
  • レーンカバー(SUD+)の実装
  • それらに伴うコマンドライン引数やスキン用数値や定義等の追加/変更
  • Ctrl+上矢印/下矢印キーで約5秒単位でのシークを可能にした
  • Shift-JIS固定のはずが何故か読めていたBOM付きUTF-8(及びUTF-16/UTF-32)のBMSを正式にサポート
  • マイナスBPMが2個以上定義されている譜面を読み込ませると落ちるバグを修正
  • 9ボタンスキンの判定ラインの右端がピクピクしたり7/14KeysスキンのLN中間部の下端の色が場所によって変わる不具合を修正
  • スクラッチを左回転させ続けてるとスクラッチ中央のパーツが消えるバグを修正
  • FPS/UPS/平均判定タイミング表示を小さめのものに変更
  • BMS読み込み開始時に一瞬画面が黒くなる現象をさらに軽減
  • 入力処理の一部を別ライブラリ化(MistInput)
  • ジョイスティック入力に対応
  • キーコンフィグの外部ファイル化
  • スキンオプション定義の追加
  • dllや設定ファイルを別フォルダに移動
  • スキンの画像リソースの整理

mBMconfig

2021/10/24 v2.21.1024.0

[対応設定ファイルバージョン:v2.20.0816.0 (変更無し) / 対応キーコンフィグバージョン:v2.21.1024.0]

  • キーコンフィグ(操作)においてマウスボタン(左右クリックを除く)/ホイールのキーアサインに対応
  • 複数キーの割り当てにおいて複数デバイスに跨るキーアサインに対応
  • 複数キーの割り当てダイアログでOKを押した際に即座にキーアサインが追加されるように変更
2020/8/16 v2.20.0816.0

[対応設定ファイルバージョン:v2.20.0816.0 / 対応キーコンフィグバージョン:v2.20.0816.0]

  • 初版 (v1.xxはmBMplayのバージョンと合わせるため欠番)