public class Sequence extends Object
Sequence
是包含音乐信息可以由回放的数据结构(通常是整首歌曲或组合物) Sequencer
对象。
具体来说, Sequence
包含定时信息和一个或多个轨道。
每个track
由一系列MIDI事件(如音符,音符,程序更改和元事件)组成。
序列的时序信息指定用于对序列中的事件进行时间戳的单位类型。
甲Sequence
可以从MIDI文件通过文件读入的输入流和调用的一个来创建getSequence
的方法MidiSystem
。 还可以从零开始构建一个序列,将新的Tracks
添加到空的Sequence
,并将
对象添加到这些MidiEvent
Tracks
。
Modifier and Type | Field and Description |
---|---|
protected float |
divisionType
序列的时序分割类型。
|
static float |
PPQ
基于节拍的时间类型,其分辨率以每四分之一音符的脉冲(刻度)表示。
|
protected int |
resolution
序列的时序分辨率。
|
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
MIDI序列中的MIDI轨迹。
|
Constructor and Description |
---|
Sequence(float divisionType, int resolution)
构造具有指定的时序分割类型和时序分辨率的新MIDI序列。
|
Sequence(float divisionType, int resolution, int numTracks)
构造一个具有指定的时序分割类型,时序分辨率和轨道数的新MIDI序列。
|
Modifier and Type | Method and Description |
---|---|
Track |
createTrack()
创建一个新的,最初的空轨,作为这个序列的一部分。
|
boolean |
deleteTrack(Track track)
从序列中删除指定的轨迹。
|
float |
getDivisionType()
获取此序列的时序分割类型。
|
long |
getMicrosecondLength()
获得此序列的持续时间,以微秒表示。
|
Patch[] |
getPatchList()
获取此序列中引用的修补程序列表。
|
int |
getResolution()
获取此序列的时序分辨率。
|
long |
getTickLength()
获取此序列的持续时间,以MIDI刻度表示。
|
Track[] |
getTracks()
获取包含此序列中所有曲目的数组。
|
public static final float PPQ
public static final float SMPTE_24
public static final float SMPTE_25
public static final float SMPTE_30DROP
public static final float SMPTE_30
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(每四分之一个音符的脉冲),分辨率以每搏输出。
对于divisionType
定时, divisionType
指定每秒钟的帧数, divisionType
以帧为单位指定。
该序列将不包含初始轨迹。
可以使用createTrack()
和deleteTrack(javax.sound.midi.Track)
将轨迹添加到序列或从序列中deleteTrack(javax.sound.midi.Track)
。
divisionType
- 时序分割类型(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(每四分之一音符的脉冲),分辨率以每搏输出的时数指定。
对于divisionType
定时, divisionType
指定每秒钟的帧数, divisionType
以帧为单位指定。
将使用numTracks指定的曲目数来numTracks
。
这些曲目最初是空的(即它们只包含元事件结束曲目)。
可以使用getTracks()
方法检索轨道进行编辑。
可以使用createTrack()
和deleteTrack(javax.sound.midi.Track)
添加附加曲目,或删除现有曲目。
divisionType
- 时序分割类型(PPQ或SMPTE类型之一)
resolution
- 时序分辨率
numTracks
- 序列中初始轨道数。
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()
。
可以使用deleteTrack(javax.sound.midi.Track)
从序列中deleteTrack(javax.sound.midi.Track)
。
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[])