beatoraja は “プレイアブルなビューワ” として利用可能です。beatoraja はオープンソースでクロスプラットフォームな BMS アプリケーションです。

LR2 でやれることは beatoraja でもだいたいやれるうえ、標準で Full HD 対応・FLAC 形式の音声再生に対応・堅牢なインターネットランキング・BMSON 形式をサポート・終端判定の有無を指定可能なロングノート・バックスピンスクラッチを含むロングノート終端発音・24 鍵盤譜面・#SCROLL 拡張命令などの魅力的な新要素が豊富に実装されています。楽曲製作者向け資料 [https://github.com/exch-bms2/beatoraja/wiki/楽曲製作者向け資料] (外部リンク)に目を通しておくことをお勧めします。

  1. beatoraja
  2. 動作環境
  3. ビューワの設定に beatoraja をてっとりばやく追加する:
  4. JRE 非同梱版 beatoraja をビューワに追加する:
  5. BMSE と連携する際の注意点
  6. おまけ

beatoraja

beatoraja 0.8.6 + BMSE 1.3.8

https://mocha-repository.info/download.php (外部リンク) から、最新版をダウンロードして展開します。インストール先は任意ですが、ファイル操作に対して管理者権限が要求されそうな【Program Files】 配下などの場所には beatoraja フォルダーを配置しないでください。

本頁は Liberica JRE 同梱版をお勧めします。理由は、

  • JRE 同梱版は beatoraja.exe ファイルと jre フォルダーを含みます。
  • ModernChic 版はバッチファイルを含みます。

