public interface MidiDevice extends AutoCloseable
MidiDeviceは、すべてのMIDIデバイスのための基底インタフェースです。よく使われるデバイスには、シンセサイザ、シーケンサ、MIDI入力ポート、MIDI出力ポートなどがあります。
MidiDeviceは、MIDIイベントのトランスミッタ、レシーバ、またはその両方になることができます。したがって、TransmitterインスタンスまたはReceiverインスタンス、あるいはその両方を提供できます。通常、MIDI INポートはトランスミッタを提供し、MIDI OUTポートおよびシンセサイザはレシーバを提供します。通常、シーケンサは、再生用にトランスミッタを提供し、録音用にレシーバを提供します。
MidiDeviceの開閉は、明示的に行うことも、暗黙的に行うこともできます。明示的に開くにはMidiDeviceインスタンスでopen()を呼び出し、明示的に閉じるには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
| 修飾子と型 | インタフェースと説明 |
|---|---|
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()
デバイスを開き、必要なシステム・リソースをデバイスが獲得して操作可能になっていることを示します。
|
MidiDevice.Info getDeviceInfo()
Stringsを含む、デバイスに関する情報を取得します。void open() throws MidiUnavailableException
このメソッドを呼び出してデバイスを明示的に開いたアプリケーションでは、close()を呼び出してそのデバイスを閉じる必要があります。この操作は、システム・リソースを解放し、アプリケーションが正常に終了するために必要です。
デバイスによっては、一度閉じるとふたたび開くことができないことに注意してください。こうしたデバイスを再度開こうとすると、常にMidiUnavailableExceptionになります。
MidiUnavailableException - リソースの制約のためにデバイスを開けない場合にスローされる。SecurityException - セキュリティの制約のためにデバイスを開けない場合にスローされる。close(), isOpen()void close()
このデバイスから開いたReceiverインスタンスとTransmitterインスタンスはすべて閉じられます。MidiSystemを介して取得したインスタンスも同様に閉じられます。
close、インタフェース: AutoCloseableopen(), isOpen()boolean isOpen()
long getMicrosecondPosition()
int getMaxReceivers()
int getMaxTransmitters()
Receiver getReceiver() throws MidiUnavailableException
通常、返されたレシーバはMidiDeviceReceiverインタフェースを実装します。
このメソッドでReceiverを取得しても、デバイスは開きません。デバイスを使用するには、open()を呼び出して明示的に開く必要があります。また、Receiverを閉じても、デバイスは閉じられません。close()を呼び出してデバイスを明示的に閉じる必要があります。
MidiUnavailableException - リソースの制約のためにレシーバを使用できない場合にスローされるReceiver.close()List<Receiver> getReceivers()
通常、返されたレシーバはMidiDeviceReceiverインタフェースを実装します。
Transmitter getTransmitter() throws MidiUnavailableException
通常、返されたトランスミッタはMidiDeviceTransmitterインタフェースを実装します。
このメソッドでTransmitterを取得しても、デバイスは開きません。デバイスを使用するには、open()を呼び出して明示的に開く必要があります。また、Transmitterを閉じても、デバイスは閉じられません。close()を呼び出してデバイスを明示的に閉じる必要があります。
MidiUnavailableException - リソースの制約のためにトランスミッタを使用できない場合にスローされるTransmitter.close()List<Transmitter> getTransmitters()
通常、返されたトランスミッタはMidiDeviceTransmitterインタフェースを実装します。
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.