モジュール java.desktop
パッケージ javax.sound.midi

クラスTrack


  • public class Track
    extends Object
    MIDIトラックは、標準のMIDIファイルにほかのトラックとともに保存できる、MIDIイベント(タイムスタンプの付いたMIDIデータ)の独立したストリームです。 MIDIの仕様で許容されるMIDIデータは16チャネルだけですが、トラックを使用することでこの制限を回避できます。 1つのMIDIファイルには、16チャネルまでのMIDIデータの独自のストリームを含んだトラックを任意の数だけ格納できます。

    Trackは、Sequencerによって演奏されるデータの階層において中間レベルを占有: シーケンサは、MIDIイベントを含むトラックを含むシーケンスを再生します。 シーケンサには、個々のトラックをミュートまたはソロにするコントロールが用意されている場合があります。

    トラックのタイミング情報や解像度は、そのトラックを格納しているシーケンスによって制御および保存されます。 与えられたTrackは、そのタイミングを維持する特定のSequenceに属しているとみなされます。 そのため、新しい(空の)トラックを作成するには、Trackコンストラクタを直接呼び出すのではなく、Sequence.createTrack()メソッドを呼び出します。

    Trackクラスでは、MidiEventオブジェクトを追加または削除することでトラックを編集するメソッドが提供されます。 これらの操作を行なっても、イベント・リストの時間順は正しく保たれます。 また、トラックのサイズをそのトラックに含まれるイベント数、またはティック単位でのデュレーションで取得するメソッドも含まれています。

    関連項目:
    Sequencer.setTrackMute(int, boolean), Sequencer.setTrackSolo(int, boolean)
    • メソッドの詳細

      • add

        public boolean add​(MidiEvent event)
        トラックに新しいイベントを追加します。 ただし、そのイベントがすでにそのトラックに含まれている場合は、ふたたび追加することはできません。 イベントのリストは時間順に維持されるため、イベントはリストの必ずしも最後ではなく、適切な場所に挿入されます。
        パラメータ:
        event - 追加するイベント
        戻り値:
        そのイベントがそのトラックに含まれておらず、かつ追加された場合はtrue、そうでない場合はfalse
      • remove

        public boolean remove​(MidiEvent event)
        指定したイベントをトラックから削除します。
        パラメータ:
        event - 削除するイベント
        戻り値:
        そのイベントがそのトラックに存在し、かつ削除された場合はtrue、そうでない場合はfalse
      • get

        public MidiEvent get​(int index)
                      throws ArrayIndexOutOfBoundsException
        指定したインデックスのイベントを取得します。
        パラメータ:
        index - 取得するイベントのイベント・ベクターによる位置
        戻り値:
        指定したインデックスのイベント
        例外:
        ArrayIndexOutOfBoundsException - 指定したインデックスが負、またはこのトラックの現在のサイズ以上である場合
        関連項目:
        size()
      • size

        public int size()
        このトラックに含まれるイベントの数を取得します。
        戻り値:
        このトラックのイベント・ベクターのサイズ
      • ticks

        public long ticks()
        トラックの長さをMIDIティック単位で取得します。 (1ティックの秒単位でのデュレーションは、このトラックを格納しているSequenceのタイミング解像度と、シーケンサで設定した音楽のテンポによって決まります)。
        戻り値:
        ティック単位でのデュレーション
        関連項目:
        Sequence(float, int), Sequencer.setTempoInBPM(float), Sequencer.getTickPosition()