-
- All Superinterfaces:
-
AutoCloseable
- All Known Subinterfaces:
-
Sequencer
,Synthesizer
public interface MidiDevice extends AutoCloseable
MidiDevice
是所有MIDI设备的基础接口。 常用设备包括合成器,音序器,MIDI输入端口和MIDI输出端口。A
MidiDevice
可以是MIDI事件的发射机或接收机,或两者。 因此,它可以提供Transmitter
或Receiver
实例(或两者)。 通常,MIDI IN端口提供发射器,MIDI OUT端口和合成器提供接收器。 音序器通常提供用于播放的发射机和用于记录的接收机。A
MidiDevice
可以明确地和隐式地打开和关闭。 显式打开是通过调用open()
完成的,显式关闭是通过调用close()
在MidiDevice
实例上完成的。 如果应用程序显式地打开了一个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
和Receiver
s不会隐式关闭设备。 要使用这样获得的Receiver
或Transmitter
的设备,必须明确地打开和关闭该设备。如果隐式和明确的打开和关闭混合在同一个
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
-
-
Nested Class Summary
Nested Classes Modifier and Type 接口 描述 static class
MidiDevice.Info
AMidiDevice.Info
对象包含有关MidiDevice
的各种数据,包括其名称,创建它的公司和描述性文本。
-
方法摘要
所有方法 接口方法 抽象方法 Modifier and Type 方法 描述 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接收器接收MIDI数据。List<Receiver>
getReceivers()
返回与此MidiDevice连接的所有当前活动的非闭合接收器。Transmitter
getTransmitter()
获取一个MIDI OUT连接,MIDI设备将从该MIDI连接传输MIDI数据。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()
获取设备的当前时间戳,以微秒为单位。 如果设备支持时间戳,则在设备打开时应开始计数,并继续递增其时间戳,以微秒为单位,直到设备关闭。 如果不支持时间戳,则应始终返回-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接收器接收MIDI数据。 当应用程序完成使用后,返回的接收方必须关闭。通常返回的接收器实现
MidiDeviceReceiver
接口。使用此方法获取
Receiver
不会打开设备。 为了能够使用该设备,它必须通过调用open()
来明确打开。 此外,关闭Receiver
并不关闭设备。 必须通过调用close()
显式关闭。- 结果
- 该设备的接收器
- 异常
-
MidiUnavailableException
- 由于资源限制,如果接收器不可用,则抛出 - 另请参见:
-
Receiver.close()
-
getReceivers
List<Receiver> getReceivers()
返回与此MidiDevice连接的所有当前活动的非闭合接收器。 通过关闭接收器可以从设备中移除。通常返回的接收器实现
MidiDeviceReceiver
接口。- 结果
- 一个不可修改的开放式接收器列表
- 从以下版本开始:
- 1.5
-
getTransmitter
Transmitter getTransmitter() throws MidiUnavailableException
获取一个MIDI OUT连接,MIDI设备将从该MIDI连接传输MIDI数据。 当应用程序完成使用后,返回的变送器必须关闭。通常返回的发射机实现
MidiDeviceTransmitter
接口。使用此方法获取
Transmitter
不会打开设备。 为了能够使用该设备,它必须通过调用open()
明确打开。 此外,关闭Transmitter
并不关闭设备。 它必须通过调用close()
显式关闭。- 结果
- 用于设备的MIDI OUT发射器
- 异常
-
MidiUnavailableException
- 由于资源限制,如果发射机不可用,则抛出 - 另请参见:
-
Transmitter.close()
-
getTransmitters
List<Transmitter> getTransmitters()
返回与此MidiDevice连接的所有当前有效的非闭合发射器。 通过关闭变送器可以将其从设备中取出。通常返回的发射机实现
MidiDeviceTransmitter
接口。- 结果
- 一个不可修改的开放式发射机列表
- 从以下版本开始:
- 1.5
-
-