-
- All Superinterfaces:
-
AutoCloseable
- All Known Subinterfaces:
-
Sequencer
,Synthesizer
public interface MidiDevice extends AutoCloseable
MidiDevice
是所有MIDI设备的基本界面。 常用设备包括合成器,音序器,MIDI输入端口和MIDI输出端口。MidiDevice
可以是MIDI事件的发送器或接收器,或两者。 因此,它可以提供Transmitter
或Receiver
个实例(或两者)。 通常,MIDI IN端口提供发送器,MIDI OUT端口和合成器提供接收器。 定序器通常提供用于回放的发送器和用于记录的接收器。MidiDevice
可以显式地和隐式地打开和关闭。 通过调用open()
完成显式打开,通过在MidiDevice
实例上调用close()
完成显式关闭。 如果应用程序显式打开MidiDevice
,则必须显式关闭它以释放系统资源并使应用程序干净地退出。 通过调用MidiSystem.getReceiver()
和MidiSystem.getTransmitter()
完成隐式打开。 所述MidiDevice
通过使用MidiSystem.getReceiver
和MidiSystem.getTransmitter
是依赖于实现的,除非属性javax.sound.midi.Receiver
和javax.sound.midi.Transmitter
被使用(见属性的描述中,选择默认提供MidiSystem
)。 一个MidiDevice
这是隐式打开,通过关闭隐式关闭Receiver
或Transmitter
,导致打开它。 如果应用程序获得多个隐式打开Receiver
或Transmitter
,则在关闭最后一个Receiver
或Transmitter
后关闭设备。 另一方面,直接在设备实例上调用getReceiver
或getTransmitter
不会隐式打开设备。 关闭这些Transmitter
s和Receiver
s不会隐式关闭设备。 要使用以这种方式获得的Receiver
s或Transmitter
s的设备,必须明确打开和关闭设备。如果在同一个
MidiDevice
实例上混合了隐式和显式打开和关闭,则以下规则适用:- 在显式打开之后(隐式打开之前或之后),隐式关闭不会关闭设备。 关闭显式打开的设备的唯一方法是显式关闭。
- 显式关闭始终会关闭设备,即使它也已隐式打开。 随后的隐式关闭没有进一步的效果。
MidiDevice device = ...; if (!(device instanceof Sequencer) && !(device instanceof Synthesizer)) { // we're now sure that device represents a MIDI port // ... }
A
MidiDevice
包括MidiDevice.Info
对象以提供制造商信息等。- 另请参见:
-
Synthesizer
,Sequencer
,Receiver
,Transmitter
-
-
嵌套类汇总
嵌套类 变量和类型 接口 描述 static class
MidiDevice.Info
MidiDevice.Info
对象包含有关MidiDevice
的各种数据,包括其名称,创建它的公司以及描述性文本。
-
方法摘要
所有方法 实例方法 抽象方法 变量和类型 方法 描述 void
close()
关闭设备,指示设备现在应该释放它正在使用的任何系统资源。MidiDevice.Info
getDeviceInfo()
获取有关设备的信息,包括其Java类和包含其名称,供应商和描述的Strings
。int
getMaxReceivers()
获得此MIDI设备上可用于接收MIDI数据的最大MIDI IN连接数。int
getMaxTransmitters()
获得此MIDI设备上可用于传输MIDI数据的最大MIDI OUT连接数。long
getMicrosecondPosition()
获得设备的当前时间戳,以微秒为单位。Receiver
getReceiver()
获得MIDI IN接收器,MIDI设备可通过该接收器接收MIDI数据。List<Receiver>
getReceivers()
返回与此MidiDevice
连接的所有当前活动的非关闭接收器。Transmitter
getTransmitter()
获得MIDI设备将从中传输MIDI数据的MIDI OUT连接。List<Transmitter>
getTransmitters()
返回与此MidiDevice
连接的所有当前活动的非闭合发送器。boolean
isOpen()
报告设备是否已打开。void
open()
打开设备,指示它现在应该获取它所需的任何系统资源并开始运行。
-
-
-
方法详细信息
-
getDeviceInfo
MidiDevice.Info getDeviceInfo()
获取有关设备的信息,包括其Java类和包含其名称,供应商和描述的Strings
。- 结果
- 设备信息
-
open
void open() throws MidiUnavailableException
打开设备,指示它现在应该获取它所需的任何系统资源并开始运行。使用此调用明确打开设备的应用程序必须通过调用
close()
来关闭设备。 这是释放系统资源并允许应用程序干净地退出所必需的。请注意,某些设备一旦关闭,就无法重新打开。 尝试重新打开此类设备将始终生成
MidiUnavailableException
。- 异常
-
MidiUnavailableException
- 如果由于资源限制而无法打开设备,则抛出此异常 -
SecurityException
- 如果由于安全限制而无法打开设备,则抛出此异常 - 另请参见:
-
close()
,isOpen()
-
close
void close()
关闭设备,指示设备现在应该释放它正在使用的任何系统资源。从此设备打开的所有
Receiver
和Transmitter
实例均已关闭。 这包括通过MidiSystem
检索的实例。- Specified by:
-
close
,界面AutoCloseable
- 另请参见:
-
open()
,isOpen()
-
getMicrosecondPosition
long getMicrosecondPosition()
获得设备的当前时间戳,以微秒为单位。 如果设备支持时间戳,则应在设备打开时从0开始计数,并继续以微秒为单位递增其时间戳,直到设备关闭为止。 如果它不支持时间戳,则应始终返回-1。- 结果
- 设备的当前时间戳(以微秒为单位),如果设备不支持时间戳,则为-1
-
getMaxReceivers
int getMaxReceivers()
获得此MIDI设备上可用于接收MIDI数据的最大MIDI IN连接数。- 结果
- MIDI IN连接的最大数量,如果有无限数量的连接,则为-1
-
getMaxTransmitters
int getMaxTransmitters()
获得此MIDI设备上可用于传输MIDI数据的最大MIDI OUT连接数。- 结果
- MIDI OUT连接的最大数量,如果有无限数量的连接,则为-1
-
getReceiver
Receiver getReceiver() throws MidiUnavailableException
获得MIDI IN接收器,MIDI设备可通过该接收器接收MIDI数据。 应用程序使用完毕后,必须关闭返回的接收器。通常,返回的接收器实现
MidiDeviceReceiver
接口。使用此方法获取
Receiver
不会打开设备。 为了能够使用该设备,必须通过致电open()
明确打开它。 此外,关闭Receiver
不会关闭设备。 必须通过致电close()
明确关闭。- 结果
- 设备的接收器
- 异常
-
MidiUnavailableException
- 如果由于资源限制而无法使用接收器,则抛出此异常 - 另请参见:
-
Receiver.close()
-
getReceivers
List<Receiver> getReceivers()
返回与此MidiDevice
连接的所有当前活动的非关闭接收器。 可以通过关闭接收器将其从设备中移除。通常,返回的接收器实现
MidiDeviceReceiver
接口。- 结果
- 一个不可修改的开放接收者名单
- 从以下版本开始:
- 1.5
-
getTransmitter
Transmitter getTransmitter() throws MidiUnavailableException
获得MIDI设备将从中传输MIDI数据的MIDI OUT连接。 应用程序使用完毕后,必须关闭返回的变送器。通常,返回的发送器实现
MidiDeviceTransmitter
接口。使用此方法获取
Transmitter
不会打开设备。 为了能够使用该设备,必须通过致电open()
明确打开它。 此外,关闭Transmitter
不会关闭设备。 必须通过致电close()
明确关闭它。- 结果
- 设备的MIDI OUT发射器
- 异常
-
MidiUnavailableException
- 由于资源限制,如果发射机不可用则抛出 - 另请参见:
-
Transmitter.close()
-
getTransmitters
List<Transmitter> getTransmitters()
返回与此MidiDevice
连接的所有当前活动的非闭合发送器。 可以通过关闭发射器将其从设备中移除。通常,返回的发送器实现
MidiDeviceTransmitter
接口。- 结果
- 一个不可修改的开放式发射机列表
- 从以下版本开始:
- 1.5
-
-