Module java.desktop
Package javax.sound.midi

Class Track

java.lang.Object
javax.sound.midi.Track

public final class Track extends Object
一个MIDI轨道是独立的MIDI事件流(带有时间戳的MIDI数据),可以与标准MIDI文件中的其他轨道一起存储。MIDI规范只允许16个MIDI数据通道,但轨道是绕过此限制的一种方式。一个MIDI文件可以包含任意数量的轨道,每个轨道包含自己的最多16个MIDI数据通道的流。

Track在由Sequencer播放的数据层次结构中占据中间级别:sequencers播放sequences,sequences包含tracks,tracks包含MIDI事件。Sequencer可能提供控件来静音或独奏单独的轨道。

轨道的时间信息和分辨率由包含轨道的序列控制和存储。给定的Track被认为属于维护其时间的特定Sequence。因此,通过调用Sequence.createTrack()方法来创建一个新的(空的)轨道,而不是直接调用Track构造函数。

Track类提供了方法来编辑轨道,通过向其添加或删除MidiEvent对象。这些操作保持事件列表按正确的时间顺序。还包括方法来获取轨道的大小,即它包含的事件数量或以tick为单位的持续时间。

参见:
  • Method Details

    • 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

      public int size()
      获取此轨道中的事件数量。
      返回:
      轨道事件向量的大小
    • ticks

      public long ticks()
      获取轨道的长度,以MIDI tick表示。(tick的持续时间由包含此轨道的Sequence的时间分辨率以及由sequencer设置的音乐速度决定。)
      返回:
      以tick表示的持续时间
      参见: