public interface Sequencer extends MidiDevice
sequence
称为音序器。MIDI序列包含了时间戳的MIDI数据,例如可以从一个标准的MIDI文件的读取。大多数的音序器还提供了用于创建和编辑序列的功能。
的Sequencer
接口包括以下基本的MIDI音序器的操作方法:
Sequencer
访问对象:
Modifier and Type | Interface and Description |
---|---|
static class |
Sequencer.SyncMode
一个
SyncMode 对象代表一种时间的MIDI音序器的概念可以同步主从设备。
|
MidiDevice.Info
Modifier and Type | Field and Description |
---|---|
static int |
LOOP_CONTINUOUSLY
一个值表示循环应该继续下去而不是完成一个特定的圈数后。
|
Modifier and Type | Method and Description |
---|---|
int[] |
addControllerEventListener(ControllerEventListener listener, int[] controllers)
寄存器控制器事件监听器接收通知时,音序器处理所请求的类型或类型的控制改变事件。
|
boolean |
addMetaEventListener(MetaEventListener listener)
注册一个元事件监听器接收通知时,一元事件序列中遇到的音序器处理。
|
int |
getLoopCount()
获取播放的重复次数。
|
long |
getLoopEndPoint()
获得循环的结束位置,在MIDI蜱。
|
long |
getLoopStartPoint()
获得循环的开始位置,在MIDI蜱。
|
Sequencer.SyncMode |
getMasterSyncMode()
获得当前主同步模式这个音序器。
|
Sequencer.SyncMode[] |
getMasterSyncModes()
得到了主同步模式支持的音序器设置。
|
long |
getMicrosecondLength()
获取当前序列的长度,表示在0微秒,或者如果没有序列集。
|
long |
getMicrosecondPosition()
得到序列中的当前位置,表示在微秒。
|
Sequence |
getSequence()
得到序列的测序仪是目前经营。
|
Sequencer.SyncMode |
getSlaveSyncMode()
获得当前从同步模式这个音序器。
|
Sequencer.SyncMode[] |
getSlaveSyncModes()
获得从同步模式的音序器支持集。
|
float |
getTempoFactor()
返回当前的测序速度的因素。
|
float |
getTempoInBPM()
获得当前的速度,以每分钟的节拍表示。
|
float |
getTempoInMPQ()
获得当前的速度,在微秒每季度注表达。
|
long |
getTickLength()
获取当前序列的长度,在MIDI蜱表达,或0如果没有序列集。
|
long |
getTickPosition()
得到序列中的当前位置,用MIDI蜱。
|
boolean |
getTrackMute(int track)
获取轨道的当前静音状态。
|
boolean |
getTrackSolo(int track)
获得一个轨道的当前状态。
|
boolean |
isRecording()
指示是否音序器是目前记录。
|
boolean |
isRunning()
指示是否正在运行的程序。
|
void |
recordDisable(Track track)
禁用记录到指定的轨道。
|
void |
recordEnable(Track track, int channel)
准备在特定信道上接收的记录事件的指定轨道。
|
int[] |
removeControllerEventListener(ControllerEventListener listener, int[] controllers)
删除一个或多个控制器事件中的控制器事件侦听器的兴趣。
|
void |
removeMetaEventListener(MetaEventListener listener)
从注册的监听器这个音序器的列表中移除指定的元事件监听器,如果事实上侦听器注册。
|
void |
setLoopCount(int count)
设置回放的循环的重复次数。
|
void |
setLoopEndPoint(long tick)
设置MIDI滴答,最后将在循环播放。
|
void |
setLoopStartPoint(long tick)
设置第一个MIDI滴答,将在循环播放。
|
void |
setMasterSyncMode(Sequencer.SyncMode sync)
套的音序器使用的定时信息的来源。
|
void |
setMicrosecondPosition(long microseconds)
集序列中的当前位置,表示在微秒
|
void |
setSequence(InputStream stream)
设置当前的序列,序列操作。
|
void |
setSequence(Sequence sequence)
设置当前的序列,序列操作。
|
void |
setSlaveSyncMode(Sequencer.SyncMode sync)
设置音序器从同步模式。
|
void |
setTempoFactor(float factor)
尺度的音序器的实际播放速度的因素。
|
void |
setTempoInBPM(float bpm)
设置节拍每分钟的节奏。
|
void |
setTempoInMPQ(float mpq)
套在微秒每四分音符节奏。
|
void |
setTickPosition(long tick)
设置MIDI音序器的当前位置蜱
|
void |
setTrackMute(int track, boolean mute)
设置轨道的静音状态。
|
void |
setTrackSolo(int track, boolean solo)
设置轨道的独奏状态。
|
void |
start()
开始播放当前加载的MIDI数据序列。
|
void |
startRecording()
开始录制和播放MIDI数据。
|
void |
stop()
停止记录,如果是主动的,和播放当前加载的序列,如果有。
|
void |
stopRecording()
停止记录,如果活动。
|
close, getDeviceInfo, getMaxReceivers, getMaxTransmitters, getReceiver, getReceivers, getTransmitter, getTransmitters, isOpen, open
static final int LOOP_CONTINUOUSLY
setLoopCount(int)
,
Constant Field Values
void setSequence(Sequence sequence) throws InvalidMidiDataException
这种方法可以即使Sequencer
关闭称为。
sequence
的序列被加载。
InvalidMidiDataException
-如果序列包含无效的MIDI数据,或是不支持的。
void setSequence(InputStream stream) throws IOException, InvalidMidiDataException
这种方法可以即使Sequencer
关闭称为。
stream
含MIDI文件的数据流。
IOException
如果流读书期间发生的I/O异常。
InvalidMidiDataException
如果无效数据流中遇到,或者流不支持。
Sequence getSequence()
这种方法可以即使Sequencer
关闭称为。
null
如果没有序列的当前设置。
void start()
setLoopCount
数。之后,或者如果循环数为0,播放将继续播放到序列的结束。
该实现确保合成器被带到一个一致的状态时,跳到循环的起点,通过发送适当的控制器,俯仰弯曲,和程序更改事件。
IllegalStateException
-如果
Sequencer
关闭。
setLoopStartPoint(long)
,
setLoopEndPoint(long)
,
setLoopCount(int)
,
stop()
void stop()
IllegalStateException
-如果
Sequencer
关闭。
start()
,
isRunning()
boolean isRunning()
true
如果音序器正在运行,否则
false
void startRecording()
请注意,轨道不是默认启用的记录。为了录制MIDI数据,至少一个轨道必须专门启用记录。
IllegalStateException
-如果
Sequencer
关闭。
startRecording()
,
recordEnable(javax.sound.midi.Track, int)
,
recordDisable(javax.sound.midi.Track)
void stopRecording()
IllegalStateException
-如果
Sequencer
关闭。
startRecording()
,
isRecording()
boolean isRecording()
true
如果音序器是记录,否则
false
void recordEnable(Track track, int channel)
track
-轨道的事件将被记录
channel
的通道上的事件将收到。如果- 1被指定为通道值,轨道将接收来自所有通道的数据。
IllegalArgumentException
-如果轨道不是当前序列部分抛出。
void recordDisable(Track track)
track
-轨道,禁用记录,或
null
为所有轨道禁用记录。
float getTempoInBPM()
getTempoFactor()
,
setTempoInBPM(float)
,
getTempoInMPQ()
void setTempoInBPM(float bpm)
bpm
-期望新的节奏,每分钟心跳
getTempoFactor()
,
setTempoInMPQ(float)
,
getTempoInBPM()
float getTempoInMPQ()
getTempoFactor()
,
setTempoInMPQ(float)
,
getTempoInBPM()
void setTempoInMPQ(float mpq)
mpq
-期望新的节奏,在微秒每季度注。
getTempoFactor()
,
setTempoInBPM(float)
,
getTempoInMPQ()
void setTempoFactor(float factor)
getTempoInMPQ()
和
getTempoInBPM()
返回。这些值表明缩放之前的节奏。
请注意,当使用外部同步时,无法调整速度因子。在这种情况下,setTempoFactor
总是设置节奏因素1。
factor
-请求的速度标量
getTempoFactor()
float getTempoFactor()
setTempoFactor(float)
long getTickLength()
long getTickPosition()
Sequence
。定时分辨率确定)
setTickPosition(long)
void setTickPosition(long tick)
tick
-所需的刻度位置
getTickPosition()
long getMicrosecondLength()
long getMicrosecondPosition()
getMicrosecondPosition
接口
MidiDevice
setMicrosecondPosition(long)
void setMicrosecondPosition(long microseconds)
microseconds
-位置微秒
getMicrosecondPosition()
void setMasterSyncMode(Sequencer.SyncMode sync)
sync
价值,
sync
参数必须是一个支持的模式,返回的
getMasterSyncModes()
。
sync
-
Sequencer.SyncMode.INTERNAL_CLOCK
,
Sequencer.SyncMode.MIDI_SYNC
,
Sequencer.SyncMode.MIDI_TIME_CODE
,
getMasterSyncMode()
Sequencer.SyncMode getMasterSyncMode()
setMasterSyncMode(Sequencer.SyncMode)
,
getMasterSyncModes()
Sequencer.SyncMode[] getMasterSyncModes()
void setSlaveSyncMode(Sequencer.SyncMode sync)
sync
参数必须是一个支持的模式,返回的
getSlaveSyncModes()
。
sync
-期望从同步模式
Sequencer.SyncMode.MIDI_SYNC
,
Sequencer.SyncMode.MIDI_TIME_CODE
,
Sequencer.SyncMode.NO_SYNC
,
getSlaveSyncModes()
Sequencer.SyncMode getSlaveSyncMode()
setSlaveSyncMode(Sequencer.SyncMode)
,
getSlaveSyncModes()
Sequencer.SyncMode[] getSlaveSyncModes()
Sequencer.SyncMode.MIDI_SYNC
,
Sequencer.SyncMode.MIDI_TIME_CODE
,
Sequencer.SyncMode.NO_SYNC
void setTrackMute(int track, boolean mute)
getTrackMute(int)
。
track
的磁道数。在当前序列的轨道编号从0到序列中的轨道的数量减1。
mute
为跟踪新的静音状态。
true
意味着轨道应该是温和的,
false
意味着轨道应unmuted。
getSequence()
boolean getTrackMute(int track)
track
的磁道数。在当前序列的轨道编号从0到序列中的轨道的数量减1。
true
如果静音,如果不
false
。
void setTrackSolo(int track, boolean solo)
solo
是
true
只有这条赛道和其他独奏会曲目将声音。如果
solo
是
false
只有其他独奏会曲目将声音,除非没有轨道独奏会在这种情况下,联合国的所有曲目将声音静音。
这种方法可能失败的原因有多个。例如,指定的磁道数可能不适用于当前的序列,或音序器可能不支持此功能。一个应用程序,需要验证这是否操作成功,应该遵循这个打一个电话
。getTrackSolo(int)
track
的磁道数。在当前序列的轨道编号从0到序列中的轨道的数量减1。
solo
为跟踪新的独奏状态。
true
意味着轨道应该是独奏会,
false
意味着轨道不应单独的。
getSequence()
boolean getTrackSolo(int track)
track
的磁道数。在当前序列的轨道编号从0到序列中的轨道的数量减1。
true
如果独奏会,如果不
false
。
boolean addMetaEventListener(MetaEventListener listener)
listener
侦听器添加
true
如果听者成功添加,否则
false
removeMetaEventListener(javax.sound.midi.MetaEventListener)
,
MetaEventListener
,
MetaMessage
void removeMetaEventListener(MetaEventListener listener)
listener
-元事件监听器移除
addMetaEventListener(javax.sound.midi.MetaEventListener)
int[] addControllerEventListener(ControllerEventListener listener, int[] controllers)
controllers
参数指定,其中应包含MIDI控制器的数字阵列。(每一个数字应该在127到0之间,包括。看到MIDI 1规范的数字,对应于不同类型的控制器。)
返回的数组包含MIDI控制器数字的听众都将收到事件。一些音序器可能不支持系统事件通知,在这种情况下,有一个长度为0的数组。其他音序器可以支持一些控制器的通知,但并不是所有的。这种方法可以重复调用。每一次,返回的数组表示侦听器将被通知的所有控制器,不仅是在该特定调用中请求的控制器。
listener
-控制器事件侦听器添加到已注册的侦听器列表
controllers
- MIDI控制器数字的变化通知要求
removeControllerEventListener(javax.sound.midi.ControllerEventListener, int[])
,
ControllerEventListener
int[] removeControllerEventListener(ControllerEventListener listener, int[] controllers)
controllers
MIDI数字对应的控制器,听众应该不再接收更改通知。从注册侦听器列表完全删除这个监听器,用于
controllers
通过
null
。返回的数组包含MIDI控制器数字的听众都将收到事件。该数组有一个长度为0,如果侦听器将不接收任何控制器的更改通知。
listener
岁的听众
controllers
- MIDI控制器数字的变更通知应取消,或
null
取消所有的控制器
addControllerEventListener(javax.sound.midi.ControllerEventListener, int[])
void setLoopStartPoint(long tick)
一个值为0的起始点意味着加载序列的开始。起始点必须低于或等于结束点,它必须在加载序列的大小范围内下降。
音序器的循环起始点默认的顺序启动。
tick
-循环的起始位置,在MIDI蜱(零基础)
IllegalArgumentException
-如果要求循环起始点不能设置,通常是因为它超出了序列的持续时间或因为起点终点后
setLoopEndPoint(long)
,
setLoopCount(int)
,
getLoopStartPoint()
,
start()
long getLoopStartPoint()
setLoopStartPoint(long)
void setLoopEndPoint(long tick)
结束点的1的值表示序列的最后一个刻度。否则,结束点必须大于或等于起始点,并且必须在加载序列的大小范围内下降。
音序器的循环结束点的默认值为1,意味着年底的序列。
tick
-循环的结束位置,在MIDI蜱(零基础),或1表示最后的刻度
IllegalArgumentException
-如果要求循环点不能设置,通常是因为它超出了序列的持续时间或因为终点前的起点
setLoopStartPoint(long)
,
setLoopCount(int)
,
getLoopEndPoint()
,
start()
long getLoopEndPoint()
setLoopEndPoint(long)
void setLoopCount(int count)
count
倍,之后播放将继续发挥该序列结束。
如果当前位置调用此方法时大于循环结束点,播放继续序列的末尾没有循环,除非循环结束点随之改变。
一个0 count
值:禁用循环播放将继续在循环的终点,它不会回到循环起点。这是一个音序器的默认。
如果播放期间停止循环,电流环状态被清除;随后开始请求不被中断的循环操作的影响。
count
-次播放数环回从循环的结束位置到循环的起始位置,或
LOOP_CONTINUOUSLY
表明循环继续直到中断
IllegalArgumentException
-如果
count
是负面的和不平等的
LOOP_CONTINUOUSLY
setLoopStartPoint(long)
,
setLoopEndPoint(long)
,
getLoopCount()
,
start()
int getLoopCount()
setLoopCount(int)
,
start()
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.