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

クラス BeMusicScoreBuilder


  • public class BeMusicScoreBuilder
    extends Object
    BMSコンテンツからBe Music仕様のBMS譜面オブジェクトを構築するためのビルダーです。

    当ビルダーでは、BMS譜面オブジェクトにどのような情報を含めるかを選択し、楽曲の先頭から末尾までをスキャンします。 譜面を画面に表示し、音声・アニメーションの再生までをカバーするようなBMS譜面オブジェクトを構築する場合には 当ビルダーがサポートする全ての情報を含めなければなりません。視聴覚の演出を必要としないBMS譜面オブジェクトで 良いのであれば音声・アニメーションの情報を除外した状態でBMS譜面オブジェクトを構築しても構いません。

    但し、どのような用途のBMS譜面オブジェクトであったとしても以下の情報だけは必ず含まれることになります。 これらは総じて「時間」に関連する情報となっています。

    • 小節長の明示的な指定
    • BPM変化に関する情報
    • 譜面停止に関する情報

    以下に、当ビルダーの代表的な使い方を示す簡単なサンプルコードを示します。

     private BeMusicScore buildMyScore(BmsContent targetContent) {
         // 以下はBMS譜面の分析処理に必要な最低限の情報を含めたい場合の設定です。
         BeMusicScoreBuilder builder = new BeMusicScoreBuilder(targetContent)
             .setSeekMeasureLine(true)  // 小節線を含む
             .setSeekVisible(true)      // 可視オブジェを含む
             .setSeekInvisible(false)   // 不可視オブジェは無視する
             .setSeekLandmine(true)     // 地雷オブジェを含む
             .setSeekBgm(false)         // BGMは無視する
             .setSeekBga(false)         // BGA(レイヤー、ミス画像含む)は無視する
             .setSeekText(false);       // テキストは無視する
    
         // 上記ビルダーで設定した条件でBMS譜面オブジェクトを構築します。
         BeMusicScore myScore = builder.createScore();
    
         // 構築したBMS譜面オブジェクトを返します。
         return myScore;
     }
     
    • コンストラクタの概要

      コンストラクタ 
      コンストラクタ 説明
      BeMusicScoreBuilder​(BmsContent content)
      BMS譜面ビルダーオブジェクトを構築します。
    • メソッドの概要

      すべてのメソッド インスタンス・メソッド concreteメソッド 
      修飾子とタイプ メソッド 説明
      List<BeMusicPoint> createList()
      このBMS譜面ビルダーオブジェクトに指定された条件で譜面を最初から最後まで検索し、楽曲位置情報リストを構築します。
      BeMusicScore createScore()
      このBMS譜面ビルダーオブジェクトに指定された条件でBMS譜面オブジェクトを構築します。
      BeMusicPoint first()
      このBMS譜面ビルダーオブジェクトに指定された条件でBMS譜面構築を開始し、最初に楽曲位置情報を返します。
      BmsContent getContent()
      処理対象のBMSコンテンツを取得します。
      BeMusicPoint next()
      このBMS譜面ビルダーオブジェクトに指定された条件で次の楽曲位置を検索し、該当する楽曲位置の楽曲位置情報を返します。
      BeMusicScoreBuilder setSeekBga​(boolean seek)
      BGAを楽曲位置情報に含めるかどうかを設定します。
      BeMusicScoreBuilder setSeekBgm​(boolean seek)
      BGMを楽曲位置情報に含めるかどうかを設定します。
      BeMusicScoreBuilder setSeekInvisible​(boolean seek)
      不可視オブジェを楽曲位置情報に含めるかどうかを設定します。
      BeMusicScoreBuilder setSeekLandmine​(boolean seek)
      地雷オブジェを楽曲位置情報に含めるかどうかを設定します。
      BeMusicScoreBuilder setSeekMeasureLine​(boolean seek)
      小節線を楽曲位置情報に含めるかどうかを設定します。
      BeMusicScoreBuilder setSeekText​(boolean seek)
      テキストを楽曲位置情報に含めるかどうかを設定します。
      BeMusicScoreBuilder setSeekVisible​(boolean seek)
      可視オブジェを楽曲位置情報に含めるかどうかを設定します。
      • クラスから継承されたメソッド Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • コンストラクタの詳細

      • BeMusicScoreBuilder

        public BeMusicScoreBuilder​(BmsContent content)
        BMS譜面ビルダーオブジェクトを構築します。

        BMS譜面ビルダーは必ず対象となるBMSコンテンツを指定する必要があります。また、当該BMSコンテンツは BeMusicSpecで生成されたBMS仕様に基づいたコンテンツでなければなりません。そうでない場合には 当ビルダーでの動作保証外になります。

        パラメータ:
        content - BMSコンテンツ
        例外:
        NullPointerException - contentがnull
    • メソッドの詳細

      • setSeekMeasureLine

        public final BeMusicScoreBuilder setSeekMeasureLine​(boolean seek)
        小節線を楽曲位置情報に含めるかどうかを設定します。

        小節線は、ある小節の刻み位置0であることを示します。通常、どの楽曲位置でも小節データ、ノートが全く存在しない 場合には楽曲位置情報は生成対象になりませんが、小節線を含めることで小節毎に必ず楽曲位置情報が含まれることを 保証することができます。アプリケーションの実装都合に合わせて小節線有無を決定してください。

        パラメータ:
        seek - 小節線有無
        戻り値:
        このBMS譜面ビルダーオブジェクトのインスタンス
        例外:
        IllegalStateException - BMS譜面生成中
      • setSeekVisible

        public final BeMusicScoreBuilder setSeekVisible​(boolean seek)
        可視オブジェを楽曲位置情報に含めるかどうかを設定します。
        パラメータ:
        seek - 可視オブジェ有無
        戻り値:
        このBMS譜面ビルダーオブジェクトのインスタンス
        例外:
        IllegalStateException - BMS譜面生成中
      • setSeekInvisible

        public final BeMusicScoreBuilder setSeekInvisible​(boolean seek)
        不可視オブジェを楽曲位置情報に含めるかどうかを設定します。
        パラメータ:
        seek - 不可視オブジェ有無
        戻り値:
        このBMS譜面ビルダーオブジェクトのインスタンス
        例外:
        IllegalStateException - BMS譜面生成中
      • setSeekLandmine

        public final BeMusicScoreBuilder setSeekLandmine​(boolean seek)
        地雷オブジェを楽曲位置情報に含めるかどうかを設定します。
        パラメータ:
        seek - 地雷オブジェ有無
        戻り値:
        このBMS譜面ビルダーオブジェクトのインスタンス
        例外:
        IllegalStateException - BMS譜面生成中
      • setSeekBgm

        public final BeMusicScoreBuilder setSeekBgm​(boolean seek)
        BGMを楽曲位置情報に含めるかどうかを設定します。
        パラメータ:
        seek - BGM有無
        戻り値:
        このBMS譜面ビルダーオブジェクトのインスタンス
        例外:
        IllegalStateException - BMS譜面生成中
      • setSeekBga

        public final BeMusicScoreBuilder setSeekBga​(boolean seek)
        BGAを楽曲位置情報に含めるかどうかを設定します。
        パラメータ:
        seek - BGA有無
        戻り値:
        このBMS譜面ビルダーオブジェクトのインスタンス
        例外:
        IllegalStateException - BMS譜面生成中
      • setSeekText

        public final BeMusicScoreBuilder setSeekText​(boolean seek)
        テキストを楽曲位置情報に含めるかどうかを設定します。
        パラメータ:
        seek - テキスト有無
        戻り値:
        このBMS譜面ビルダーオブジェクトのインスタンス
        例外:
        IllegalStateException - BMS譜面生成中
      • getContent

        public final BmsContent getContent()
        処理対象のBMSコンテンツを取得します。
        戻り値:
        処理対象のBMSコンテンツ
      • first

        public final BeMusicPoint first()
        このBMS譜面ビルダーオブジェクトに指定された条件でBMS譜面構築を開始し、最初に楽曲位置情報を返します。

        BMS譜面構築を開始すると、楽曲位置情報の生成が完了するまでビルダーの条件を変更できなくなります。

        当メソッドはビルダーの状態に関わらずいつでも実行できます。

        指定の条件に該当する楽曲位置が全く存在しない場合、当メソッドはnullを返します。

        当メソッドとnext()メソッドは低レベルAPIです。これらのメソッドを用いてBMS譜面を構築することは 推奨されません。代わりにcreateList()またはcreateScore()を使用してください。

        戻り値:
        楽曲位置情報
        例外:
        IllegalStateException - 処理対象BMSコンテンツが参照モードではない
      • next

        public final BeMusicPoint next()
        このBMS譜面ビルダーオブジェクトに指定された条件で次の楽曲位置を検索し、該当する楽曲位置の楽曲位置情報を返します。

        当メソッドを呼び出す前にはfirst()が実行されている必要があります。その後、当メソッドが最後の楽曲位置まで 検索し終え、nullを返すまで繰り返し当メソッドを実行してください。nullを返すと当ビルダーのBMS譜面生成中状態が解除され、 再びSetterを実行可能になります。

        当メソッドとfirst()メソッドは低レベルAPIです。これらのメソッドを用いてBMS譜面を構築することは 推奨されません。代わりにcreateList()またはcreateScore()を使用してください。

        戻り値:
        楽曲位置情報
        例外:
        IllegalStateException - BMS譜面生成中ではない(first()が実行されていない)
        IllegalStateException - 処理対象BMSコンテンツが参照モードではない
      • createList

        public final List<BeMusicPoint> createList()
        このBMS譜面ビルダーオブジェクトに指定された条件で譜面を最初から最後まで検索し、楽曲位置情報リストを構築します。

        当メソッドはfirst()next()を使用して以下のサンプルと同様の処理を行います。

         List<BeMusicPoint> list = new ArrayList<>();
         for (BeMusicPoint point = first(); point != null; point = next()) {
             list.add(point);
         }
         
        戻り値:
        楽曲位置情報リスト
      • createScore

        public final BeMusicScore createScore()
        このBMS譜面ビルダーオブジェクトに指定された条件でBMS譜面オブジェクトを構築します。

        当メソッドはcreateList()で生成した楽曲位置情報リストをBeMusicScore.create(List)に渡し、 BeMusicScoreオブジェクトを構築する手順を簡略化するヘルパーメソッドです。

        戻り値:
        BMS譜面オブジェクト