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

クラス BeMusicPoint

  • すべての実装されたインタフェース:
    BmsAt

    public class BeMusicPoint
    extends Object
    implements BmsAt
    BMS譜面全体のうち、同一楽曲位置上における各種情報を表します。

    BMS譜面は、譜面全体が楽曲位置情報のリストで表されます。同一楽曲位置には複数の情報が含まれることが ほとんどであり、当クラスではそれらの情報を統合的に管理します。アプリケーションは必要に応じ、当クラスを通じて 各種情報にアクセスし、アプリケーションの機能を実現します。

    各種情報の構成は以下のようになっています。

    • 小節番号、小節の刻み位置からなる楽曲位置
    • 楽曲位置に対応した譜面上の時間
    • 楽曲位置に対応する情報を表示するべき表示位置の値
    • 楽曲位置が含まれる小節の小節長
    • 楽曲位置における現在のBPM
    • 楽曲位置に到達した時に譜面を停止する時間
    • ノートの情報(可視・不可視・地雷)
    • 楽曲位置に到達した時に再生されるべきBGM
    • 視覚効果を構成する情報(BGA・レイヤー・ミス時BGA)
    • 楽曲位置に到達した時に表示されるべきテキスト
    • その他、ノートの数に関する情報、および各種情報の有無を表すフラグ
    • フィールドの概要

      フィールド 
      修飾子とタイプ フィールド 説明
      static BeMusicPoint EMPTY
      譜面が空だった場合の唯一の楽曲位置情報。
    • コンストラクタの概要

      コンストラクタ 
      コンストラクタ 説明
      BeMusicPoint()
      楽曲位置情報オブジェクトを構築します。
    • メソッドの概要

      すべてのメソッド インスタンス・メソッド concreteメソッド 
      修飾子とタイプ メソッド 説明
      int getBgaValue()
      この楽曲位置で表示するBGAの値を取得します。
      int getBgmCount()
      この楽曲位置でのBGM数を取得します。
      int getBgmValue​(int index)
      この楽曲位置でのBGMの値を取得します。
      double getCurrentBpm()
      この楽曲位置での現在のBPMを取得します。
      double getDisplayPosition()
      楽曲位置情報の表示位置を示す値を取得します。
      int getInvisible​(BeMusicDevice device)
      不可視オブジェの値を取得します。
      int getLandmineCount()
      この楽曲位置における地雷オブジェの数を取得します。
      int getLayerValue()
      この楽曲位置で表示するBGAレイヤーの値を取得します。
      int getLongNoteCount()
      この楽曲位置においてロングノートが開始される数を取得します。
      int getMeasure()
      小節番号を取得します。
      double getMeasureLength()
      この楽曲位置が存在する小節の小節長を取得します。
      int getMissValue()
      楽曲のプレーミス時にこの楽曲位置で表示する画像の値を取得します。
      int getNoteCount()
      この楽曲位置におけるノート数を取得します。
      BeMusicNoteType getNoteType​(BeMusicDevice device)
      指定入力デバイスのノート種別を取得します。
      int getNoteValue​(BeMusicDevice device)
      指定入力デバイスの値を取得します。
      double getStop()
      この楽曲位置到達時に譜面のスクロールを一時停止する時間を取得します。
      String getText()
      この楽曲位置で表示するテキストを取得します。
      double getTick()
      小節の刻み位置を取得します。
      double getTime()
      楽曲位置の時間を取得します。
      boolean hasBga()
      この楽曲位置でBGAの表示指定が存在するかを判定します。
      boolean hasBgm()
      この楽曲位置で1つでもBGM再生の指定が存在するかを判定します。
      boolean hasBpm()
      この楽曲位置でBPMを変更する指定が存在するかを判定します。
      boolean hasLayer()
      この楽曲位置でBGAレイヤーの表示指定が存在するかを判定します。
      boolean hasMeasureLength()
      この楽曲位置の小節で明示的な小節長の指定が存在するかを判定します。
      boolean hasMeasureLine()
      この楽曲位置が小節線を含んでいるかを判定します。
      boolean hasMiss()
      この楽曲位置でミス時に表示するBGAの指定が存在するかを判定します。
      boolean hasPlayableNote()
      この楽曲位置の操作可能ノートの有無を取得します。
      boolean hasStop()
      この楽曲位置で譜面停止の視覚効果を行う指定が存在するかを判定します。
      • クラスから継承されたメソッド Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • フィールドの詳細

      • EMPTY

        public static final BeMusicPoint EMPTY
        譜面が空だった場合の唯一の楽曲位置情報。この楽曲位置情報は小節番号、刻み位置が0でその他の情報が 全て未設定の状態を表します。
    • コンストラクタの詳細

      • BeMusicPoint

        public BeMusicPoint()
        楽曲位置情報オブジェクトを構築します。

        当クラスはアプリケーションからnew演算子で直接インスタンスを生成することを想定していません。 楽曲位置情報の構築についてはBeMusicScoreBuilderを参照してください。

        関連項目:
        BeMusicScoreBuilder
    • メソッドの詳細

      • getMeasure

        public final int getMeasure()
        小節番号を取得します。

        このメソッドで取得できる小節番号は、BMS仕様が定める範囲の小節番号であることを保証します。 その範囲はBmsSpec.MEASURE_MINBmsSpec.MEASURE_MAXとして定義されています。

        定義:
        getMeasure インタフェース内 BmsAt
        戻り値:
        小節番号
      • getTick

        public final double getTick()
        小節の刻み位置を取得します。

        このメソッドで取得できる刻み位置は、BMSライブラリで取り扱い可能な範囲の刻み位置であることを保証します。 その範囲はBmsSpec.TICK_MINBmsSpec.TICK_MAXとして定義されています。

        小節単位での刻み位置の最大値は、小節長の定義内容によって大幅に増減します。通常4/4拍子では刻み数は 192となり、取り扱い可能範囲を大幅に下回る値になります。

        定義:
        getTick インタフェース内 BmsAt
        戻り値:
        小節の刻み位置
      • getDisplayPosition

        public final double getDisplayPosition()
        楽曲位置情報の表示位置を示す値を取得します。

        当メソッドが返す表示位置の値は、楽曲位置の時間とBPMを用いた値になっています。従って、BPMの値が大きいほど 楽曲位置情報同士の間隔を空けて表示することになります。

        この値はBPMの変化に比例して譜面のスクロール速度と表示間隔が変化するようなプレゼンテーションを想定しています。 BPM変化の影響を受けないプレゼンテーションを行いたい場合には当メソッドの値を使用せず、getTime()の 値を使用するようにしてください。

        TODO 表示位置の計算方法を記載する

        戻り値:
        楽曲位置情報の表示位置を示す値
      • getTime

        public final double getTime()
        楽曲位置の時間を取得します。

        楽曲位置の時間は、小節0・刻み位置0からこの楽曲位置に到達するまでの時間を秒単位で表します。

        戻り値:
        楽曲位置の時間
      • getNoteType

        public final BeMusicNoteType getNoteType​(BeMusicDevice device)
        指定入力デバイスのノート種別を取得します。

        ノート種別についてはBeMusicNoteTypeを参照してください。

        パラメータ:
        device - 入力デバイス
        戻り値:
        ノート種別
        例外:
        NullPointerException - deviceがnull
        関連項目:
        BeMusicDevice, BeMusicNoteType
      • getNoteCount

        public final int getNoteCount()
        この楽曲位置におけるノート数を取得します。

        ノート数は、この楽曲位置に到達した時に操作するべき入力デバイスの数を表します。 どのノート種別でノート数をカウントするべきかはBeMusicNoteTypeを参照してください。

        戻り値:
        ノート数
      • getLongNoteCount

        public final int getLongNoteCount()
        この楽曲位置においてロングノートが開始される数を取得します。

        厳密にはBeMusicNoteType.LONG_ONの数を表します。

        戻り値:
        ロングノート数
      • getLandmineCount

        public final int getLandmineCount()
        この楽曲位置における地雷オブジェの数を取得します。
        戻り値:
        地雷オブジェの数
      • getInvisible

        public final int getInvisible​(BeMusicDevice device)
        不可視オブジェの値を取得します。

        この値が0以外となる場合、値をメタ情報のインデックス値と見なし、入力デバイス操作時に BeMusicMeta.WAVに記述された音声が再生されるべきです。但し同一楽曲位置上に可視オブジェが存在する場合には 可視オブジェ側の音声再生を優先的に行うべきです。

        パラメータ:
        device - 入力デバイス
        戻り値:
        不可視オブジェの値
        例外:
        NullPointerException - deviceがnull
        関連項目:
        BeMusicDevice
      • hasPlayableNote

        public final boolean hasPlayableNote()
        この楽曲位置の操作可能ノートの有無を取得します。

        「操作可能ノート」とは、視覚表示されるノートでBeMusicNoteType.NONE以外のものを指します。 この楽曲位置のいずれかの入力デバイスに1つでも操作可能ノートがあれば「有り」と見なされます。

        戻り値:
        この楽曲位置に操作可能ノートが1つでもある場合にtrue
      • getMeasureLength

        public final double getMeasureLength()
        この楽曲位置が存在する小節の小節長を取得します。

        小節に対して小節長の指定がない場合、この値は1を示し4/4拍子となります。 小節長の値は4/4拍子を1とした長さの比率になります。

        BMSにて小節長が明示的に指定されたかどうかを参照したい場合はhasMeasureLength()を使用してください。

        戻り値:
        小節長
      • getCurrentBpm

        public final double getCurrentBpm()
        この楽曲位置での現在のBPMを取得します。

        BPM変化のない譜面では、この値は常に初期BPMと同じ値になります。楽曲位置にてBPM変更が行われた場合、 当メソッドは変更後のBPMを返します。

        戻り値:
        現在のBPM
        関連項目:
        BeMusicMeta.INITIAL_BPM, BeMusicMeta.BPM, BeMusicChannel.BPM, BeMusicChannel.BPM_LEGACY
      • getStop

        public final double getStop()
        この楽曲位置到達時に譜面のスクロールを一時停止する時間を取得します。

        譜面停止はBe Musicの仕様上、同一楽曲位置でBPM変更が行われた場合には変更後のBPMに基づいて 停止時間の計算が行われます。譜面停止はBeMusicMeta.STOPにて刻み数で指定されますが、 当メソッドでは刻み数とBPMから停止時間を計算し、その計算結果を返します。

        戻り値:
        譜面停止時間
        関連項目:
        BeMusicMeta.STOP, BeMusicChannel.STOP
      • getBgmCount

        public final int getBgmCount()
        この楽曲位置でのBGM数を取得します。
        戻り値:
        BGM数
      • getBgmValue

        public final int getBgmValue​(int index)
        この楽曲位置でのBGMの値を取得します。

        BGMは楽曲位置が示す時間に到達した時に再生されるべき音声の値が格納されています。この値をメタ情報の インデックス値と見なし、BeMusicMeta.WAVの該当する音声参照し再生されるべきです。

        パラメータ:
        index - インデックス(0~getBgmCount()-1)
        戻り値:
        BGMの値
        例外:
        IllegalStateException - この楽曲位置にBGMが存在しない
        IndexOutOfBoundsException - indexがマイナス値または指定可能範囲超過
        関連項目:
        BeMusicMeta.WAV, BeMusicChannel.BGM
      • getBgaValue

        public final int getBgaValue()
        この楽曲位置で表示するBGAの値を取得します。

        この値が0以外の場合、値をメタ情報のインデックス値と見なし、BeMusicMeta.BMPの該当する 画像が表示されるべきです。

        戻り値:
        BGAの値
        関連項目:
        BeMusicMeta.BMP, BeMusicChannel.BGA
      • getLayerValue

        public final int getLayerValue()
        この楽曲位置で表示するBGAレイヤーの値を取得します。

        この値が0以外の場合、値をメタ情報のインデックス値と見なし、BeMusicMeta.BMPの該当する 画像がBeMusicChannel.BGAの上に重ねて表示されるべきです。

        戻り値:
        BGAレイヤーの値
        関連項目:
        BeMusicMeta.BMP, BeMusicChannel.BGA_LAYER
      • getMissValue

        public final int getMissValue()
        楽曲のプレーミス時にこの楽曲位置で表示する画像の値を取得します。

        この値が0以外の場合、値をメタ情報のインデックス値と見なし、BeMusicMeta.BMPの該当する 画像が表示されるべきです。(当該楽曲位置でプレーミスが発生している場合)

        戻り値:
        プレーミス時に表示する画像の値
        関連項目:
        BeMusicMeta.BMP, BeMusicChannel.BGA_MISS
      • getText

        public final String getText()
        この楽曲位置で表示するテキストを取得します。

        当該楽曲位置で表示するべきテキストが存在しない場合は長さ0の空文字列を返します。 当メソッドではnullを返しませんのでその点には注意してください。

        戻り値:
        表示するテキスト
        関連項目:
        BeMusicMeta.TEXT, BeMusicChannel.TEXT
      • hasMeasureLine

        public final boolean hasMeasureLine()
        この楽曲位置が小節線を含んでいるかを判定します。

        当メソッドがtrueを返す時は、小節の刻み位置が0であることを示します。

        戻り値:
        楽曲位置に小節線を含んでいる場合true
        関連項目:
        BmsSpec.CHANNEL_MEASURE
      • hasMeasureLength

        public final boolean hasMeasureLength()
        この楽曲位置の小節で明示的な小節長の指定が存在するかを判定します。

        明示的な指定がない場合の小節長は1(4/4拍子)ですが、明示的に小節長1を指定した場合でも当メソッドはtrueを返します。

        戻り値:
        明示的な小節長の指定がある場合true
        関連項目:
        BeMusicChannel.LENGTH
      • hasStop

        public final boolean hasStop()
        この楽曲位置で譜面停止の視覚効果を行う指定が存在するかを判定します。
        戻り値:
        譜面停止の指定がある場合true
        関連項目:
        BeMusicMeta.STOP, BeMusicChannel.STOP
      • hasBgm

        public final boolean hasBgm()
        この楽曲位置で1つでもBGM再生の指定が存在するかを判定します。
        戻り値:
        BGM再生の指定が存在する場合true
        関連項目:
        BeMusicMeta.WAV, BeMusicChannel.BGM
      • hasBga

        public final boolean hasBga()
        この楽曲位置でBGAの表示指定が存在するかを判定します。
        戻り値:
        BGAの表示指定が存在する場合true
        関連項目:
        BeMusicMeta.BMP, BeMusicChannel.BGA
      • hasLayer

        public final boolean hasLayer()
        この楽曲位置でBGAレイヤーの表示指定が存在するかを判定します。
        戻り値:
        BGAレイヤーの表示指定が存在する場合true
        関連項目:
        BeMusicMeta.BMP, BeMusicChannel.BGA_LAYER
      • hasMiss

        public final boolean hasMiss()
        この楽曲位置でミス時に表示するBGAの指定が存在するかを判定します。
        戻り値:
        ミス時に表示するBGAの指定が存在する場合true
        関連項目:
        BeMusicMeta.BMP, BeMusicChannel.BGA_MISS