Module java.desktop
Package javax.sound.midi

Class Sequence

java.lang.Object
javax.sound.midi.Sequence

public class Sequence extends Object
一个Sequence是一个包含音乐信息(通常是整首歌曲或作品)的数据结构,可以通过Sequencer对象进行回放。具体来说,Sequence包含定时信息和一个或多个轨道。每个track由一系列MIDI事件组成(例如音符开启、音符关闭、程序变更和元事件)。序列的定时信息指定了用于时间戳序列中事件的单位类型。

可以通过将MIDI文件读入输入流并调用MidiSystemgetSequence方法之一来从MIDI文件创建Sequence。也可以通过向空Sequence添加新的Tracks,并向这些Tracks添加MidiEvent对象来从头开始构建序列。

参见:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected float
    序列的定时分割类型。
    static final float
    PPQ
    基于速度的定时类型,其分辨率以每四分音符的脉冲(tick)表示。
    protected int
    序列的定时分辨率。
    static final float
    基于每秒24帧的SMPTE定时类型(分辨率以每帧的tick表示)。
    static final float
    基于每秒25帧的SMPTE定时类型(分辨率以每帧的tick表示)。
    static final float
    基于每秒30帧的SMPTE定时类型(分辨率以每帧的tick表示)。
    static final float
    基于每秒29.97帧的SMPTE定时类型(分辨率以每帧的tick表示)。
    protected Vector<Track>
    此序列中的MIDI轨道。
  • Constructor Summary

    Constructors
    Constructor
    Description
    Sequence(float divisionType, int resolution)
    使用指定的定时分割类型和定时分辨率构造新的MIDI序列。
    Sequence(float divisionType, int resolution, int numTracks)
    使用指定的定时分割类型、定时分辨率和轨道数构造新的MIDI序列。
  • Method Summary

    Modifier and Type
    Method
    Description
    作为此序列的一部分创建一个新的、最初为空的轨道。
    boolean
    deleteTrack(Track track)
    从序列中移除指定的轨道。
    float
    获取此序列的定时分割类型。
    long
    获取此序列的持续时间,以微秒表示。
    Patch[]
    获取此序列中引用的音色列表。
    int
    获取此序列的定时分辨率。
    long
    获取此序列的持续时间,以MIDI tick表示。
    Track[]
    获取包含此序列中所有轨道的数组。

    Methods declared in class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

  • Constructor Details

    • Sequence

      public Sequence(float divisionType, int resolution) throws InvalidMidiDataException
      使用指定的定时分割类型和定时分辨率构造新的MIDI序列。分割类型必须是被识别的MIDI定时类型之一。对于基于速度的定时,divisionType是PPQ(每四分音符的脉冲)且分辨率以每拍的tick表示。对于SMTPE定时,divisionType指定每秒的帧数,分辨率以每帧的tick表示。序列将不包含初始轨道。可以使用createTrack()deleteTrack(javax.sound.midi.Track)方法向序列添加或移除轨道。
      参数:
      divisionType - 定时分割类型(PPQ或SMPTE类型之一)
      resolution - 定时分辨率
      抛出:
      InvalidMidiDataException - 如果divisionType无效
      参见:
    • Sequence

      public Sequence(float divisionType, int resolution, int numTracks) throws InvalidMidiDataException
      使用指定的定时分割类型、定时分辨率和轨道数构造新的MIDI序列。分割类型必须是被识别的MIDI定时类型之一。对于基于速度的定时,divisionType是PPQ(每四分音符的脉冲)且分辨率以每拍的tick表示。对于SMTPE定时,divisionType指定每秒的帧数,分辨率以每帧的tick表示。序列将使用由numTracks指定的轨道数进行初始化。这些轨道最初为空(即仅包含元事件End of Track)。可以使用getTracks()方法检索这些轨道进行编辑。可以使用createTrack()deleteTrack(javax.sound.midi.Track)方法添加额外的轨道或移除现有轨道。
      参数:
      divisionType - 定时分割类型(PPQ或SMPTE类型之一)
      resolution - 定时分辨率
      numTracks - 序列中的初始轨道数
      抛出:
      InvalidMidiDataException - 如果divisionType无效
      参见:
  • Method Details

    • getDivisionType

      public float getDivisionType()
      获取此序列的定时分割类型。
      返回:
      分割类型(PPQ或SMPTE类型之一)
      参见:
    • getResolution

      public int getResolution()
      获取此序列的定时分辨率。如果序列的分割类型是PPQ,则分辨率以每拍的tick表示。对于SMTPE定时,分辨率以每帧的tick表示。
      返回:
      每拍的tick数(PPQ)或每帧的tick数(SMPTE)
      参见:
    • createTrack

      public Track createTrack()
      创建一个新的、最初为空的轨道作为这个序列的一部分。轨道最初包含元事件“轨道结束”。返回新创建的轨道。可以使用getTracks()检索序列中的所有轨道。可以使用deleteTrack(javax.sound.midi.Track)从序列中删除轨道。
      返回:
      新创建的轨道
    • deleteTrack

      public boolean deleteTrack(Track track)
      从序列中删除指定的轨道。
      参数:
      track - 要移除的轨道
      返回:
      如果轨道存在于序列中并已被移除,则返回true,否则返回false
      参见:
    • getTracks

      public Track[] getTracks()
      获取包含此序列中所有轨道的数组。如果序列不包含轨道,则返回长度为0的数组。
      返回:
      轨道数组
      参见:
    • getMicrosecondLength

      public long getMicrosecondLength()
      获取此序列的持续时间,以微秒表示。
      返回:
      此序列的持续时间(微秒)
    • getTickLength

      public long getTickLength()
      获取此序列的持续时间,以MIDI滴答表示。
      返回:
      此序列的长度(滴答)
      参见:
    • getPatchList

      public Patch[] getPatchList()
      获取此序列中引用的音色列表。此音色列表可用于将所需的Instrument对象加载到Synthesizer中。
      返回:
      在此序列中使用的Patch对象数组
      参见: