java.lang.Object
javax.sound.midi.Sequence
一个
Sequence
是一个包含音乐信息(通常是整首歌曲或作品)的数据结构,可以通过Sequencer
对象进行回放。具体来说,Sequence
包含定时信息和一个或多个轨道。每个track
由一系列MIDI事件组成(例如音符开启、音符关闭、程序变更和元事件)。序列的定时信息指定了用于时间戳序列中事件的单位类型。
可以通过将MIDI文件读入输入流并调用MidiSystem
的getSequence
方法之一来从MIDI文件创建Sequence
。也可以通过向空Sequence
添加新的Tracks
,并向这些Tracks
添加MidiEvent
对象来从头开始构建序列。
- 参见:
-
Field Summary
Modifier and TypeFieldDescriptionprotected float
序列的定时分割类型。static final float
基于速度的定时类型,其分辨率以每四分音符的脉冲(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表示)。此序列中的MIDI轨道。 -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescription作为此序列的一部分创建一个新的、最初为空的轨道。boolean
deleteTrack
(Track track) 从序列中移除指定的轨道。float
获取此序列的定时分割类型。long
获取此序列的持续时间,以微秒表示。Patch[]
获取此序列中引用的音色列表。int
获取此序列的定时分辨率。long
获取此序列的持续时间,以MIDI tick表示。Track[]
获取包含此序列中所有轨道的数组。
-
Field Details
-
PPQ
public static final float PPQ基于速度的定时类型,其分辨率以每四分音符的脉冲(tick)表示。- 参见:
-
SMPTE_24
public static final float SMPTE_24基于每秒24帧的SMPTE定时类型(分辨率以每帧的tick表示)。- 参见:
-
SMPTE_25
public static final float SMPTE_25基于每秒25帧的SMPTE定时类型(分辨率以每帧的tick表示)。- 参见:
-
SMPTE_30DROP
public static final float SMPTE_30DROP基于每秒29.97帧的SMPTE定时类型(分辨率以每帧的tick表示)。- 参见:
-
SMPTE_30
public static final float SMPTE_30基于每秒30帧的SMPTE定时类型(分辨率以每帧的tick表示)。- 参见:
-
divisionType
protected float divisionType序列的定时分割类型。- 参见:
-
resolution
protected int resolution序列的定时分辨率。- 参见:
-
tracks
此序列中的MIDI轨道。- 参见:
-
-
Constructor Details
-
Sequence
使用指定的定时分割类型和定时分辨率构造新的MIDI序列。分割类型必须是被识别的MIDI定时类型之一。对于基于速度的定时,divisionType
是PPQ(每四分音符的脉冲)且分辨率以每拍的tick表示。对于SMTPE定时,divisionType
指定每秒的帧数,分辨率以每帧的tick表示。序列将不包含初始轨道。可以使用createTrack()
和deleteTrack(javax.sound.midi.Track)
方法向序列添加或移除轨道。- 参数:
-
divisionType
- 定时分割类型(PPQ或SMPTE类型之一) -
resolution
- 定时分辨率 - 抛出:
-
InvalidMidiDataException
- 如果divisionType
无效 - 参见:
-
Sequence
使用指定的定时分割类型、定时分辨率和轨道数构造新的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
创建一个新的、最初为空的轨道作为这个序列的一部分。轨道最初包含元事件“轨道结束”。返回新创建的轨道。可以使用getTracks()
检索序列中的所有轨道。可以使用deleteTrack(javax.sound.midi.Track)
从序列中删除轨道。- 返回:
- 新创建的轨道
-
deleteTrack
从序列中删除指定的轨道。- 参数:
-
track
- 要移除的轨道 - 返回:
-
如果轨道存在于序列中并已被移除,则返回
true
,否则返回false
- 参见:
-
getTracks
获取包含此序列中所有轨道的数组。如果序列不包含轨道,则返回长度为0的数组。- 返回:
- 轨道数组
- 参见:
-
getMicrosecondLength
public long getMicrosecondLength()获取此序列的持续时间,以微秒表示。- 返回:
- 此序列的持续时间(微秒)
-
getTickLength
public long getTickLength()获取此序列的持续时间,以MIDI滴答表示。- 返回:
- 此序列的长度(滴答)
- 参见:
-
getPatchList
获取此序列中引用的音色列表。此音色列表可用于将所需的Instrument
对象加载到Synthesizer
中。- 返回:
-
在此序列中使用的
Patch
对象数组 - 参见:
-