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
、インタフェース: AutoCloseable
open()
, 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.