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

クラス BmsMeta


  • public final class BmsMeta
    extends BmsMetaKey
    BMSコンテンツの持つメタ情報の属性を表します。

    BMSライブラリにおけるメタ情報とは、BMSコンテンツのうち当該コンテンツの内容・属性・状態等を表す様々な情報を指します。 BMSにおけるメタ情報の一般的な呼称は「HEADER」ですが、BMSライブラリではこれを「メタ情報」と呼称します。

    メタ情報は「構成単位」「名称」の2つの情報を用いてデータを管理します。以下にそれぞれの情報について記載します。

    構成単位(BmsUnit)
    BMSコンテンツ内で複数のメタ情報を管理するにあたり、管理構造は以下に分類されます。
    - 単体メタ情報
    1つのメタ情報に対して1個のデータを割り当てる構造です。多くの情報はこの構成単位に分類されます。
    - 複数メタ情報
    1つのメタ情報に対して複数のデータを割り当てることが出来る構造です。当該メタ情報として登録したい情報が 複数あるような情報に対して適用することを想定しています。
    - 索引付きメタ情報
    1つのメタ情報に対して複数のデータを割り当て、そのデータに00~ZZの索引を割り当てて管理する構造です。 チャンネルからメタ情報を参照するようなケースを想定しています。BMSデータとして索引付きメタ情報を記述する際は メタ情報の名称の語尾に00~ZZの索引を2文字で記述し、その後ろに情報内容を記述するようにします。
    例:#WAV8J aaa.wav

    名称
    全てのメタ情報に付与される名前です。名前は"#"または"%"で始まり、1文字目が半角英字、 2文字目以降が半角英数字または"_", "/"のいずれかで指定しなければなりません。また、 メタ情報を定義する際の英字は必ず小文字とし、名称全体が64文字を超えてはなりません。BMSデータにメタ情報を 記述する際は大文字の英字を使用しても構いません。
    名称は同じ構成単位内で同じものを指定してはなりません。構成単位が異なれば同じ名称を使用できますが、 BMS仕様の分かりやすさの観点では推奨されません。

    メタ情報を構成する情報には「情報のデータ型(BmsType)」「データが定義されなかった場合の初期値」 「BMSコンテンツを外部データへ出力する際の並び順を決定するソートキー」「同一性チェック対象かどうか」が 存在します。それぞれの情報の詳細については以下の記述を参照してください。

    データ型(BmsType)
    メタ情報のデータを記述する際の型を決定します。
    詳細はBmsTypeを参照してください。

    初期値
    BMSの仕様として、全てのメタ情報は指定必須とすることが出来ません。そのため、メタ情報には必ず初期値を 定義しなければなりません。初期値の記述は文字列のみですが記述の書式はデータ型の指定内容に依存します。

    ソートキー
    BMSコンテンツを外部データに出力する際、複数あるメタ情報をどういった順番で出力するかを決定するための数値です。 この数値がより小さいメタ情報が先に出力されるようになります。同じ数値を指定したメタ情報同士では、 BmsSpecに対して先に定義したほうが先に出力されます。

    同一性チェック
    BMSライブラリにおいて「同一性」とは、「プレイヤーがプレーするBMSコンテンツの譜面が同一の内容を示している 状態のこと」を指します。同一性チェックは、譜面が同一の内容を示しているかどうかを確認するために使用される データであるかどうかを決定します。
    同一性チェックをONにしたメタ情報が、必ずしも譜面に影響を与えるかどうかはBMSライブラリでは関知しません。 例えば楽曲名などはプレーする譜面には影響を与えませんが、BMSコンテンツのタイトルが変更されてしまう ことを許容しない仕様とし、同一性チェックONを推奨しています。
    このように、どのような情報に同一性チェックを入れるかはBMS仕様の提唱者が厳密に検討し決定するべきです。 メタ情報が変更されることでプレーする譜面が変わってしまうものは原則として同一性チェックをONにするべきです。 そうしないと、譜面を比較した際、実際には譜面に変更があっても同一の譜面であると判定されてしまうことになります。

    任意型メタ情報
    任意型メタ情報は、データ型を任意型(BmsType.OBJECT)にすることで作成することが可能なメタ情報です。 任意型メタ情報はアプリケーションの動作上必要な情報を格納する用途に利用することが出来ます。通常のメタ情報とは 下記の点が異なります。

    • 初期値はnullでなければいけません。
    • 同一性チェックをONにすることは出来ません。
    • BmsSpec.getMetas()において、リストの格納対象外になります。
    • BmsLoader, BmsSaverの入出力対象外になります。
    関連項目:
    BmsUnit, BmsType
    • フィールドの詳細

      • NAME_PATTERN

        public static final Pattern NAME_PATTERN
        メタ情報の名称に使用可能な文字列の正規表現パターンです。
    • メソッドの詳細

      • toString

        public String toString()
        メタ情報の名称、構成単位、データ型が分かる形式の文字列を返します。
        オーバーライド:
        toString クラス内 BmsMetaKey
        戻り値:
        メタ情報の名称、構成単位、データ型が分かる形式の文字列
      • getType

        public BmsType getType()
        メタ情報のデータ型を取得します。
        戻り値:
        メタ情報のデータ型
      • getDefaultValue

        public Object getDefaultValue()
        BMSにメタ情報が定義されていない場合の初期値を取得します。

        取得した値のデータ型はgetType()で取得できるデータ型のネイティブデータ型と一致します。 また、初期値の定義は必須のため、この値がnullになることはありません。

        戻り値:
        メタ情報の初期値
      • getOrder

        public int getOrder()
        ソートキーを取得します。

        ソートキーは、BMSライブラリからBMS出力を行った際にメタ情報を出力する順番を決定するのに使用されます。 設定する値は任意で良く、同一BMS仕様の複数のメタ情報で同じソートキーが存在する場合は先に定義された メタ情報が先に出力されるようになります。

        戻り値:
        ソートキー
      • isUniqueness

        public boolean isUniqueness()
        同一性チェック時に参照されるべきメタ情報かどうかを取得します。
        戻り値:
        同一性チェック時に参照されるべき場合はtrue
      • isObject

        public boolean isObject()
        任意型メタ情報であるかどうかを取得します。
        戻り値:
        任意型メタ情報である場合はtrue