|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
javax.sound.midi
接口 MidiDevice
- 所有已知子接口:
- Sequencer, Synthesizer
-
public interface MidiDevice
MidiDevice
是用于所有 MIDI 设备的基接口。常见的设备包括合成器、sequencer、MIDI 输入端口和 MIDI 输出端口。
MidiDevice
可以是 MIDI 事件的传输器或接收器,或同时为二者。因此,它可以提供 Transmitter
或 Receiver
实例(或二者都提供)。通常情况下,MIDI IN 端口提供传输器,MIDI OUT 端口和合成器提供接收器。Sequencer 通常提供用于回放的传输器和用于录音的接收器。
MidiDevice
可显式打开和关闭,也可隐式打开和关闭。显式打开通过在 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 device = ...; if ( ! (device instanceof Sequencer) && ! (device instanceof Synthesizer)) { // we're now sure that device represents a MIDI port // ... }
MidiDevice
包括一个提供制造商信息和其他信息的
对象。MidiDevice.Info
- 另请参见:
-
Synthesizer
,Sequencer
,Receiver
,Transmitter
嵌套类摘要 | |
---|---|
static class |
MidiDevice.Info 一个 MidiDevice.Info 对象,它包含了有关 的各种数据,包括其名称、创建它的公司及描述性文本。 |
方法摘要 | |
---|---|
void |
close() 关闭设备,指示设备现在应释放任何正在使用的系统资源。 |
MidiDevice.Info |
getDeviceInfo() 获得有关设备的信息,其中包括包含了其名称、供应商和描述的 Java 类和 Strings 。 |
int |
getMaxReceivers() 获得该 MIDI 设备上用于接收 MIDI 数据的最大可用 MIDI IN 连接数。 |
int |
getMaxTransmitters() 获得该 MIDI 设备用于传输 MIDI 数据的最大可用 MIDI OUT 连接数。 |
long |
getMicrosecondPosition() 获得设备的当前时间戳,以微秒为单位。 |
Receiver |
getReceiver() 获得 MIDI 设备可通过其接收 MIDI 数据的 MIDI IN 接收器。 |
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
获取的实例。
isOpen
boolean 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。