|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
javax.sound.midi
接口 Sequencer
- 所有超级接口:
- MidiDevice
-
public interface Sequencer
- extends MidiDevice
回放 MIDI
的硬件或软件设备就是所谓的 sequencer。MIDI sequence 包含加了时间戳的 MIDI 数据列表,例如可从标准 MIDI 文件读取的数据。多数 sequencer 还提供创建和编辑 sequence 的功能。sequence
Sequencer
接口包括用于以下基本 MIDI sequencer 操作的方法:
- 从 MIDI 文件数据获取一个 sequence
- 开始和停止回放
- 移动到 sequence 中的任意位置
- 更改回放速度
- 将回放与内部时钟或接收到的 MIDI 消息同步
- 控制另一个设备的定时
Sequencer
可访问的对象支持以下操作:
- 通过添加或删除单独 MIDI 事件或整个轨道来编辑数据
- 对 sequence 中的单独轨道静音或执行独奏
- 通知 listener 对象有关回放 sequence 时遇到的任何元事件或控制更改事件。
- 另请参见:
-
Sequencer.SyncMode
,addMetaEventListener(javax.sound.midi.MetaEventListener)
,ControllerEventListener
,Receiver
,Transmitter
,MidiDevice
嵌套类摘要 | |
---|---|
static class |
Sequencer.SyncMode SyncMode 对象表示 MIDI sequencer 的时间标记可与主或从设备同步的方式之一。 |
从接口 javax.sound.midi.MidiDevice 继承的嵌套类/接口 |
---|
MidiDevice.Info |
字段摘要 | |
---|---|
static int |
LOOP_CONTINUOUSLY 一个值,指示循环应无限继续而不是在执行完特定次数的循环后停止。 |
方法摘要 | |
---|---|
int[] |
addControllerEventListener(ControllerEventListener listener, int[] controllers) 注册一个控件事件侦听器,以便在 sequencer 处理所请求的一种或多种类型的控制更改事件时接收通知。 |
boolean |
addMetaEventListener(MetaEventListener listener) 注册一个元事件侦听器,以便在 sequence 中遇到元事件并由此 sequencer 处理时接收通知。 |
int |
getLoopCount() 获得回放的重复次数。 |
long |
getLoopEndPoint() 获得循环的结束位置,以 MIDI 节拍为单位。 |
long |
getLoopStartPoint() 获得循环的起始位置,以 MIDI 节拍为单位。 |
Sequencer.SyncMode |
getMasterSyncMode() 获得此 sequencer 的当前主同步模式。 |
Sequencer.SyncMode[] |
getMasterSyncModes() 获得此 sequencer 支持的主同步模式集。 |
long |
getMicrosecondLength() 获得当前 sequence 的长度,用微秒表示,如果未设置 sequence,则为 0。 |
long |
getMicrosecondPosition() 获得 sequence 中的当前位置,用微秒表示。 |
Sequence |
getSequence() 获得 Sequencer 当前所操作的 sequence。 |
Sequencer.SyncMode |
getSlaveSyncMode() 获得此 sequencer 的当前从同步模式。 |
Sequencer.SyncMode[] |
getSlaveSyncModes() 获得此 sequencer 支持的从同步模式集。 |
float |
getTempoFactor() 返回 sequencer 的当前速度因子。 |
float |
getTempoInBPM() 获得当前的速度,用每分钟的拍数表示。 |
float |
getTempoInMPQ() 获得当前的速度,用每四分音符的微秒数表示。 |
long |
getTickLength() 获得当前 sequence 的长度,用 MIDI 节拍数表示,如果未设置 sequence,则为 0。 |
long |
getTickPosition() 获得 sequence 的当前位置,用 MIDI 节拍数表示。 |
boolean |
getTrackMute(int track) 获得轨道的当前静音状态。 |
boolean |
getTrackSolo(int track) 获得轨道的当前 solo 状态。 |
boolean |
isRecording() 指示 Sequencer 当前是否正在录制。 |
boolean |
isRunning() 指示 Sequencer 当前是否正在运行。 |
void |
recordDisable(Track track) 禁止向指定轨道的录制。 |
void |
recordEnable(Track track, int channel) 为录制特定通道上接收的事件准备指定的轨道。 |
int[] |
removeControllerEventListener(ControllerEventListener listener, int[] controllers) 移除侦听一类或多类控件事件的控件事件侦听器。 |
void |
removeMetaEventListener(MetaEventListener listener) 从此 sequencer 的已注册侦听器列表中移除指定的元事件侦听器(如果实际上此侦听器已注册)。 |
void |
setLoopCount(int count) 设置循环回放的重复次数。 |
void |
setLoopEndPoint(long tick) 设置在循环中播放的最后一个 MIDI 节拍。 |
void |
setLoopStartPoint(long tick) 设置在循环中播放的第一个 MIDI 节拍。 |
void |
setMasterSyncMode(Sequencer.SyncMode sync) 设置此 sequencer 使用的定时信息源。 |
void |
setMicrosecondPosition(long microseconds) 设置 sequence 中的当前位置,用微秒表示 |
void |
setSequence(InputStream stream) 设置 sequencer 所操作的当前 sequence。 |
void |
setSequence(Sequence sequence) 设置 sequencer 所操作的当前 sequence。 |
void |
setSlaveSyncMode(Sequencer.SyncMode sync) 设置此 sequencer 的从同步模式。 |
void |
setTempoFactor(float factor) 根据所提供的 factor 按比例提高 sequencer 的实际回放速度。 |
void |
setTempoInBPM(float bpm) 设置速度,以每分钟的拍数为单位。 |
void |
setTempoInMPQ(float mpq) 设置速度,以每四分音符的微秒数为单位。 |
void |
setTickPosition(long tick) 设置当前 sequencer 位置,以 MIDI 节拍数为单位。 |
void |
setTrackMute(int track, boolean mute) 设置轨道的静音状态。 |
void |
setTrackSolo(int track, boolean solo) 设置轨道的 solo 状态。 |
void |
start() 开始回放当前已加载 sequence 中的 MIDI 数据。 |
void |
startRecording() 开始录制和回放 MIDI 数据。 |
void |
stop() 停止录音(如果处于活动状态)及当前已加载 sequence(如果有)的回放。 |
void |
stopRecording() 停止录制(如果处于活动状态)。 |
从接口 javax.sound.midi.MidiDevice 继承的方法 |
---|
close, getDeviceInfo, getMaxReceivers, getMaxTransmitters, getReceiver, getReceivers, getTransmitter, getTransmitters, isOpen, open |
字段详细信息 |
---|
LOOP_CONTINUOUSLY
static final int LOOP_CONTINUOUSLY
-
一个值,指示循环应无限继续而不是在执行完特定次数的循环后停止。
- 从以下版本开始:
- 1.5
- 另请参见:
-
setLoopCount(int)
, 常量字段值
方法详细信息 |
---|
setSequence
void setSequence(Sequence sequence) throws InvalidMidiDataException
-
设置 sequencer 所操作的当前 sequence。
此方法即使在
Sequencer
关闭时也可调用。 -
-
- 参数:
-
sequence
- 要加载的 sequence。 - 抛出:
-
InvalidMidiDataException
- 如果该 sequence 包含无效的 MIDI 数据或不受支持的数据。
setSequence
void setSequence(InputStream stream) throws IOException, InvalidMidiDataException
-
设置 sequencer 所操作的当前 sequence。该流必须指向 MIDI 文件数据。
此方法即使在
Sequencer
关闭时也可调用。 -
-
- 参数:
-
stream
- 包含 MIDI 文件数据的流。 - 抛出:
-
IOException
- 如果读取流时发生 I/O 异常。 -
InvalidMidiDataException
- 如果在流中遇到无效数据,或者流不受支持。
getSequence
Sequence getSequence()
-
获得 Sequencer 当前所操作的 sequence。
此方法即使在
Sequencer
关闭时也可调用。 -
-
- 返回:
-
当前的 sequence,如果当前未设置任何 sequence,则返回
null
。
start
void start()
-
开始回放当前已加载 sequence 中的 MIDI 数据。回放将从当前位置开始。如果回放位置到达循环终点,并且循环计数大于 0,则回放将从循环开始点继续运行
setLoopCount
中设置的重复次数。此后,如果循环计数为 0,则回放将继续播放直到 sequence 末尾。该实现确保合成器在跳转到循环开始点时通过发送合适的控件、弯音和程序更改事件来保持一致的状态。
-
-
- 抛出:
-
IllegalStateException
- 如果Sequencer
已关闭。 - 另请参见:
-
setLoopStartPoint(long)
,setLoopEndPoint(long)
,setLoopCount(int)
,stop()
stop
void stop()
- 停止录音(如果处于活动状态)及当前已加载 sequence(如果有)的回放。
-
-
- 抛出:
-
IllegalStateException
- 如果Sequencer
已关闭。 - 另请参见:
-
start()
,isRunning()
isRunning
boolean isRunning()
-
指示 Sequencer 当前是否正在运行。默认值为
false
。Sequencer 在调用
或start()
之一时开始运行。然后startRecording()
isRunning
返回true
,直到 sequence 的回放完成或调用了
。stop()
-
-
- 返回:
-
如果 Sequencer 正在运行中,则返回
true
;否则返回false
startRecording
void startRecording()
-
开始录制和回放 MIDI 数据。数据录制到为其启用的通道上的所有已启用音轨上。录制从 sequencer 的当前位置开始。录制会话过程中重写音轨上的全部已有事件。取自当前已加载 sequence 的事件(如果有)随录制过程中接收的消息传递给 sequencer 的传输器。
注意,默认不允许轨道进行录制。为了录制 MIDI 数据,必须至少指定一个轨道允许录制。
-
-
- 抛出:
-
IllegalStateException
- 如果Sequencer
已关闭。 - 另请参见:
-
startRecording()
,recordEnable(javax.sound.midi.Track, int)
,recordDisable(javax.sound.midi.Track)