クラス BeMusicChart
- Object
-
- BeMusicChart
-
- すべての実装されたインタフェース:
Iterable<BeMusicPoint>
public class BeMusicChart extends Object implements Iterable<BeMusicPoint>
BMS譜面全体とその統計情報を表します。BMS譜面全体とは、楽曲位置情報である
BeMusicPoint
の集合(リスト)を示します。 当クラスが保有する楽曲位置情報は時間軸で昇順ソートされています。アプリケーションは当クラスが持つイテレータや 楽曲位置情報を取得するためのGetter、およびストリームを用いて楽曲位置情報を参照することができます。楽曲位置情報の集合からは様々な分析を行うことができ、代表的な統計情報の収集は当クラスの構築時に行われます。 統計情報にはGetterからアクセスすることが可能で、アプリケーションの要求に応じてそれらの情報を活用することが 可能になっています。より高度な統計情報を集計したい場合は
BeMusicStatisticsBuilder
を参照してください。また、小節番号・刻み位置や時間を用いて時間軸への高速なアクセスを行ったり、条件を指定して楽曲位置情報を 検索する等の機能を提供し、Be-Musicに関するアプリケーション開発のアシストを行います。
当クラスが持つ情報や機能では足りない場合には、当クラスを拡張し、処理や機能を追加してください。そのための 処理実装は
onCreate()
で行うことを想定しています。
-
-
コンストラクタの概要
コンストラクタ コンストラクタ 説明 BeMusicChart()
BMS譜面オブジェクトを構築します。
-
メソッドの概要
すべてのメソッド staticメソッド インスタンス・メソッド concreteメソッド 修飾子とタイプ メソッド 説明 int
ceilPointOf(double time)
指定時間以降(この時間を含む)で最小の時間を持つ楽曲位置情報のインデックスを返します。int
ceilPointOf(int measure, double tick)
指定楽曲位置以降(この位置を含む)で最小の楽曲位置を持つ楽曲位置情報のインデックスを返します。int
ceilPointOf(BmsAt at)
指定楽曲位置以降(この位置を含む)で最小の楽曲位置を持つ楽曲位置情報のインデックスを返します。static BeMusicChart
create(List<BeMusicPoint> list)
指定した楽曲位置情報リストを用いてBMS譜面オブジェクトを構築します。static <S extends BeMusicChart>
Screate(List<BeMusicPoint> list, Supplier<S> creator)
指定した楽曲位置情報リストを用いてBMS譜面オブジェクトを構築します。int
floorPointOf(double time)
指定時間以前(この時間を含む)で最大の時間を持つ楽曲位置情報のインデックスを返します。int
floorPointOf(int measure, double tick)
指定楽曲位置以前(この位置を含む)で最大の楽曲位置を持つ楽曲位置情報のインデックスを返します。int
floorPointOf(BmsAt at)
指定楽曲位置以前(この位置を含む)で最大の楽曲位置を持つ楽曲位置情報のインデックスを返します。int
getChangeBpmCount()
BPM変化回数を取得します。int
getChangeScrollCount()
スクロール速度の変化回数を取得します。int
getLongNoteCount()
ロングノート数を取得します。int
getLongNoteCount(BeMusicDevice device)
指定入力デバイスのロングノート数を取得します。int
getMineCount()
地雷オブジェの数を取得します。int
getMineCount(BeMusicDevice device)
指定入力デバイスの地雷オブジェ数を取得します。int
getNoteCount()
総ノート数を取得します。int
getNoteCount(BeMusicDevice device)
指定入力デバイスの総ノート数を取得します。double
getPlayTime()
この譜面の演奏時間を秒単位で取得します。BeMusicPoint
getPoint(int index)
楽曲位置情報を取得します。int
getPointCount()
楽曲位置情報の数を取得します。List<BeMusicPoint>
getPoints()
楽曲位置情報リストのコピーを取得します。double
getRecommendTotal1()
推奨TOTAL値を取得します。double
getRecommendTotal2()
推奨TOTAL値を取得します。BeMusicScratchMode
getScratchMode()
スクラッチモードを取得します。int
getStopCount()
譜面停止回数を取得します。boolean
hasBga()
BGA有無を取得します。boolean
hasBgm()
BGM有無を取得します。boolean
hasChangeBpm()
BPM変化有無を取得します。boolean
hasChangeScroll()
スクロール速度の変化有無を取得します。boolean
hasChangeSpeed()
速度変更有無を取得します。boolean
hasGimmick()
ギミック有無を取得します。boolean
hasLongNote()
ロングノート有無を取得します。boolean
hasMine()
地雷オブジェ有無を取得します。boolean
hasStop()
譜面停止有無を取得します。int
indexOf(int beginIndex, int endIndex, Predicate<BeMusicPoint> tester)
楽曲位置情報リストの指定範囲から指定条件に該当する最初の楽曲位置情報のインデックスを返します。int
indexOf(Predicate<BeMusicPoint> tester)
楽曲位置情報リスト全体から指定条件に該当する最初の楽曲位置情報のインデックスを返します。Iterator<BeMusicPoint>
iterator()
int
lastIndexOf(int beginIndex, int endIndex, Predicate<BeMusicPoint> tester)
楽曲位置情報リストの指定範囲から指定条件に該当する最後の楽曲位置情報のインデックスを返します。int
lastIndexOf(Predicate<BeMusicPoint> tester)
楽曲位置情報リスト全体から指定条件に該当する最後の楽曲位置情報のインデックスを返します。protected void
onCreate()
BMS譜面オブジェクトが構築された時に実行されます。Stream<BeMusicPoint>
points()
楽曲位置情報リストを走査するストリームを返します。Stream<BeMusicPoint>
points(int start, int end)
指定範囲の楽曲位置情報リストを走査するストリームを返します。-
クラスから継承されたメソッド Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
インタフェースから継承されたメソッド Iterable
forEach, spliterator
-
-
-
-
コンストラクタの詳細
-
BeMusicChart
public BeMusicChart()
BMS譜面オブジェクトを構築します。当クラスはアプリケーションからこのコンストラクタ単体でオブジェクトを生成し、独自に使用することを 想定していません。オブジェクトの生成は
create(List, Supplier)
のオブジェクトクリエータで インスタンス生成されることを意図しています。
-
-
メソッドの詳細
-
create
public static BeMusicChart create(List<BeMusicPoint> list)
指定した楽曲位置情報リストを用いてBMS譜面オブジェクトを構築します。当メソッドでは
BeMusicChart
クラスのインスタンスを生成してオブジェクトを構築します。 それ以外の動作仕様についてはcreate(List, Supplier)
を参照してください。- パラメータ:
list
- 楽曲位置情報リスト- 戻り値:
- BMS譜面オブジェクト
- 関連項目:
create(List, Supplier)
-
create
public static <S extends BeMusicChart> S create(List<BeMusicPoint> list, Supplier<S> creator)
指定した楽曲位置情報リストを用いてBMS譜面オブジェクトを構築します。BMSコンテンツから楽曲位置情報を抽出したリストから、BMS譜面オブジェクトクリエータで生成したオブジェクトを 生成しデータを構築します。楽曲位置情報の抽出については
BeMusicChartBuilder
を参照してください。通常、当メソッドは当クラスの拡張を行わない限り使用されることはありません。アプリケーションによって 当クラスの拡張を行い、情報・機能を追加する場合にのみ参照することを推奨します。ライブラリが提供する BMS譜面オブジェクトを用いる場合は
create(List)
またはBeMusicChartBuilder.createChart()
を 使用してBMS譜面オブジェクトを生成してください。楽曲位置情報リストは小節番号・刻み位置と時間が昇順でソートされていなければなりません。 リストが前述のような状態になっていない場合はBMS譜面オブジェクトは生成されず例外がスローされます。
- 型パラメータ:
S
- BMS譜面オブジェクト(拡張したものを含む)- パラメータ:
list
- 楽曲位置情報リストcreator
- BMS譜面オブジェクトクリエータ- 戻り値:
- BMS譜面オブジェクト
- 例外:
NullPointerException
- listがnullNullPointerException
- creatorがnullNullPointerException
- creatorがnullを返したIllegalArgumentException
- 楽曲位置情報リストで小節番号・刻み位置が後退したIllegalArgumentException
- 楽曲位置情報リストで時間が後退した- 関連項目:
BeMusicChartBuilder
,create(List)
-
getPoint
public final BeMusicPoint getPoint(int index)
楽曲位置情報を取得します。- パラメータ:
index
- インデックス- 戻り値:
- 楽曲位置情報
- 例外:
IndexOutOfBoundsException
- indexがマイナス値またはgetPointCount()
以上
-
getPoints
public final List<BeMusicPoint> getPoints()
楽曲位置情報リストのコピーを取得します。当メソッドはBMS譜面オブジェクトが持つ楽曲位置情報リストの完全なコピーを返します。従って、 頻繁に実行するとアプリケーションのパフォーマンスが大幅に低下する可能性がありますので注意が必要です。
- 戻り値:
- 楽曲位置情報リスト
-
getPointCount
public final int getPointCount()
楽曲位置情報の数を取得します。- 戻り値:
- 楽曲位置情報の数
-
getNoteCount
public final int getNoteCount()
総ノート数を取得します。- 戻り値:
- 総ノート数
-
getNoteCount
public final int getNoteCount(BeMusicDevice device)
指定入力デバイスの総ノート数を取得します。- パラメータ:
device
- 入力デバイス- 戻り値:
- 指定入力デバイスの総ノート数
- 例外:
NullPointerException
- deviceがnull
-
getLongNoteCount
public final int getLongNoteCount()
ロングノート数を取得します。- 戻り値:
- ロングノート数
-
getLongNoteCount
public final int getLongNoteCount(BeMusicDevice device)
指定入力デバイスのロングノート数を取得します。- パラメータ:
device
- 入力デバイス- 戻り値:
- 指定入力デバイスのロングノート数
- 例外:
NullPointerException
- deviceがnull
-
getMineCount
public final int getMineCount()
地雷オブジェの数を取得します。- 戻り値:
- 地雷オブジェの数
-
getMineCount
public final int getMineCount(BeMusicDevice device)
指定入力デバイスの地雷オブジェ数を取得します。- パラメータ:
device
- 入力デバイス- 戻り値:
- 指定入力デバイスの地雷オブジェ数
- 例外:
NullPointerException
- deviceがnull
-
getPlayTime
public final double getPlayTime()
この譜面の演奏時間を秒単位で取得します。当メソッドが返す演奏時間は譜面の先頭から最後の操作可能ノートに到達するまでの時間を表します。 それ以降のBGM/BGA等の有無や音声の再生状態は演奏時間には含まれません。
操作可能ノートのない譜面、または譜面が空の場合は演奏時間は0になります。
- 戻り値:
- この譜面の演奏時間
-
getChangeScrollCount
public final int getChangeScrollCount()
スクロール速度の変化回数を取得します。- 戻り値:
- スクロール速度の変化回数
-
getChangeBpmCount
public final int getChangeBpmCount()
BPM変化回数を取得します。- 戻り値:
- BPM変化回数
-
getStopCount
public final int getStopCount()
譜面停止回数を取得します。- 戻り値:
- 譜面停止回数
-
getRecommendTotal1
public final double getRecommendTotal1()
推奨TOTAL値を取得します。この値は総ノート数をもとに、以下の計算式で算出されたものです。
#TOTAL = 7.605 * N / (0.01 * N + 6.5) ※N = 総ノート数
- 戻り値:
- 推奨TOTAL値
-
getRecommendTotal2
public final double getRecommendTotal2()
推奨TOTAL値を取得します。この値は総ノート数をもとに、以下の計算式で算出されたものです。
N < 400 : #TOTAL = 200 + N / 5 N < 600 : #TOTAL = 280 + (N - 400) / 2.5 N >= 600: #TOTAL = 360 + (N - 600) / 5 ※N = 総ノート数
- 戻り値:
- 推奨TOTAL値
-
getScratchMode
public final BeMusicScratchMode getScratchMode()
スクラッチモードを取得します。- 戻り値:
- スクラッチモード
-
hasLongNote
public final boolean hasLongNote()
ロングノート有無を取得します。- 戻り値:
- ロングノート有無
-
hasMine
public final boolean hasMine()
地雷オブジェ有無を取得します。- 戻り値:
- 地雷オブジェ有無
-
hasBgm
public final boolean hasBgm()
BGM有無を取得します。- 戻り値:
- BGM有無
-
hasBga
public final boolean hasBga()
BGA有無を取得します。- 戻り値:
- BGA有無
-
hasChangeScroll
public final boolean hasChangeScroll()
スクロール速度の変化有無を取得します。- 戻り値:
- スクロール速度の変化有無
-
hasChangeBpm
public final boolean hasChangeBpm()
BPM変化有無を取得します。- 戻り値:
- BPM変化有無
-
hasChangeSpeed
public final boolean hasChangeSpeed()
速度変更有無を取得します。当メソッドは、譜面内にBPMの途中変更、またはスクロール速度変更があった場合にtrueを返します。
- 戻り値:
- 速度変更有無
- 関連項目:
hasChangeBpm()
,hasChangeScroll()
-
hasStop
public final boolean hasStop()
譜面停止有無を取得します。- 戻り値:
- 譜面停止有無
-
hasGimmick
public final boolean hasGimmick()
ギミック有無を取得します。当メソッドは、譜面内にBPMの途中変更、スクロール速度変更、譜面停止、地雷オブジェのいずれかが 存在した場合にtrueを返します。
- 戻り値:
- ギミック有無
- 関連項目:
hasChangeSpeed()
,hasChangeBpm()
,hasChangeScroll()
,hasStop()
,hasMine()
-
iterator
public final Iterator<BeMusicPoint> iterator()
- 定義:
iterator
インタフェース内Iterable<BeMusicPoint>
-
points
public final Stream<BeMusicPoint> points()
楽曲位置情報リストを走査するストリームを返します。楽曲位置情報リストは、楽曲位置の時間で昇順ソートされていることを保証します。
- 戻り値:
- 楽曲位置情報リストを走査するストリーム
-
points
public final Stream<BeMusicPoint> points(int start, int end)
指定範囲の楽曲位置情報リストを走査するストリームを返します。引数に指定可能な値は 0~
getPointCount()
-1 の範囲です。- パラメータ:
start
- 走査を開始する楽曲位置情報リストのインデックス(この値を含む)end
- 走査を終了する楽曲位置情報リストのインデックス(この値を含まない)- 戻り値:
- 楽曲位置情報リストを走査するストリーム
- 例外:
IndexOutOfBoundsException
- startが 0~getPointCount()
-1 の範囲外IndexOutOfBoundsException
- endが 0~getPointCount()
の範囲外
-
indexOf
public final int indexOf(Predicate<BeMusicPoint> tester)
楽曲位置情報リスト全体から指定条件に該当する最初の楽曲位置情報のインデックスを返します。当メソッドはindexOf(0, getPointCount(), tester)を実行します。
- パラメータ:
tester
- 条件のテスター- 戻り値:
- 指定条件に最初に該当した楽曲位置情報のインデックス。条件に該当する楽曲位置情報がない場合-1。
- 関連項目:
indexOf(int, int, Predicate)
-
indexOf
public final int indexOf(int beginIndex, int endIndex, Predicate<BeMusicPoint> tester)
楽曲位置情報リストの指定範囲から指定条件に該当する最初の楽曲位置情報のインデックスを返します。- パラメータ:
beginIndex
- テスト範囲FROM(このインデックスを含む)endIndex
- テスト範囲TO(このインデックスを含まない)tester
- 条件のテスター- 戻り値:
- 指定条件に最初に該当した楽曲位置情報のインデックス。条件に該当する楽曲位置情報がない場合-1。
- 例外:
IndexOutOfBoundsException
- beginIndexがマイナス値またはgetPointCount()
超過IndexOutOfBoundsException
- endIndexがマイナス値またはgetPointCount()
超過NullPointerException
- testerがnull
-
lastIndexOf
public final int lastIndexOf(Predicate<BeMusicPoint> tester)
楽曲位置情報リスト全体から指定条件に該当する最後の楽曲位置情報のインデックスを返します。当メソッドはlastIndexOf(0, getPointCount(), tester)を実行します。
- パラメータ:
tester
- 条件のテスター- 戻り値:
- 指定条件に最後に該当した楽曲位置情報のインデックス。条件に該当する楽曲位置情報がない場合-1。
- 関連項目:
lastIndexOf(int, int, Predicate)
-
lastIndexOf
public final int lastIndexOf(int beginIndex, int endIndex, Predicate<BeMusicPoint> tester)
楽曲位置情報リストの指定範囲から指定条件に該当する最後の楽曲位置情報のインデックスを返します。- パラメータ:
beginIndex
- テスト範囲FROM(このインデックスを含む)endIndex
- テスト範囲TO(このインデックスを含まない)tester
- 条件のテスター- 戻り値:
- 指定条件に最後に該当した楽曲位置情報のインデックス。条件に該当する楽曲位置情報がない場合-1。
- 例外:
IndexOutOfBoundsException
- beginIndexがマイナス値またはgetPointCount()
超過IndexOutOfBoundsException
- endIndexがマイナス値またはgetPointCount()
超過NullPointerException
- testerがnull
-
floorPointOf
public final int floorPointOf(BmsAt at)
指定楽曲位置以前(この位置を含む)で最大の楽曲位置を持つ楽曲位置情報のインデックスを返します。- パラメータ:
at
- 楽曲位置- 戻り値:
- 条件に該当するインデックス。そのような楽曲位置情報がない場合-1。
- 例外:
NullPointerException
- atがnull
-
floorPointOf
public final int floorPointOf(int measure, double tick)
指定楽曲位置以前(この位置を含む)で最大の楽曲位置を持つ楽曲位置情報のインデックスを返します。- パラメータ:
measure
- 小節番号tick
- 小節の刻み位置- 戻り値:
- 条件に該当するインデックス。そのような楽曲位置情報がない場合-1。
-
floorPointOf
public final int floorPointOf(double time)
指定時間以前(この時間を含む)で最大の時間を持つ楽曲位置情報のインデックスを返します。- パラメータ:
time
- 時間- 戻り値:
- 条件に該当するインデックス。そのような楽曲位置情報がない場合-1。
- 例外:
IllegalArgumentException
- timeがマイナス値
-
ceilPointOf
public final int ceilPointOf(BmsAt at)
指定楽曲位置以降(この位置を含む)で最小の楽曲位置を持つ楽曲位置情報のインデックスを返します。- パラメータ:
at
- 楽曲位置- 戻り値:
- 条件に該当するインデックス。そのような楽曲位置情報がない場合-1。
- 例外:
NullPointerException
- atがnull
-
ceilPointOf
public final int ceilPointOf(int measure, double tick)
指定楽曲位置以降(この位置を含む)で最小の楽曲位置を持つ楽曲位置情報のインデックスを返します。- パラメータ:
measure
- 小節番号tick
- 小節の刻み位置- 戻り値:
- 条件に該当するインデックス。そのような楽曲位置情報がない場合-1。
-
ceilPointOf
public final int ceilPointOf(double time)
指定時間以降(この時間を含む)で最小の時間を持つ楽曲位置情報のインデックスを返します。- パラメータ:
time
- 時間- 戻り値:
- 条件に該当するインデックス。そのような楽曲位置情報がない場合-1。
- 例外:
IllegalArgumentException
- timeがマイナス値
-
onCreate
protected void onCreate()
BMS譜面オブジェクトが構築された時に実行されます。当メソッドが実行されるのはオブジェクトのベースクラスである
BeMusicChart
の構築処理が完了した後です。 従って、クラスのGetterを使用することで構築済みの情報にアクセス可能な状態となっています。当メソッドの意図は、ベースクラスを拡張したクラスにおいて自身が必要とする情報を構築する機会を提供する ことにあります。メソッドはコンストラクタの最後で実行され、当メソッドの実行が完了する時には全ての情報構築が 完了していることが推奨されています。
-
-