クラス BeMusicScore
- Object
-
- BeMusicScore
-
- すべての実装されたインタフェース:
Iterable<BeMusicPoint>
public class BeMusicScore extends Object implements Iterable<BeMusicPoint>
BMS譜面全体とその統計情報を表します。BMS譜面全体とは、楽曲位置情報である
BeMusicPointの集合(リスト)を示します。 当クラスが保有する楽曲位置情報は時間軸で昇順ソートされています。アプリケーションは当クラスが持つイテレータや 楽曲位置情報を取得するためのGetterを用いて楽曲位置情報を参照することができます。楽曲位置情報の集合からは様々な分析を行うことができ、代表的な統計情報の収集は当クラスの構築時に行われます。 統計情報にはGetterからアクセスすることが可能で、アプリケーションの要求に応じてそれらの情報を活用することが 可能になっています。より高度な統計情報を集計したい場合は
BeMusicStatisticsBuilderを参照してください。また、小節番号・刻み位置や時間を用いて時間軸への高速なアクセスを行ったり、条件を指定して楽曲位置情報を 検索する等の機能を提供し、Be-Musicに関するアプリケーション開発のアシストを行います。
当クラスが持つ情報や機能では足りない場合には、当クラスを拡張し、処理や機能を追加してください。そのための 処理実装は
onCreate()で行うことを想定しています。
-
-
コンストラクタの概要
コンストラクタ コンストラクタ 説明 BeMusicScore()BMS譜面オブジェクトを構築します。
-
メソッドの概要
すべてのメソッド staticメソッド インスタンス・メソッド concreteメソッド 修飾子とタイプ メソッド 説明 intceilPointOf(double time)指定時間以降(この時間を含む)で最小の時間を持つ楽曲位置情報のインデックスを返します。intceilPointOf(int measure, double tick)指定楽曲位置以降(この位置を含む)で最小の楽曲位置を持つ楽曲位置情報のインデックスを返します。intceilPointOf(BmsAt at)指定楽曲位置以降(この位置を含む)で最小の楽曲位置を持つ楽曲位置情報のインデックスを返します。static BeMusicScorecreate(List<BeMusicPoint> list)指定した楽曲位置情報リストを用いてBMS譜面オブジェクトを構築します。static <S extends BeMusicScore>
Screate(List<BeMusicPoint> list, Supplier<S> creator)指定した楽曲位置情報リストを用いてBMS譜面オブジェクトを構築します。intfloorPointOf(double time)指定時間以前(この時間を含む)で最大の時間を持つ楽曲位置情報のインデックスを返します。intfloorPointOf(int measure, double tick)指定楽曲位置以前(この位置を含む)で最大の楽曲位置を持つ楽曲位置情報のインデックスを返します。intfloorPointOf(BmsAt at)指定楽曲位置以前(この位置を含む)で最大の楽曲位置を持つ楽曲位置情報のインデックスを返します。intgetChangeBpmCount()BPM変化回数を取得します。intgetLandmineCount()地雷オブジェの数を取得します。intgetLandmineCount(BeMusicDevice device)指定入力デバイスの地雷オブジェ数を取得します。BeMusicPointgetLastPlayablePoint()最後の操作可能ノートを持つ楽曲位置情報を取得します。intgetLongNoteCount()ロングノート数を取得します。intgetLongNoteCount(BeMusicDevice device)指定入力デバイスのロングノート数を取得します。intgetNoteCount()総ノート数を取得します。intgetNoteCount(BeMusicDevice device)指定入力デバイスの総ノート数を取得します。doublegetPlayTime()この譜面の演奏時間を秒単位で取得します。BeMusicPointgetPoint(int index)楽曲位置情報を取得します。intgetPointCount()楽曲位置情報の数を取得します。List<BeMusicPoint>getPoints()楽曲位置情報リストのコピーを取得します。intgetStopCount()譜面停止回数を取得します。booleanhasBga()BGA有無を取得します。booleanhasBgm()BGM有無を取得します。booleanhasChangeBpm()BPM変化有無を取得します。booleanhasLandmine()地雷オブジェ有無を取得します。booleanhasLongNote()ロングノート有無を取得します。booleanhasStop()譜面停止有無を取得します。intindexOf(int beginIndex, int endIndex, Predicate<BeMusicPoint> tester)楽曲位置情報リストの指定範囲から指定条件に該当する最初の楽曲位置情報のインデックスを返します。intindexOf(Predicate<BeMusicPoint> tester)楽曲位置情報リスト全体から指定条件に該当する最初の楽曲位置情報のインデックスを返します。Iterator<BeMusicPoint>iterator()intlastIndexOf(int beginIndex, int endIndex, Predicate<BeMusicPoint> tester)楽曲位置情報リストの指定範囲から指定条件に該当する最後の楽曲位置情報のインデックスを返します。intlastIndexOf(Predicate<BeMusicPoint> tester)楽曲位置情報リスト全体から指定条件に該当する最後の楽曲位置情報のインデックスを返します。protected voidonCreate()BMS譜面オブジェクトが構築された時に実行されます。Stream<BeMusicPoint>stream()楽曲位置情報リストを走査するストリームを返します。-
クラスから継承されたメソッド Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
インタフェースから継承されたメソッド Iterable
forEach, spliterator
-
-
-
-
コンストラクタの詳細
-
BeMusicScore
public BeMusicScore()
BMS譜面オブジェクトを構築します。当クラスはアプリケーションからこのコンストラクタ単体でオブジェクトを生成し、独自に使用することを 想定していません。オブジェクトの生成は
create(List, Supplier)のオブジェクトクリエータで インスタンス生成されることを意図しています。
-
-
メソッドの詳細
-
create
public static BeMusicScore create(List<BeMusicPoint> list)
指定した楽曲位置情報リストを用いてBMS譜面オブジェクトを構築します。当メソッドでは
BeMusicScoreクラスのインスタンスを生成してオブジェクトを構築します。 それ以外の動作仕様についてはcreate(List, Supplier)を参照してください。- パラメータ:
list- 楽曲位置情報リスト- 戻り値:
- BMS譜面オブジェクト
- 関連項目:
create(List, Supplier)
-
create
public static <S extends BeMusicScore> S create(List<BeMusicPoint> list, Supplier<S> creator)
指定した楽曲位置情報リストを用いてBMS譜面オブジェクトを構築します。BMSコンテンツから楽曲位置情報を抽出したリストから、BMS譜面オブジェクトクリエータで生成したオブジェクトを 生成しデータを構築します。楽曲位置情報の抽出については
BeMusicScoreBuilderを参照してください。通常、当メソッドは当クラスの拡張を行わない限り使用されることはありません。アプリケーションによって 当クラスの拡張を行い、情報・機能を追加する場合にのみ参照することを推奨します。ライブラリが提供する BMS譜面オブジェクトを用いる場合は
create(List)またはBeMusicScoreBuilder.createScore()を 使用してBMS譜面オブジェクトを生成してください。楽曲位置情報リストは小節番号・刻み位置と時間が昇順でソートされていなければなりません。 リストが前述のような状態になっていない場合はBMS譜面オブジェクトは生成されず例外がスローされます。
- 型パラメータ:
S- BMS譜面オブジェクト(拡張したものを含む)- パラメータ:
list- 楽曲位置情報リストcreator- BMS譜面オブジェクトクリエータ- 戻り値:
- BMS譜面オブジェクト
- 例外:
NullPointerException- listがnullNullPointerException- creatorがnullNullPointerException- creatorがnullを返したIllegalArgumentException- 楽曲位置情報リストで小節番号・刻み位置が後退したIllegalArgumentException- 楽曲位置情報リストで時間が後退したIllegalArgumentException- 楽曲位置情報リストで表示位置が後退した- 関連項目:
BeMusicScoreBuilder,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
-
getLandmineCount
public final int getLandmineCount()
地雷オブジェの数を取得します。- 戻り値:
- 地雷オブジェの数
-
getLandmineCount
public final int getLandmineCount(BeMusicDevice device)
指定入力デバイスの地雷オブジェ数を取得します。- パラメータ:
device- 入力デバイス- 戻り値:
- 指定入力デバイスの地雷オブジェ数
- 例外:
NullPointerException- deviceがnull
-
getLastPlayablePoint
public final BeMusicPoint getLastPlayablePoint()
最後の操作可能ノートを持つ楽曲位置情報を取得します。譜面が空の場合、当メソッドは
BeMusicPoint.EMPTYを返します。- 戻り値:
- 最後の操作可能ノートを持つ楽曲位置情報
-
getPlayTime
public final double getPlayTime()
この譜面の演奏時間を秒単位で取得します。当メソッドが返す演奏時間は譜面の先頭から最後の操作可能ノートに到達するまでの時間を表します。 それ以降のBGM/BGA等の有無や音声の再生状態は演奏時間には含まれません。
操作可能ノートのない譜面、または譜面が空の場合は演奏時間は0になります。
- 戻り値:
- この譜面の演奏時間
-
getChangeBpmCount
public final int getChangeBpmCount()
BPM変化回数を取得します。- 戻り値:
- BPM変化回数
-
getStopCount
public final int getStopCount()
譜面停止回数を取得します。- 戻り値:
- 譜面停止回数
-
hasLongNote
public final boolean hasLongNote()
ロングノート有無を取得します。- 戻り値:
- ロングノート有無
-
hasLandmine
public final boolean hasLandmine()
地雷オブジェ有無を取得します。- 戻り値:
- 地雷オブジェ有無
-
hasBgm
public final boolean hasBgm()
BGM有無を取得します。- 戻り値:
- BGM有無
-
hasBga
public final boolean hasBga()
BGA有無を取得します。- 戻り値:
- BGA有無
-
hasChangeBpm
public final boolean hasChangeBpm()
BPM変化有無を取得します。- 戻り値:
- BPM変化有無
-
hasStop
public final boolean hasStop()
譜面停止有無を取得します。- 戻り値:
- 譜面停止有無
-
iterator
public final Iterator<BeMusicPoint> iterator()
- 定義:
iteratorインタフェース内Iterable<BeMusicPoint>
-
stream
public final Stream<BeMusicPoint> stream()
楽曲位置情報リストを走査するストリームを返します。楽曲位置情報リストは、楽曲位置の時間で昇順ソートされていることを保証します。類似の情報として「表示位置」 がありますが、楽曲位置情報リストがこの情報で昇順ソートされていることを期待するべきではありません。
- 戻り値:
- 楽曲位置情報リストを走査するストリーム
-
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譜面オブジェクトが構築された時に実行されます。当メソッドが実行されるのはオブジェクトのベースクラスである
BeMusicScoreの構築処理が完了した後です。 従って、クラスのGetterを使用することで構築済みの情報にアクセス可能な状態となっています。当メソッドの意図は、ベースクラスを拡張したクラスにおいて自身が必要とする情報を構築する機会を提供する ことにあります。メソッドはコンストラクタの最後で実行され、当メソッドの実行が完了する時には全ての情報構築が 完了していることが推奨されています。
-
-