JavaTM 2 Platform
Standard Ed. 6

javax.sound.midi
介面 MidiDevice

所有已知子介面:
Sequencer, Synthesizer

public interface MidiDevice

MidiDevice 是用於所有 MIDI 設備的基介面。常見的設備包括合成器、sequencer、MIDI 輸入埠號和 MIDI 輸出埠號。

MidiDevice 可以是 MIDI 事件的傳輸器或接收器,或同時為二者。因此,它可以提供 TransmitterReceiver 實例(或二者都提供)。通常情況下,MIDI IN 埠號提供傳輸器,MIDI OUT 埠號和合成器提供接收器。Sequencer 通常提供用於回放的傳輸器和用於錄音的接收器。

MidiDevice 可顯式打開和關閉,也可隱式打開和關閉。顯式打開通過在 MidiDevice 實例上調用 open() 來實作,顯式關閉通過在 MidiDevice 實例上調用 close() 來實作。如果應用程序顯式打開了 MidiDevice,則也必須顯式地將其關閉,以釋放系統資源和允許應用程序完全退出。隱式打開通過調用 MidiSystem.getReceiverMidiSystem.getTransmitter 實作。由 MidiSystem.getReceiverMidiSystem.getTransmitter 使用的 MidiDevice 與實作相關,除非使用了屬性 javax.sound.midi.Receiverjavax.sound.midi.Transmitter(請參見 MidiSystem 中對用於選擇預設提供者的屬性的描述)。對隱式打開的 MidiDevice 可隱式關閉它,方法是關閉打開它所得到的 ReceiverTransmitter。如果應用程序獲得了多個隱式打開的 ReceiverTransmitter,則在關閉最後一個 ReceiverTransmitter 後才關閉設備。另一方面,直接在設備實例上調用 getReceivergetTransmitter 並不會隱式打開此設備。關閉這些 TransmitterReceiver 並不隱式關閉設備。要使用其 ReceiverTransmitter 以這樣的方式獲得的設備,必須顯式打開和關閉此設備。

如果在同一 MidiDevice 實例上混用隱式和顯式的打開和關閉,則應用以下規則:

要檢測一個 MidiDevice 是否代表一個硬體 MIDI 埠號,可使用以下程式技巧:
 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 物件,它包含了有關 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 設備可通過其接收 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()
關閉設備,指示設備現在應釋放任何正在使用的系統資源。

從此設備打開的所有 ReceiverTransmitter 實例都將關閉。這包括通過 MidiSystem 獲取的實例。

另請參見:
open(), isOpen()

isOpen

boolean isOpen()
報告設備是否為打開狀態。

返回:
如果設備為打開狀態,則返回 true,否則返回 false
另請參見:
open(), close()

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 設備可通過其接收 MIDI 資料的 MIDI IN 接收器。返回的接收器必須在應用程序結束使用後關閉。

使用此方法獲得 Receiver 並不打開設備。要想能夠使用該設備,必須通過調用 open() 將其顯式打開。同理,關閉 Receiver 並不關閉設備。必須通過調用 close() 將其顯式關閉。

返回:
供設備使用的接收器。
拋出:
MidiUnavailableException - 如果由於資源限制使接收器不可用
另請參見:
Receiver.close()

getReceivers

List<Receiver> getReceivers()
返回與該 MidiDevice 連接的所有當前活動的、非關閉的接收器。通過關閉接收器可將它從設備中移除。

返回:
已打開接收器的不可修改列表
從以下版本開始:
1.5

getTransmitter

Transmitter getTransmitter()
                           throws MidiUnavailableException
獲得 MIDI 設備將從其傳輸 MIDI 資料的 MIDI OUT 連接。返回的傳輸器必須在應用程序結束使用後關閉。

使用此方法獲得 Transmitter 並不打開設備。要想能夠使用該設備,必須通過調用 open() 將其顯式打開。同理,關閉 Transmitter 並不關閉設備。必須通過調用 close() 將其顯式關閉。

返回:
供設備使用的一個 MIDI OUT 傳輸器。
拋出:
MidiUnavailableException - 如果由於資源限制使傳輸器不可用
另請參見:
Transmitter.close()

getTransmitters

List<Transmitter> getTransmitters()
返回與該 MidiDevice 連接的所有當前活動的、非關閉的傳輸器。通過關閉傳輸器可將它從設備中移除。

返回:
已打開傳輸器的不可修改列表
從以下版本開始:
1.5

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only