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

クラス BmsContent


  • public class BmsContent
    extends Object
    1個のBMSデータを表すBMSライブラリのメインオブジェクトです。

    BMSで記述された1個のデータを格納するコンテナであり、そのデータに対して参照・編集を行うためのあらゆる機能を提供します。

    当クラスが提供するAPIは、大きく分けて以下の利用シーンを想定しています。

    • BMSコンテンツを参照し、メタ情報や時間軸を解析してBMSコンテンツを再生するアプリケーション(BMSプレイヤー)
    • BMSコンテンツを作成・編集し、その工程を直感的・視覚的にプレゼンテーションするアプリケーション(BMSエディタ)

    上記利用シーンにおいて操作しやすい機能を提供し、BMSコンテンツの参照・編集を統一的なアプローチで管理します。
    BMSプレイヤーのようにリアルタイム性を求められるシーンでは頻繁なデータ参照が必要になります。当クラスのデータ参照 においては、API呼び出し時の動的なメモリの確保・解放を極力行わず、高速なアプリケーションが開発することができる ようになっています。

    データ構成について
    BMSコンテンツが保有するデータは、「BMS宣言」「メタ情報」「チャンネル(時間軸上のデータ)」から成り立っています。 BMS宣言を除くデータにおいては、そのデータ書式をBmsSpecによって決定付けられたBMS仕様に沿うように強制されます。 BMS仕様に違反するデータはBMSコンテンツ内には受け入れられないため、データの整合性は保証されます。

    BMS宣言
    BMS宣言は当該BMSコンテンツに付与される付加的な情報です。メタ情報とは異なりこの情報の内容には特に決まったルールは無く、 特定のアプリケーションに対して独自の解釈を指示したりする自由な記述として活用することができます。アプリケーションには BMS宣言を考慮する義務はないため、BMSコンテンツの制作者は不特定多数のアプリケーションに何らかの振る舞いを期待する目的で BMS宣言を活用するべきではありません。

    BMS宣言の参照・編集には以下のAPIを利用します。

    メタ情報
    メタ情報は当該BMSコンテンツの内容・属性・状態等を表す様々な情報です。メタ情報の定義内容はBMS仕様によって決定されており、 BMSコンテンツへの情報登録は、このBMS仕様に基づいて行われなければなりません。BMSの特性上、登録義務のあるメタ情報は 存在せず、未登録の情報については全て規定の初期値が設定されているものと見なされます。

    メタ情報の参照・編集には以下のAPIを利用します。

    チャンネル
    チャンネルは当該BMSコンテンツの情報のうち、時間軸上に配置される情報を指します。チャンネルにはそれぞれ番号が割り当てられ、 データ型等の属性が付与されています。時間軸は「小節番号」と「小節の刻み位置」によって管理されます。BMSコンテンツでは チャンネル上のデータを「小節データ(MeasureValue)」および「ノート(Note)」という種類のデータに分解します。小節データは 1チャンネル1小節について1個だけ設定可能なデータで、チャンネルのデータ型が配列型ではないデータが対象になります。 小節データを特定するのに必要な情報は「チャンネル番号」「小節番号」であり、小節の刻み位置は必要ありません。 一方、ノートはチャンネルのデータ型が配列型のものが対象になり、こちらはデータの特定に「小節の刻み位置」を必要とします。
    但し「重複可能チャンネル」の場合、データを解決するのに「チャンネルインデックス」が必要になってきます。これは、 重複データを一次元配列として扱っているためです。

    小節データ・ノートを扱うには、それぞれ別のAPIが必要になります。必要APIの一覧は下記を参照してください。
    小節データを扱うAPI

    ノートを扱うAPI

    時間軸そのものの編集、および時間軸に関する情報の参照を行うためのAPIについては下記を参照してください。 これには、時間軸の計算や変換処理等のユーティリティAPIも含みます。

    タイムライン要素編集ポリシーについて
    BMSコンテンツの小節データ・ノートのようなタイムライン要素の編集は、そのデータ構造の特性上、データの内容によっては 時間に関する内部データの再計算が必要になる場合があります。例えば、全時間軸のうち、真ん中付近の小節の小節長を 変更したとします。そうすると、その小節以降のタイムライン要素への到達時間が変更されることになり、内部で管理している 時間に関するデータの再計算が発生します。
    再計算が完了するまでの間、時間に関するデータに不整合が発生している状態となりますので、BMSコンテンツではその間は 時間に関係するAPIへのアクセスが禁止されます。このアクセスが禁止されている状態のことを「編集モード」と呼称します。

    動作モードについて
    BMSコンテンツでは、上述した事情により動作モードを2つ持っています。

    • 参照モード
      このモードではタイムライン要素の全ての読み取りAPIへのアクセスを許可します。時間に関する内部データの計算が 完了している状態を指し、時間計算を行うAPIも不整合を起こすことなく動作できます。逆に、このモードでは全ての 「編集を伴うAPI」が禁止されます。参照モードでこれらのAPIにアクセスすると例外をスローするため注意が必要です。

    • 編集モード
      データの編集を行う場合に必要なモードです。編集モードの間は「時間に関するデータを必要とするデータ読み取りAPI」への アクセスを全て禁止状態にします。そうすることでBMSコンテンツから、データ不整合のある情報を提供することを防止し、 アプリケーションへの情報提供の質を高めます。このモードでは、参照モードではできなかった全ての「データ編集を伴うAPI」 へのアクセスを可能とします。

    上述した動作モードへの遷移を行う専用のAPIが用意されています。beginEdit()を呼び出すと「編集モード」へ遷移します。 このAPIを呼び出した直後から全ての「データ編集を伴うAPI」へのアクセスが可能となります。編集モードを完了し「参照モード」へ 戻すにはendEdit()を呼び出します。このAPIを呼び出すと、編集モードの間に行われた変更内容から時間に関する内部データの 再計算が開始され、それが完了すると参照モードに遷移します。
    BMSコンテンツのデフォルトの動作モードは参照モードです。すぐにデータの編集を行いたい場合はbeginEdit()を 呼び出してください。

    マルチスレッド対策について
    BMSコンテンツは、高速なデータアクセスを必要とするアプリケーションに配慮するため、BMSライブラリの設計ポリシーとして マルチスレッドへの対策を行っていません。そのため、BMSコンテンツを含め単一のオブジェクトへ複数のスレッドから アクセスした場合には、ドキュメントに記載の動作内容およびその後の動作の整合性を保証対象外としています。 複数のスレッドから単一のオブジェクトを操作する予定がある場合には、個々のアプリケーションの責任でマルチスレッド対策を 行うようにしてください。

    データサイズについて
    BMSコンテンツは複数の要素から成る多くのデータ同士が複雑にリンクして構成されています。 楽曲の長さ・構成内容によっては数万~数十万オブジェクトが生成され、BMSコンテンツのサイズが数MBから数十MBになる可能性があります。 また、BMSコンテンツを扱うアプリケーションの特性上、同時に複数の画像や音声データがメモリ上に展開されることが予想されます。 そのため、複数のBMSコンテンツをメモリ上に展開することはアプリケーションの省メモリ設計の観点から推奨されません。 BMSコンテンツから必要な情報を取り出した後は速やかにオブジェクトを破棄してください。

    • メソッドの概要

      すべてのメソッド インスタンス・メソッド concreteメソッド 
      修飾子とタイプ メソッド 説明
      protected void assertIsEditMode()
      動作モードが編集モードかどうかをテストするアサーション
      protected void assertIsReferenceMode()
      動作モードが参照モードかどうかをテストするアサーション
      void beginEdit()
      BMSコンテンツを編集モードに変更します。
      boolean containsDeclaration​(String name)
      指定した名前のBMS宣言が存在するかを判定します。
      boolean containsIndexedMeta​(String name, int index)
      索引付きメタ情報に値が設定されているかどうか判定します。
      boolean containsMeasureValue​(int channel, int measure)
      小節に小節データが登録されているかどうかを返します。
      boolean containsMeasureValue​(int channel, int index, int measure)
      小節に小節データが登録されているかどうかを返します。
      boolean containsMeta​(BmsMetaKey key)
      指定したメタ情報キーに該当するメタ情報に1件以上値が設定されているかどうか判定します。
      boolean containsMeta​(BmsMetaKey key, int index)
      指定したメタ情報キー・インデックスに該当するメタ情報に値が設定されているかどうか判定します。
      boolean containsMeta​(String name, BmsUnit unit)
      指定した名称・単位のメタ情報に1件以上値が設定されているかどうか判定します。
      boolean containsMeta​(String name, BmsUnit unit, int index)
      指定した名称・単位・インデックスのメタ情報に値が設定されているかどうか判定します。
      boolean containsMultipleMeta​(String name, int index)
      重複可能メタ情報に値が設定されているかどうか判定します。
      boolean containsSingleMeta​(String name)
      単体メタ情報に値が設定されているかどうかを判定します。
      int countNotes​(int measureBegin, double tickBegin, int measureEnd, double tickEnd, Predicate<BmsNote> isCounting)
      条件に一致するノートの数を数えます。
      int countNotes​(int measure, double tick, Predicate<BmsNote> isCounting)
      指定楽曲位置のノートの数を数えます。
      int countNotes​(int channelBegin, int channelEnd, int measureBegin, double tickBegin, int measureEnd, double tickEnd, Predicate<BmsNote> isCounting)
      条件に一致するノートの数を数えます。
      int countNotes​(int channelBegin, int channelEnd, BmsAt atBegin, BmsAt atEnd, Predicate<BmsNote> isCounting)
      条件に一致するノートの数を数えます。
      int countNotes​(BmsAt atBegin, BmsAt atEnd, Predicate<BmsNote> isCounting)
      条件に一致するノートの数を数えます。
      int countNotes​(BmsAt at, Predicate<BmsNote> isCounting)
      指定楽曲位置のノートの数を数えます。
      int countNotes​(Predicate<BmsNote> isCounting)
      条件に一致するノートの数を数えます。
      Stream<BmsDeclarationElement> declarations()
      BMSコンテンツに登録されたBMS宣言を登録順に走査するストリームを返します。
      void edit​(Runnable editor)
      BMSコンテンツを編集モードに変更し、指定したエディタ関数を実行します。
      void endEdit()
      BMSコンテンツを参照モードに変更します。
      void enumNotes​(int measureBegin, double tickBegin, int measureEnd, double tickEnd, Consumer<BmsNote> enumNote)
      指定範囲のノートを列挙します。
      void enumNotes​(int measure, double tick, Consumer<BmsNote> enumNote)
      指定楽曲位置のノートを列挙します。
      void enumNotes​(int channelBegin, int channelEnd, int measureBegin, double tickBegin, int measureEnd, double tickEnd, Consumer<BmsNote> enumNote)
      指定範囲のノートを列挙します。
      void enumNotes​(int channelBegin, int channelEnd, BmsAt atBegin, BmsAt atEnd, Consumer<BmsNote> enumNote)
      指定範囲のノートを列挙します。
      void enumNotes​(BmsAt atBegin, BmsAt atEnd, Consumer<BmsNote> enumNote)
      指定範囲のノートを列挙します。
      void enumNotes​(BmsAt at, Consumer<BmsNote> enumNote)
      指定楽曲位置のノートを列挙します。
      void enumNotes​(Consumer<BmsNote> enumNote)
      指定範囲のノートを列挙します。
      byte[] generateHash()
      BMSコンテンツの内容からハッシュ値を計算し、結果を返します。
      long getChangeBpmCount()
      BPM変化回数を取得します。
      int getChannelDataCount​(int channel, int measure)
      指定小節に格納されたデータの数を取得します。
      String getDeclaration​(String name)
      指定した名前のBMS宣言の値を取得します。
      Map<String,​String> getDeclarations()
      全てのBMS宣言の名前と値の一覧を取得します。
      <T> T getIndexedMeta​(String name, int index)
      索引付き可能メタ情報の値を取得します。
      int getIndexedMetaCount​(String name)
      索引付きメタ情報の数を取得します。
      <T> Map<Integer,​T> getIndexedMetas​(String name)
      索引付きメタ情報の値マップを取得します。
      double getInitialBpm()
      初期BPMを取得します。
      double getMaxBpm()
      最大BPMを取得します。
      int getMeasureCount()
      楽曲の小節数を取得します。
      double getMeasureTickCount​(int measure)
      小節の刻み数を取得します。
      <T> T getMeasureValue​(int channel, int measure)
      小節に設定された小節データを取得します。
      <T> T getMeasureValue​(int channel, int index, int measure)
      小節に設定された小節データを取得します。
      <T> T getMeta​(BmsMetaKey key)
      指定したメタ情報キーに該当するメタ情報の値を取得します。
      <T> T getMeta​(BmsMetaKey key, int index)
      指定したメタ情報キーに該当するメタ情報の値を取得します。
      <T> T getMeta​(String name, BmsUnit unit, int index)
      指定した名称・単位のメタ情報の値を取得します。
      int getMetaCount​(BmsMetaKey key)
      指定したメタ情報キーに該当するメタ情報の数を取得します。
      int getMetaCount​(String name, BmsUnit unit)
      指定した名称・単位のメタ情報の数を取得します。
      double getMinBpm()
      最小BPMを取得します。
      <T> T getMultipleMeta​(String name, int index)
      重複可能メタ情報の値を取得します。
      int getMultipleMetaCount​(String name)
      重複可能メタ情報の数を取得します。
      <T> List<T> getMultipleMetas​(String name)
      重複可能メタ情報の値リストを取得します。
      BmsNote getNextNote​(int channel, int measure, double tick, boolean inclusiveFrom)
      指定位置から進行方向に存在する最初のノートを取得します。
      BmsNote getNextNote​(int channel, int index, int measure, double tick, boolean inclusiveFrom)
      指定位置から進行方向に存在する最初のノートを取得します。
      BmsNote getNextNote​(int channel, int index, BmsAt at, boolean inclusiveFrom)
      指定位置から進行方向に存在する最初のノートを取得します。
      BmsNote getNextNote​(int channel, BmsAt at, boolean inclusiveFrom)
      指定位置から進行方向に存在する最初のノートを取得します。
      BmsNote getNote​(int channel, int measure, double tick)
      1個のノートを取得します。
      BmsNote getNote​(int channel, int index, int measure, double tick)
      1個のノートを取得します。
      BmsNote getNote​(int channel, int index, BmsAt at)
      1個のノートを取得します。
      BmsNote getNote​(int channel, BmsAt at)
      1個のノートを取得します。
      BmsNote getPreviousNote​(int channel, int measure, double tick, boolean inclusiveFrom)
      指定位置から後退方向に存在する最初のノートを取得します。
      BmsNote getPreviousNote​(int channel, int index, int measure, double tick, boolean inclusiveFrom)
      指定位置から後退方向に存在する最初のノートを取得します。
      BmsNote getPreviousNote​(int channel, int index, BmsAt at, boolean inclusiveFrom)
      指定位置から後退方向に存在する最初のノートを取得します。
      BmsNote getPreviousNote​(int channel, BmsAt at, boolean inclusiveFrom)
      指定位置から後退方向に存在する最初のノートを取得します。
      Object getResolvedNoteValue​(int channel, int measure, double tick)
      指定位置のノートの値から参照メタ情報のデータを照合し、照合結果を返します。
      Object getResolvedNoteValue​(int channel, int index, int measure, double tick)
      指定位置のノートの値から参照メタ情報のデータを照合し、照合結果を返します。
      Object getResolvedNoteValue​(int channel, int index, BmsAt at)
      指定位置のノートの値から参照メタ情報のデータを照合し、照合結果を返します。
      Object getResolvedNoteValue​(int channel, BmsAt at)
      指定位置のノートの値から参照メタ情報のデータを照合し、照合結果を返します。
      Object getResolvedNoteValue​(BmsNote note)
      指定位置のノートの値から参照メタ情報のデータを照合し、照合結果を返します。
      <T> T getSingleMeta​(String name)
      単体メタ情報の値を取得します。
      int getSingleMetaCount​(String name)
      単体メタ情報の数を取得します。
      BmsSpec getSpec()
      BMSコンテンツに関連付けたBMS仕様を取得します。
      long getStopCount()
      譜面停止回数を取得します。
      Stream<BmsMetaElement> indexedMetas()
      このBMSコンテンツの索引付きメタ情報を走査します。
      Stream<BmsMetaElement> indexedMetas​(String name)
      指定した名前の索引付きメタ情報を走査します。
      void insertMeasure​(int measureWhere)
      指定位置に小節を挿入します。
      void insertMeasure​(int measureWhere, int count)
      指定位置に小節を挿入します。
      boolean isEditMode()
      現在の動作モードが「編集モード」であるかどうかを返します。
      boolean isReferenceMode()
      現在の動作モードが「参照モード」であるかどうかを返します。
      List<BmsNote> listNotes​(int measureBegin, double tickBegin, int measureEnd, double tickEnd, Predicate<BmsNote> isCollect)
      複数のノートをリスト形式で取得します。
      List<BmsNote> listNotes​(int measure, double tick, Predicate<BmsNote> isCollect)
      複数のノートをリスト形式で取得します。
      List<BmsNote> listNotes​(int channelBegin, int channelEnd, int measureBegin, double tickBegin, int measureEnd, double tickEnd, Predicate<BmsNote> isCollect)
      複数のノートをリスト形式で取得します。
      List<BmsNote> listNotes​(int channelBegin, int channelEnd, BmsAt atBegin, BmsAt atEnd, Predicate<BmsNote> isCollect)
      複数のノートをリスト形式で取得します。
      List<BmsNote> listNotes​(BmsAt atBegin, BmsAt atEnd, Predicate<BmsNote> isCollect)
      複数のノートをリスト形式で取得します。
      List<BmsNote> listNotes​(BmsAt at, Predicate<BmsNote> isCollect)
      複数のノートをリスト形式で取得します。
      List<BmsNote> listNotes​(Predicate<BmsNote> isCollect)
      複数のノートをリスト形式で取得します。
      Stream<BmsMetaElement> metas()
      このBMSコンテンツのメタ情報を走査します。
      Stream<BmsMetaElement> multipleMetas()
      このBMSコンテンツの複数メタ情報を走査します。
      Stream<BmsMetaElement> multipleMetas​(String name)
      指定した名前の複数メタ情報を走査します。
      protected void onBeginEdit()
      beginEdit()が呼ばれ、動作モードが編集モードに遷移した時に呼ばれます。
      protected void onEndEdit​(boolean isRecalculateTime)
      endEdit()が呼ばれ、動作モードが参照モードに遷移した時に呼ばれます。
      BmsNote pointOf​(int measureFrom, double tickFrom, Predicate<BmsNote> judge)
      条件に該当するノートを検索し、最初に見つかったノートを返します。
      BmsNote pointOf​(BmsAt atFrom, Predicate<BmsNote> judge)
      条件に該当するノートを検索し、最初に見つかったノートを返します。
      double pointToTime​(int measure, double tick)
      小節番号・刻み位置を時間(秒)に変換します。
      double pointToTime​(BmsAt at)
      小節番号・刻み位置を時間(秒)に変換します。
      void putDeclaration​(BmsDeclarationElement declaration)
      指定したBMS宣言を追加します。
      void putDeclaration​(String name, String value)
      指定した名前のBMS宣言を追加します。
      void putMeta​(BmsMetaElement meta)
      指定したメタ情報要素をBMSコンテンツに追加します。
      void putMultipleMeta​(String name, Object value)
      指定した重複可能メタ情報のリスト末尾に値を挿入します。
      BmsNote putNote​(int channel, int measure, double tick, int value)
      譜面に新しいノートを追加します。
      <T extends BmsNote>
      T
      putNote​(int channel, int measure, double tick, int value, Supplier<BmsNote> createNote)
      譜面に新しいノートを追加します。
      BmsNote putNote​(int channel, int index, int measure, double tick, int value)
      譜面に新しいノートを追加します。
      <T extends BmsNote>
      T
      putNote​(int channel, int index, int measure, double tick, int value, Supplier<BmsNote> createNote)
      譜面に新しいノートを追加します。
      BmsNote putNote​(int channel, int index, BmsAt at, int value)
      譜面に新しいノートを追加します。
      <T extends BmsNote>
      T
      putNote​(int channel, int index, BmsAt at, int value, Supplier<BmsNote> createNote)
      譜面に新しいノートを追加します。
      BmsNote putNote​(int channel, BmsAt at, int value)
      譜面に新しいノートを追加します。
      <T extends BmsNote>
      T
      putNote​(int channel, BmsAt at, int value, Supplier<BmsNote> createNote)
      譜面に新しいノートを追加します。
      void putTimeline​(BmsTimelineElement timeline)
      指定したメタ情報要素をBMSコンテンツに追加します。
      boolean removeDeclaration​(String name)
      指定した名前のBMS宣言を消去します。
      void removeMeasure​(int measureWhere)
      指定位置の小節を消去します。
      void removeMeasure​(int measureWhere, int count)
      指定位置の小節を消去します。
      boolean removeNote​(int channel, int measure, double tick)
      ノートを消去します。
      boolean removeNote​(int channel, int index, int measure, double tick)
      ノートを消去します。
      int removeNote​(int channelBegin, int channelEnd, int measureBegin, int measureEnd, Predicate<BmsNote> isRemoveTarget)
      指定範囲の選択されたノートを消去します。
      boolean removeNote​(int channel, int index, BmsAt at)
      ノートを消去します。
      int removeNote​(int measureBegin, int measureEnd, Predicate<BmsNote> isRemoveTarget)
      指定範囲の選択されたノートを消去します。
      boolean removeNote​(int channel, BmsAt at)
      ノートを消去します。
      int removeNote​(Predicate<BmsNote> isRemoveTarget)
      選択されたノートを消去します。
      BmsPoint seekNextPoint​(int measure, double tick, boolean inclusiveFrom, BmsPoint outPoint)
      指定楽曲位置より後の位置に存在する直近のノートを検索し、その楽曲位置を返します。
      BmsPoint seekNextPoint​(int measure, double tick, boolean inclusiveFrom, IntPredicate chTester, BmsPoint outPoint)
      指定楽曲位置より後の位置に存在する直近のノート、小節データ、または小節線を検索し、その楽曲位置を返します。
      BmsPoint seekNextPoint​(BmsAt at, boolean inclusiveFrom, BmsPoint outPoint)
      指定楽曲位置より後の位置に存在する直近のノートを検索し、その楽曲位置を返します。
      BmsPoint seekNextPoint​(BmsAt at, boolean inclusiveFrom, IntPredicate chTester, BmsPoint outPoint)
      指定楽曲位置より後の位置に存在する直近のノートを検索し、その楽曲位置を返します。
      BmsPoint seekPoint​(int measureFrom, double tickFrom, double offsetTick, BmsPoint outPoint)
      原点の楽曲位置から指定刻み数分だけ移動した楽曲位置を計算します。
      BmsPoint seekPoint​(BmsAt atFrom, double offsetTick, BmsPoint outPoint)
      原点の楽曲位置から指定刻み数分だけ移動した楽曲位置を計算します。
      void setIndexedMeta​(String name, int index, Object value)
      索引付きメタ情報に値を設定します。
      void setInitialBpm​(double bpm)
      初期BPMを設定します。
      void setMeasureValue​(int channel, int index, int measure, Object value)
      小節に値を設定します。
      void setMeasureValue​(int channel, int measure, Object value)
      小節に値を設定します。
      void setMeta​(BmsMetaKey key, int index, Object value)
      指定したメタ情報キーに該当するメタ情報に値を設定します。
      void setMeta​(BmsMetaKey key, Object value)
      指定したメタ情報キーに該当するメタ情報に値を設定します。
      void setMeta​(String name, BmsUnit unit, int index, Object value)
      指定した名称・単位のメタ情報に値を設定します。
      void setMultipleMeta​(String name, int index, Object value)
      重複可能メタ情報に値を設定します。
      void setSingleMeta​(String name, Object value)
      単体メタ情報に値を設定します。
      Stream<BmsMetaElement> singleMetas()
      このBMSコンテンツの単体メタ情報を走査します。
      void swapChannel​(int channel1, int channel2)
      指定チャンネル同士のデータ内容を入れ替えます。
      void swapChannel​(int channel1, int index1, int channel2, int index2)
      指定チャンネル同士のデータ内容を入れ替えます。
      Stream<BmsTimelineElement> timeline()
      タイムライン全体を操作するストリームを返します。
      Stream<BmsTimelineElement> timeline​(int measure, double tick)
      タイムラインの指定楽曲位置のみを走査するストリームを返します。
      Stream<BmsTimelineElement> timeline​(int measureBegin, double tickBegin, int measureEnd, double tickEnd)
      タイムラインの指定楽曲位置の範囲を走査するストリームを返します。
      Stream<BmsTimelineElement> timeline​(BmsAt at)
      タイムラインの指定楽曲位置のみを走査するストリームを返します。
      Stream<BmsTimelineElement> timeline​(BmsAt atBegin, BmsAt atEnd)
      タイムラインの指定楽曲位置の範囲を走査するストリームを返します。
      BmsPoint timeToPoint​(double timeSec, BmsPoint outPoint)
      時間(秒)を楽曲位置(小節番号/刻み位置)に変換します。
    • コンストラクタの詳細

      • BmsContent

        public BmsContent​(BmsSpec spec)
        新しいBMSコンテンツオブジェクトを構築します。

        BMSコンテンツ構築直後のデータは空になっています。データを構築するには本クラスの各種メソッドを使用しますが、 BMSファイルを読み込んでBMSコンテンツを生成する場合はBmsLoaderを使用することを推奨します。

        パラメータ:
        spec - コンテンツに関連付けるBMS仕様
        例外:
        NullPointerException - specがnull
      • BmsContent

        public BmsContent​(BmsContent src)
        指定されたBMSコンテンツと同じ内容の新しいBMSコンテンツオブジェクトを構築します。

        入力BMSコンテンツから全てのBMS宣言、メタ情報、小節データ、及びノートをコピーし、 指定されたBMSコンテンツと同じ内容になるように初期化します。

        入力BMSコンテンツは参照モードでなければなりません。編集モードのBMSコンテンツを指定すると例外をスローします。

        パラメータ:
        src - コピー元BMSコンテンツ
        例外:
        NullPointerException - srcがnull
        IllegalArgumentException - srcが編集モード
      • BmsContent

        public BmsContent​(BmsContent src,
                          Function<BmsDeclarationElement,​String> cnvDecl,
                          Function<BmsMetaElement,​Object> cnvMeta,
                          Function<BmsMeasureValue,​Object> cnvMv,
                          UnaryOperator<BmsNote> cnvNote)
        指定されたBMSコンテンツをコピー元とした新しいBMSコンテンツオブジェクトを構築します。

        このコンストラクタではコピー元BMSコンテンツの各値を変換しながら新しいBMSコンテンツオブジェクトを構築する機能を提供します。 変換処理は引数にてデータコンバータ関数として渡します。変換の必要がないデータのコンバータにはnullを指定してください。

        BMS宣言、メタ情報、小節データのコンバータでは入力として各要素データを受け取り、変換後の値を返します。 メタ情報、小節データでは各要素のデータ型に適合しないデータを返すと例外がスローされるので注意してください。 コピーしたくない要素はnullを返すことで当該要素のコピーをスキップできます。

        メタ情報に限り、値の設定されていない単体メタ情報もコンバータ関数に入力されます。 この動作仕様は、値の設定されていない単体メタ情報への値の設定を行いたいケースへ対応するためです。 値の設定有無はBmsMetaElement.isContain()で判定してください。

        ノートのコンバータではノートのアドレス、値の全てを変換対象とすることができます。 変換を行う場合はBmsNote.newNote(int, int, int, double, int)で新しいノートのインスタンスを生成してください。 チャンネル番号には配列型を指定してください。それ以外の型のチャンネルを指定すると例外がスローされます。 また、重複可能チャンネルから重複不可チャンネルへの変換を行うと、チャンネルインデックスが1以上のノートを転送する際にエラーとなります。

        入力BMSコンテンツは参照モードでなければなりません。編集モードのBMSコンテンツを指定すると例外をスローします。

        パラメータ:
        src - コピー元BMSコンテンツ
        cnvDecl - BMS宣言変換関数またはnull
        cnvMeta - メタ情報変換関数またはnull
        cnvMv - 小節データ変換関数またはnull
        cnvNote - ノート変換関数またはnull
        例外:
        NullPointerException - srcがnull
        IllegalArgumentException - srcが編集モード
        ClassCastException - メタ情報・小節データの変換で、当該要素のデータ型に適合しないデータを返した
        IllegalArgumentException - メタ情報の変換で、初期BPMメタ情報にBmsSpec.BPM_MIN未満またはBmsSpec.BPM_MAX超過の値を設定しようとした
        IllegalArgumentException - メタ情報の変換で、BPM変更メタ情報にBmsSpec.BPM_MIN未満またはBmsSpec.BPM_MAX超過の値を設定しようとした
        IllegalArgumentException - メタ情報の変換で、譜面停止時間メタ情報にBmsSpec.STOP_MIN未満またはBmsSpec.STOP_MAX超過の値を設定しようとした
        IllegalArgumentException - 小節データの変換で、小節長にBmsSpec.LENGTH_MIN未満またはBmsSpec.LENGTH_MAX超過の値を設定しようとした
        IllegalArgumentException - ノートの変換で、BmsSpec.CHANNEL_MIN未満またはBmsSpec.CHANNEL_MAX超過のチャンネル番号を返した
        IllegalArgumentException - ノートの変換で、BMS仕様に存在しないチャンネル番号を返した
        IllegalArgumentException - ノートの変換で、配列型以外のチャンネル番号を返した
        IndexOutOfBoundsException - ノートの変換で、コピー先の重複不可チャンネルへチャンネルインデックスが1以上のノートをコピーしようとした
        IllegalArgumentException - ノートの変換で、小節番号がBmsSpec.MEASURE_MIN未満またはBmsSpec.MEASURE_MAX超過
        IllegalArgumentException - ノートの変換で、小節の刻み位置がマイナス値または当該小節の刻み数以上
        IllegalArgumentException - ノートの変換で、ノートの値に0を指定した
        IllegalArgumentException - ノートの変換で、ノートの値にBmsSpec.VALUE_MIN未満またはBmsSpec.VALUE_MAX超過の値を指定した
    • メソッドの詳細

      • getSpec

        public final BmsSpec getSpec()
        BMSコンテンツに関連付けたBMS仕様を取得します。
        戻り値:
        BMS仕様
      • putDeclaration

        public final void putDeclaration​(String name,
                                         String value)
        指定した名前のBMS宣言を追加します。

        同じ名前のBMS宣言が存在する場合は新しい値で上書きします。

        名前はアルファベットの大文字と小文字を区別して扱います。

        名前は1文字目が英字かアンダースコア、2文字目以降は英数字かアンダースコアでなければなりません。 値に使用する文字で、必要なものはエスケープしなければなりません。(例:\")

        パラメータ:
        name - BMS宣言の名称
        value - 値
        例外:
        IllegalStateException - 動作モードが編集モードではない
        NullPointerException - nameがnull
        NullPointerException - valueがnull
        IllegalArgumentException - nameの書式が不正
        IllegalArgumentException - valueの書式が不正
      • putDeclaration

        public final void putDeclaration​(BmsDeclarationElement declaration)
        指定したBMS宣言を追加します。

        同じ名前のBMS宣言が存在する場合は新しい値で上書きします。

        パラメータ:
        declaration - 追加対象のBMS宣言
        例外:
        IllegalStateException - 動作モードが編集モードではない
        NullPointerException - declarationがnull
      • removeDeclaration

        public final boolean removeDeclaration​(String name)
        指定した名前のBMS宣言を消去します。
        パラメータ:
        name - BMS宣言の名称
        戻り値:
        該当するBMS宣言を消去した場合はtrue、BMS宣言が存在しない場合はfalse
        例外:
        IllegalStateException - 動作モードが編集モードではない
        NullPointerException - nameがnull
      • containsDeclaration

        public final boolean containsDeclaration​(String name)
        指定した名前のBMS宣言が存在するかを判定します。
        パラメータ:
        name - BMS宣言の名称
        戻り値:
        該当するBMS宣言が存在する場合はtrue、存在しない場合はfalse
        例外:
        NullPointerException - nameがnull
      • getDeclaration

        public final String getDeclaration​(String name)
        指定した名前のBMS宣言の値を取得します。
        パラメータ:
        name - BMS宣言の名称
        戻り値:
        該当するBMS宣言の値、存在しない場合はnull
        例外:
        NullPointerException - nameがnull
      • getDeclarations

        public final Map<String,​String> getDeclarations()
        全てのBMS宣言の名前と値の一覧を取得します。

        当メソッドはBMSコンテンツが保有する全てのBMS宣言マップのコピーを返します。 当メソッド呼び出し後にBMSコンテンツにBMS宣言を追加しても返されたマップには反映されません。

        BMS宣言はputDeclaration(String, String)等で登録された順で一覧化されます。

        戻り値:
        BMS宣言の名前と値のマップ
      • declarations

        public final Stream<BmsDeclarationElement> declarations()
        BMSコンテンツに登録されたBMS宣言を登録順に走査するストリームを返します。
        戻り値:
        BMS宣言を走査するストリーム
      • setSingleMeta

        public final void setSingleMeta​(String name,
                                        Object value)
        単体メタ情報に値を設定します。

        値にnullを設定することで当該メタ情報の値を消去します。これは、値を指定しないことを意味し、 getSingleMeta(java.lang.String)で値を取得した場合には、そのメタ情報の初期値を返します。 しかし、値は消去されているためcontainsSingleMeta(java.lang.String)はfalseを返すことに注意してください。

        指定のメタ情報が基数選択メタ情報の場合、設定可能な値はnull, 16, 36, 62のいずれかのみになります。 それ以外の値を指定しようとすると例外がスローされます。また、基数選択メタ情報を更新したとしても、 基数選択が影響するデータが自動的に範囲内に収められる等の処理は行われません。 選択された基数が作用するのはBMSコンテンツを標準フォーマットで出力しようとする時です。 詳細な動作仕様についてはBmsStandardSaverを参照してください。

        パラメータ:
        name - メタ情報の名称
        value - 設定する値
        例外:
        IllegalStateException - 動作モードが編集モードではない
        NullPointerException - nameがnull
        IllegalArgumentException - 名称に合致するメタ情報が存在しない
        ClassCastException - valueが設定先メタ情報のデータ型に変換できない
        IllegalArgumentException - 初期BPMメタ情報にBmsSpec.BPM_MIN未満またはBmsSpec.BPM_MAX超過の値を設定しようとした
        IllegalArgumentException - 基数選択メタ情報にnull, 16, 36, 62以外の値を設定しようとした
      • setMultipleMeta

        public final void setMultipleMeta​(String name,
                                          int index,
                                          Object value)
        重複可能メタ情報に値を設定します。

        重複可能メタ情報には値を複数登録できます。メタ情報は可変長リストで管理されており、リストのどの部分に 値を設定するかはインデックス値で決定します。インデックス値までの領域に値が存在しない場合、歯抜けの領域には 当該メタ情報の初期値が自動で設定されます。

        値を消去するには、値にnullを指定します。消去した値より後ろの値は左詰めされます。

        重複可能メタ情報のリスト末尾に値を挿入したい場合はputMultipleMeta(java.lang.String, java.lang.Object) を使用することを推奨します。

        パラメータ:
        name - メタ情報の名称
        index - 設定位置を示すインデックス
        value - 設定する値
        例外:
        IllegalStateException - 動作モードが編集モードではない
        NullPointerException - nameがnull
        IllegalArgumentException - 名称に合致するメタ情報が存在しない
        IndexOutOfBoundsException - indexが0~BmsSpec.MULTIPLE_META_INDEX_MAXの範囲外
        ClassCastException - valueが設定先メタ情報のデータ型に変換できない
      • putMeta

        public final void putMeta​(BmsMetaElement meta)
        指定したメタ情報要素をBMSコンテンツに追加します。

        当メソッドは同一、または互換性のあるBMS仕様を持つ別のBMSコンテンツで走査したメタ情報を追加する時に使用することを想定しています。 互換性のないBMS仕様を持つBMSコンテンツを走査した結果取得したメタ情報要素を指定するとBMS仕様違反によりメタ情報を追加できない可能性があり、 多くの場合例外がスローされる結果になります。原則として同一のBMS仕様を持つBMSコンテンツ間のメタ情報の転送に使用することを強く推奨します。

        データが未登録のメタ情報要素を指定した場合、BMSコンテンツからそのメタ情報のデータを消去します。 また、複数・索引付きメタ情報で、当該メタ情報のデータが0個を表すメタ情報要素(BmsMetaElement.getIndex()がマイナス値を示す) を指定した場合、当メソッドは何も行いません。

        パラメータ:
        meta - メタ情報要素
        例外:
        IllegalStateException - 動作モードが編集モードではない
        NullPointerException - metaがnull
        ClassCastException - メタ情報の値が設定先メタ情報のデータ型に変換できない
      • putMultipleMeta

        public final void putMultipleMeta​(String name,
                                          Object value)
        指定した重複可能メタ情報のリスト末尾に値を挿入します。

        このメソッドでは、値にnullを指定することによる消去は行えません。

        パラメータ:
        name - メタ情報の名称
        value - 設定する値
        例外:
        IllegalStateException - 動作モードが編集モードではない
        NullPointerException - nameがnull
        NullPointerException - valueがnull
        IllegalArgumentException - 名称に合致するメタ情報が存在しない
        IndexOutOfBoundsException - リストが一杯でこれ以上値を挿入できない
        ClassCastException - valueが設定先メタ情報のデータ型に変換できない
      • getSingleMeta

        public final <T> T getSingleMeta​(String name)
        単体メタ情報の値を取得します。

        メタ情報に値が設定されていない場合、そのメタ情報の初期値を返します。値が設定されているかどうかを 判定したい場合はcontainsSingleMeta(java.lang.String)を使用してください。

        取得した値のデータ型を判別したい場合はメタ情報のデータ型を参照し、BmsType.getNativeType()が 返す値を調べます。メタ情報のデータ型が明確に判明している場合は直接キャストして構いません。

        型パラメータ:
        T - メタ情報のデータ型
        パラメータ:
        name - メタ情報の名称
        戻り値:
        メタ情報の値
        例外:
        NullPointerException - nameがnull
        IllegalArgumentException - 名称に合致するメタ情報が存在しない
      • getMultipleMeta

        public final <T> T getMultipleMeta​(String name,
                                           int index)
        重複可能メタ情報の値を取得します。

        メタ情報に値が設定されていない場合、そのメタ情報の初期値を返します。値が設定されているかどうかを 判定したい場合はcontainsMultipleMeta(java.lang.String, int)を使用してください。

        取得した値のデータ型を判別したい場合はメタ情報のデータ型を参照し、BmsType.getNativeType()が 返す値を調べます。メタ情報のデータ型が明確に判明している場合は直接キャストして構いません。

        型パラメータ:
        T - メタ情報のデータ型
        パラメータ:
        name - メタ情報の名称
        index - インデックス
        戻り値:
        メタ情報の値
        例外:
        NullPointerException - nameがnull
        IndexOutOfBoundsException - indexが0~BmsSpec.MULTIPLE_META_INDEX_MAXの範囲外
        IllegalArgumentException - 名称に合致するメタ情報が存在しない
      • getIndexedMeta

        public final <T> T getIndexedMeta​(String name,
                                          int index)
        索引付き可能メタ情報の値を取得します。

        メタ情報に値が設定されていない場合、そのメタ情報の初期値を返します。値が設定されているかどうかを 判定したい場合はcontainsIndexedMeta(java.lang.String, int)を使用してください。

        取得した値のデータ型を判別したい場合はメタ情報のデータ型を参照し、BmsType.getNativeType()が 返す値を調べます。メタ情報のデータ型が明確に判明している場合は直接キャストして構いません。

        型パラメータ:
        T - メタ情報のデータ型
        パラメータ:
        name - メタ情報の名称
        index - インデックス
        戻り値:
        メタ情報の値
        例外:
        NullPointerException - nameがnull
        IndexOutOfBoundsException - indexが0~BmsSpec.INDEXED_META_INDEX_MAXの範囲外
        IllegalArgumentException - 名称に合致するメタ情報が存在しない
      • getMultipleMetas

        public final <T> List<T> getMultipleMetas​(String name)
        重複可能メタ情報の値リストを取得します。
        型パラメータ:
        T - メタ情報のデータ型
        パラメータ:
        name - メタ情報の名称
        戻り値:
        重複可能メタ情報の値リスト
        例外:
        NullPointerException - nameがnull
        IllegalArgumentException - 名称に合致するメタ情報が存在しない
      • getIndexedMetas

        public final <T> Map<Integer,​T> getIndexedMetas​(String name)
        索引付きメタ情報の値マップを取得します。

        このメソッドで取得できるマップに格納されるのは明示的に値を設定された索引のみです。 getIndexedMeta(java.lang.String, int)では未設定の索引の値は初期値を返しますが、返されるマップに同じ索引を指定しても nullが返ることに注意してください。

        型パラメータ:
        T - メタ情報のデータ型
        パラメータ:
        name - メタ情報の名称
        戻り値:
        索引付きメタ情報の値マップ
        例外:
        NullPointerException - nameがnull
        IllegalArgumentException - 名称に合致するメタ情報が存在しない
      • getSingleMetaCount

        public final int getSingleMetaCount​(String name)
        単体メタ情報の数を取得します。

        単体メタ情報は1件のデータからなる情報です。値が設定されている場合に1を返します。

        パラメータ:
        name - メタ情報の名称
        戻り値:
        メタ情報の数
        例外:
        NullPointerException - nameがnull
        IllegalArgumentException - 名称に合致するメタ情報が存在しない
      • getMultipleMetaCount

        public final int getMultipleMetaCount​(String name)
        重複可能メタ情報の数を取得します。
        パラメータ:
        name - メタ情報の名称
        戻り値:
        メタ情報の数
        例外:
        NullPointerException - nameがnull
        IllegalArgumentException - 名称に合致するメタ情報が存在しない
      • getIndexedMetaCount

        public final int getIndexedMetaCount​(String name)
        索引付きメタ情報の数を取得します。
        パラメータ:
        name - メタ情報の名称
        戻り値:
        メタ情報の数
        例外:
        NullPointerException - nameがnull
        IllegalArgumentException - 名称に合致するメタ情報が存在しない
      • containsSingleMeta

        public final boolean containsSingleMeta​(String name)
        単体メタ情報に値が設定されているかどうかを判定します。
        パラメータ:
        name - メタ情報の名称
        戻り値:
        値が設定されている場合true
        例外:
        NullPointerException - nameがnull
        IllegalArgumentException - 名称に合致するメタ情報が存在しない
      • containsMeta

        public final boolean containsMeta​(BmsMetaKey key)
        指定したメタ情報キーに該当するメタ情報に1件以上値が設定されているかどうか判定します。

        単体メタ情報の場合、そのメタ情報に値が設定されていればtrueを返します。複数・索引付きメタ情報の場合、そのメタ情報に1件でも 値が設定されていればtrueを返します。登録先インデックスの値は問いません。

        パラメータ:
        key - メタ情報キー
        戻り値:
        値が設定されている場合true
        例外:
        NullPointerException - keyがnull
        IllegalArgumentException - メタ情報キーに合致するメタ情報が存在しない
      • containsMeta

        public final boolean containsMeta​(String name,
                                          BmsUnit unit)
        指定した名称・単位のメタ情報に1件以上値が設定されているかどうか判定します。

        単体メタ情報の場合、そのメタ情報に値が設定されていればtrueを返します。複数・索引付きメタ情報の場合、そのメタ情報に1件でも 値が設定されていればtrueを返します。登録先インデックスの値は問いません。

        パラメータ:
        name - メタ情報の名称
        unit - メタ情報の単位
        戻り値:
        値が設定されている場合true
        例外:
        NullPointerException - nameがnull
        NullPointerException - unitがnull
        IllegalArgumentException - 名称・単位に合致するメタ情報が存在しない
      • metas

        public final Stream<BmsMetaElement> metas()
        このBMSコンテンツのメタ情報を走査します。

        当メソッドはBMSコンテンツに設定されたBMS仕様に基づき、全てのメタ情報を走査します。 データの登録有無に関わらず、BMS仕様に登録された全てのメタ情報が走査対象になります。 走査されたメタ情報にデータが登録されているかどうかはBmsMetaElement.isContain()で調べてください。

        当メソッドでメタ情報を走査すると、単体・複数・索引付きの順でメタ情報の名称順に昇順で走査されます。 特定の構成単位のみ走査したい場合はsingleMetas(), multipleMetas(), indexedMetas() を使用するほうがより効率的に操作することができます。

        複数・索引付きメタ情報では、当該メタ情報のデータが0件の時にインデックスが-1のメタ情報要素を走査します。 この要素には値は格納されておらず、BmsMetaElement.getValue()等で値を取得しても当該メタ情報の初期値を返します。

        当メソッドは編集モード時には使用できません。使用すると例外をスローします。 また、走査を行っている最中に編集モードに遷移してメタ情報を更新した場合、走査中の結果がどのようになるかは未定義です。

        戻り値:
        メタ情報を走査するストリーム
        例外:
        IllegalStateException - 動作モードが編集モード
      • singleMetas

        public final Stream<BmsMetaElement> singleMetas()
        このBMSコンテンツの単体メタ情報を走査します。

        当メソッドはBMSコンテンツに設定されたBMS仕様に基づき、全ての単体メタ情報を走査します。 データの登録有無に関わらず、BMS仕様に登録された全ての単体メタ情報が走査対象になります。 走査された単体メタ情報にデータが登録されているかどうかはBmsMetaElement.isContain()で調べてください。

        当メソッドで単体メタ情報を走査すると、メタ情報の名称順に昇順で走査されます。

        当メソッドは編集モード時には使用できません。使用すると例外をスローします。 また、走査を行っている最中に編集モードに遷移して単体メタ情報を更新した場合、走査中の結果がどのようになるかは未定義です。

        戻り値:
        単体メタ情報を走査するストリーム
        例外:
        IllegalStateException - 動作モードが編集モード
      • multipleMetas

        public final Stream<BmsMetaElement> multipleMetas()
        このBMSコンテンツの複数メタ情報を走査します。

        当メソッドはBMSコンテンツに設定されたBMS仕様に基づき、全ての複数メタ情報を走査します。 データの登録有無に関わらず、BMS仕様に登録された全ての複数メタ情報が走査対象になります。 走査された複数メタ情報にデータが登録されているかどうかはBmsMetaElement.isContain()で調べてください。

        当メソッドで複数メタ情報を走査すると、メタ情報の名称順に昇順で走査されます。

        複数メタ情報では、当該メタ情報のデータが0件の時にインデックスが-1のメタ情報要素を走査します。 この要素には値は格納されておらず、BmsMetaElement.getValue()等で値を取得しても当該メタ情報の初期値を返します。

        当メソッドは編集モード時には使用できません。使用すると例外をスローします。 また、走査を行っている最中に編集モードに遷移して複数メタ情報を更新した場合、走査中の結果がどのようになるかは未定義です。

        戻り値:
        複数メタ情報を走査するストリーム
        例外:
        IllegalStateException - 動作モードが編集モード
      • multipleMetas

        public final Stream<BmsMetaElement> multipleMetas​(String name)
        指定した名前の複数メタ情報を走査します。

        当メソッドは指定した名前の複数メタ情報が走査対象になります。 走査された複数メタ情報にデータが登録されているかどうかはBmsMetaElement.isContain()で調べてください。

        当該メタ情報のデータが0件の時にインデックスが-1のメタ情報要素を走査します。 この要素には値は格納されておらず、BmsMetaElement.getValue()等で値を取得しても当該メタ情報の初期値を返します。

        当メソッドは編集モード時には使用できません。使用すると例外をスローします。 また、走査を行っている最中に編集モードに遷移して複数メタ情報を更新した場合、走査中の結果がどのようになるかは未定義です。

        パラメータ:
        name - 走査対象の複数メタ情報の名前
        戻り値:
        複数メタ情報を走査するストリーム
        例外:
        IllegalStateException - 動作モードが編集モード
        NullPointerException - nameがnull
        IllegalArgumentException - nameに該当する複数メタ情報がBMS仕様に存在しない
      • indexedMetas

        public final Stream<BmsMetaElement> indexedMetas()
        このBMSコンテンツの索引付きメタ情報を走査します。

        当メソッドはBMSコンテンツに設定されたBMS仕様に基づき、全ての索引付きメタ情報を走査します。 データの登録有無に関わらず、BMS仕様に登録された全ての索引付きメタ情報が走査対象になります。 走査された索引付きメタ情報にデータが登録されているかどうかはBmsMetaElement.isContain()で調べてください。

        当メソッドで索引付きメタ情報を走査すると、メタ情報の名称順に昇順で走査されます。

        索引付きメタ情報では、当該メタ情報のデータが0件の時にインデックスが-1のメタ情報要素を走査します。 この要素には値は格納されておらず、BmsMetaElement.getValue()等で値を取得しても当該メタ情報の初期値を返します。

        当メソッドは編集モード時には使用できません。使用すると例外をスローします。 また、走査を行っている最中に編集モードに遷移して索引付きメタ情報を更新した場合、走査中の結果がどのようになるかは未定義です。

        戻り値:
        索引付きメタ情報を走査するストリーム
        例外:
        IllegalStateException - 動作モードが編集モード
      • indexedMetas

        public final Stream<BmsMetaElement> indexedMetas​(String name)
        指定した名前の索引付きメタ情報を走査します。

        当メソッドは指定した名前の索引付きメタ情報が走査対象になります。 走査された索引付きメタ情報にデータが登録されているかどうかはBmsMetaElement.isContain()で調べてください。

        当該メタ情報のデータが0件の時にインデックスが-1のメタ情報要素を走査します。 この要素には値は格納されておらず、BmsMetaElement.getValue()等で値を取得しても当該メタ情報の初期値を返します。

        当メソッドは編集モード時には使用できません。使用すると例外をスローします。 また、走査を行っている最中に編集モードに遷移して索引付きメタ情報を更新した場合、走査中の結果がどのようになるかは未定義です。

        パラメータ:
        name - 走査対象の索引付きメタ情報の名前
        戻り値:
        索引付きメタ情報を走査するストリーム
        例外:
        IllegalStateException - 動作モードが編集モード
        NullPointerException - nameがnull
        IllegalArgumentException - nameに該当する索引付きメタ情報がBMS仕様に存在しない
      • getInitialBpm

        public final double getInitialBpm()
        初期BPMを取得します。

        初期BPMはBMSの共通仕様で、どのようなBMS仕様にも必ずメタ情報に存在します。このメソッドを呼び出すと getSingleMeta(String)を呼び出して初期BPMメタ情報から値を取得した時と同等の処理を行います。

        戻り値:
        初期BPM
      • setInitialBpm

        public final void setInitialBpm​(double bpm)
        初期BPMを設定します。

        初期BPMはBMSの共通仕様で、どのようなBMS仕様にも必ずメタ情報に存在します。このメソッドを呼び出すと setSingleMeta(String, Object)を呼び出して初期BPMメタ情報に値を設定した時と同等の 処理を行います。

        パラメータ:
        bpm - 初期BPM
        例外:
        IllegalStateException - 動作モードが編集モードではない
        IllegalArgumentException - bpmがBmsSpec.BPM_MIN未満、またはBmsSpec.BPM_MAX超過
      • getMinBpm

        public final double getMinBpm()
        最小BPMを取得します。

        この値は参照モードの場合のみ取得可能です。

        戻り値:
        最小BPM
        例外:
        IllegalStateException - 動作モードが参照モードではない
      • getMaxBpm

        public final double getMaxBpm()
        最大BPMを取得します。

        この値は参照モードの場合のみ取得可能です。

        戻り値:
        最大BPM
        例外:
        IllegalStateException - 動作モードが参照モードではない
      • getChangeBpmCount

        public final long getChangeBpmCount()
        BPM変化回数を取得します。

        この値は参照モードの場合のみ取得可能です。

        戻り値:
        BPM変化回数
        例外:
        IllegalStateException - 動作モードが参照モードではない
      • getStopCount

        public final long getStopCount()
        譜面停止回数を取得します。

        この値は参照モードの場合のみ取得可能です。

        戻り値:
        譜面停止回数
        例外:
        IllegalStateException - 動作モードが参照モードではない
      • beginEdit

        public final void beginEdit()
        BMSコンテンツを編集モードに変更します。

        このメソッドを呼び出すことでBMSコンテンツに対するデータの更新が行えるようになります。それと同時に、 いくつかのメソッドの呼び出しが制限されます。

        既に編集モードになっている状態でこのメソッドを呼び出してはいけません。

        例外:
        IllegalStateException - 動作モードが参照モードではない
      • endEdit

        public final void endEdit()
        BMSコンテンツを参照モードに変更します。

        このメソッドを呼び出すことでBMSコンテンツに対するデータの更新を終了します。編集モードで変更された メタ情報とノートから楽曲の時間とBPMに関する情報の再計算が行われ、呼び出し制限のかかっていたメソッドが 再び呼び出せるようになります。

        既に参照モードになっている状態でこのメソッドを呼び出してはいけません。

        例外:
        IllegalStateException - 動作モードが編集モードではない
      • edit

        public final void edit​(Runnable editor)
        BMSコンテンツを編集モードに変更し、指定したエディタ関数を実行します。

        当メソッドはbeginEdit()~編集~endEdit()の操作を簡略化するためのものです。 この一連の手順をメソッド内で実行します。

        エディタ関数内で例外がスローされると、それをスローする前に自動的にendEdit()を実行し編集を終了します。 ただしError系(OutOfMemoryError等)はキャッチされません。Error系がスローされた後でendEdit() が呼ばれても、複数の理由により処理中に再度Error系がスローされる可能性が高いためです。

        エディタ関数内でendEdit()を呼び出すと、当メソッド終了時には呼び出されません。

        当メソッドはBMSコンテンツに対して軽微な編集を1~2個行いたい場合に利用することを推奨します。 例えば、以下のような編集を行いたい場合に有効な選択肢となります。

        c.edit(() -> c.setSingleMeta("#TITLE", "My Love Song"));
        パラメータ:
        editor - 編集を行うエディタ関数
        例外:
        IllegalStateException - 動作モードが参照モードではない
        NullPointerException - editorがnull
      • isReferenceMode

        public final boolean isReferenceMode()
        現在の動作モードが「参照モード」であるかどうかを返します。
        戻り値:
        参照モードである場合true
        関連項目:
        beginEdit(), endEdit()
      • isEditMode

        public final boolean isEditMode()
        現在の動作モードが「編集モード」であるかどうかを返します。
        戻り値:
        編集モードである場合true
        関連項目:
        beginEdit(), endEdit()
      • onBeginEdit

        protected void onBeginEdit()
        beginEdit()が呼ばれ、動作モードが編集モードに遷移した時に呼ばれます。

        当メソッドは、編集モードに遷移した時、継承先のクラスにて特別な処理を行う場合のトリガとして使用することを想定しています。

        当メソッドの実行中は動作モードを変更できません。beginEdit(), endEdit()を呼び出しても何も起こりません。

      • onEndEdit

        protected void onEndEdit​(boolean isRecalculateTime)
        endEdit()が呼ばれ、動作モードが参照モードに遷移した時に呼ばれます。

        当メソッドは、参照モードに遷移した時、継承先のクラスにて特別な処理を行う場合のトリガとして使用することを想定しています。当メソッドが 呼ばれるのは、小節ごとの時間とBPMに関する情報の再計算が完了した後です。

        当メソッドの実行中は動作モードを変更できません。beginEdit(), endEdit()を呼び出しても何も起こりません。

        パラメータ:
        isRecalculateTime - 時間の再計算が発生したかどうか。
      • getMeasureValue

        public final <T> T getMeasureValue​(int channel,
                                           int measure)
        小節に設定された小節データを取得します。

        チャンネルインデックスには0を指定します。
        それ以外の処理はgetMeasureValue(int, int, int)と同じです。

        型パラメータ:
        T - 小節データのデータ型
        パラメータ:
        channel - チャンネル番号
        measure - 小節番号
        戻り値:
        小節データ
      • getMeasureValue

        public final <T> T getMeasureValue​(int channel,
                                           int index,
                                           int measure)
        小節に設定された小節データを取得します。

        指定するチャンネルのデータ型は値型でなければなりません。

        小節にデータが設定されていない場合、指定チャンネルの初期値を返します。 また、返された小節データの型は指定チャンネルのデータ型に対応したネイティブ型(実際のデータ型)になるので、ネイティブ型に キャストしてください。ネイティブ型についてはBmsTypeを参照してください。

        型パラメータ:
        T - 小節データのデータ型
        パラメータ:
        channel - チャンネル番号
        index - チャンネルインデックス
        measure - 小節番号
        戻り値:
        小節データ
        例外:
        IllegalArgumentException - BMS仕様にないチャンネル番号を指定した
        IndexOutOfBoundsException - チャンネルインデックスがマイナス値
        IndexOutOfBoundsException - 重複不許可のチャンネルで0以外のインデックスを指定した
        IllegalArgumentException - 指定チャンネルのデータ型が値型ではない
        IllegalArgumentException - 小節番号がBmsSpec.MEASURE_MIN未満またはBmsSpec.MEASURE_MAX超過
      • setMeasureValue

        public final void setMeasureValue​(int channel,
                                          int measure,
                                          Object value)
        小節に値を設定します。

        チャンネルインデックスには0を指定します。
        それ以外の処理はsetMeasureValue(int, int, int, Object)と同じです。

        パラメータ:
        channel - チャンネル番号
        measure - 小節番号
        value - 設定値
      • setMeasureValue

        public final void setMeasureValue​(int channel,
                                          int index,
                                          int measure,
                                          Object value)
        小節に値を設定します。

        設定値にnullを指定すると、その小節から値を削除します。

        複数のデータを保有可能なチャンネルに対してのみ、チャンネルインデックスに1以上の値を指定できます。 複数データに非対応のチャンネルには必ず0を指定してください。

        小節に値を設定する前に、設定値をチャンネルに規定されているデータ型に変換します。但し、チャンネルのデータ型が任意型の場合は 設定値の参照をそのまま設定します。

        当メソッドを使用して小節長を変更しようとする場合、その値はBMSライブラリで定める範囲内の値でなければなりません。 範囲外の値を指定すると例外がスローされます。

        パラメータ:
        channel - チャンネル番号
        index - チャンネルインデックス
        measure - 小節番号
        value - 設定値
        例外:
        IllegalStateException - 動作モードが編集モードではない
        IllegalArgumentException - BMS仕様にないチャンネル番号を指定した
        IndexOutOfBoundsException - チャンネルインデックスがマイナス値
        IndexOutOfBoundsException - データ重複不許可のチャンネルで0以外のインデックスを指定した
        IllegalArgumentException - 小節番号がBmsSpec.MEASURE_MIN未満またはBmsSpec.MEASURE_MAX超過
        IllegalArgumentException - チャンネルのデータ型が値型、任意型ではない
        ClassCastException - valueをチャンネルのデータ型に変換できない
        IllegalArgumentException - 小節長にBmsSpec.LENGTH_MIN未満またはBmsSpec.LENGTH_MAX超過の値を設定しようとした
      • containsMeasureValue

        public final boolean containsMeasureValue​(int channel,
                                                  int measure)
        小節に小節データが登録されているかどうかを返します。

        チャンネルインデックスには0を指定します。
        それ以外の処理はcontainsMeasureValue(int, int, int)と同じです。

        パラメータ:
        channel - チャンネル番号
        measure - 小節番号
        戻り値:
        指定小節に小節データが存在する場合true
      • containsMeasureValue

        public final boolean containsMeasureValue​(int channel,
                                                  int index,
                                                  int measure)
        小節に小節データが登録されているかどうかを返します。

        指定するチャンネルのデータ型は値型でなければなりません。

        パラメータ:
        channel - チャンネル番号
        index - チャンネルインデックス
        measure - 小節番号
        戻り値:
        指定小節に小節データが存在する場合true
        例外:
        IllegalArgumentException - BMS仕様にないチャンネル番号を指定した
        IndexOutOfBoundsException - チャンネルインデックスがマイナス値
        IndexOutOfBoundsException - 重複不許可のチャンネルで0以外のインデックスを指定した
        IllegalArgumentException - 指定チャンネルのデータ型が値型ではない
        IllegalArgumentException - 小節番号がBmsSpec.MEASURE_MIN未満またはBmsSpec.MEASURE_MAX超過
      • getNote

        public final BmsNote getNote​(int channel,
                                     BmsAt at)
        1個のノートを取得します。

        チャンネルインデックスには0を指定します。
        引数atから小節番号・刻み位置を取り出します。
        それ以外の処理はgetNote(int, int, int, double)と同じです。

        パラメータ:
        channel - チャンネル番号
        at - 楽曲位置
        戻り値:
        ノート
        例外:
        NullPointerException - atがnull
      • getNote

        public final BmsNote getNote​(int channel,
                                     int index,
                                     BmsAt at)
        1個のノートを取得します。

        引数atから小節番号・刻み位置を取り出します。
        それ以外の処理はgetNote(int, int, int, double)と同じです。

        パラメータ:
        channel - チャンネル番号
        index - チャンネルインデックス
        at - 楽曲位置
        戻り値:
        ノート
        例外:
        NullPointerException - atがnull
      • getNote

        public final BmsNote getNote​(int channel,
                                     int measure,
                                     double tick)
        1個のノートを取得します。

        チャンネルインデックスには0を指定します。
        それ以外の処理はgetNote(int, int, int, double)と同じです。

        パラメータ:
        channel - チャンネル番号
        measure - 小節番号
        tick - 小節の刻み位置
        戻り値:
        ノート
      • getNote

        public final BmsNote getNote​(int channel,
                                     int index,
                                     int measure,
                                     double tick)
        1個のノートを取得します。指定位置にノートが存在しない場合はnullを返します。
        パラメータ:
        channel - チャンネル番号
        index - チャンネルインデックス
        measure - 小節番号
        tick - 小節の刻み位置
        戻り値:
        ノート
        例外:
        IllegalArgumentException - BMS仕様にないチャンネル番号を指定した
        IndexOutOfBoundsException - チャンネルインデックスにマイナス値を指定した
        IndexOutOfBoundsException - 重複不許可のチャンネルで0以外のチャンネルインデックスを指定した
        IllegalArgumentException - 小節番号がBmsSpec.MEASURE_MIN未満またはBmsSpec.MEASURE_MAX超過
        IllegalArgumentException - 小節の刻み位置にマイナス値または当該小節の刻み数以上の値を指定した
        IllegalArgumentException - 指定チャンネルのデータ型が配列型ではない
      • getPreviousNote

        public final BmsNote getPreviousNote​(int channel,
                                             BmsAt at,
                                             boolean inclusiveFrom)
        指定位置から後退方向に存在する最初のノートを取得します。

        チャンネルインデックスには0を指定します。
        引数atから小節番号・刻み位置を取り出します。
        それ以外の処理はgetPreviousNote(int, int, int, double, boolean)と同じです。

        パラメータ:
        channel - チャンネル番号
        at - 楽曲位置
        inclusiveFrom - 指定位置を検索対象に含めるかどうか
        戻り値:
        見つかったノート
        例外:
        NullPointerException - atがnull
      • getPreviousNote

        public final BmsNote getPreviousNote​(int channel,
                                             int index,
                                             BmsAt at,
                                             boolean inclusiveFrom)
        指定位置から後退方向に存在する最初のノートを取得します。

        引数atから小節番号・刻み位置を取り出します。
        それ以外の処理はgetPreviousNote(int, int, int, double, boolean)と同じです。

        パラメータ:
        channel - チャンネル番号
        index - チャンネルインデックス
        at - 楽曲位置
        inclusiveFrom - 指定位置を検索対象に含めるかどうか
        戻り値:
        見つかったノート
        例外:
        NullPointerException - atがnull
      • getPreviousNote

        public final BmsNote getPreviousNote​(int channel,
                                             int measure,
                                             double tick,
                                             boolean inclusiveFrom)
        指定位置から後退方向に存在する最初のノートを取得します。

        チャンネルインデックスには0を指定します。
        それ以外の処理はgetPreviousNote(int, int, int, double, boolean)と同じです。

        パラメータ:
        channel - チャンネル番号
        measure - 小節番号
        tick - 小節の刻み位置
        inclusiveFrom - 指定位置を検索対象に含めるかどうか
        戻り値:
        見つかったノート
      • getPreviousNote

        public final BmsNote getPreviousNote​(int channel,
                                             int index,
                                             int measure,
                                             double tick,
                                             boolean inclusiveFrom)
        指定位置から後退方向に存在する最初のノートを取得します。存在しない場合はnullを返します。
        パラメータ:
        channel - チャンネル番号
        index - チャンネルインデックス
        measure - 小節番号
        tick - 小節の刻み位置
        inclusiveFrom - 指定位置を検索対象に含めるかどうか
        戻り値:
        見つかったノート
        例外:
        IllegalArgumentException - BMS仕様にないチャンネル番号を指定した
        IndexOutOfBoundsException - チャンネルインデックスにマイナス値を指定した
        IndexOutOfBoundsException - 重複不許可のチャンネルで0以外のチャンネルインデックスを指定した
        IllegalArgumentException - 小節番号がBmsSpec.MEASURE_MIN未満または小節数以上
        IllegalArgumentException - 小節の刻み位置にマイナス値または当該小節の刻み数以上を指定した
        IllegalArgumentException - 指定チャンネルのデータ型が配列型ではない
      • getNextNote

        public final BmsNote getNextNote​(int channel,
                                         BmsAt at,
                                         boolean inclusiveFrom)
        指定位置から進行方向に存在する最初のノートを取得します。

        チャンネルインデックスには0を指定します。
        引数atから小節番号・刻み位置を取り出します。
        それ以外の処理はgetNextNote(int, int, int, double, boolean)と同じです。

        パラメータ:
        channel - チャンネル番号
        at - 楽曲位置
        inclusiveFrom - 指定位置を検索対象に含めるかどうか
        戻り値:
        見つかったノート
        例外:
        NullPointerException - atがnull
      • getNextNote

        public final BmsNote getNextNote​(int channel,
                                         int index,
                                         BmsAt at,
                                         boolean inclusiveFrom)
        指定位置から進行方向に存在する最初のノートを取得します。

        引数atから小節番号・刻み位置を取り出します。
        それ以外の処理はgetNextNote(int, int, int, double, boolean)と同じです。

        パラメータ:
        channel - チャンネル番号
        index - チャンネルインデックス
        at - 楽曲位置
        inclusiveFrom - 指定位置を検索対象に含めるかどうか
        戻り値:
        見つかったノート
        例外:
        NullPointerException - atがnull
      • getNextNote

        public final BmsNote getNextNote​(int channel,
                                         int measure,
                                         double tick,
                                         boolean inclusiveFrom)
        指定位置から進行方向に存在する最初のノートを取得します。

        チャンネルインデックスには0を指定します。
        それ以外の処理はgetNextNote(int, int, int, double, boolean)と同じです。

        パラメータ:
        channel - チャンネル番号
        measure - 小節番号
        tick - 小節の刻み位置
        inclusiveFrom - 指定位置を検索対象に含めるかどうか
        戻り値:
        見つかったノート
      • getNextNote

        public final BmsNote getNextNote​(int channel,
                                         int index,
                                         int measure,
                                         double tick,
                                         boolean inclusiveFrom)
        指定位置から進行方向に存在する最初のノートを取得します。存在しない場合はnullを返します。
        パラメータ:
        channel - チャンネル番号
        index - チャンネルインデックス
        measure - 小節番号
        tick - 小節の刻み位置
        inclusiveFrom - 指定位置を検索対象に含めるかどうか
        戻り値:
        見つかったノート
        例外:
        IllegalArgumentException - BMS仕様にないチャンネル番号を指定した
        IndexOutOfBoundsException - チャンネルインデックスにマイナス値を指定した
        IndexOutOfBoundsException - 重複不許可のチャンネルで0以外のチャンネルインデックスを指定した
        IllegalArgumentException - 小節番号がBmsSpec.MEASURE_MIN未満または小節数以上
        IllegalArgumentException - 小節の刻み位置にマイナス値または当該小節の刻み数以上を指定した
        IllegalArgumentException - 指定チャンネルのデータ型が配列型ではない
      • getResolvedNoteValue

        public final Object getResolvedNoteValue​(BmsNote note)
        指定位置のノートの値から参照メタ情報のデータを照合し、照合結果を返します。

        引数noteからチャンネル番号・インデックス、小節番号・刻み位置を取り出します。
        それ以外の処理はgetResolvedNoteValue(int, int, int, double)と同じです。

        パラメータ:
        note - ノート
        戻り値:
        参照先メタ情報から取り出したデータ
        例外:
        NullPointerException - noteがnull
      • getResolvedNoteValue

        public final Object getResolvedNoteValue​(int channel,
                                                 BmsAt at)
        指定位置のノートの値から参照メタ情報のデータを照合し、照合結果を返します。

        チャンネルインデックスには0を指定します
        引数atから小節番号・刻み位置を取り出します。
        それ以外の処理はgetResolvedNoteValue(int, int, int, double)と同じです。

        パラメータ:
        channel - チャンネル番号
        at - 楽曲位置
        戻り値:
        参照先メタ情報から取り出したデータ
        例外:
        NullPointerException - atがnull
      • getResolvedNoteValue

        public final Object getResolvedNoteValue​(int channel,
                                                 int index,
                                                 BmsAt at)
        指定位置のノートの値から参照メタ情報のデータを照合し、照合結果を返します。

        引数atから小節番号・刻み位置を取り出します。
        それ以外の処理はgetResolvedNoteValue(int, int, int, double)と同じです。

        パラメータ:
        channel - チャンネル番号
        index - チャンネルインデックス
        at - 楽曲位置
        戻り値:
        参照先メタ情報から取り出したデータ
        例外:
        NullPointerException - atがnull
      • getResolvedNoteValue

        public final Object getResolvedNoteValue​(int channel,
                                                 int measure,
                                                 double tick)
        指定位置のノートの値から参照メタ情報のデータを照合し、照合結果を返します。

        チャンネルインデックスには0を指定します
        それ以外の処理はgetResolvedNoteValue(int, int, int, double)と同じです。

        パラメータ:
        channel - チャンネル番号
        measure - 小節番号
        tick - 小節の刻み位置
        戻り値:
        参照先メタ情報から取り出したデータ
      • getResolvedNoteValue

        public final Object getResolvedNoteValue​(int channel,
                                                 int index,
                                                 int measure,
                                                 double tick)
        指定位置のノートの値から参照メタ情報のデータを照合し、照合結果を返します。

        参照先メタ情報のないチャンネルを指定した場合、そのノートの値をLong型に変換して返します。

        参照先メタ情報のインデックス(=ノートの値)に割り当てられたデータが存在しない場合、そのメタ情報の 初期値を返します。

        パラメータ:
        channel - チャンネル番号
        index - チャンネルインデックス
        measure - 小節番号
        tick - 小節の刻み位置
        戻り値:
        参照先メタ情報から取り出したデータ
        例外:
        IllegalArgumentException - BMS仕様にないチャンネル番号を指定した
        IndexOutOfBoundsException - チャンネルインデックスがマイナス値
        IndexOutOfBoundsException - 重複不許可のチャンネルで0以外のチャンネルインデックスを指定した
        IllegalArgumentException - 小節番号がBmsSpec.MEASURE_MIN未満またはBmsSpec.MEASURE_MAX超過
        IllegalArgumentException - マイナス値または当該小節の刻み数以上の刻み位置を指定した
        IllegalArgumentException - 指定チャンネルのデータ型が配列型ではない
      • pointOf

        public final BmsNote pointOf​(BmsAt atFrom,
                                     Predicate<BmsNote> judge)
        条件に該当するノートを検索し、最初に見つかったノートを返します。

        引数atFromから検索開始位置の小節番号・刻み位置を取り出します。
        それ以外の処理はpointOf(int, double, Predicate)と同じです。

        パラメータ:
        atFrom - 楽曲位置
        judge - 条件一致判定を行うテスター
        戻り値:
        最初に条件に一致したノート。見つからなかった場合はnull。
        例外:
        NullPointerException - atFromがnull
      • pointOf

        public final BmsNote pointOf​(int measureFrom,
                                     double tickFrom,
                                     Predicate<BmsNote> judge)
        条件に該当するノートを検索し、最初に見つかったノートを返します。

        検索は、原点の楽曲位置から進行方向に向かって行われます。

        パラメータ:
        measureFrom - 検索開始位置を示す小節番号
        tickFrom - 検索開始位置を示す刻み位置
        judge - 条件一致判定を行うテスター
        戻り値:
        最初に条件に一致したノート。見つからなかった場合はnull。
        例外:
        IllegalArgumentException - 検索開始位置の小節番号にノート・小節データが存在し得ない値を指定した
        IllegalArgumentException - 検索開始位置の刻み位置にマイナス値または当該小節の刻み数以上の値を指定した
        NullPointerException - judgeがnull
      • enumNotes

        public final void enumNotes​(BmsAt at,
                                    Consumer<BmsNote> enumNote)
        指定楽曲位置のノートを列挙します。

        引数atから小節番号、刻み位置を取り出します。
        それ以外の処理はenumNotes(int, double, Consumer)と同じです。

        パラメータ:
        at - 楽曲位置
        enumNote - ノートを通知する関数
        例外:
        NullPointerException - atがnull
      • enumNotes

        public final void enumNotes​(int measure,
                                    double tick,
                                    Consumer<BmsNote> enumNote)
        指定楽曲位置のノートを列挙します。

        当メソッドは指定された小節番号、刻み位置のノートをピンポイントで列挙します。楽曲位置が少しでもずれている ノートは列挙対象とはなりません。範囲列挙を行いたい場合は他のオーバーロードメソッドを使用してください。

        パラメータ:
        measure - 列挙対象とする小節番号
        tick - 列挙対象とする刻み位置
        enumNote - ノートを通知する関数
        例外:
        IllegalArgumentException - measureがマイナス値または小節数以上
        IllegalArgumentException - tickがマイナス値または当該小節の刻み数以上
        NullPointerException - enumNoteがnull
      • enumNotes

        public final void enumNotes​(int measureBegin,
                                    double tickBegin,
                                    int measureEnd,
                                    double tickEnd,
                                    Consumer<BmsNote> enumNote)
        指定範囲のノートを列挙します。

        全チャンネルを列挙対象とします。
        それ以外の処理はenumNotes(int, int, int, double, int, double, Consumer)と同じです。

        パラメータ:
        measureBegin - 列挙範囲を示す最小の小節番号
        tickBegin - 列挙範囲を示す最小の小節番号の刻み位置
        measureEnd - 列挙範囲を示す最大の小節番号
        tickEnd - 列挙範囲を示す最大の小節番号の刻み位置(この位置を含まない)
        enumNote - ノートを通知する関数
      • enumNotes

        public final void enumNotes​(BmsAt atBegin,
                                    BmsAt atEnd,
                                    Consumer<BmsNote> enumNote)
        指定範囲のノートを列挙します。

        全チャンネルを列挙対象とします。
        引数atBegin, atEndから小節番号・刻み位置を取り出します。
        それ以外の処理はenumNotes(int, int, int, double, int, double, Consumer)と同じです。

        パラメータ:
        atBegin - 列挙範囲を示す最小の楽曲位置
        atEnd - 列挙範囲を示す最大の楽曲位置(この位置を含まない)
        enumNote - ノートを通知する関数
        例外:
        NullPointerException - atBeginがnull
        NullPointerException - atEndがnull
      • enumNotes

        public final void enumNotes​(int channelBegin,
                                    int channelEnd,
                                    BmsAt atBegin,
                                    BmsAt atEnd,
                                    Consumer<BmsNote> enumNote)
        指定範囲のノートを列挙します。

        引数atBegin, atEndから小節番号・刻み位置を取り出します。
        それ以外の処理はenumNotes(int, int, int, double, int, double, Consumer)と同じです。

        パラメータ:
        channelBegin - 列挙範囲を示す最小のチャンネル番号
        channelEnd - 列挙範囲を示す最大のチャンネル番号(この番号を含まない)
        atBegin - 列挙範囲を示す最小の楽曲位置
        atEnd - 列挙範囲を示す最大の楽曲位置(この位置を含まない)
        enumNote - ノートを通知する関数
        例外:
        NullPointerException - atBeginがnull
        NullPointerException - atEndがnull
      • enumNotes

        public final void enumNotes​(int channelBegin,
                                    int channelEnd,
                                    int measureBegin,
                                    double tickBegin,
                                    int measureEnd,
                                    double tickEnd,
                                    Consumer<BmsNote> enumNote)
        指定範囲のノートを列挙します。

        見つかったノートは指定の関数に通知されます。

        小節数が0(ノートが全く追加されていない)のコンテンツに対して当メソッドを呼び出すと何も行われません。

        パラメータ:
        channelBegin - 列挙範囲を示す最小のチャンネル番号
        channelEnd - 列挙範囲を示す最大のチャンネル番号(この番号を含まない)
        measureBegin - 列挙範囲を示す最小の小節番号
        tickBegin - 列挙範囲を示す最小の小節番号の刻み位置
        measureEnd - 列挙範囲を示す最大の小節番号
        tickEnd - 列挙範囲を示す最大の小節番号の刻み位置(この位置を含まない)
        enumNote - ノートを通知する関数
        例外:
        IllegalArgumentException - channelBeginに小節データ・ノートを登録できないチャンネル番号を指定した
        IllegalArgumentException - channelEndにBmsSpec.CHANNEL_MAXを超える値を指定した
        IllegalArgumentException - measureBeginにBmsSpec.MEASURE_MIN未満またはBmsSpec.MEASURE_MAX超過の値を指定した
        IllegalArgumentException - tickBeginにマイナス値または当該小節の刻み数以上の値を指定した
        IllegalArgumentException - measureEndにBmsSpec.MEASURE_MIN未満またはBmsSpec.MEASURE_MAX超過の値を指定した
        IllegalArgumentException - tickEndにマイナス値、当該小節の刻み数以上、または小節番号==小節数の時に0以外の値を指定した
        NullPointerException - enumNoteがnull
      • listNotes

        public final List<BmsNote> listNotes​(BmsAt at,
                                             Predicate<BmsNote> isCollect)
        複数のノートをリスト形式で取得します。

        引数atから小節番号、刻み位置を取り出します。
        それ以外の処理はlistNotes(int, double, Predicate)と同じです。

        パラメータ:
        at - 楽曲位置
        isCollect - 取得有無を決定するテスター
        戻り値:
        ノートのリスト
        例外:
        NullPointerException - atがnull
      • listNotes

        public final List<BmsNote> listNotes​(int measure,
                                             double tick,
                                             Predicate<BmsNote> isCollect)
        複数のノートをリスト形式で取得します。

        当メソッドは指定された小節番号、刻み位置のノートをピンポイントで取得します。楽曲位置が少しでもずれている ノートは取得対象とはなりません。範囲取得を行いたい場合は他のオーバーロードメソッドを使用してください。

        ノートは指定のテスターに通知されます。テスターの戻り値にfalseを指定すると取得対象から除外できます。

        パラメータ:
        measure - 取得対象とする小節番号
        tick - 取得対象とする刻み位置
        isCollect - 取得有無を決定するテスター
        戻り値:
        ノートのリスト
        例外:
        IllegalArgumentException - measureがマイナス値または小節数以上
        IllegalArgumentException - tickがマイナス値または当該小節の刻み数以上
        NullPointerException - isCollectがnull
      • listNotes

        public final List<BmsNote> listNotes​(BmsAt atBegin,
                                             BmsAt atEnd,
                                             Predicate<BmsNote> isCollect)
        複数のノートをリスト形式で取得します。

        全チャンネルを取得対象とします。
        引数atBegin, atEndから小節番号・刻み位置を取り出します。
        それ以外の処理はlistNotes(int, int, int, double, int, double, Predicate)と同じです。

        パラメータ:
        atBegin - 取得対象範囲を示す最小の楽曲位置
        atEnd - 取得対象範囲を示す最大の楽曲位置(この位置を含まない)
        isCollect - 取得有無を決定するテスター
        戻り値:
        ノートのリスト
        例外:
        NullPointerException - atBeginがnull
        NullPointerException - atEndがnull
      • listNotes

        public final List<BmsNote> listNotes​(int channelBegin,
                                             int channelEnd,
                                             BmsAt atBegin,
                                             BmsAt atEnd,
                                             Predicate<BmsNote> isCollect)
        複数のノートをリスト形式で取得します。

        引数atBegin, atEndから小節番号・刻み位置を取り出します。
        それ以外の処理はlistNotes(int, int, int, double, int, double, Predicate)と同じです。

        パラメータ:
        channelBegin - 取得対象範囲を示す最小のチャンネル番号
        channelEnd - 取得対象範囲を示す最大のチャンネル番号(この番号を含まない)
        atBegin - 取得対象範囲を示す最小の楽曲位置
        atEnd - 取得対象範囲を示す最大の楽曲位置(この位置を含まない)
        isCollect - 取得有無を決定するテスター
        戻り値:
        ノートのリスト
        例外:
        NullPointerException - atBeginがnull
        NullPointerException - atEndがnull
      • listNotes

        public final List<BmsNote> listNotes​(int measureBegin,
                                             double tickBegin,
                                             int measureEnd,
                                             double tickEnd,
                                             Predicate<BmsNote> isCollect)
        複数のノートをリスト形式で取得します。

        全チャンネルを取得対象とします。
        それ以外の処理はlistNotes(int, int, int, double, int, double, Predicate)と同じです。

        パラメータ:
        measureBegin - 取得対象範囲を示す最小の小節番号
        tickBegin - 取得対象範囲を示す最小の小節番号の刻み位置
        measureEnd - 取得対象範囲を示す最大の小節番号
        tickEnd - 取得対象範囲を示す最大の小節番号の刻み位置(この位置を含まない)
        isCollect - 取得有無を決定するテスター
        戻り値:
        ノートのリスト
      • listNotes

        public final List<BmsNote> listNotes​(int channelBegin,
                                             int channelEnd,
                                             int measureBegin,
                                             double tickBegin,
                                             int measureEnd,
                                             double tickEnd,
                                             Predicate<BmsNote> isCollect)
        複数のノートをリスト形式で取得します。

        ノートは指定のテスターに通知されます。テスターの戻り値にfalseを指定すると取得対象から除外できます。

        パラメータ:
        channelBegin - 取得対象範囲を示す最小のチャンネル番号
        channelEnd - 取得対象範囲を示す最大のチャンネル番号(この番号を含まない)
        measureBegin - 取得対象範囲を示す最小の小節番号
        tickBegin - 取得対象範囲を示す最小の小節番号の刻み位置
        measureEnd - 取得対象範囲を示す最大の小節番号
        tickEnd - 取得対象範囲を示す最大の小節番号の刻み位置(この位置を含まない)
        isCollect - 取得有無を決定するテスター
        戻り値:
        ノートのリスト
        例外:
        IllegalArgumentException - channelBeginにBmsSpec.CHANNEL_MIN未満またはBmsSpec.CHANNEL_MAXを超える値を指定した
        IllegalArgumentException - channelEndにBmsSpec.CHANNEL_MIN未満またはBmsSpec.CHANNEL_MAX+1を超える値を指定した
        IllegalArgumentException - measureBeginにBmsSpec.MEASURE_MIN未満またはBmsSpec.MEASURE_MAX超過の値を指定した
        IllegalArgumentException - tickBeginにマイナス値または当該小節の刻み数以上の値を指定した
        IllegalArgumentException - measureEndにBmsSpec.MEASURE_MIN未満またはBmsSpec.MEASURE_MAX超過の値を指定した
        IllegalArgumentException - tickEndにマイナス値、当該小節の刻み数以上、または小節番号==小節数の時に0以外の値を指定した
        NullPointerException - isCollectがnull
      • countNotes

        public final int countNotes​(Predicate<BmsNote> isCounting)
        条件に一致するノートの数を数えます。

        全ノートをカウント対象にします。
        それ以外の処理はcountNotes(int, int, int, double, int, double, Predicate)と同じです。

        パラメータ:
        isCounting - カウント有無を決定するテスター
        戻り値:
        条件に一致したノートの数
      • countNotes

        public final int countNotes​(BmsAt at,
                                    Predicate<BmsNote> isCounting)
        指定楽曲位置のノートの数を数えます。

        引数atから小節番号、刻み位置を取り出します。
        それ以外の処理はcountNotes(int, double, Predicate)と同じです。

        パラメータ:
        at - 楽曲位置
        isCounting - カウント有無を決定するテスター
        戻り値:
        条件に一致したノートの数
        例外:
        NullPointerException - atがnull
      • countNotes

        public final int countNotes​(int measure,
                                    double tick,
                                    Predicate<BmsNote> isCounting)
        指定楽曲位置のノートの数を数えます。

        ノートは指定のテスターに通知されます。テスターでtrueを返すとそのノートがカウント対象になります。

        パラメータ:
        measure - カウント対象とする小節番号
        tick - カウント対象とする刻み位置
        isCounting - カウント有無を決定するテスター
        戻り値:
        条件に一致したノートの数
        例外:
        IllegalArgumentException - measureがマイナス値または小節数以上
        IllegalArgumentException - tickがマイナス値または当該小節の刻み数以上
        NullPointerException - isCountingがnull
      • countNotes

        public final int countNotes​(BmsAt atBegin,
                                    BmsAt atEnd,
                                    Predicate<BmsNote> isCounting)
        条件に一致するノートの数を数えます。

        全チャンネルをカウント対象にします。
        引数atBegin, atEndから小節番号・刻み位置を取り出します。
        それ以外の処理はcountNotes(int, int, int, double, int, double, Predicate)と同じです。

        パラメータ:
        atBegin - カウント範囲を示す最小の楽曲位置
        atEnd - カウント範囲を示す最大の楽曲位置(この位置を含まない)
        isCounting - カウント有無を決定するテスター
        戻り値:
        条件に一致したノートの数
        例外:
        NullPointerException - atBeginがnull
        NullPointerException - atEndがnull
      • countNotes

        public final int countNotes​(int channelBegin,
                                    int channelEnd,
                                    BmsAt atBegin,
                                    BmsAt atEnd,
                                    Predicate<BmsNote> isCounting)
        条件に一致するノートの数を数えます。

        引数atBegin, atEndから小節番号・刻み位置を取り出します。
        それ以外の処理はcountNotes(int, int, int, double, int, double, Predicate)と同じです。

        パラメータ:
        channelBegin - カウント範囲を示す最小のチャンネル番号
        channelEnd - カウント範囲を示す最大のチャンネル番号(この番号を含まない)
        atBegin - カウント範囲を示す最小の楽曲位置
        atEnd - カウント範囲を示す最大の楽曲位置(この位置を含まない)
        isCounting - カウント有無を決定するテスター
        戻り値:
        条件に一致したノートの数
        例外:
        NullPointerException - atBeginがnull
        NullPointerException - atEndがnull
      • countNotes

        public final int countNotes​(int measureBegin,
                                    double tickBegin,
                                    int measureEnd,
                                    double tickEnd,
                                    Predicate<BmsNote> isCounting)
        条件に一致するノートの数を数えます。

        全チャンネルをカウント対象にします。
        それ以外の処理はcountNotes(int, int, int, double, int, double, Predicate)と同じです。

        パラメータ:
        measureBegin - カウント範囲を示す最小の小節番号
        tickBegin - カウント範囲を示す最小の小節番号の刻み位置
        measureEnd - カウント範囲を示す最大の小節番号
        tickEnd - カウント範囲を示す最大の小節番号の刻み位置(この位置を含まない)
        isCounting - カウント有無を決定するテスター
        戻り値:
        条件に一致したノートの数
      • countNotes

        public final int countNotes​(int channelBegin,
                                    int channelEnd,
                                    int measureBegin,
                                    double tickBegin,
                                    int measureEnd,
                                    double tickEnd,
                                    Predicate<BmsNote> isCounting)
        条件に一致するノートの数を数えます。

        ノートは指定のテスターに通知されます。テスターでtrueを返すとそのノートがカウント対象になります。

        パラメータ:
        channelBegin - カウント範囲を示す最小のチャンネル番号
        channelEnd - カウント範囲を示す最大のチャンネル番号(この番号を含まない)
        measureBegin - カウント範囲を示す最小の小節番号
        tickBegin - カウント範囲を示す最小の小節番号の刻み位置
        measureEnd - カウント範囲を示す最大の小節番号
        tickEnd - カウント範囲を示す最大の小節番号の刻み位置(この位置を含まない)
        isCounting - カウント有無を決定するテスター
        戻り値:
        条件に一致したノートの数
        例外:
        IllegalArgumentException - channelBeginにBmsSpec.CHANNEL_MIN未満またはBmsSpec.CHANNEL_MAXを超える値を指定した
        IllegalArgumentException - channelEndにBmsSpec.CHANNEL_MIN未満またはBmsSpec.CHANNEL_MAX+1を超える値を指定した
        IllegalArgumentException - measureBeginにBmsSpec.MEASURE_MIN未満またはBmsSpec.MEASURE_MAX超過の値を指定した
        IllegalArgumentException - tickBeginにマイナス値または当該小節の刻み数以上の値を指定した
        IllegalArgumentException - measureEndにBmsSpec.MEASURE_MIN未満またはBmsSpec.MEASURE_MAX超過の値を指定した
        IllegalArgumentException - tickEndにマイナス値、当該小節の刻み数以上、または小節番号==小節数の時に0以外の値を指定した
        NullPointerException - isCountingがnull
      • putNote

        public final BmsNote putNote​(int channel,
                                     int measure,
                                     double tick,
                                     int value)
        譜面に新しいノートを追加します。

        チャンネルインデックスは0固定です。
        ノートオブジェクトはBmsNoteを使用します。
        それ以外の処理はputNote(int, int, int, double, int, Supplier)と同じです。

        パラメータ:
        channel - チャンネル番号
        measure - 小節番号
        tick - 小節の刻み位置
        value - ノートの値
        戻り値:
        譜面に追加された新しいノートオブジェクト
        関連項目:
        putNote(int, int, int, double, int, Supplier)
      • putNote

        public final BmsNote putNote​(int channel,
                                     BmsAt at,
                                     int value)
        譜面に新しいノートを追加します。

        チャンネルインデックスは0固定です。
        引数atから小節番号・小節の刻み位置を取り出します。
        ノートオブジェクトはBmsNoteを使用します。
        それ以外の処理はputNote(int, int, int, double, int, Supplier)と同じです。

        パラメータ:
        channel - チャンネル番号
        at - 楽曲位置
        value - ノートの値
        戻り値:
        譜面に追加された新しいノートオブジェクト
        関連項目:
        putNote(int, int, int, double, int, Supplier)
      • putNote

        public final BmsNote putNote​(int channel,
                                     int index,
                                     int measure,
                                     double tick,
                                     int value)
        譜面に新しいノートを追加します。

        ノートオブジェクトはBmsNoteを使用します。
        それ以外の処理はputNote(int, int, int, double, int, Supplier)と同じです。

        パラメータ:
        channel - チャンネル番号
        index - チャンネルインデックス
        measure - 小節番号
        tick - 小節の刻み位置
        value - ノートの値
        戻り値:
        譜面に追加された新しいノートオブジェクト
        関連項目:
        putNote(int, int, int, double, int, Supplier)
      • putNote

        public final BmsNote putNote​(int channel,
                                     int index,
                                     BmsAt at,
                                     int value)
        譜面に新しいノートを追加します。

        引数atから小節番号・小節の刻み位置を取り出します。
        ノートオブジェクトはBmsNoteを使用します。
        それ以外の処理はputNote(int, int, int, double, int, Supplier)と同じです。

        パラメータ:
        channel - チャンネル番号
        index - チャンネルインデックス
        at - 楽曲位置
        value - ノートの値
        戻り値:
        譜面に追加された新しいノートオブジェクト
        関連項目:
        putNote(int, int, int, double, int, Supplier)
      • putNote

        public final <T extends BmsNote> T putNote​(int channel,
                                                   int measure,
                                                   double tick,
                                                   int value,
                                                   Supplier<BmsNote> createNote)
        譜面に新しいノートを追加します。

        チャンネルインデックスは0固定です。
        それ以外の処理はputNote(int, int, int, double, int, Supplier)と同じです。

        型パラメータ:
        T - 追加するノートのデータ型
        パラメータ:
        channel - チャンネル番号
        measure - 小節番号
        tick - 小節の刻み位置
        value - ノートの値
        createNote - ノートオブジェクトを生成する関数
        戻り値:
        譜面に追加された新しいノートオブジェクト
        関連項目:
        putNote(int, int, int, double, int, Supplier)
      • putNote

        public final <T extends BmsNote> T putNote​(int channel,
                                                   BmsAt at,
                                                   int value,
                                                   Supplier<BmsNote> createNote)
        譜面に新しいノートを追加します。

        チャンネルインデックスは0固定です。
        引数atから小節番号・小節の刻み位置を取り出します。
        それ以外の処理はputNote(int, int, int, double, int, Supplier)と同じです。

        型パラメータ:
        T - 追加するノートのデータ型
        パラメータ:
        channel - チャンネル番号
        at - 楽曲位置
        value - ノートの値
        createNote - ノートオブジェクトを生成する関数
        戻り値:
        譜面に追加された新しいノートオブジェクト
        関連項目:
        putNote(int, int, int, double, int, Supplier)
      • putNote

        public final <T extends BmsNote> T putNote​(int channel,
                                                   int index,
                                                   BmsAt at,
                                                   int value,
                                                   Supplier<BmsNote> createNote)
        譜面に新しいノートを追加します。

        引数atから小節番号・小節の刻み位置を取り出します。
        それ以外の処理はputNote(int, int, int, double, int, Supplier)と同じです。

        型パラメータ:
        T - 追加するノートのデータ型
        パラメータ:
        channel - チャンネル番号
        index - チャンネルインデックス
        at - 楽曲位置
        value - ノートの値
        createNote - ノートオブジェクトを生成する関数
        戻り値:
        譜面に追加された新しいノートオブジェクト
        関連項目:
        putNote(int, int, int, double, int, Supplier)
      • putNote

        public final <T extends BmsNote> T putNote​(int channel,
                                                   int index,
                                                   int measure,
                                                   double tick,
                                                   int value,
                                                   Supplier<BmsNote> createNote)
        譜面に新しいノートを追加します。

        指定した場所に既にノートが存在する場合は新しいノートで上書きします。

        ノートを追加できるチャンネルは、データ型が配列型であるチャンネルのみです。

        複数のデータを保有可能なチャンネルに対してのみ、チャンネルインデックスに1以上の値を指定できます。 複数データに非対応のチャンネルには必ず0を指定してください。

        ノートに拡張データを持たせる場合は、createNote関数からBmsNoteを継承したオブジェクトを返し、 そのオブジェクトに対して拡張データを設定してください。オブジェクトのインスタンスはBMSコンテンツ内部でも 管理されるようになります。

        ノートに設定可能な値の範囲はBmsSpec.VALUE_MINBmsSpec.VALUE_MAXになります。 これは、チャンネルのデータ型がBmsType.ARRAY16BmsType.ARRAY36のどちらであっても同様です。 ただし、それぞれのデータ型で以下の範囲外の値を持つノートが1個でも存在すると、 BMSコンテンツを標準フォーマットで出力できなくなります。

        また、ノートの値に0を指定することはできません。値0は「ノートとして存在しない」ことを示す特殊な値として扱われます。 そのためBMSライブラリでは、明確に存在するノートに対して値0を設定することを許可していません。

        型パラメータ:
        T - 追加するノートのデータ型
        パラメータ:
        channel - チャンネル番号
        index - チャンネルインデックス
        measure - 小節番号
        tick - 小節の刻み位置
        value - ノートの値
        createNote - ノートオブジェクトを生成する関数
        戻り値:
        譜面に追加された新しいノートオブジェクト
        例外:
        IllegalStateException - 動作モードが編集モードではない
        IllegalArgumentException - BMS仕様にないチャンネル番号を指定した
        IndexOutOfBoundsException - チャンネルインデックスがマイナス値
        IndexOutOfBoundsException - 重複不許可のチャンネルで0以外のチャンネルインデックスを指定した
        IllegalArgumentException - 小節番号がBmsSpec.MEASURE_MIN未満またはBmsSpec.MEASURE_MAX超過
        IllegalArgumentException - 小節の刻み位置がマイナス値または当該小節の刻み数以上
        IllegalArgumentException - 指定チャンネルのデータ型が配列型ではない
        IllegalArgumentException - ノートの値に0を指定した
        NullPointerException - createNoteがnull
        IllegalArgumentException - createNoteの結果がnull
      • removeNote

        public final boolean removeNote​(int channel,
                                        int measure,
                                        double tick)
        ノートを消去します。

        チャンネルインデックスには0を指定します。
        それ以外の処理はremoveNote(int, int, int, double)と同じです。

        パラメータ:
        channel - チャンネル番号
        measure - 小節番号
        tick - 小節の刻み位置
        戻り値:
        指定位置にノートが存在し消去した場合はtrue、それ以外はfalse。
      • removeNote

        public final boolean removeNote​(int channel,
                                        BmsAt at)
        ノートを消去します。

        チャンネルインデックスには0を指定します。
        引数atから小節番号・小節の刻み位置を取り出します。
        それ以外の処理はremoveNote(int, int, int, double)と同じです。

        パラメータ:
        channel - チャンネル番号
        at - 楽曲位置
        戻り値:
        指定位置にノートが存在し消去した場合はtrue、それ以外はfalse。
        例外:
        NullPointerException - atがnull
      • removeNote

        public final boolean removeNote​(int channel,
                                        int index,
                                        BmsAt at)
        ノートを消去します。

        引数atから小節番号・小節の刻み位置を取り出します。
        それ以外の処理はremoveNote(int, int, int, double)と同じです。

        パラメータ:
        channel - チャンネル番号
        index - チャンネルインデックス
        at - 楽曲位置
        戻り値:
        指定位置にノートが存在し消去した場合はtrue、それ以外はfalse。
        例外:
        NullPointerException - atがnull
      • removeNote

        public final boolean removeNote​(int channel,
                                        int index,
                                        int measure,
                                        double tick)
        ノートを消去します。

        指定できるチャンネルは、データ型が配列型であるチャンネルのみです。

        複数のデータを保有可能なチャンネルに対してのみ、チャンネルインデックスに1以上の値を指定できます。 複数データに非対応のチャンネルには必ず0を指定してください。

        パラメータ:
        channel - チャンネル番号
        index - チャンネルインデックス
        measure - 小節番号
        tick - 小節の刻み位置
        戻り値:
        指定位置にノートが存在し消去した場合はtrue、それ以外はfalse。
        例外:
        IllegalStateException - 動作モードが編集モードではない
        IllegalArgumentException - BMS仕様にないチャンネル番号を指定した
        IndexOutOfBoundsException - チャンネルインデックスがマイナス値
        IndexOutOfBoundsException - 重複不許可のチャンネルで0以外のインデックスを指定した
        IllegalArgumentException - 小節番号がBmsSpec.MEASURE_MIN未満またはBmsSpec.MEASURE_MAX超過
        IllegalArgumentException - 小節の刻み位置がマイナス値または当該小節の刻み数以上
        IllegalArgumentException - 指定チャンネルのデータ型が配列型ではない
      • removeNote

        public final int removeNote​(Predicate<BmsNote> isRemoveTarget)
        選択されたノートを消去します。
        パラメータ:
        isRemoveTarget - 消去対象ノートを選択するテスター
        戻り値:
        消去されたノートの個数
        例外:
        IllegalStateException - 動作モードが編集モードではない
        NullPointerException - isRemoveTargetがnull
      • removeNote

        public final int removeNote​(int measureBegin,
                                    int measureEnd,
                                    Predicate<BmsNote> isRemoveTarget)
        指定範囲の選択されたノートを消去します。

        チャンネルの選択範囲は全チャンネルになります。
        それ以外の処理はremoveNote(int, int, int, int, Predicate)と同じです。

        パラメータ:
        measureBegin - 消去対象の最小小節番号
        measureEnd - 消去対象の最大小節番号(この小節を含まない)
        isRemoveTarget - 指定範囲で消去対象を選択するテスター
        戻り値:
        消去されたノートの個数
      • removeNote

        public final int removeNote​(int channelBegin,
                                    int channelEnd,
                                    int measureBegin,
                                    int measureEnd,
                                    Predicate<BmsNote> isRemoveTarget)
        指定範囲の選択されたノートを消去します。
        パラメータ:
        channelBegin - 消去対象の最小チャンネル番号
        channelEnd - 消去対象の最大チャンネル番号(この番号を含まない)
        measureBegin - 消去対象の最小小節番号
        measureEnd - 消去対象の最大小節番号(この小節を含まない)
        isRemoveTarget - 指定範囲で消去対象を選択するテスター
        戻り値:
        消去されたノートの個数
        例外:
        IllegalStateException - 動作モードが編集モードではない
        IllegalArgumentException - channelBeginに小節データ・ノートを登録できないチャンネル番号を指定した
        IllegalArgumentException - channelEndにBmsSpec.CHANNEL_MAXより大きいチャンネル番号を指定した
        IllegalArgumentException - measureBeginにノート・小節データの存在し得ない小節番号を指定した
        IllegalArgumentException - measureEndに現在の小節数より大きい小節番号を指定した
        NullPointerException - isRemoveTargetがnull
      • getMeasureCount

        public final int getMeasureCount()
        楽曲の小節数を取得します。
        戻り値:
        小節数
      • getMeasureTickCount

        public final double getMeasureTickCount​(int measure)
        小節の刻み数を取得します。

        小節番号にはBmsSpec.MEASURE_MINBmsSpec.MEASURE_MAXを指定することができます。

        小節の刻み数は、BmsSpec.TICK_COUNT_DEFAULTにその小節の小節長を乗算した値となります。 小節長に極端に小さい値を設定すると計算上の小節の刻み数が1未満になることがあります。

        パラメータ:
        measure - 小節番号
        戻り値:
        小節の刻み数
        例外:
        IllegalArgumentException - 小節番号がBmsSpec.MEASURE_MIN未満またはBmsSpec.MEASURE_MAX超過
      • getChannelDataCount

        public final int getChannelDataCount​(int channel,
                                             int measure)
        指定小節に格納されたデータの数を取得します。

        小節番号にはBmsSpec.MEASURE_MINBmsSpec.MEASURE_MAXを指定することができます。

        データは通常1個まで格納可能ですが、重複可能チャンネルにすることで小節に複数のデータを 格納することができるようになります。

        パラメータ:
        channel - チャンネル番号
        measure - 小節番号
        戻り値:
        データの数
        例外:
        IllegalArgumentException - 小節データ・ノートを登録できないチャンネル番号を指定した
        IllegalArgumentException - 小節番号がBmsSpec.MEASURE_MIN未満またはBmsSpec.MEASURE_MAX超過
      • insertMeasure

        public final void insertMeasure​(int measureWhere)
        指定位置に小節を挿入します。

        挿入位置に1個の小節を挿入します。
        それ以外の処理はinsertMeasure(int, int)と同じです。

        パラメータ:
        measureWhere - 挿入位置の小節番号
      • insertMeasure

        public final void insertMeasure​(int measureWhere,
                                        int count)
        指定位置に小節を挿入します。

        小節を挿入すると、挿入位置よりも後ろの小節データは後ろにずれます。

        挿入された小節は、小節データが未設定でノートがない状態になります。また、小節長は4/4拍子になります。

        挿入の結果、小節の数がBmsSpec.MEASURE_MAX_COUNTを超えないように注意してください。

        パラメータ:
        measureWhere - 挿入位置の小節番号
        count - 挿入する小節数
        例外:
        IllegalStateException - 動作モードが編集モードではない
        IllegalArgumentException - 挿入位置に現在の小節数より大きい小節番号を指定した
        IllegalArgumentException - 挿入する小節数にマイナス値を指定した
        IllegalArgumentException - 挿入により小節数がBmsSpec.MEASURE_MAX_COUNTを超える
      • removeMeasure

        public final void removeMeasure​(int measureWhere)
        指定位置の小節を消去します。

        消去位置の小節を1個消去します。
        それ以外の処理はremoveMeasure(int, int)と同じです。

        パラメータ:
        measureWhere - 消去位置の小節番号
      • removeMeasure

        public final void removeMeasure​(int measureWhere,
                                        int count)
        指定位置の小節を消去します。

        小節を消去すると、消去位置よりも後ろの小節データは手前にずれます。

        小節の存在しない領域を巻き込んで消去しないように注意してください。

        パラメータ:
        measureWhere - 消去位置の小節番号
        count - 消去する小節数
        例外:
        IllegalStateException - 動作モードが編集モードではない
        IllegalArgumentException - 消去位置に現在の小節数より大きい小節番号を指定した
        IllegalArgumentException - 消去する小節数にマイナス値を指定した
        IllegalArgumentException - 存在しない小節を消去しようとした
      • swapChannel

        public final void swapChannel​(int channel1,
                                      int channel2)
        指定チャンネル同士のデータ内容を入れ替えます。

        チャンネルインデックスは入れ替え対象チャンネル1,2共に0を指定します。
        それ以外の処理はswapChannel(int, int, int, int)と同じです。

        パラメータ:
        channel1 - 入れ替え対象チャンネル1の番号
        channel2 - 入れ替え対象チャンネル2の番号
      • swapChannel

        public final void swapChannel​(int channel1,
                                      int index1,
                                      int channel2,
                                      int index2)
        指定チャンネル同士のデータ内容を入れ替えます。

        入れ替え対象のチャンネルのデータ型は完全に一致していなければなりません。また、小節長変更、 BPM変更、譜面停止チャンネルを入れ替え対象として指定することはできません。

        パラメータ:
        channel1 - 入れ替え対象チャンネル1の番号
        index1 - 入れ替え対象チャンネル1のインデックス
        channel2 - 入れ替え対象チャンネル2の番号
        index2 - 入れ替え対象チャンネル2のインデックス
        例外:
        IllegalStateException - 動作モードが編集モードではない
        IllegalArgumentException - BMS仕様にないチャンネル番号を指定した
        IndexOutOfBoundsException - チャンネルインデックスがマイナス値
        IndexOutOfBoundsException - 重複不許可のチャンネルで0以外のインデックスを指定した
        IllegalArgumentException - 指定チャンネルが小節長変更・BPM変更・譜面停止のいずれかだった
        IllegalArgumentException - チャンネル1,2のデータ型が一致しない
      • seekPoint

        public final BmsPoint seekPoint​(BmsAt atFrom,
                                        double offsetTick,
                                        BmsPoint outPoint)
        原点の楽曲位置から指定刻み数分だけ移動した楽曲位置を計算します。

        引数atFromから原点の小節番号・刻み位置を取り出します。
        それ以外の処理はseekPoint(int, double, double, BmsPoint)と同じです。

        パラメータ:
        atFrom - 原点の楽曲位置
        offsetTick - 移動量を示す刻み数
        outPoint - 移動後の楽曲位置を格納する楽曲位置オブジェクト
        戻り値:
        引数で指定した楽曲位置オブジェクト
        例外:
        NullPointerException - atFromがnull
      • seekPoint

        public final BmsPoint seekPoint​(int measureFrom,
                                        double tickFrom,
                                        double offsetTick,
                                        BmsPoint outPoint)
        原点の楽曲位置から指定刻み数分だけ移動した楽曲位置を計算します。

        進行方向への移動での最大値は、小節番号=小節数, 刻み位置=0となります。
        後退方向への移動での最小値は、小節番号=0, 刻み位置=0となります。
        いずれの場合も有効な楽曲位置を超えた位置を示すことはありません。

        刻み位置による移動では、小節長の設定値の影響を受けますが、BPMと譜面停止時間の影響は受けません。

        計算結果は引数outPointに対して小節番号・刻み位置を設定して返します。

        パラメータ:
        measureFrom - 原点の小節番号
        tickFrom - 原点の刻み位置
        offsetTick - 移動量を示す刻み数
        outPoint - 移動後の楽曲位置を格納する楽曲位置オブジェクト
        戻り値:
        引数で指定した楽曲位置オブジェクト
        例外:
        IllegalArgumentException - 原点の小節番号にノート・小節データが存在し得ない値を指定した
        IllegalArgumentException - 原点の刻み位置にマイナス値または当該小節の刻み数以上の値を指定した
        NullPointerException - outPointがnull
      • seekNextPoint

        public final BmsPoint seekNextPoint​(BmsAt at,
                                            boolean inclusiveFrom,
                                            BmsPoint outPoint)
        指定楽曲位置より後の位置に存在する直近のノートを検索し、その楽曲位置を返します。

        引数atから小節番号、刻み位置を取り出します。
        全てのチャンネルを検索対象とします。
        それ以外の処理はseekNextPoint(int, double, boolean, IntPredicate, BmsPoint)と同じです。

        パラメータ:
        at - 検索を開始する楽曲位置
        inclusiveFrom - 指定楽曲位置を検索対象に含めるかどうか
        outPoint - 直近のノートの楽曲位置
        戻り値:
        引数outPointが示すBmsPointオブジェクトの参照
        例外:
        NullPointerException - atがnull
      • seekNextPoint

        public final BmsPoint seekNextPoint​(int measure,
                                            double tick,
                                            boolean inclusiveFrom,
                                            BmsPoint outPoint)
        指定楽曲位置より後の位置に存在する直近のノートを検索し、その楽曲位置を返します。

        全てのチャンネルを検索対象とします。
        それ以外の処理はseekNextPoint(int, double, boolean, IntPredicate, BmsPoint)と同じです。

        パラメータ:
        measure - 検索を開始する小節番号
        tick - 検索を開始する刻み位置
        inclusiveFrom - 指定楽曲位置を検索対象に含めるかどうか
        outPoint - 直近のノートの楽曲位置
        戻り値:
        引数outPointが示すBmsPointオブジェクトの参照
      • seekNextPoint

        public final BmsPoint seekNextPoint​(BmsAt at,
                                            boolean inclusiveFrom,
                                            IntPredicate chTester,
                                            BmsPoint outPoint)
        指定楽曲位置より後の位置に存在する直近のノートを検索し、その楽曲位置を返します。

        引数atから小節番号、刻み位置を取り出します。
        それ以外の処理はseekNextPoint(int, double, boolean, IntPredicate, BmsPoint)と同じです。

        パラメータ:
        at - 検索を開始する楽曲位置
        inclusiveFrom - 指定楽曲位置を検索対象に含めるかどうか
        chTester - チャンネルを検索対象とするかを判定するテスター
        outPoint - 直近のノートの楽曲位置
        戻り値:
        引数outPointが示すBmsPointオブジェクトの参照
        例外:
        NullPointerException - atがnull
      • seekNextPoint

        public final BmsPoint seekNextPoint​(int measure,
                                            double tick,
                                            boolean inclusiveFrom,
                                            IntPredicate chTester,
                                            BmsPoint outPoint)
        指定楽曲位置より後の位置に存在する直近のノート、小節データ、または小節線を検索し、その楽曲位置を返します。

        特定のチャンネルのノートを検索対象にしたくない場合は引数chTesterでfalseを返すことで検索対象外に することができます。但しこのテスターは頻繁に呼び出される可能性があるのでできるだけ軽い処理とするべきです。

        楽曲の末端まで対象のノートが存在しなかった場合、楽曲位置は小節番号=小節数、刻み位置0を示します。

        当メソッドでは、検索する過程で小節番号が変化した際に次の小節を表す小節線を、特別なチャンネル番号である BmsSpec.CHANNEL_MEASUREとしてチャンネルのテスターに渡します。小節が変化した際の小節先頭を検知したい 場合は先述のチャンネル番号を検査合格にすることでそれが可能になります。

        ノート、小節データのない空の楽曲に対して当メソッドを呼び出した場合、検索開始楽曲位置のアサーションは 行われず、小節番号0、刻み位置0の楽曲位置を返します。

        処理結果は引数outPointで指定されたBmsPointオブジェクトに格納されます。また、メソッドの戻り値として outPointが示す参照を返します。

        パラメータ:
        measure - 検索を開始する小節番号
        tick - 検索を開始する刻み位置
        inclusiveFrom - 指定楽曲位置を検索対象に含めるかどうか
        chTester - チャンネルを検索対象とするかを判定するテスター
        outPoint - 直近のノートの楽曲位置
        戻り値:
        引数outPointが示すBmsPointオブジェクトの参照
        例外:
        IllegalArgumentException - 小節番号がマイナス値または小節数以上
        IllegalArgumentException - 小節の刻み位置がマイナス値または当該小節の刻み数以上
        NullPointerException - chTesterがnull
        NullPointerException - outPointがnull
      • timeline

        public final Stream<BmsTimelineElement> timeline​(BmsAt at)
        タイムラインの指定楽曲位置のみを走査するストリームを返します。

        返されたタイムラインストリームは楽曲位置の前方から後方に向かってタイムラインを走査し、タイムライン要素を 小節線・小節データ・ノートの順で列挙します。列挙されたタイムライン要素はJava標準のストリームAPIによって 様々な処理を行うことができるようになっています。当メソッドでは指定された楽曲位置のみを走査します。

        ストリームの利用方法についてはJavaリファレンスのストリームAPI(java.util.stream)を参照してください。

        パラメータ:
        at - 楽曲位置
        戻り値:
        指定楽曲位置のみを走査するストリーム
        例外:
        NullPointerException - atがnull
        IllegalArgumentException - 小節番号がマイナス値
        IllegalArgumentException - 小節の刻み位置がBmsSpec.TICK_MIN以外の時、小節番号が小節数以上
        IllegalArgumentException - 小節の刻み位置がBmsSpec.TICK_MINの時、小節番号が小節数超過
        IllegalArgumentException - 小節の刻み位置がBmsSpec.TICK_MIN未満、またはBmsSpec.TICK_MAX超過
      • timeline

        public final Stream<BmsTimelineElement> timeline​(int measure,
                                                         double tick)
        タイムラインの指定楽曲位置のみを走査するストリームを返します。

        返されたタイムラインストリームは楽曲位置の前方から後方に向かってタイムラインを走査し、タイムライン要素を 小節線・小節データ・ノートの順で列挙します。列挙されたタイムライン要素はJava標準のストリームAPIによって 様々な処理を行うことができるようになっています。当メソッドでは指定された楽曲位置のみを走査します。

        ストリームの利用方法についてはJavaリファレンスのストリームAPI(java.util.stream)を参照してください。

        パラメータ:
        measure - 小節番号
        tick - 小節の刻み位置
        戻り値:
        指定楽曲位置のみを走査するストリーム
        例外:
        IllegalArgumentException - 小節番号がマイナス値
        IllegalArgumentException - 小節の刻み位置がBmsSpec.TICK_MIN以外の時、小節番号が小節数以上
        IllegalArgumentException - 小節の刻み位置がBmsSpec.TICK_MINの時、小節番号が小節数超過
        IllegalArgumentException - 小節の刻み位置がBmsSpec.TICK_MIN未満、またはBmsSpec.TICK_MAX超過
      • timeline

        public final Stream<BmsTimelineElement> timeline()
        タイムライン全体を操作するストリームを返します。

        返されたタイムラインストリームは楽曲位置の前方から後方に向かってタイムラインを走査し、タイムライン要素を 小節線・小節データ・ノートの順で列挙します。列挙されたタイムライン要素はJava標準のストリームAPIによって 様々な処理を行うことができるようになっています。

        当メソッドが返すストリームは、タイムライン全体から全チャンネルのタイムライン要素を列挙します。 ストリームの利用方法についてはJavaリファレンスのストリームAPI(java.util.stream)を参照してください。

        戻り値:
        タイムライン全体を操作するストリーム
      • timeline

        public final Stream<BmsTimelineElement> timeline​(BmsAt atBegin,
                                                         BmsAt atEnd)
        タイムラインの指定楽曲位置の範囲を走査するストリームを返します。

        返されたタイムラインストリームは楽曲位置の前方から後方に向かってタイムラインを走査し、タイムライン要素を 小節線・小節データ・ノートの順で列挙します。列挙されたタイムライン要素はJava標準のストリームAPIによって 様々な処理を行うことができるようになっています。

        ストリームの利用方法についてはJavaリファレンスのストリームAPI(java.util.stream)を参照してください。

        パラメータ:
        atBegin - 走査開始楽曲位置
        atEnd - 走査終了楽曲位置(この楽曲位置の小節の刻み位置を含まない)
        戻り値:
        タイムラインの指定楽曲位置の範囲を走査するストリーム
        例外:
        NullPointerException - atBeginまたはatEndがnull
        IllegalArgumentException - 走査開始/終了楽曲位置の小節番号がマイナス値
        IllegalArgumentException - 走査終了楽曲位置の小節の刻み位置がBmsSpec.TICK_MIN以外の時、小節番号が小節数以上
        IllegalArgumentException - 走査終了楽曲位置の小節の刻み位置がBmsSpec.TICK_MINの時、小節番号が小節数超過
        IllegalArgumentException - 走査開始/終了楽曲位置の楽曲位置の小節の刻み位置がBmsSpec.TICK_MIN未満、またはBmsSpec.TICK_MAX超過
        IllegalArgumentException - atEndがatBeginと同じまたは手前の楽曲位置を示している
      • timeline

        public final Stream<BmsTimelineElement> timeline​(int measureBegin,
                                                         double tickBegin,
                                                         int measureEnd,
                                                         double tickEnd)
        タイムラインの指定楽曲位置の範囲を走査するストリームを返します。

        返されたタイムラインストリームは楽曲位置の前方から後方に向かってタイムラインを走査し、タイムライン要素を 小節線・小節データ・ノートの順で列挙します。列挙されたタイムライン要素はJava標準のストリームAPIによって 様々な処理を行うことができるようになっています。

        ストリームの利用方法についてはJavaリファレンスのストリームAPI(java.util.stream)を参照してください。

        パラメータ:
        measureBegin - 走査開始楽曲位置の小節番号
        tickBegin - 走査開始楽曲位置の小節の刻み位置
        measureEnd - 走査終了楽曲位置の小節番号
        tickEnd - 走査終了楽曲位置の小節の刻み位置(この位置を含まない)
        戻り値:
        タイムラインの指定楽曲位置の範囲を走査するストリーム
        例外:
        IllegalArgumentException - 走査開始/終了楽曲位置の小節番号がマイナス値
        IllegalArgumentException - 走査楽曲位置の小節の刻み位置がBmsSpec.TICK_MIN以外の時、小節番号が小節数以上
        IllegalArgumentException - 走査楽曲位置の小節の刻み位置がBmsSpec.TICK_MINの時、小節番号が小節数超過
        IllegalArgumentException - 走査開始/終了楽曲位置の小節の刻み位置がBmsSpec.TICK_MIN未満、またはBmsSpec.TICK_MAX超過
        IllegalArgumentException - 走査終了楽曲位置が走査開始楽曲位置と同じまたは手前の楽曲位置を示している
      • putTimeline

        public final void putTimeline​(BmsTimelineElement timeline)
        指定したメタ情報要素をBMSコンテンツに追加します。

        当メソッドは同一、または互換性のあるBMS仕様を持つ別のBMSコンテンツで走査したタイムライン要素を追加する時に使用することを想定しています。 互換性のないBMS仕様を持つBMSコンテンツを走査した結果取得したタイムライン要素を指定すると、 BMS仕様違反によりタイムライン要素を追加できない可能性があり多くの場合例外がスローされる結果になります。 原則として同一のBMS仕様を持つBMSコンテンツ間のタイムライン要素の転送に使用することを強く推奨します。

        当メソッドで小節線を表すタイムライン要素入力しても何も行いません。追加する要素は小節データ、ノートです。 それぞれの要素追加の仕様については関連項目に記載のメソッドを参照してください。 基本的には例外も前述のメソッドに準拠した形でスローされます。

        パラメータ:
        timeline - タイムライン要素
        例外:
        IllegalStateException - 動作モードが編集モードではない
        NullPointerException - timelineがnull
        関連項目:
        setMeasureValue(int, int, int, Object), putNote(int, int, int, double, int, Supplier)
      • pointToTime

        public final double pointToTime​(BmsAt at)
        小節番号・刻み位置を時間(秒)に変換します。

        引数atから小節番号・刻み位置を取り出します。
        それ以外の処理はpointToTime(int, double)と同じです。

        パラメータ:
        at - 楽曲位置
        戻り値:
        時間(秒)
        例外:
        NullPointerException - atがnull
      • pointToTime

        public final double pointToTime​(int measure,
                                        double tick)
        小節番号・刻み位置を時間(秒)に変換します。

        このメソッドは参照モードの場合のみ呼び出すことができます。

        小節長が極端に短く、BPMが極端に高い譜面では浮動小数点演算の精度上の理由により、tickと(tick+1)の時間が 全く同じ値を示すことがあります(小節をまたぐ場合も同様)。一般的な小節長・BPMではこのような問題は発生しません。

        パラメータ:
        measure - 小節番号
        tick - 小節の刻み位置
        戻り値:
        時間(秒)
        例外:
        IllegalStateException - 動作モードが参照モードではない
        IllegalArgumentException - 小節番号がBmsSpec.MEASURE_MIN未満またはBmsSpec.MEASURE_MAX超過
        IllegalArgumentException - 小節番号がBmsSpec.MEASURE_MAX_COUNTの時、小節の刻み位置に0以外を指定した
        IllegalArgumentException - 小節の刻み位置にマイナス値または当該小節の刻み数以上の値を指定した
      • timeToPoint

        public final BmsPoint timeToPoint​(double timeSec,
                                          BmsPoint outPoint)
        時間(秒)を楽曲位置(小節番号/刻み位置)に変換します。

        このメソッドは参照モードの場合のみ呼び出すことができます。

        指定した時間が楽曲の総時間を超える場合、返される楽曲位置は小節番号が小節数、刻み位置が0になります。

        パラメータ:
        timeSec - 時間(秒)
        outPoint - 楽曲位置を格納する楽曲位置オブジェクト
        戻り値:
        引数で指定した楽曲位置オブジェクト
        例外:
        IllegalStateException - 動作モードが参照モードではない
        IllegalArgumentException - 時間にマイナス値を指定した
        NullPointerException - outPointがnull
      • generateHash

        public final byte[] generateHash()
        BMSコンテンツの内容からハッシュ値を計算し、結果を返します。

        当メソッドの目的は「プレーに影響する変更が行われたかどうかを検出すること」にあります。この目的を果たすために、BMSコンテンツの基準となる BMS仕様に登録されたメタ情報とチャンネルは「同一性チェックを行うかどうか」の情報を保有しています。同一性チェックを行うメタ情報・チャンネルの データ内容をハッシュ値計算の要素として抽出し、その要素からハッシュ値を計算します。

        プレーに影響しない(とBMS仕様で定められた)情報は、どのように修正されてもハッシュ値が変化することはありません。例えば、譜面には 直接関係のないバックグラウンドアニメーションなどは後から差し替えてもハッシュ値が変化する(別の譜面として認識される)べきではありません。 このように、制作者側に対してプレーする譜面以外の箇所に対して後から更新する自由度が割り当てられます。

        逆に、全く同じタイトル、アーティスト、BPM等でも、プレー可能なチャンネルのノートを移動するような修正が加えられた場合当然ながら別譜面と 認識されるべきであり、そのような情報が「同一性チェック対象の情報」となり得ることになります。

        当メソッドの処理には時間がかかります。また、処理中は多くのメモリ領域を使用することになるため、何度も呼び出すとアプリケーションの パフォーマンスが大幅に低下する可能性があります。当メソッドの呼び出し回数は極力減らすようアプリケーションを設計してください。

        戻り値:
        BMSコンテンツから算出されたハッシュ値
        例外:
        IllegalStateException - 動作モードが参照モードではない
      • assertIsReferenceMode

        protected void assertIsReferenceMode()
        動作モードが参照モードかどうかをテストするアサーション
        例外:
        IllegalStateException - 動作モードが参照モードではない
      • assertIsEditMode

        protected void assertIsEditMode()
        動作モードが編集モードかどうかをテストするアサーション
        例外:
        IllegalStateException - 動作モードが編集モードではない