javax.sound.midi

接口
异常
java.lang.Object
  继承者 javax.sound.midi.Sequence

public class Sequence
     
extends Object

Sequence 是一种数据结构,包含可由 Sequencer 对象回放的音乐信息(通常是整首歌曲或音乐作品)。特别地,Sequence 包含定时信息和一个或多个轨道。每个 track 包含一系列的 MIDI 事件(例如音符打开、音符关闭、程序更改和元事件)。sequence 的定时信息指定了用于为 sequence 中的事件加时间戳的单位类型。

Sequence 可从一个 MIDI 文件创建,方法是将该文件读入到输入流并调用 MidiSystem 的某个 getSequence 方法。还可以从头构建 sequence,方法是将新的 Track 添加到空 Sequence 中,然后将 MidiEvent 对象添加到这些 Track 中。

另请参见:
Sequencer.setSequence(java.io.InputStream stream), Sequencer.setSequence(Sequence sequence), Track.add(MidiEvent), MidiFileFormat

字段摘要
protected  float divisionType
          sequence 的定时 division 类型。
static float PPQ
          基于速度的定时类型,其精度用每四分音符的拍子数(节拍)表示。
protected  int resolution
          sequence 的定时精度。
static float SMPTE_24
          基于 SMPTE 的定时类型,每秒 24 帧(精度用每帧的节拍数表示)。
static float SMPTE_25
          基于 SMPTE 的定时类型,每秒 25 帧(精度用每帧的节拍数表示)。
static float SMPTE_30
          基于 SMPTE 的定时类型,每秒 30 帧(精度用每帧的节拍数表示)。
static float SMPTE_30DROP
          基于 SMPTE 的定时类型,每秒 29.97 帧(精度用每帧的节拍数表示)。
protected  Vector<Track> tracks
          此 sequence 中的 MIDI 轨道。
 
构造方法摘要
Sequence(float divisionType, int resolution)
          构造具有指定的定时 division 类型和定时精度的新 MIDI Sequence。
Sequence(float divisionType, int resolution, int numTracks)
          构造具有指定的定时 division 类型、定时精度和轨道数的新 MIDI Sequence。
 
方法摘要
 Track createTrack()
          创建一个新的、初始为空的轨道作为此 Sequence 的一部分。
 boolean deleteTrack(Track track)
          从 Sequence 中移除指定的轨道。
 float getDivisionType()
          获得此 Sequence 的定时 division 类型。
 long getMicrosecondLength()
          获得此 Sequence 的持续时间,用微秒表示。
 Patch[] getPatchList()
          获得此 Sequence 中引用的包列表。
 int getResolution()
          获得此 Sequence 的定时精度。
 long getTickLength()
          获得此 Sequence 的持续时间,用 MIDI 节拍数表示。
 Track[] getTracks()
          获得包含此 Sequence 中所有轨道的数组。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

字段详细信息

PPQ

public static final float PPQ
基于速度的定时类型,其精度用每四分音符的拍子数(节拍)表示。

另请参见:
Sequence(float, int), 常量字段值

SMPTE_24

public static final float SMPTE_24
基于 SMPTE 的定时类型,每秒 24 帧(精度用每帧的节拍数表示)。

另请参见:
Sequence(float, int), 常量字段值

SMPTE_25

public static final float SMPTE_25
基于 SMPTE 的定时类型,每秒 25 帧(精度用每帧的节拍数表示)。

另请参见:
Sequence(float, int), 常量字段值

SMPTE_30DROP

public static final float SMPTE_30DROP
基于 SMPTE 的定时类型,每秒 29.97 帧(精度用每帧的节拍数表示)。

另请参见:
Sequence(float, int), 常量字段值

SMPTE_30

public static final float SMPTE_30
基于 SMPTE 的定时类型,每秒 30 帧(精度用每帧的节拍数表示)。

另请参见:
Sequence(float, int), 常量字段值

divisionType

protected float divisionType
sequence 的定时 division 类型。

另请参见:
PPQ, SMPTE_24, SMPTE_25, SMPTE_30DROP, SMPTE_30, getDivisionType()

resolution

protected int resolution
sequence 的定时精度。

另请参见:
getResolution()

tracks

protected Vector<Track> tracks
此 sequence 中的 MIDI 轨道。

另请参见:
getTracks()
构造方法详细信息

Sequence

public Sequence(float divisionType,
                int resolution)
         throws InvalidMidiDataException
