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, 2013, Oracle and/or its affiliates. All rights reserved.