public interface Sequencer extends MidiDevice
sequence 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, openstatic 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()
false 。 
           调用start()startRecording()isRunning然后返回true直到播放顺序完成或stop()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()
false 。 
           当调用startRecording()时, startRecording()true ,直到stop()stopRecording()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.0。 
factor - 请求的速度标量 
           getTempoFactor() 
           float getTempoFactor()
setTempoFactor(float) 
           long getTickLength()
long getTickPosition()
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()返回的支持的模式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 - 所需的从同步模式 
           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意味着轨道应该取消静音。 
           getSequence() 
           boolean getTrackMute(int track)
track - 曲目编号。 
            当前序列中的轨迹从0到序列中的轨道数减1。 
           true如果静音, 
            false如果没有。 
           void setTrackSolo(int track,
                  boolean solo) 
          solo是true只有这个轨道和其他solo'd轨道会发出声音。 
           如果solo是false那么只有其他独奏的曲目会发出声音,除非没有轨道是独奏的,在这种情况下,所有未静音的曲目都会发出声音。 
            由于多种原因,此方法可能会失败。 例如,指定的轨道号可能对当前序列无效,或者定序器可能不支持此功能。 这需要验证此操作是否成功应该遵循这个调用与一个调用应用程序getTrackSolo(int)
track - 轨道号。 
            当前序列中的轨迹从0到序列中的轨道数减1。 
           solo - 新的独奏状态的轨道。 
            true意味着轨道应该是独奏的, false意味着轨道不应该是独奏的。 
           getSequence() 
           boolean getTrackSolo(int track)
track - 曲目编号。 
            当前序列中的轨迹从0到序列中的轨道数减1。 
           true如果 
            true , 
            false如果没有。 
           boolean addMetaEventListener(MetaEventListener listener)
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控制器编号。 
           (每个数字应在0到127之间,包括对应于各种类型的控制器的数字的MIDI 1.0规范。) 
           返回的数组包含MIDI控制器编号,侦听器现在将为其接收事件。 某些顺控程序可能不支持控制器事件通知,在这种情况下,阵列的长度为0.其他定序器可能支持某些控制器的通知,但并不全部。 可以重复地调用该方法。 每次返回的数组都会指示监听器将被通知的所有控制器,不仅是在该特定调用中请求的控制器。
listener - 控制器事件侦听器添加到已注册的侦听器列表 
           controllers - 请求更改通知的MIDI控制器号码 
           removeControllerEventListener(javax.sound.midi.ControllerEventListener, int[]) , ControllerEventListener 
           int[] removeControllerEventListener(ControllerEventListener listener, int[] controllers)
controllers参数是与控制器相对应的MIDI数组数组,监听器不应再接收更改通知。 
           要从注册的听众列表中完全删除此侦听器,请传送null以获取controllers 。 
           返回的数组包含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次,之后播放将继续播放到序列的末尾。 
           如果调用此方法时的当前位置大于循环终点,则回放将继续到序列结束而不进行循环,除非循环结束点随后更改。
 一个count值0禁用循环:回放将在循环结束点继续,并且不会循环回循环起始点。 这是一个音序器的默认值。 
如果在循环过程中播放停止,则当前循环状态被清除; 后续的启动请求不受中断循环操作的影响。
count - 播放应该从循环的结束位置循环回循环的起始位置的次数,或 
            LOOP_CONTINUOUSLYIllegalArgumentException - 如果 
            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.