パッケージ com.lmt.lib.bms.bemusic

クラス BeMusicSpec


  • public class BeMusicSpec
    extends Object
    Be-MusicのBMS仕様を表します。

    当クラスは、Be-MusicのBMS仕様に関連する定義のプレースホルダの役割を果たします。 そのため、インスタンスを生成することを想定していません。

    当クラスの役割は、ライブラリの利用者が希望する形式でのBe-Music用BMS仕様(BmsSpec)を提供すること、 またはそのBMS仕様を用いて一般的なBMSファイル読み込み機能を提供することにあります。

    • フィールドの詳細

      • V1

        public static final int V1
        Be-MusicのBMS仕様バージョン(V1)を表します。
        関連項目:
        定数フィールド値
      • LATEST_VERSION

        public static final int LATEST_VERSION
        Be-Music用BMS仕様の最新バージョン
        関連項目:
        定数フィールド値
      • LATEST

        public static final BmsSpec LATEST
        最新バージョンのBe-Music用BMS仕様です。

        このBMS仕様はLATEST_VERSIONに対応したものです。任意型メタ情報、ユーザーチャンネルは何も指定されていません。

    • コンストラクタの詳細

      • BeMusicSpec

        public BeMusicSpec()
    • メソッドの詳細

      • create

        public static BmsSpec create​(int specVersion,
                                     BmsMeta[] objectMetas,
                                     BmsChannel[] userChannels)
        Be-Music用のBMS仕様を生成します。
        パラメータ:
        specVersion - BMS仕様のバージョン
        objectMetas - BMS仕様に含める任意型メタ情報のリスト
        userChannels - BMS仕様に含めるユーザーチャンネルのリスト
        戻り値:
        BeMusic用のBMS仕様
        例外:
        IllegalArgumentException - specVersionに未知の値を指定した
        IllegalArgumentException - objectMetasのリスト内に任意型以外のメタ情報が含まれていた
        IllegalArgumentException - userChannelsのリスト内に仕様チャンネルが含まれていた
      • createV1

        public static BmsSpec createV1​(BmsMeta[] objectMetas,
                                       BmsChannel[] userChannels)
        V1のBeMusic用BMS仕様を生成します。
        パラメータ:
        objectMetas - BMS仕様に含める任意型メタ情報のリスト
        userChannels - BMS仕様に含めるユーザーチャンネルのリスト
        戻り値:
        BeMusic用のBMS仕様
        例外:
        IllegalArgumentException - objectMetasのリスト内に任意型以外のメタ情報が含まれていた
        IllegalArgumentException - userChannelsのリスト内に仕様チャンネルが含まれていた
      • loadContentFrom

        public static BmsContent loadContentFrom​(Path path,
                                                 boolean strictly)
                                          throws BmsException
        最新バージョンのBe-Music用BMS仕様を用いて指定パスのファイルからBMSコンテンツを読み込みます。

        当メソッドは最も一般的なBMSコンテンツの読み込み機能を提供します。通常、BeMusicサブセットが持つ柔軟かつ高機能な 処理を行うためには複数の煩雑な設定を行ったうえで読み込みを行う必要がありますが「ファイルからBMSコンテンツを読み込む」 という一般的な処理を行いたい場合には当メソッドを用いるのが最適な選択肢となります。

        2番目の引数は、読み込みの際に厳格なフォーマットチェックを行うかどうかを選択します。 falseを指定するとBMS定義の構文エラー、値の範囲・書式、チャンネルの定義ミスなど、様々な誤りに対して寛容的になり、 誤りを検出した際にはその誤りを無視して読み込みを続行します。この設定で読み込みを行うと当メソッドが例外をスローする ケースが減少しますが、代償としてBMS定義の誤りに気付く機会が失われ、読み込まれたBMSコンテンツが意図せずに期待とは異なる 内容になってしまう可能性があります。trueを指定すると以下のような場合にメソッドが例外をスローするようになります。

        • BMSフォーマットとして不正な構文が使用されている時
        • 未知のメタ情報(ヘッダ)が定義されている時
        • メタ情報の値が想定する形式の値になっていない時(例えば数値を設定する箇所に数値以外を記述する等)
        • 未知のチャンネル(番号)が定義されている時
        • チャンネルに設定した値の形式が不正な時
        • 同じ小節・チャンネルのデータが再定義された時
        • 乱数(#RANDOM/#IF/#ELSE/#ENDIF等)の定義階層が不正な時

        上記以外にもファイルの読み込み中にエラーが発生する等、複数の要因で例外がスローされる可能性があります。 例外およびエラーの詳細についてはBmsExceptionBmsErrorを参照してください。

        当メソッドでは乱数を使用したCONTROL FLOW読み込みを行います。そのため乱数を使用したBMSコンテンツでは 読み込み毎に異なる内容のBMSコンテンツになる場合があることに留意してください。

        詳細な読み込み設定を行ったうえでBMSコンテンツを様々なデータ型から読み込みたい場合には、 BmsLoaderBeMusicLoadHandlerを参照し、必要な手続きを行う処理を記述してください。 当メソッド内部では一般的な用途向けで手続きを行っています。

        パラメータ:
        path - 読み込み対象のBMSファイルのパス
        strictly - 厳格なフォーマットチェックを行うかどうか
        戻り値:
        最新バージョンのBe-Music用BMS仕様で読み込まれたBMSコンテンツ
        例外:
        BmsException - BMSファイルの読み込みに失敗した
        NullPointerException - pathがnull
        関連項目:
        BmsLoader, BmsError, BeMusicLoadHandler