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

クラス BeMusicStatistics


  • public class BeMusicStatistics
    extends Object
    譜面統計情報を表します。

    当クラスでは、譜面を一定時間ごとに分割し、その時間の範囲(「期間」または「期間統計情報」と呼称します) で譜面がどのような構成になっているかをその期間ごとに集計した情報、およびそれらの期間全体を集計した情報を保有します。 その期間1個分の情報はBeMusicTimeSpanによって表され、当クラス内でそのリストを保有しています。

    期間統計情報は、ある一点の時間から統計情報構築の際に指定した期間統計情報1件分の長さの集計情報を保有します。 次の期間統計情報は、期間統計情報1件分の長さの半分だけ時間を進め、同様の集計情報を保有します。それを当該譜面の 演奏時間全体を含むようにリスト化されます。具体的には以下の図を参照してください。

               +-------+
               |       |
               | 期間3 |
               | +-----+-+
     +------+  | |     | |
     |      |  | |期間2| |
     |      |  +-+-----+ |
     |      |  | |     | |
     | 楽曲 |  | |     | |
     |      |  | +-----+-+
     |      |  | 期間1 |
     |      |  |       |
     +------+  +-------+
     

    上記のように、期間2は期間1の後半と期間3の前半を含む形で統計情報を集計します。 これにより平均値などの統計情報の精度をできるだけ高められるようにすることを意図しています。 当クラスからこれらの期間統計情報を個別に参照できますが、それらの情報にアクセスする際は上で述べたような意図で 統計情報が集計されていることに留意してください。

    どのような統計情報が集計されるかについては、各統計情報の取得メソッドに記載の解説を参照してください。 また、集計される統計情報の内容はBMSライブラリの更新によって追加・更新される場合があります。

    関連項目:
    BeMusicStatisticsBuilder, BeMusicTimeSpan
    • メソッドの詳細

      • getSpanCount

        public final int getSpanCount()
        期間統計情報の数を取得します。
        戻り値:
        期間統計情報の数
      • getSpan

        public final BeMusicTimeSpan getSpan​(int index)
        指定された位置の期間統計情報を取得します。
        パラメータ:
        index - インデックス
        戻り値:
        期間統計情報
        例外:
        IndexOutOfBoundsException - indexが負の値またはgetSpanCount()以上
      • getSpanLength

        public final double getSpanLength()
        期間統計情報1件の長さを秒単位で取得します。

        この値はBeMusicStatisticsBuilder.setSpanLength(double)で指定した値と等価になります。

        戻り値:
        統計情報1件の長さ
      • getNoteLayout

        public final BeMusicNoteLayout getNoteLayout()
        この統計情報の対象となったノートレイアウトを取得します。

        このオブジェクトが示す統計情報は、当メソッドで取得できるノートレイアウトで計算したものとなります。 具体的にはBeMusicStatisticsBuilder.setNoteLayout(BeMusicNoteLayout)で指定したレイアウトと等価になります。

        戻り値:
        この統計情報の対象となったノートレイアウト
      • getAverageDensity

        public final double getAverageDensity()
        平均ノート密度(Notes/sec)を取得します。

        平均ノート密度は、操作可能ノートが存在する期間の総ノート数(BeMusicTimeSpan.getNoteCount())から 1秒間のノート密度を計算した値の平均値になります。ノートの存在しない期間は平均ノート密度の計算対象外になる点に 注意してください。

        この値は期間統計情報1件の長さの設定(BeMusicStatisticsBuilder.setSpanLength(double))により値が変動します。 長さが短すぎても長すぎても精度の高い値は得られません。長さ0.5~1秒程度が最も現実的な精度が得られる目安としてください。

        戻り値:
        平均ノート密度(Notes/sec)
      • getMaxDensity

        public final double getMaxDensity()
        最大ノート密度(Notes/sec)を取得します。

        最大ノート密度は、全期間のうち総ノート数(BeMusicTimeSpan.getNoteCount())が最も多い値から1秒間の ノート密度を計算した値と等価になります。

        この値は期間統計情報1件の長さの設定(BeMusicStatisticsBuilder.setSpanLength(double))により値が変動します。 長さが短すぎても長すぎても精度の高い値は得られません。長さ0.5~1秒程度が最も現実的な精度が得られる目安としてください。

        戻り値:
        最大ノート密度
      • getNoPlayingRatio

        public final double getNoPlayingRatio()
        無操作期間の比率を取得します。

        値の範囲は0~1の間になります。従って、ノート数としてカウントされるノートが全く存在しない場合は1、 全期間で1件以上のノート数としてカウントされるノートが存在する場合は0を示します。

        戻り値:
        無操作期間の比率
      • getNoVisualEffectRatio

        public final double getNoVisualEffectRatio()
        視覚効果のない期間の比率を取得します。

        値の範囲は0~1の間になります。従って、視覚効果が全くない場合は1、全期間で何らかの視覚効果がある場合は0を示します。

        この値は操作可能ノートが存在しない期間(getNoPlayingRatio())と似ていますが、操作可能でない、つまり ノート数としてカウントされないノートが存在する場合も視覚効果ありと認識されます。例えば、ある期間にロングノートの 操作継続中(BeMusicNoteType.LONG)しか存在しない場合などがこれに該当します。

        戻り値:
        視覚効果のない期間の比率
      • getAverageGazePoint

        public final double getAverageGazePoint()
        注視点傾向の値を取得します。

        当メソッドで取得できる値はスクラッチがスイッチの左側、またはダブルプレーの注視点傾向の値です。 この値は視覚効果のある期間の注視点(BeMusicTimeSpan.getGazePoint())の平均値になります。 全期間を通しての注視点の平均値となるため、取得できる値はあくまで当該譜面における平均的な注視点の目安と考えてください。 多くの一般的な譜面では、注視点は時間の経過と共に左右に大きく振れます。

        戻り値:
        注視点傾向の値
      • getAverageGazePointR

        public final double getAverageGazePointR()
        注視点傾向の値を取得します。

        当メソッドで取得できる値はスクラッチがスイッチの右側ある場合の値です。 この値は視覚効果のある期間の注視点(BeMusicTimeSpan.getGazePointR())の平均値になります。 全期間を通しての注視点の平均値となるため、取得できる値はあくまで当該譜面における平均的な注視点の目安と考えてください。 多くの一般的な譜面では、注視点は時間の経過と共に左右に大きく振れます。

        戻り値:
        注視点傾向の値
      • getAverageViewWidth

        public final double getAverageViewWidth()
        平均視野幅を取得します。

        当メソッドで取得できる値はスクラッチがスイッチの左側、またはダブルプレーの平均視野幅です。 この値は視覚効果のある期間のの視野幅(BeMusicTimeSpan.getViewWidth())の平均値になります。

        戻り値:
        平均視野幅
      • getAverageViewWidthR

        public final double getAverageViewWidthR()
        平均視野幅を取得します。

        当メソッドで取得できる値はスクラッチがスイッチの右側にある場合の平均視野幅です。 この値は視覚効果のある期間のの視野幅(BeMusicTimeSpan.getViewWidthR())の平均値になります。

        戻り値:
        平均視野幅
      • getAverageGazeSwingley

        public final double getAverageGazeSwingley()
        注視点変動係数の平均値を取得します。

        注視点変動係数とは、前後期間からの注視点の移動量を数値化した値で0~1の範囲を示します。 0は注視点が全く移動せず、1は注視点が水平方向に最大限振れることを表します。

        当メソッドで取得できる値はスクラッチがスイッチの左側、またはダブルプレーの注視点変動係数です。 この値は視覚効果のある期間の注視点変動係数(BeMusicTimeSpan.getGazeSwingley())の平均値になります。

        戻り値:
        注視点変動係数の平均値
      • getAverageGazeSwingleyR

        public final double getAverageGazeSwingleyR()
        注視点変動係数の平均値を取得します。

        注視点変動係数とは、前後期間からの注視点の移動量を数値化した値で0~1の範囲を示します。 0は注視点が全く移動せず、1は注視点が水平方向に最大限振れることを表します。

        当メソッドで取得できる値はスクラッチがスイッチの右側にある場合の注視点変動係数です。 この値は視覚効果のある期間の注視点変動係数(BeMusicTimeSpan.getGazeSwingleyR())の平均値になります。

        戻り値:
        注視点変動係数の平均値
      • getAverageViewSwingley

        public final double getAverageViewSwingley()
        視野幅変動係数の平均値を取得します。

        視野幅変動係数とは、前後期間からの視野幅の変動量を数値化した値で0~1の範囲を示します。 0は視野幅が全く変化せず、1は視野幅が最大限振れることを表します。

        当メソッドで取得できる値はスクラッチがスイッチの左側、またはダブルプレーの視野幅変動係数です。 この値は視覚効果のある期間の視野幅変動係数(BeMusicTimeSpan.getViewSwingley())の平均値になります。

        戻り値:
        視野幅変動係数の平均値
      • getAverageViewSwingleyR

        public final double getAverageViewSwingleyR()
        視野幅変動係数の平均値を取得します。

        視野幅変動係数とは、前後期間からの視野幅の変動量を数値化した値で0~1の範囲を示します。 0は視野幅が全く変化せず、1は視野幅が最大限振れることを表します。

        当メソッドで取得できる値はスクラッチがスイッチの右側にある場合の視野幅変動係数です。 この値は視覚効果のある期間の視野幅変動係数(BeMusicTimeSpan.getViewSwingleyR())の平均値になります。

        戻り値:
        視野幅変動係数の平均値