クラス BeMusicChart
- Object
-
- BeMusicChart
-
- すべての実装されたインタフェース:
Iterable<BeMusicPoint>
public class BeMusicChart extends Object implements Iterable<BeMusicPoint>
BMS譜面全体とその統計情報を表します。BMS譜面全体とは、楽曲位置情報である
BeMusicPoint
の集合(リスト)を示します。 当クラスが保有する楽曲位置情報は時間軸で昇順ソートされています。アプリケーションは当クラスが持つイテレータや 楽曲位置情報を取得するためのGetter、およびストリームを用いて楽曲位置情報を参照することができます。楽曲位置情報の集合からは様々な分析を行うことができ、代表的な統計情報の収集は当クラスの構築時に行われます。 統計情報にはGetterからアクセスすることが可能で、アプリケーションの要求に応じてそれらの情報を活用することが 可能になっています。より高度な統計情報を集計したい場合は
BeMusicStatisticsBuilder
を参照してください。また、小節番号・刻み位置や時間を用いて時間軸への高速なアクセスを行ったり、条件を指定して楽曲位置情報を 検索する等の機能を提供し、Be-Musicに関するアプリケーション開発のアシストを行います。
当クラスが持つ情報や機能では足りない場合には、当クラスを拡張し、処理や機能を追加してください。そのための 処理実装は
onCreate()
で行うことを想定しています。- 導入されたバージョン:
- 0.0.1
-
-
コンストラクタの概要
コンストラクタ コンストラクタ 説明 BeMusicChart()
BMS譜面オブジェクトを構築します。
-
メソッドの概要
すべてのメソッド staticメソッド インスタンス・メソッド concreteメソッド 修飾子とタイプ メソッド 説明 int
ceilPointOf(double time)
指定時間以降(この時間を含む)で最小の時間を持つ楽曲位置情報のインデックスを返します。int
ceilPointOf(int measure, double tick)
指定楽曲位置以降(この位置を含む)で最小の楽曲位置を持つ楽曲位置情報のインデックスを返します。int
ceilPointOf(BmsAt at)
指定楽曲位置以降(この位置を含む)で最小の楽曲位置を持つ楽曲位置情報のインデックスを返します。Set<Integer>
collectImageTracks(double timeBegin, double timeLast, BiPredicate<Integer,Integer> isCollect)
指定した範囲の楽曲位置情報に記録されているイメージのトラックIDを収集します。Set<Integer>
collectImageTracks(int measureBegin, double tickBegin, int measureLast, double tickLast, BiPredicate<Integer,Integer> isCollect)
指定した範囲の楽曲位置情報に記録されているイメージのトラックIDを収集します。Set<Integer>
collectImageTracks(int start, int last, BiPredicate<Integer,Integer> isCollect)
指定した範囲の楽曲位置情報に記録されているイメージのトラックIDを収集します。Set<Integer>
collectImageTracks(BmsAt atBegin, BmsAt atLast, BiPredicate<Integer,Integer> isCollect)
指定した範囲の楽曲位置情報に記録されているイメージのトラックIDを収集します。Set<Integer>
collectImageTracks(BiPredicate<Integer,Integer> isCollect)
イメージのトラックIDを収集します。Set<Integer>
collectSoundTracks(double timeBegin, double timeLast, IntPredicate isCollect)
指定した範囲の楽曲位置情報に記録されているサウンドのトラックIDを収集します。Set<Integer>
collectSoundTracks(int measureBegin, double tickBegin, int measureLast, double tickLast, IntPredicate isCollect)
指定した範囲の楽曲位置情報に記録されているサウンドのトラックIDを収集します。Set<Integer>
collectSoundTracks(int start, int last, IntPredicate isCollect)
指定した範囲の楽曲位置情報に記録されているサウンドのトラックIDを収集します。Set<Integer>
collectSoundTracks(BmsAt atBegin, BmsAt atLast, IntPredicate isCollect)
指定した範囲の楽曲位置情報に記録されているサウンドのトラックIDを収集します。Set<Integer>
collectSoundTracks(IntPredicate isCollect)
サウンドのトラックIDを収集します。double
computeActualPlayTime(IntToDoubleFunction getSoundTime)
サウンド再生時間を考慮した実際の演奏時間を計算します。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
getLongNoteCount(BeMusicLane lane)
指定レーンのロングノート数を取得します。int
getMineCount()
地雷オブジェの数を取得します。int
getMineCount(BeMusicDevice device)
指定入力デバイスの地雷オブジェ数を取得します。int
getMineCount(BeMusicLane lane)
指定レーンの地雷オブジェ数を取得します。int
getNoteCount()
総ノート数を取得します。int
getNoteCount(BeMusicDevice device)
指定入力デバイスの総ノート数を取得します。int
getNoteCount(BeMusicLane lane)
指定レーンの総ノート数を取得します。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
hasLongNote(BeMusicDevice device)
指定入力デバイスのロングノート有無を取得します。boolean
hasLongNote(BeMusicLane lane)
指定レーンのロングノート有無を取得します。boolean
hasMine()
地雷オブジェ有無を取得します。boolean
hasMine(BeMusicDevice device)
指定入力デバイスの地雷オブジェ有無を取得します。boolean
hasMine(BeMusicLane lane)
指定レーンの地雷オブジェ有無を取得します。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 BeMusicPoint getPoint(int index)
楽曲位置情報を取得します。- パラメータ:
index
- インデックス- 戻り値:
- 楽曲位置情報
- 例外:
IndexOutOfBoundsException
- indexがマイナス値またはgetPointCount()
以上
-
getPoints
public List<BeMusicPoint> getPoints()
楽曲位置情報リストのコピーを取得します。当メソッドはBMS譜面オブジェクトが持つ楽曲位置情報リストの完全なコピーを返します。従って、 頻繁に実行するとアプリケーションのパフォーマンスが大幅に低下する可能性がありますので注意が必要です。
- 戻り値:
- 楽曲位置情報リスト
-
getPointCount
public int getPointCount()
楽曲位置情報の数を取得します。- 戻り値:
- 楽曲位置情報の数
-
getNoteCount
public int getNoteCount()
総ノート数を取得します。- 戻り値:
- 総ノート数
-
getNoteCount
public int getNoteCount(BeMusicLane lane)
指定レーンの総ノート数を取得します。- パラメータ:
lane
- レーン- 戻り値:
- 指定レーンの総ノート数
- 例外:
NullPointerException
- laneがnull- 導入されたバージョン:
- 0.9.0
-
getNoteCount
public int getNoteCount(BeMusicDevice device)
指定入力デバイスの総ノート数を取得します。- パラメータ:
device
- 入力デバイス- 戻り値:
- 指定入力デバイスの総ノート数
- 例外:
NullPointerException
- deviceがnull
-
getLongNoteCount
public int getLongNoteCount()
ロングノート数を取得します。- 戻り値:
- ロングノート数
-
getLongNoteCount
public int getLongNoteCount(BeMusicLane lane)
指定レーンのロングノート数を取得します。- パラメータ:
lane
- レーン- 戻り値:
- 指定レーンのロングノート数
- 例外:
NullPointerException
- laneがnull- 導入されたバージョン:
- 0.9.0
-
getLongNoteCount
public int getLongNoteCount(BeMusicDevice device)
指定入力デバイスのロングノート数を取得します。- パラメータ:
device
- 入力デバイス- 戻り値:
- 指定入力デバイスのロングノート数
- 例外:
NullPointerException
- deviceがnull
-
getMineCount
public int getMineCount()
地雷オブジェの数を取得します。- 戻り値:
- 地雷オブジェの数
-
getMineCount
public int getMineCount(BeMusicLane lane)
指定レーンの地雷オブジェ数を取得します。- パラメータ:
lane
- レーン- 戻り値:
- 指定レーンの地雷オブジェ数
- 例外:
NullPointerException
- laneがnull- 導入されたバージョン:
- 0.9.0
-
getMineCount
public int getMineCount(BeMusicDevice device)
指定入力デバイスの地雷オブジェ数を取得します。- パラメータ:
device
- 入力デバイス- 戻り値:
- 指定入力デバイスの地雷オブジェ数
- 例外:
NullPointerException
- deviceがnull
-
getPlayTime
public double getPlayTime()
この譜面の演奏時間を秒単位で取得します。当メソッドが返す演奏時間は譜面の先頭から最後の操作可能ノートに到達するまでの時間を表します。 それ以降のBGM/BGA等の有無や音声の再生状態は演奏時間には含まれません。
操作可能ノートのない譜面、または譜面が空の場合は演奏時間は0になります。
使用するサウンドの再生時間を考慮した演奏時間を計算したい場合は
computeActualPlayTime(IntToDoubleFunction)
を使用してください。- 戻り値:
- この譜面の演奏時間
- 関連項目:
computeActualPlayTime(IntToDoubleFunction)
-
getChangeScrollCount
public int getChangeScrollCount()
スクロール速度の変化回数を取得します。- 戻り値:
- スクロール速度の変化回数
- 導入されたバージョン:
- 0.6.0
-
getChangeBpmCount
public int getChangeBpmCount()
BPM変化回数を取得します。- 戻り値:
- BPM変化回数
-
getStopCount
public int getStopCount()
譜面停止回数を取得します。- 戻り値:
- 譜面停止回数
-
getRecommendTotal1
public double getRecommendTotal1()
推奨TOTAL値を取得します。この値は総ノート数をもとに、以下の計算式で算出されたものです。
#TOTAL = 7.605 * N / (0.01 * N + 6.5) ※N = 総ノート数
- 戻り値:
- 推奨TOTAL値
- 導入されたバージョン:
- 0.3.0
-
getRecommendTotal2
public 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値
- 導入されたバージョン:
- 0.3.0
-
getScratchMode
public BeMusicScratchMode getScratchMode()
スクラッチモードを取得します。- 戻り値:
- スクラッチモード
- 導入されたバージョン:
- 0.7.0
-
hasLongNote
public boolean hasLongNote()
ロングノート有無を取得します。- 戻り値:
- ロングノート有無
-
hasLongNote
public boolean hasLongNote(BeMusicLane lane)
指定レーンのロングノート有無を取得します。- パラメータ:
lane
- レーン- 戻り値:
- 指定レーンにロングノートが含まれていればtrue
- 例外:
NullPointerException
- laneがnull- 導入されたバージョン:
- 0.9.0
-
hasLongNote
public boolean hasLongNote(BeMusicDevice device)
指定入力デバイスのロングノート有無を取得します。- パラメータ:
device
- 入力デバイス- 戻り値:
- 指定入力デバイスにロングノートが含まれていればtrue
- 例外:
NullPointerException
- deviceがnull- 導入されたバージョン:
- 0.9.0
-
hasMine
public boolean hasMine()
地雷オブジェ有無を取得します。- 戻り値:
- 地雷オブジェ有無
-
hasMine
public boolean hasMine(BeMusicLane lane)
指定レーンの地雷オブジェ有無を取得します。- パラメータ:
lane
- レーン- 戻り値:
- 指定レーンに地雷オブジェが含まれていればtrue
- 例外:
NullPointerException
- laneがnull- 導入されたバージョン:
- 0.9.0
-
hasMine
public boolean hasMine(BeMusicDevice device)
指定入力デバイスの地雷オブジェ有無を取得します。- パラメータ:
device
- 入力デバイス- 戻り値:
- 指定入力デバイスに地雷オブジェが含まれていればtrue
- 例外:
NullPointerException
- deviceがnull- 導入されたバージョン:
- 0.9.0
-
hasBgm
public boolean hasBgm()
BGM有無を取得します。- 戻り値:
- BGM有無
-
hasBga
public boolean hasBga()
BGA有無を取得します。- 戻り値:
- BGA有無
-
hasChangeScroll
public boolean hasChangeScroll()
スクロール速度の変化有無を取得します。- 戻り値:
- スクロール速度の変化有無
- 導入されたバージョン:
- 0.6.0
-
hasChangeBpm
public boolean hasChangeBpm()
BPM変化有無を取得します。- 戻り値:
- BPM変化有無
-
hasChangeSpeed
public boolean hasChangeSpeed()
速度変更有無を取得します。当メソッドは、譜面内にBPMの途中変更、またはスクロール速度変更があった場合にtrueを返します。
- 戻り値:
- 速度変更有無
- 導入されたバージョン:
- 0.6.0
- 関連項目:
hasChangeBpm()
,hasChangeScroll()
-
hasStop
public boolean hasStop()
譜面停止有無を取得します。- 戻り値:
- 譜面停止有無
-
hasGimmick
public boolean hasGimmick()
ギミック有無を取得します。当メソッドは、譜面内にBPMの途中変更、スクロール速度変更、譜面停止、地雷オブジェのいずれかが 存在した場合にtrueを返します。
- 戻り値:
- ギミック有無
- 導入されたバージョン:
- 0.6.0
- 関連項目:
hasChangeSpeed()
,hasChangeBpm()
,hasChangeScroll()
,hasStop()
,hasMine()
-
iterator
public Iterator<BeMusicPoint> iterator()
- 定義:
iterator
インタフェース内Iterable<BeMusicPoint>
-
points
public Stream<BeMusicPoint> points()
楽曲位置情報リストを走査するストリームを返します。楽曲位置情報リストは、楽曲位置の時間で昇順ソートされていることを保証します。
- 戻り値:
- 楽曲位置情報リストを走査するストリーム
- 導入されたバージョン:
- 0.1.0
-
points
public Stream<BeMusicPoint> points(int start, int end)
指定範囲の楽曲位置情報リストを走査するストリームを返します。引数に指定可能な値は 0~
getPointCount()
-1 の範囲です。- パラメータ:
start
- 走査を開始する楽曲位置情報リストのインデックス(この値を含む)end
- 走査を終了する楽曲位置情報リストのインデックス(この値を含まない)- 戻り値:
- 楽曲位置情報リストを走査するストリーム
- 例外:
IndexOutOfBoundsException
- startが 0~getPointCount()
-1 の範囲外IndexOutOfBoundsException
- endが 0~getPointCount()
の範囲外- 導入されたバージョン:
- 0.8.0
-
indexOf
public int indexOf(Predicate<BeMusicPoint> tester)
楽曲位置情報リスト全体から指定条件に該当する最初の楽曲位置情報のインデックスを返します。当メソッドはindexOf(0, getPointCount(), tester)を実行します。
- パラメータ:
tester
- 条件のテスター- 戻り値:
- 指定条件に最初に該当した楽曲位置情報のインデックス。条件に該当する楽曲位置情報がない場合-1。
- 関連項目:
indexOf(int, int, Predicate)
-
indexOf
public 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 int lastIndexOf(Predicate<BeMusicPoint> tester)
楽曲位置情報リスト全体から指定条件に該当する最後の楽曲位置情報のインデックスを返します。当メソッドはlastIndexOf(0, getPointCount(), tester)を実行します。
- パラメータ:
tester
- 条件のテスター- 戻り値:
- 指定条件に最後に該当した楽曲位置情報のインデックス。条件に該当する楽曲位置情報がない場合-1。
- 関連項目:
lastIndexOf(int, int, Predicate)
-
lastIndexOf
public 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 int floorPointOf(BmsAt at)
指定楽曲位置以前(この位置を含む)で最大の楽曲位置を持つ楽曲位置情報のインデックスを返します。- パラメータ:
at
- 楽曲位置- 戻り値:
- 条件に該当するインデックス。そのような楽曲位置情報がない場合-1。
- 例外:
NullPointerException
- atがnull
-
floorPointOf
public int floorPointOf(int measure, double tick)
指定楽曲位置以前(この位置を含む)で最大の楽曲位置を持つ楽曲位置情報のインデックスを返します。- パラメータ:
measure
- 小節番号tick
- 小節の刻み位置- 戻り値:
- 条件に該当するインデックス。そのような楽曲位置情報がない場合-1。
-
floorPointOf
public int floorPointOf(double time)
指定時間以前(この時間を含む)で最大の時間を持つ楽曲位置情報のインデックスを返します。- パラメータ:
time
- 時間- 戻り値:
- 条件に該当するインデックス。そのような楽曲位置情報がない場合-1。
- 例外:
IllegalArgumentException
- timeがマイナス値
-
ceilPointOf
public int ceilPointOf(BmsAt at)
指定楽曲位置以降(この位置を含む)で最小の楽曲位置を持つ楽曲位置情報のインデックスを返します。- パラメータ:
at
- 楽曲位置- 戻り値:
- 条件に該当するインデックス。そのような楽曲位置情報がない場合-1。
- 例外:
NullPointerException
- atがnull
-
ceilPointOf
public int ceilPointOf(int measure, double tick)
指定楽曲位置以降(この位置を含む)で最小の楽曲位置を持つ楽曲位置情報のインデックスを返します。- パラメータ:
measure
- 小節番号tick
- 小節の刻み位置- 戻り値:
- 条件に該当するインデックス。そのような楽曲位置情報がない場合-1。
-
ceilPointOf
public int ceilPointOf(double time)
指定時間以降(この時間を含む)で最小の時間を持つ楽曲位置情報のインデックスを返します。- パラメータ:
time
- 時間- 戻り値:
- 条件に該当するインデックス。そのような楽曲位置情報がない場合-1。
- 例外:
IllegalArgumentException
- timeがマイナス値
-
collectSoundTracks
public Set<Integer> collectSoundTracks(IntPredicate isCollect)
サウンドのトラックIDを収集します。当メソッドは以下のコードと等価です。
chart.collectSoundTracks(0, Math.max(0, chart.getPointCount() - 1), isCollect);
- パラメータ:
isCollect
- ノートのトラックIDを収集するかを決定するテスト関数- 戻り値:
- 昇順ソートされたトラックIDセット
- 例外:
NullPointerException
- isCollect が null- 導入されたバージョン:
- 0.10.0
- 関連項目:
collectSoundTracks(int, int, IntPredicate)
-
collectSoundTracks
public Set<Integer> collectSoundTracks(double timeBegin, double timeLast, IntPredicate isCollect)
指定した範囲の楽曲位置情報に記録されているサウンドのトラックIDを収集します。当メソッドは以下のコードと等価です。
int start = chart.ceilPointOf(timeBegin); int last = chart.floorPointOf(timeLast); chart.collectSoundTracks( (start == -1) ? Integer.MAX_VALUE : start, (last == -1) ? 0 : last, isCollect );
- パラメータ:
timeBegin
- 収集開始時間(この時間を含む)timeLast
- 収集終了時間(この時間を含む)isCollect
- ノートのトラックIDを収集するかを決定するテスト関数- 戻り値:
- 昇順ソートされたトラックIDセット
- 例外:
IllegalArgumentException
- timeBegin, timeEnd が負の値NullPointerException
- isCollect が null- 導入されたバージョン:
- 0.10.0
- 関連項目:
collectSoundTracks(int, int, IntPredicate)
-
collectSoundTracks
public Set<Integer> collectSoundTracks(BmsAt atBegin, BmsAt atLast, IntPredicate isCollect)
指定した範囲の楽曲位置情報に記録されているサウンドのトラックIDを収集します。当メソッドは以下のコードと等価です。
int start = chart.ceilPointOf(atBegin); int last = chart.floorPointOf(atLast); chart.collectSoundTracks( (start == -1) ? Integer.MAX_VALUE : start, (last == -1) ? 0 : last, isCollect );
- パラメータ:
atBegin
- 収集開始楽曲位置(この位置を含む)atLast
- 収集終了楽曲位置(この位置を含む)isCollect
- ノートのトラックIDを収集するかを決定するテスト関数- 戻り値:
- 昇順ソートされたトラックIDセット
- 例外:
NullPointerException
- atBegin, atLast, isCollect が null- 導入されたバージョン:
- 0.10.0
- 関連項目:
collectSoundTracks(int, int, IntPredicate)
-
collectSoundTracks
public Set<Integer> collectSoundTracks(int measureBegin, double tickBegin, int measureLast, double tickLast, IntPredicate isCollect)
指定した範囲の楽曲位置情報に記録されているサウンドのトラックIDを収集します。当メソッドは以下のコードと等価です。
int start = chart.ceilPointOf(measureBegin, tickBegin); int last = chart.floorPointOf(measureLast, tickLast); chart.collectSoundTracks( (start == -1) ? Integer.MAX_VALUE : start, (last == -1) ? 0 : last, isCollect );
- パラメータ:
measureBegin
- 収集開始小節番号(この小節を含む)tickBegin
- 収集開始刻み位置(この刻み位置を含む)measureLast
- 収集終了小節番号(この小節を含む)tickLast
- 収集終了刻み位置(この刻み位置を含む)isCollect
- ノートのトラックIDを収集するかを決定するテスト関数- 戻り値:
- 昇順ソートされたトラックIDセット
- 例外:
NullPointerException
- isCollect が null- 導入されたバージョン:
- 0.10.0
- 関連項目:
collectSoundTracks(int, int, IntPredicate)
-
collectSoundTracks
public Set<Integer> collectSoundTracks(int start, int last, IntPredicate isCollect)
指定した範囲の楽曲位置情報に記録されているサウンドのトラックIDを収集します。具体的には「可視オブジェ」、「不可視オブジェ」、「BGM」のトラックIDが収集対象となります。
可視オブジェでは操作を伴うノート(
BeMusicNoteType.hasMovement()
が true を返すノート) が収集対象となり、それ以外のノートは収集されません。トラックIDセットに含めるかどうかは isCollect 関数のテスト結果によって決定されます。 この関数の入力値はノートの生値になっているため、このノートから各種属性値を得るには
BeMusicSound
を使用してください。関数が false を返すと収集の対象外になります。返されたトラックIDセットは、走査すると昇順ソートされています。また、このセットの変更可否については 未定義となりますのでセットの変更を行う場合は別インスタンスへコピーしてください。
- パラメータ:
start
- 収集開始インデックス(この値を含む)last
- 収集終了インデックス(この値を含む)isCollect
- ノートのトラックIDを収集するかを決定するテスト関数- 戻り値:
- 昇順ソートされたトラックIDセット
- 例外:
IllegalArgumentException
- start, last が負の値NullPointerException
- isCollect が null- 導入されたバージョン:
- 0.10.0
-
collectImageTracks
public Set<Integer> collectImageTracks(BiPredicate<Integer,Integer> isCollect)
イメージのトラックIDを収集します。当メソッドは以下のコードと等価です。
chart.collectImageTracks(0, Math.max(0, chart.getPointCount() - 1), isCollect);
- パラメータ:
isCollect
- イメージのトラックIDを収集するかを決定するテスト関数- 戻り値:
- 昇順ソートされたトラックIDセット
- 例外:
NullPointerException
- isCollect が null- 導入されたバージョン:
- 0.10.0
- 関連項目:
collectImageTracks(int, int, BiPredicate)
-
collectImageTracks
public Set<Integer> collectImageTracks(double timeBegin, double timeLast, BiPredicate<Integer,Integer> isCollect)
指定した範囲の楽曲位置情報に記録されているイメージのトラックIDを収集します。当メソッドは以下のコードと等価です。
int start = chart.ceilPointOf(timeBegin); int last = chart.floorPointOf(timeLast); chart.collectImageTracks( (start == -1) ? Integer.MAX_VALUE : start, (last == -1) ? 0 : last, isCollect );
- パラメータ:
timeBegin
- 収集開始時間(この時間を含む)timeLast
- 収集終了時間(この時間を含む)isCollect
- イメージのトラックIDを収集するかを決定するテスト関数- 戻り値:
- 昇順ソートされたトラックIDセット
- 例外:
IllegalArgumentException
- timeBegin, timeEnd が負の値NullPointerException
- isCollect が null- 導入されたバージョン:
- 0.10.0
- 関連項目:
collectImageTracks(int, int, BiPredicate)
-
collectImageTracks
public Set<Integer> collectImageTracks(BmsAt atBegin, BmsAt atLast, BiPredicate<Integer,Integer> isCollect)
指定した範囲の楽曲位置情報に記録されているイメージのトラックIDを収集します。当メソッドは以下のコードと等価です。
int start = chart.ceilPointOf(atBegin); int last = chart.floorPointOf(atLast); chart.collectImageTracks( (start == -1) ? Integer.MAX_VALUE : start, (last == -1) ? 0 : last, isCollect );
- パラメータ:
atBegin
- 収集開始楽曲位置(この位置を含む)atLast
- 収集終了楽曲位置(この位置を含む)isCollect
- イメージのトラックIDを収集するかを決定するテスト関数- 戻り値:
- 昇順ソートされたトラックIDセット
- 例外:
NullPointerException
- atBegin, atLast, isCollect が null- 導入されたバージョン:
- 0.10.0
- 関連項目:
collectImageTracks(int, int, BiPredicate)
-
collectImageTracks
public Set<Integer> collectImageTracks(int measureBegin, double tickBegin, int measureLast, double tickLast, BiPredicate<Integer,Integer> isCollect)
指定した範囲の楽曲位置情報に記録されているイメージのトラックIDを収集します。当メソッドは以下のコードと等価です。
int start = chart.ceilPointOf(measureBegin, tickBegin); int last = chart.floorPointOf(measureLast, tickLast); chart.collectImageTracks( (start == -1) ? Integer.MAX_VALUE : start, (last == -1) ? 0 : last, isCollect );
- パラメータ:
measureBegin
- 収集開始小節番号(この小節を含む)tickBegin
- 収集開始刻み位置(この刻み位置を含む)measureLast
- 収集終了小節番号(この小節を含む)tickLast
- 収集終了刻み位置(この刻み位置を含む)isCollect
- イメージのトラックIDを収集するかを決定するテスト関数- 戻り値:
- 昇順ソートされたトラックIDセット
- 例外:
NullPointerException
- isCollect が null- 導入されたバージョン:
- 0.10.0
- 関連項目:
collectImageTracks(int, int, BiPredicate)
-
collectImageTracks
public Set<Integer> collectImageTracks(int start, int last, BiPredicate<Integer,Integer> isCollect)
指定した範囲の楽曲位置情報に記録されているイメージのトラックIDを収集します。具体的には「BGA」、「BGAレイヤー」、「プレーミス画像」のトラックIDが収集対象となります。
トラックIDセットに含めるかどうかは isCollect 関数のテスト結果によって決定されます。 この関数の入力値は第1引数がイメージ種別を表す整数値、第2引数がそのイメージのトラックIDとなっています。 イメージ種別は 0=BGA, 1=BGAレイヤー, 2=プレーミス画像 となっています。種別によって収集有無を決定したい場合は この値を参照してください。関数が false を返すと収集の対象外になります。
返されたトラックIDセットは、走査すると昇順ソートされています。また、このセットの変更可否については 未定義となりますのでセットの変更を行う場合は別インスタンスへコピーしてください。
- パラメータ:
start
- 収集開始インデックス(この値を含む)last
- 収集終了インデックス(この値を含む)isCollect
- イメージのトラックIDを収集するかを決定するテスト関数- 戻り値:
- 昇順ソートされたトラックIDセット
- 例外:
IllegalArgumentException
- start, last が負の値NullPointerException
- isCollect が null- 導入されたバージョン:
- 0.10.0
-
computeActualPlayTime
public double computeActualPlayTime(IntToDoubleFunction getSoundTime)
サウンド再生時間を考慮した実際の演奏時間を計算します。当メソッドは
getPlayTime()
とは異なり、実際のサウンドの再生時間を参照して最後のサウンドが 再生し終えるまでの時間を計算します。利用者はノートの生値から対応するサウンドの再生時間を秒単位で返す 関数を引数で渡してください。対応するサウンドを再生しない、または何らかの理由により再生時間が決定できない場合は 0 を返すようにし、負の値を返さないようにしてください。負の値を返した場合の計算結果は未定義となり、 期待する演奏時間を得られなくなる可能性があります。ノートの生値からサウンドのトラックIDを取得するには
BeMusicSound.getTrackId(int)
を使用します。- パラメータ:
getSoundTime
- 指定されたノートの生値に対応するサウンドの再生時間を返す関数- 戻り値:
- 最後のサウンドが再生し終えるまでの時間(秒単位)
- 例外:
NullPointerException
- getSoundTime が null- 導入されたバージョン:
- 0.10.0
- 関連項目:
getPlayTime()
,BeMusicSound
-
onCreate
protected void onCreate()
BMS譜面オブジェクトが構築された時に実行されます。当メソッドが実行されるのはオブジェクトのベースクラスである
BeMusicChart
の構築処理が完了した後です。 従って、クラスのGetterを使用することで構築済みの情報にアクセス可能な状態となっています。当メソッドの意図は、ベースクラスを拡張したクラスにおいて自身が必要とする情報を構築する機会を提供する ことにあります。メソッドはコンストラクタの最後で実行され、当メソッドの実行が完了する時には全ての情報構築が 完了していることが推奨されています。
-
-