构造具有指定的定时 division 类型和定时精度的新 MIDI Sequence。division 类型必须是可识别的 MIDI 定时类型之一。对于基于速度的定时, divisionType 是 PPQ(每四分音符的节拍数),精度通过每拍的节拍数指定。对于 SMTPE 定时, divisionType 指定每秒的帧数,精度通过每帧的节拍数指定。该 Sequence 不包含任何初始轨道。可从 Sequence 中添加或移除轨道,方法是使用 createTrack()deleteTrack(javax.sound.midi.Track)

参数:
divisionType - 定时 division 类型(PPQ 和某个 SMPTE 类型)
resolution - 定时精度
抛出:
InvalidMidiDataException - 如果 divisionType 无效
另请参见:
PPQ, SMPTE_24, SMPTE_25, SMPTE_30DROP, SMPTE_30, getDivisionType(), getResolution(), getTracks()

Sequence

public Sequence(float divisionType,
                int resolution,
                int numTracks)
         throws InvalidMidiDataException
构造具有指定的定时 division 类型、定时精度和轨道数的新 MIDI Sequence。division 类型必须是可识别的 MIDI 定时类型之一。对于基于速度的定时, divisionType 是 PPQ(每四分音符的节拍数),精度通过每拍的节拍数指定。对于 SMTPE 定时, divisionType 指定每秒的帧数,精度通过每帧的节拍数指定。将使用由 numTracks 指定的轨道数来初始化该 Sequence。这些轨道初始为空(即它们只包含元事件 End of Track)。使用 getTracks() 方法可检索轨道以供编辑。还可以使用 createTrack()deleteTrack(javax.sound.midi.Track) 添加其他的轨道或移除现有的轨道。

参数:
divisionType - 定时 division 类型(PPQ 或某个 SMPTE 类型)
resolution - 定时精度
numTracks - Sequence 中的初始轨道数。
抛出:
InvalidMidiDataException - 如果 divisionType 无效
另请参见:
PPQ, SMPTE_24, SMPTE_25, SMPTE_30DROP, SMPTE_30, getDivisionType(), getResolution()
方法详细信息

getDivisionType

public float getDivisionType()
获得此 Sequence 的定时 division 类型。

返回:
division 类型(PPQ 或某个 SMPTE 类型)
另请参见:
PPQ, SMPTE_24, SMPTE_25, SMPTE_30DROP, SMPTE_30, Sequence(float, int), MidiFileFormat.getDivisionType()

getResolution

public int getResolution()
获得此 Sequence 的定时精度。如果 Sequence 的 division 类型为 PPQ,则精度按每拍的节拍数指定。对于 SMTPE 定时,精度按每帧的节拍数指定。

返回:
每拍 (PPQ) 或每帧 (SMPTE) 的节拍数
另请参见:
getDivisionType(), Sequence(float, int), MidiFileFormat.getResolution()

createTrack

public Track createTrack()
创建一个新的、初始为空的轨道作为此 Sequence 的一部分。轨道初始包含元事件 End of Track。返回新创建的轨道。可使用 getTracks() 检索 Sequence 中的所有轨道。可使用 deleteTrack(javax.sound.midi.Track) 从 Sequence 中移除轨道。

返回:
新创建的轨道

deleteTrack

public boolean deleteTrack(Track track)
从 Sequence 中移除指定的轨道。

参数:
track - 要移除的轨道
返回:
如果轨道原先存在但后来被移除,则返回 true;否则返回 false
另请参见:
createTrack(), getTracks()

getTracks

public Track[] getTracks()
获得包含此 Sequence 中所有轨道的数组。如果 Sequence 中不包含任何轨道,则返回长度为 0 的数组。

返回:
轨道数组
另请参见:
createTrack(), deleteTrack(javax.sound.midi.Track)

getMicrosecondLength

public long getMicrosecondLength()
获得此 Sequence 的持续时间,用微秒表示。

返回:
此 Sequence 的持续时间,以微秒为单位。

getTickLength

public long getTickLength()
获得此 Sequence 的持续时间,用 MIDI 节拍数表示。

返回:
此 Sequence 的长度,以节拍数为单位
另请参见:
getMicrosecondLength()

getPatchList

public Patch[] getPatchList()
获得此 Sequence 中引用的包列表。使用该包列表可将所需的 Instrument 对象加载到 Synthesizer 中。

返回:
此 Sequence 中使用的 Patch 对象数组
另请参见:
Synthesizer.loadInstruments(Soundbank, Patch[])