霧中蒼鳥

-The blue bird in the mist-

mBMplay

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

mBMplay

何これ

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

主な機能

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

注意事項(必ず読んで)

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

必要環境

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

既知の不具合

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

画面の見方

mBMplay
プレイ画面
レーン毎のノーツカウント
※ノーツが存在しないレーンはカウント表示が暗くなります。
Notes count per lane
(上から) ジャンル / タイトル (+サブタイトル) / アーティスト (+サブアーティスト)
上段 現在の再生時間 / 総再生時間
下段 プログレスバー (マウス操作可能)
現在の小節 / 総小節数
Hi-SPEED関連
Hi-SPEED
⑥-1 HS-FIX種別
※クリックするとHS-FIX種別選択メニューを表示します。
HS-FIX Panel
⑥-2 Hi-SPEED倍率
⑥-3 Hi-SPEED倍率変更スライダー (0.1刻み、x0.50~x8.00)
※両端の+/-ボタンで0.05刻みで微調整できます。
※スライダーの範囲を超える値を設定する場合はキーボードもしくは微調整ボタンから変更してください。
曲再生速度
ボリューム関連
Volume
⑧-1 マスターボリュームインジケーター (ミュートボタン)
Volume (muted)
⑧-2 マスターボリューム調整スライダー
⑧-3 キーボリュームインジケーター (ミュートボタン) / キーボリューム設定値
⑧-4 BGMボリュームインジケーター (ミュートボタン) / BGMボリューム設定値
⑧-5 キー/BGMボリューム調整パネル表示ボタン
Volume panel
BGA
プレイレベル
※#DIFFICULTYの値に応じて色が変化します。
  • BEGINNER / EASY (#DIFFICULTY 1): 緑
    Level (Beginner)
  • NORMAL (#DIFFICULTY 2): 濃いめの青
    Level (Normal)
  • HYPER (#DIFFICULTY 3): 黄色
    Level (Hyper)
  • ANOTHER / EX (#DIFFICULTY 4): 赤
    Level (Another)
  • INSANE (#DIFFICULTY 5): 紫
    Level (Insane)
  • 未定義 / 範囲外: 水色 (他の数値と同じ)
    Level (Undefined)
判定ランク
※未定義の場合は半透明のNORMAL判定表示になります。
Judge (Undefined)
現在のBPM
(上から) 最小BPM / 最大BPM (いずれもBPM変化が存在する場合のみ表示)
上段 現在のノーツ (最大コンボ) / トータルノーツ / 総LN数 (LNが存在する場合のみ表示)
下段 現在の秒間密度 / 最高秒間密度 / 平均秒間密度
(上から) TOTAL値 / ゲージ数値 / ゲージ表示
※TOTAL値未定義の場合は半透明の300の表示になります。
Gauge total (Undefined)
ゲージ総回復量
レーンカバー数値 (変更直後のみ表示)
FPS / UPS (内部更新処理レート)

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

Testplay
上段 最大コンボ / トータルノーツ / コンボブレイク
下段 スコア / スコアレート / ミスカウント
(PGREAT=2点、GREAT=1点、他0点のいわゆるEXSCORE)
上段 ジャッジカウント
下段 平均判定タイミング / FAST / SLOW
(+でFAST寄り、-でSLOW寄り)
TOTAL値 (ゲージ総回復量と入れ替わり)
判定タイミング設定値 / 調整ボタン

操作方法

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

画面内へ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)[*]
F6 スクリーンショット
F7 FPS/UPS/平均判定タイミング(簡易テストプレイモードのみ)表示
F10 簡易テストプレイモード切り替え
F11/F12 判定タイミング調整(簡易テストプレイモードのみ)[*]
単体 +-1ms
+Shift +-10ms
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 [内部更新レート]} {-priority [優先度]} {-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になります。

-priority [優先度]

内部更新処理スレッドの優先度を設定します。[*]

0
1 通常以下
2 通常 (デフォルト)
3 通常以上
4

※同期処理モード(ups=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を使用します。
wasapi WASAPIを使用します。
-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

仕様等について

秒間密度計測機能

このプレーヤーでは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プレーヤーで行ってください。

簡易テストプレイモードの判定幅

簡易テストプレイモードの判定幅は以下のようになります。
(空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%

Download

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

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

mBMplay Licence v1.0

Copyright (c) 2019 misty.ls04

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

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

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


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

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

Download

mBMplay 本体

最新Ver: v3.23.0821.0

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

※ファイル構成の変更を含むため今回は更新パッチはありません。
(設定を引き継ぐ場合はsettingsフォルダを新しいmBMplayのフォルダ内にコピーしてください)

mBMconfig
mBMconfig

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

最新Ver: v3.23.0821.0

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

※ファイル構成の変更を含むため今回は更新パッチはありません。
(設定を引き継ぐ場合はmbmconfig_files内のmbmconfig_settings.xmlを新しいmBMconfigのmbmconfig_filesフォルダ内にコピーしてください)

mBMplay / mBMconfig (for Linux)

Linux向けのmBMplay/mBMconfigです。

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

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

更新履歴

mBMplay

2023/8/21 v3.23.0821.0

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

  • .NET Frameworkの要求バージョンを4.7.2に引き上げ
  • デフォルトスキン及びUIの大幅刷新
  • スキンオプションからレイアウトを左寄せ(デフォルト)、右寄せ、分割(SP)/中央(DP/9ボタン)に変更可能にした
  • スクリーンショットの実装(デフォルトはF6)
  • テストプレイ中の判定タイミング調整を可能にした(デフォルトはF11(-)/F12(+))
  • テストプレイ中のLNカウントとゲージ総回復量の表示を削除、代わりにスコアレートとFAST/SLOWカウント、判定タイミング設定値(+調整ボタン)を追加
  • テストプレイ中の平均判定タイミング表示をジャッジカウント付近に移動、テストプレイ中は常時表示するように変更
  • ノーツが存在しないレーンのノーツカウント表示が半透明になり判別できるようにした
  • TOTAL値や判定ランクが未定義の場合に該当箇所の表示が半透明になり判別できるようにした
  • #DIFFICULTYが定義されている場合値に応じてレベル表記の色が変わるようにした
    (BEGINNER/EASY(1)=緑、NORMAL(2)=暗めの青、HYPER(3)=黄色、ANOTHER/EX(4)=赤、INSANE(5)=紫、未定義/範囲外=他の数値と同じ)
  • 内部処理スレッド優先度を設定できるようにした(-priority [0-4])
  • WASAPI(共有/排他)にとりあえず対応
  • OpenAL用のライブラリを1から作り直し、これによる最大ソース数等の制限の撤廃
  • 描画処理の効率化によるパフォーマンス向上
  • 画像の読み書きにGDI(System.Drawing.Bitmap他)の代わりにSkia(SkiaSharp)を使用するようにした
  • DirectX12及びVulkan使用時のオブジェクト数/テクスチャ数の制限を撤廃 (設定値自体は各バッファの初期容量として使用)
  • OpenGL使用時にOpenTKのGameWindowを使わないようにした
  • HSを変更し続けると0.01ほどズレることがある不具合を修正
  • 再生中のガベージコレクションによる処理落ちを軽減
  • エディタ等から途中再生した時の音ズレを大幅軽減
  • U+10000以上の文字への対応準備 (ライブラリ側は対応、フォントは未収録)
  • 一部ライブラリの.NET Standard 2.0化
  • その他細かい修正や最適化など

mBMconfig

2023/8/21 v3.23.0821.0

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

  • .NET Frameworkの要求バージョンを4.7.2に引き上げ
  • スクリーンショット、判定タイミング増加/減少のキーコンフィグに対応
  • 内部処理スレッド優先度の設定に対応
  • API設定ダイアログのコンボボックスのローカライズに対応
  • API設定ダイアログのバッファ数等の数値の項目の上限/下限を設定
  • API設定ダイアログのサンプリングレート等の数値の項目をコンボボックスに置き換え
  • キーコンフィグの自動検出でID末尾以外のジョイスティックを認識しないバグを修正
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のバージョンと合わせるため欠番)