これら以外の内容は JRE 同梱版も ModernChic 版も完全に同一であり、JRE 同梱版をダウンロードして Windows 用バッチファイル [https://github.com/exch-bms2/beatoraja/blob/master/beatoraja-config.bat] (外部リンク) を足せば両方の良いとこ取りができるからです。

  • 更新差分版は、直前のバージョンの beatoraja フォルダーに上書きして最新版にアップグレードするために用意された、最小限の内容です。新規導入する用途には関係がありません。
  • 冒頭の画像のような 24 鍵盤譜面およびそのダブルプレイ譜面は BMSE では編集できません。BMSON エディター BmsONE [https://excln.github.io/bmsone.html] (外部リンク) か、BMSON 形式へのインポート機能を備えた μBMSC 私家版 [https://github.com/NS-Kazuki/iBMSC/releases] (外部リンク)をお使いください。

動作環境

対応 OS:

64-bit Windows 11/10/8.1/8/7, Mac OS, Linux

必要な環境:

OpenGL 3.1 以降

  • Intel HD Graphics 2000/3000 は OpenGL 3.1 をサポートしていますが、Windows 10 と組み合わせると動作しません [https://github.com/LWJGL/lwjgl/issues/119] (外部リンク) (原因 [https://github.com/LWJGL/lwjgl/issues/119#issuecomment-246220393] (外部リンク)対策 [https://github.com/LWJGL/lwjgl/issues/119#issuecomment-262363814] (外部リンク))。
  • beatoraja が起動しない場合は GLview [https://www.realtech-vr.com/home/?page_id=142] (外部リンク) などで自分の環境を調査し、グラフィックドライバーを更新することで、対応 OpenGL バージョンを刷新できるかもしれません。
[ModernChic 版] 別途必要なファイル:

64-bit Java Runtime Environment 1.8.0 以降

  • JRE 1.8.0 に相当する言語仕様は Java SE 8 です (2014年3月発表)。2024年時点の長期サポート最新版は Java SE 21 です。
  • ごく初期の版を除き、64-bit JRE が必須です

ヘルプ筆者は以下の環境などで beatoraja 0.8.6 の動作を確認済みです。

  • Ubuntu 16.04 + Liberica Full JDK 11 LTS
  • Ubuntu 23.10 + Liberica Standard JDK 21 LTS + JavaFX SDK 22
  • Windows 7 + Oracle Java 8 Update 401 (1.8.0_401-b10)
  • Windows 11 + Zulu JDK 23 + JavaFX SDK 22

ビューワの設定に beatoraja をてっとりばやく追加する:

Liberica JRE 同梱版なら、実行ファイル beatoraja.exe に対して他の Windows 用アプリケーションと同じ手順で設定を行うことができます。

  1. BMSE をいったん起動して閉じます。
  2. bmse フォルダ内の bmse_viewer.ini をメモ帳などで開きます。
  3. 以下の記述をコピーして貼り付けます。(記述追加例)

    beatoraja
    beatoraja.exe のパス (適宜書き換える)
    -a <filename>
    -s <filename>
    改行 (必須)
    さらに改行 (必須)

    (これは停止ボタン該当行に何も指定しないことによって beatoraja 設定画面を呼び出す例です。停止ボタン該当行に改行の代わりに “-p <filename>” と指定すれば、停止ボタン押下によってプラクティスモードを起動します。)

  4. bmse_viewer.ini を上書き保存し、BMSE を起動します。
  5. ビューワ選択枠から beatoraja を選び、正常に呼び出せるか確認します。

この呼び出しが beatoraja 初回起動時だった場合は設定ウィンドウが開かれます。お好みで設定してください。例としてヘルプ筆者は既定の状態から以下のような変更を行っています:

  • 【Video】 タブの「解像度」を SD (640 x 480) に変更 (ビューワ的に)
  • 【Audio】 タブの「同時発音数」を 256 に変更 (128 で鳴らない実例あり)
  • 【プレイオプション】 タブの全 MODE の「レーンカバー」を 0 に変更
  • 同、全 MODE の「ハイスピード固定」を OFF に変更
  • 【その他】 タブの「Discord」がチェックされていれば外す
  • 同、「IPFS」のチェックを外す
  • 【IR】 タブの「ライバルスコア取得」のチェックを外す
  • 一度起動し、選曲画面上でフルキー 6 を押下して、キーコンフィグ

プレイヤー設定が正しく保存されない場合

どういう状況でそうなるのかわかりませんが、自分が設定した覚えのないスキンがランダムに読み込まれたり、プレイオプションが毎回初期化されたりする場合があります。あまり自信がない個人的対処法を一応書いておきます。

  • beatoraja の選曲画面上でフルキー 6 を押下すると、キーコンフィグ画面が開かれます。日本語 106/109 キーボードを使っている場合、14 KEYS2P-7 KEY の既定値が Unknown になっている可能性があります。ここに適当なキーを割り当てておきます。

  • 設定ウィンドウの 【スキン】 タブから「スキン種類」(7KEYS5KEYS) を一通り表示しておきます。変更する予定がなくとも全ゲームモードを選択し、各モードの内容詳細を設定画面上に描画します。このおまじないは 0.8.6 以降では不要かもしれません。

  • Liberica JRE 同梱版の beatoraja.jar を、Liberica Full JDK/JRE 以外の OpenJDK/JRE パッケージと組み合わせて使う場合、起動時のコマンドライン引数で JavaFX のモジュールパスも明示的に指定する必要があります (詳細は後述)。ここを間違うと既定のプレイヤー設定が読み込まれたような気がします。

JRE 同梱版で beatoraja.jar を使いたい場合

そんなときのために、基本的な方法を以下に示します。

  1. Windows 用バッチファイル [https://github.com/exch-bms2/beatoraja/blob/master/beatoraja-config.bat] (外部リンク) をダウンロードします。リンク先に何も表示されない場合は、Web ブラウザーの JavaScript を有効化してください。あるいは既にサポート期間が終了した Microsoft Internet Explorer や Microsoft Edge Legacy などの古びた Web ブラウザーをお使いの場合、ダウンロードできない可能性があるのでご注意ください [https://docs.github.com/ja/get-started/using-github/supported-browsers] (外部リンク)

    画面の右上側に並ぶアイコン群のうち、下向き矢印と受け皿を組み合わせたようなボタンを、マウスで左クリックすると、ダウンロードが開始されます。

    GitHub の外観が多少変わったとしても、それっぽいアイコンの上にマウスカーソルを持っていけば “Download raw file” のようにツールチップ等で案内してくれるはずです。適宜うまくやってください。

  2. ダウンロードしたバッチファイル beatoraja-config.bat を、既に自分がダウンロードして使っている beatoraja0.8.6-jre-win64 フォルダーの中に移動します。(beatoraja フォルダーのバージョンを示す数字部分は、人によって異なります。)

  3. この beatoraja-config.bat ファイルをマウスで右クリックして、表示されるコンテキストメニューから「プロパティ」を左クリックします。

    プロパティウィンドウの下部にセキュリティ関連の警告がある場合、ブロックを解除し、このファイルへのアクセスを許可します。

    たとえば Windows 11 なら「許可する」チェックボックスを左クリックします。チェックボックスを有効化した状態で、プロパティウィンドウ最下部の「OK」ボタンか「適用」ボタンを左クリックします。そのままプロパティウィンドウを閉じて次に進みます。

  4. この beatoraja-config.bat ファイルを Windows メモ帳で開きます。4 行目の先頭に以下のように 8 文字を追加し、上書き保存します。

    jre\bin\java -Xms1g -Xmx4g -jar beatoraja.jar

    (メモ帳の開き方が分からない場合は、Windows メニューの検索欄に “notepad” と入力してください。)

  5. 書き換えた beatoraja-config.bat ファイルをマウスで左ダブルクリックすると、beatoraja の設定ウィンドウが開かれます。

これを応用すると、コマンドライン引数をカスタマイズして beatoraja を起動できます。たとえば実際のカスタマイズ例 [https://codoc.jp/sites/haaEBtTkhA/entries/rDDRUocsng] (外部リンク)を参考にさせていただいて JRE 版に流用する場合、まず元の引数群から以下の部分を削除します。

--module-path javafx-sdk/lib --add-modules=javafx.controls,javafx.fxml

次に最初のほうの jdk/bin/javajre\bin\java に変えるだけです。


JRE 非同梱版 beatoraja をビューワに追加する:

  • JRE 同梱版を使う方はこの節を読み飛ばして構いません。
  • が、この節の方法は JRE 同梱版の beatoraja.jar に対しても適用できます。
  • Oracle JRE でも beatoraja は遊べます [https://www.oracle.com/jp/java/technologies/javase/jdk-faqs.html] (外部リンク)、本頁では可能な限り新しいバージョンOpenJDK 長期サポート版 (LTS) 64-bit Windows 用パッケージZIP 書庫でダウンロードすることを推奨します。

Java 環境を構築するための選択肢は多岐にわたり、用途や考え方次第で最適な解が異なります。前述の条件に絞っても Disco API [https://github.com/foojayio/discoapi] (外部リンク) では数十件以上の候補がマッチします。ライセンスなどで迷ったら Liberica [https://bell-sw.com/] (外部リンク)Full JRE を選びましょう、beatoraja 公式の JRE 同梱版はこれをそのまま同梱しています。

  • beatoraja を遊ぶだけなら JRE (Java Runtime Environment) パッケージがどれか一つあれば充分です。が、Amazon や Microsoft の OpenJDK ディストリビューションは Windows 用 JRE を用意していません。JRE を選択できない場合は Windows 用 JDK パッケージを代わりにダウンロードしてください。JDK は JRE を内包しているので、どれをダウンロードすべきか分からない場合は JDK64-bit Windows 用パッケージ ZIP 書庫を選んでおけば間違いがありません。

  • JDK (Java Development Kit) パッケージは beatoraja の開発や改造に興味がある方向けです。普通に遊ぶだけなら過剰な代物ですが、あるいはコマンドライン引数を駆使したパフォーマンスチューニングなどに役立つかもしれません。

  • JRE と JDK はどちらか片方をひとつだけ入れれば充分です。複数パッケージを導入することも可能ではありますが、複数の MSI インストーラーを軽率に実行すると、インストールパスや Path 環境変数や関連付けなどの設定が最終的にどう変更されるか分かったものではありません。

  • ZIP 版ならユーザーが明示的に働きかけない限り環境変数や関連付けが変わらないので、複数パッケージの運用も比較的に安全です。バージョンやディストリビューションを異にする JDK パッケージを複数並べて、用途によって参照先だけを切り替える、などの活用が容易です。

具体的なビューワ設定手順

  1. 適当な 64-bit Windows 用 OpenJDK or OpenJRE パッケージを ZIP 書庫でダウンロードして、コンピューター内の任意の場所に展開します。Program Files 配下などの面倒そうな場所を除けばどこに置いても構いません。ここでは例として C: ドライブ直下に中身のフォルダーを配置します。

    Zulu [https://www.azul.com/downloads/] (外部リンク) (FX 版) および Liberica [https://bell-sw.com/] (外部リンク) (Full 版) は JavaFX を同梱していますが、これらは例外的なパッケージであり、大多数の OpenJDK パッケージは JavaFX を同梱していません。beatoraja には JavaFX も必要なので、たとえば Liberica (Standard 版) や Amazon Corretto [https://aws.amazon.com/jp/corretto/] (外部リンク) を選んだ場合は JavaFX [https://gluonhq.com/products/javafx/] (外部リンク) も別途ダウンロードしなければなりません。

    必要なら JavaFX [https://gluonhq.com/products/javafx/] (外部リンク) 64-bit Windows 用 SDK パッケージ ZIP 書庫版もダウンロードし、適当な場所に展開します。Program Files などの面倒な場所は避けてください。例えば C: ドライブ直下に内容を配置します。

    • OpenJDK と JavaFX を両方ダウンロードする場合、両者のメジャーバージョンを揃えるのが無難です。JDK 11 と JavaFX 21 のようにバージョンが離れすぎているとそもそも起動できません。
    • 普段使いの範囲なら多少のバージョン不一致は問題なさそうです。
  2. Windows メモ帳で beatoraja 起動用 PowerShell スクリプトを書き、これを beat.ps1 というファイル名で保存します。ご自分の環境に読み替えて、スクリプト先頭側の設定部分を適宜書き換えてください。

    • $beatoraja 変数には、beatoraja.jar のパスを指定します。
    • $java 変数には、JDK/JRE 配下 java.exe のパスを指定します。
    • $javafx 変数には、JavaFX 配下 lib フォルダーのパスを指定します。

    Zulu JDK/JRE FXLiberica Full JDK/JRE、あと OpenJDK ではないけれど Java 10 までの Oracle JDK/JRE には、JavaFX も含まれています。これらのパッケージを使用する場合、この PowerShell スクリプトの後半部分も書き換えないと正しく動作しないかもしれません。その場合、スクリプト内のコメントを目印として、二箇所の先頭に “#” を付け足し、代わりに二箇所の “#” を削除してください。

    BMSE 編集中の一時譜面を beatoraja に 9 ボタン譜面として強制認識させる LR2 PMS View Helper [https://mistyblue.info/tools.html#lr2pmsViewHelper] (外部リンク) 的な機能と、beatoraja を呼び出した後で VirtualMIDISynth.exe [https://coolsoft.altervista.org/en/virtualmidisynth] (外部リンク) を再起動する機能が、スクリプトにおまけとして付属しています。既定では両機能とも無効です。$FALSE$TRUE に書き換えると機能が有効になります。

    • 前述のスクリプトを Ctrl + A で「すべて選択」してコピーペーストする場合、最後の文字列 “←[End Of File]” は削除してください。
    • プレビュー終了時にコンソール上に残る beatoraja のログに興味がない方は、最後近辺の “Read-Host 'Done'” を削除してください。
    • PowerShell スクリプトを Windows メモ帳から保存する場合、メニューバーの「ファイル」→「名前を付けて保存」の「エンコード」欄で「UTF-8 (BOM 付き)」を指定してください。「BOM 付き」が選択肢に見当たらない場合は「UTF-8」を指定します。
    • PowerShell スクリプトを保存する場所はどこでも構いませんが、後述のバッチファイルと同じ場所に配置してください。
    • PowerShell スクリプトのファイル拡張子は *.ps1 です。
  3. Windows メモ帳を新たに起動し、Windows バッチファイルを記述します。内容は以下の一行です。

    PowerShell -NoProfile -ExecutionPolicy RemoteSigned -File "%~dp0.\beat.ps1" %1 %2

    この Windows バッチファイルは「このバッチファイルを経由する場合のみ、当該 PowerShell スクリプトの実行を一時的に許可します」程度の意味合いです。

    PowerShell は初期状態では ps1 スクリプトファイルを実行できません。セキュリティリスクを不用意に高めるのは好ましくないため、本頁では PowerShell 実行ポリシーの恒常的な変更を行いません。

    PowerShell 実行ポリシーを自分で変更できる場合は、この Windows バッチファイルを経由する必要はないかもしれません。以降の手順は適宜読み替えてください。

    • PowerShell 7 以降 [https://aka.ms/powershell-release?tag=stable] (外部リンク)を別途導入済みの方は、バッチファイル先頭の “PowerShell” を “pwsh” に変更すると、*.ps1 スクリプト内で三項演算子や ????=?. などの新機能を利用できてお得です。
  4. バッチファイルを適当な名前で保存し、先述の PowerShell スクリプトと同じ場所に配置します。例として toraja.bat と命名します。

    • Windows バッチファイルを Windows メモ帳から保存する場合、メニューバーの「ファイル」→「名前を付けて保存」の「エンコード」欄で「ANSI」を選択してください。 (つまり Shift_JIS で保存します。)
    • Windows バッチファイルのファイル拡張子は *.bat です。
  5. bmse_viewer.ini からこのバッチファイルを参照します。

    toraja
    toraja.bat のパス (適宜書き換える)
    <filename> -a
    <filename> -s
    <filename> -p
    改行 (必須)

    例示したバッチファイルや PowerShell スクリプトは、渡された引数の数や順番や内容を一切検証していないので、ビューワ引数をこの状態から変更するとバグが生じます。都合が悪い場合は各自でスクリプト内容を修正していただければと思います。

    • Windows 10 19H1 以降、Windows メモ帳の既定のテキストエンコーディングは「UTF-8」 (BOM 無し) に変更されています。これにより、bmse.inibmse_viewer.ini は「名前を付けて保存」の「エンコード」欄を明示的に「ANSI」に変更してから保存することが必須になりました。
    • BMS ファイルをメモ帳で編集する場合も事情は同様で、非 ASCII 文字を beatoraja や LR2 に表示させるなら「ANSI」で保存する必要があります。

JDK コマンドライン引数のカスタマイズ

導入した OpenJDK のバージョンが充分に新しいなら、JDK 9 以降に追加された実行時引数をユーザーが任意で追加していくことも可能です。たとえば -XX:+UseShenandoahGC [https://wiki.openjdk.org/display/shenandoah/Main] (外部リンク) がよく知られています。効果のほどはさておき、使用する OpenJDK のバージョンが新しければ新しいほど選択肢を増やせることは明らかです。

当頁の PowerShell スクリプトで JDK 実行時引数を試行錯誤するのは面倒なので、性能をチューニングしたい方には別の beatoraja を用意して試されることをお勧めします。Java 産の有名ゲーム Minecraft などが引数の参考になるかもしれません。実際のカスタマイズ例 [https://codoc.jp/sites/haaEBtTkhA/entries/rDDRUocsng] (外部リンク)もお見かけしましたが、一曲を何十回と起動するビューワ用途では優先すべき要素が異なるような気もします。


BMSE と連携する際の注意点

beatoraja は「現在位置から再生」「再生を停止」に対応していません。

最初から再生 (F5) で呼び出すと、編集中の譜面を最初からオートプレイします。

現在位置から再生 (F6) で呼び出すと、編集中の譜面を最初からプレイします。

再生を停止 (F7) で呼び出すと、引数次第で設定画面が起動したりします。


ビューワ枠から呼び出された beatoraja は単曲再生モードとなります。

再生が完了すると終了します。プラクティスモードなら最初に戻ります。引数を与えていない場合は普通に起動します。


編集中の “9 Keys (PMS)” 譜面を、beatoraja は “10 Keys (Double Play) BMS” として誤解釈します。

譜面著者の期待に反して、PMS は 10 Keys スキンで表示されます。LR2 PMS View Helper [https://mistyblue.info/tools.html#lr2pmsViewHelper] (外部リンク) も残念ながら無効です。BMSE と beatoraja の間にバッチファイルなどを噛ませることで、その場しのぎの対処は可能です。beatoraja 起動用 PowerShell スクリプトなどを参照してください。


beatoraja 設定画面 【Audio】 タブ → 【Audio Output】で “PortAudio” を選択している場合、環境によっては「beatoraja 起動前から動作中だったプログラム」の一部の音声が鳴らなくなる場合があります。

ヘルプ筆者が遭遇した例では BmsONE [https://excln.github.io/bmsone.html] (外部リンク)VirtualMIDISynth [https://coolsoft.altervista.org/en/virtualmidisynth] (外部リンク) (『Windows Media Player 用 既定のデバイス』に VirtualMIDISynth を設定している場合) などが該当します。どちらもアプリケーションを再起動すれば正常な状態に戻るものの、手動で再起動するのは面倒です。BMSE と beatoraja の間にバッチファイルなどを噛ませることで、その場しのぎの対処は可能です。beatoraja 起動用 PowerShell スクリプトなどを参照してください。

PortAudio ではなく OpenAL を選択すればそういった現象は回避できるのですが、OpenAL も特定の条件下で音声が期待通りに鳴らない場合があります (たとえば長音を定義して短い間隔で連続配置しても波形がリロードされない)。


beatoraja 0.8.3 か 0.8.4 までは、譜面を完走していないにもかかわらず曲途中で一切の音声が鳴らなくなる場合がありました。 (0.8.4 か 0.8.5 で修正済み)

beatoraja 側の Audio Output が PortAudio に設定されているとき、以下の条件をすべて満たす音声ファイル BAD.ogg が鳴らされると、その瞬間から全音声がミュートされるようでした。

  • BAD.ogg の形式が WAV ではない (OGG や FLAC だと 1 アウト)。
  • BAD.ogg のサンプリング周波数が 44100 Hz 系列ではない
  • BAD.ogg0 samples (またはそう判定される程の極小音量)。

JRE 11 以上の場合、音量極小の OGG ファイルが検出されるとコンソールに 0 samples 例外が出力されますJRE 8 では再現されません。

PortAudio の諸問題に対する、ユーザー側で可能な根本的対処としては、以下などが挙げられます。

  • 無効になっているオーディオ再生デバイスまたは録音デバイスをすべて有効化してみる。
  • オーディオデバイスドライバーをアップデートしてみる。
  • オーディオコーデックドライバーを再インストールしてみる。
  • ASIO4ALL 使用中なら更新してみる。Version 2.15 は 2022年2月公開。

おまけ

JRE 同梱版なら LR2 同様にショートカットを利用できます。引数は beatoraja と LR2 で異なるため、そのまま使いまわすことはできません。

JRE 非同梱版も PowerShell を用いた同様の例 [https://hitkey.nekokan.dyndns.info/diary2012.php#D201228] (外部リンク)があります。適当にスクリプトを書き換えていただければ。

ヘルプ筆者が PowerShell スクリプトを選んだ理由は、同じく Windows に標準搭載されているコマンドプロンプトや Windows Script Host 用のバッチファイルではドラッグアンドドロップ操作が困難な状況が存在したからです。

BMSE は ANSI アプリケーションなので、Windows 用バッチファイルさえあれば用は足りるはずなのですが、バッチファイルを使いこなす知性と忍耐が私に欠けていたのでこのような形になりました。

バージョン 7 以降の PowerShell は beatoraja と同様にクロスプラットフォームなので、Windows 上で巧妙に書かれた beatoraja 用 PowerShell スクリプトは他の OS でも流用できるかもしれません。ヘルプ筆者は力不足で断念。