mBMplay
プレビュー向けの再生特化型BMSプレーヤー「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)のインストールが必要です。
秒間密度計測機能について
このプレーヤーでは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にすると譜面スクロールがカクつく
画面の見方

① | プレイ画面 |
---|---|
② | レーン毎のノーツカウント |
③ | (上から) ジャンル / タイトル (+サブタイトル) / アーティスト (+サブアーティスト) |
④ |
(最上段) HS種別 / HS倍率 (それ以降) マスターボリューム / キーボリューム / BGMボリューム |
⑤ | BGA |
⑥ |
(上段) 現在の再生時間 / 総再生時間 (下段) プログレスバー |
⑦ | 曲再生速度 |
⑧ | 現在の小節 / 総小節数 |
⑨ | 現在のノーツ (最大コンボ) / トータルノーツ |
⑩ | 総LN数 (LNが存在する場合のみ表示) |
⑪ | プレイレベル |
⑫ | 判定ランク |
⑬ | 現在のBPM |
⑭ | (上から) 最小BPM / 最大BPM (いずれもBPM変化が存在する場合のみ表示) |
⑮ | TOTAL値 |
⑯ | (上から) ゲージ数値 / ゲージ表示 |
⑰ | ゲージ総回復量 |
⑱ |
(左側) 現在の秒間密度 (右側上から) 最高秒間密度 / 平均秒間密度 |
⑲ | レーンカバー数値 (変更直後のみ表示) |
⑳ | (上から) FPS / UPS (内部更新処理レート) |
※簡易テストプレイモードでは以下のように一部変化します。

① | (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)[*]
- E/R - BGMボリューム減少/増加 (0-100)[*]
- 増減量やCtrl/Shiftの組み合わせはマスターボリュームと同様
- 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 - レーンカバー表示(1P)[*]
- F4 - レーンカバー表示(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.20.0816.0
Download(このサーバーから)(32bit版)
Download(このサーバーから)(64bit版)
※フォルダ構成の変更を含むため今回は更新パッチはありません。
(設定を引き継ぐ場合はsettings.xmlを新しいmBMplayのsettingsフォルダ内にコピーしてください)
mBMconfig
mBMplay用のGUI設定ツールです。
mBMplayの詳細設定やスキンオプション設定、キーアサイン変更等が可能です。
使用方法などは同梱のreadme_mbmconfig.txtをこ覧ください。
※mBMconfigを導入しなくてもmBMplayは利用可能です。
※mBMconfigのライセンスはMITライセンスです。詳しくは同梱のlicense_mbmconfig.txtをご覧ください。
最新Ver: v2.20.0816.0
Download(このサーバーから)(32bit版)
Download(このサーバーから)(64bit版)
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をご覧ください。
- mBMplay (for Linux) v2.20.0816.1000
- mBMconfig (for Linux) v2.20.0816.1000
デフォルトスキンの一部パーツにLR2用スキン「Light Pop EX」及び.RED氏制作の「OVER ACTiVE DX+」(せな氏制作のボム含む)のパーツを使用しています。
更新履歴
2020/8/16 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や設定ファイルを別フォルダに移動
- スキンの画像リソースの整理
2020/2/22 v1.20.0222.0
- 簡易テストプレイモードの実装
- それに伴うコマンドライン引数やスキン用フラグ等の追加/変更
- スキン側からのフラグやタイマーの呼び出し処理の効率化
- 7/14Keysスキンのスクラッチの回転をオートプレイ時含めスクラッチ操作と連動するように変更
2019/11/7 v1.19.1107.0
- 環境によって更新レートを0以外にすると再生開始後しばらくするとエラーが出たりフリーズするバグを修正
- BGA用テクスチャ更新タイミングを更新処理中から描画処理中に変更
- 連番BMP使用のBGAを再生中にメモリを大量に消費したりガベージコレクションで処理落ちする現象を大幅に軽減
- 動画BGAの内部仕様の一部変更
- BMS読み込み開始時に一瞬画面が黒くなる現象を軽減
2019/7/28 v1.19.0728.0
- ゲージ数値等で小数を表示する際に整数部と小数点以下で丸め方が異なり値がおかしくなっていたのを修正
- OpenGL使用時以外でAltキーを押すと描画が止まるバグを修正
- 内部更新レートが0のときに-tで終了しようとするとエラーが出て落ちるバグを修正
-
BMP定義の代替ファイル検索に対応
(BMP定義に画像が指定されている場合は画像優先、動画が指定されている場合は動画優先で検索) - BPMやTOTAL値等の数値で小数の指数表記に対応
- スペースやタブでインデントされたBMSに対応
- Escキーで終了するようにした
- ロード前/ロード中の画面にバージョンを表示するようにした
2019/7/14 v1.19.0707.1
-
BPMやTOTAL値等で2147483647を超える(-2147483648を下回る)数値を表示しようとした際にオーバーフローで落ちるバグを修正
(超える場合は表示上9桁の範囲に収まるように上位から切り捨てます) - STOP定義の時間経過直後に譜面の表示がおかしくなるバグを修正
- ムービーの読み込みに失敗した場合に無限ロードになることがあるバグを修正
- ムービー再生終了後に停止状態にならず無駄な書き換えが発生していたバグを修正
- ムービー再生終了後の小節にシークするとBGAが真っ黒になるバグを修正
-
5keys/10keysスキンを使用可能にするための下準備
(settings.xmlに5keys/10keysスキンのための項目を新設。空欄の場合はそれぞれ7keys/14keysスキンを使用) - スキンの些細な定義ミスの修正
2019/7/7 v1.19.0707.0
- 初版