java.lang.Object javax.sound.midi.Sequence
public class Sequence
Sequence
是一种数据结构,包含可由
对象回放的音乐信息(通常是整首歌曲或音乐作品)。特别地,Sequencer
Sequence
包含定时信息和一个或多个轨道。每个
包含一系列的 MIDI 事件(例如音符打开、音符关闭、程序更改和元事件)。sequence 的定时信息指定了用于为 sequence 中的事件加时间戳的单位类型。 track
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 |
字段详细信息 |
---|
public static final float PPQ
Sequence(float, int)
,
常量字段值
public static final float SMPTE_24
Sequence(float, int)
,
常量字段值
public static final float SMPTE_25
Sequence(float, int)
,
常量字段值
public static final float SMPTE_30DROP
Sequence(float, int)
,
常量字段值
public static final float SMPTE_30
Sequence(float, int)
,
常量字段值
protected float divisionType
PPQ
,
SMPTE_24
,
SMPTE_25
,
SMPTE_30DROP
,
SMPTE_30
,
getDivisionType()
protected int resolution
getResolution()
protected Vector<Track> tracks
getTracks()
构造方法详细信息 |
---|
public Sequence(float divisionType, int resolution) throws InvalidMidiDataException
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()
public Sequence(float divisionType, int resolution, int numTracks) throws InvalidMidiDataException
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()
方法详细信息 |
---|
public float getDivisionType()
PPQ
,
SMPTE_24
,
SMPTE_25
,
SMPTE_30DROP
,
SMPTE_30
,
Sequence(float, int)
,
MidiFileFormat.getDivisionType()
public int getResolution()
getDivisionType()
,
Sequence(float, int)
,
MidiFileFormat.getResolution()
public Track createTrack()
getTracks()
检索 Sequence 中的所有轨道。可使用
deleteTrack(javax.sound.midi.Track)
从 Sequence 中移除轨道。
public boolean deleteTrack(Track track)
track
- 要移除的轨道
true
;否则返回
false
。
createTrack()
,
getTracks()
public Track[] getTracks()
createTrack()
,
deleteTrack(javax.sound.midi.Track)
public long getMicrosecondLength()
public long getTickLength()
getMicrosecondLength()
public Patch[] getPatchList()
Instrument
对象加载到
Synthesizer
中。
Patch
对象数组
Synthesizer.loadInstruments(Soundbank, Patch[])