- 所有超接口:
-
AutoCloseable
- 所有已知子接口:
-
Sequencer
,Synthesizer
MidiDevice
是所有MIDI设备的基本接口。常见设备包括合成器、序列器、MIDI输入端口和MIDI输出端口。
MidiDevice
可以是MIDI事件的发送器或接收器,也可以同时兼具两者。因此,它可以提供Transmitter
或Receiver
实例(或两者)。通常,MIDI输入端口提供发送器,MIDI输出端口和合成器提供接收器。序列器通常提供用于播放的发送器和用于录制的接收器。
MidiDevice
可以显式打开和关闭,也可以隐式打开和关闭。显式打开是通过调用open()
来实现的,显式关闭是通过调用MidiDevice
实例上的close()
来完成的。如果应用程序显式打开了一个MidiDevice
,则必须显式关闭它以释放系统资源并使应用程序能够干净地退出。隐式打开是通过调用MidiSystem.getReceiver()
和MidiSystem.getTransmitter()
来实现的。由MidiSystem.getReceiver
和MidiSystem.getTransmitter
使用的MidiDevice
取决于实现,除非使用属性javax.sound.midi.Receiver
和javax.sound.midi.Transmitter
(请参阅选择默认提供程序的属性描述MidiSystem
)。隐式打开的MidiDevice
通过关闭导致打开它的Receiver
或Transmitter
来隐式关闭。如果应用程序获得了多个隐式打开的Receiver
或Transmitter
,则在最后一个Receiver
或Transmitter
关闭后关闭设备。另一方面,在设备实例上直接调用getReceiver
或getTransmitter
不会隐式打开设备。关闭这些Transmitter
和Receiver
不会隐式关闭设备。要使用通过这种方式获得的带有Receiver
或Transmitter
的设备,必须显式打开和关闭设备。
如果在同一个MidiDevice
实例上混合使用隐式和显式打开和关闭,则适用以下规则:
- 在显式打开后(无论是在隐式打开之前还是之后),设备将不会被隐式关闭。显式打开的设备关闭的唯一方法是显式关闭。
- 显式关闭始终会关闭设备,即使它也已隐式打开。随后的隐式关闭不会产生进一步效果。
MidiDevice
是否表示硬件MIDI端口,可以使用以下编程技术:
MidiDevice device = ...;
if (!(device instanceof Sequencer) && !(device instanceof Synthesizer)) {
// 现在我们确信设备表示MIDI端口
// ...
}
MidiDevice
包括一个MidiDevice.Info
对象,提供制造商信息等。
- 参见:
-
Nested Class Summary
Modifier and TypeInterfaceDescriptionstatic class
MidiDevice.Info
对象包含有关MidiDevice
的各种数据,包括其名称、创建者公司和描述性文本。 -
Method Summary
Modifier and TypeMethodDescriptionvoid
close()
关闭设备,指示设备现在应释放其正在使用的任何系统资源。获取有关设备的信息,包括其Java类和包含其名称、供应商和描述的Strings
。int
获取此MIDI设备上可用于接收MIDI数据的最大MIDI IN连接数。int
获取此MIDI设备上可用于传输MIDI数据的最大MIDI OUT连接数。long
获取设备的当前时间戳,单位为微秒。通过此MIDI设备可能接收MIDI数据的MIDI IN接收器。返回所有当前活动的、未关闭的与此MidiDevice
连接的接收器。从中MIDI设备将传输MIDI数据的MIDI OUT连接。返回所有当前活动的、未关闭的与此MidiDevice
连接的发送器。boolean
isOpen()
报告设备是否打开。void
open()
打开设备,指示它现在应获取其所需的任何系统资源并变为可操作状态。
-
Method Details
-
getDeviceInfo
MidiDevice.Info getDeviceInfo()获取有关设备的信息,包括其Java类和包含其名称、供应商和描述的Strings
。- 返回:
- 设备信息
-
open
打开设备,指示它现在应获取其所需的任何系统资源并变为可操作状态。使用此调用显式打开设备的应用程序必须通过调用
close()
关闭设备。这是为了释放系统资源并允许应用程序干净退出。请注意,某些设备一旦关闭就无法重新打开。尝试重新打开此类设备将始终导致
MidiUnavailableException
。- 抛出:
-
MidiUnavailableException
- 如果由于资源限制而无法打开设备时抛出 -
SecurityException
- 如果由于安全限制而无法打开设备时抛出 - 参见:
-
close
void close()关闭设备,指示设备现在应释放其正在使用的任何系统资源。从此设备打开的所有
Receiver
和Transmitter
实例都将被关闭。这包括通过MidiSystem
检索的实例。- 由以下指定:
-
close
在接口AutoCloseable
- 参见:
-
isOpen
boolean isOpen()报告设备是否打开。- 返回:
-
如果设备打开,则为
true
,否则为false
- 参见:
-
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
通过此MIDI设备可能接收MIDI数据的MIDI IN接收器。当应用程序使用完毕时,必须关闭返回的接收器。通常,返回的接收器实现
MidiDeviceReceiver
接口。使用此方法获取
Receiver
不会打开设备。要能够使用设备,必须通过调用open()
显式打开设备。此外,关闭Receiver
不会关闭设备。必须通过调用close()
显式关闭设备。- 返回:
- 设备的接收器
- 抛出:
-
MidiUnavailableException
- 如果由于资源限制而无法获得接收器时抛出 - 参见:
-
getReceivers
返回所有当前活动的、未关闭的与此MidiDevice
连接的接收器。可以通过关闭接收器从设备中移除接收器。通常,返回的接收器实现
MidiDeviceReceiver
接口。- 返回:
- 与此设备连接的所有当前活动的、未关闭的接收器的不可修改列表
- 自:
- 1.5
-
getTransmitter
从中获取一个 MIDI OUT 连接,通过该连接 MIDI 设备将传输 MIDI 数据。当应用程序使用完毕后,必须关闭返回的发射器。通常返回的发射器实现了
MidiDeviceTransmitter
接口。使用此方法获取
Transmitter
不会打开设备。要能够使用设备,必须显式调用open()
打开设备。同样,关闭Transmitter
不会关闭设备。必须显式调用close()
关闭设备。- 返回:
- 设备的 MIDI OUT 发射器
- 抛出:
-
MidiUnavailableException
- 如果由于资源限制而无法使用发射器,则抛出 - 参见:
-
getTransmitters
List<Transmitter> getTransmitters()返回所有当前活动的、未关闭的与此MidiDevice
连接的发射器。通过关闭发射器可以将其从设备中移除。通常返回的发射器实现了
MidiDeviceTransmitter
接口。- 返回:
- 一个不可修改的打开发射器列表
- 自:
- 1.5
-