- すべてのスーパー・インタフェース:
AutoCloseable
- 既知のすべてのサブインタフェース:
Sequencer,Synthesizer
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 classMidiDevice.InfoMidiDevice.Infoオブジェクトには、名前、作成者、説明文など、MidiDeviceに関するさまざまなデータが含まれています。 -
メソッドのサマリー
修飾子と型 メソッド 説明 voidclose()デバイスを閉じ、使用していたシステム・リソースをデバイスが解放することを示します。MidiDevice.InfogetDeviceInfo()Javaクラスと、名前、ベンダーおよび説明などのStringsを含む、デバイスに関する情報を取得します。intgetMaxReceivers()このMIDIデバイスでMIDIデータを受信するのに使用可能なMIDI IN接続の最大数を取得します。intgetMaxTransmitters()このMIDIデバイスでMIDIデータを転送するのに使用可能なMIDI OUT接続の最大数を取得します。longgetMicrosecondPosition()デバイスの現在のタイムスタンプをマイクロ秒単位で取得します。ReceivergetReceiver()MIDIデバイスがMIDIデータを受信するMIDI INレシーバを取得します。List<Receiver>getReceivers()このMidiDeviceに接続されている、現在アクティブでクローズされていないすべてのレシーバを返します。TransmittergetTransmitter()MIDIデバイスがMIDIデータを送信するMIDI OUT接続を取得します。List<Transmitter>getTransmitters()このMidiDeviceに接続されている現在アクティブでクローズされていない送信機をすべて返します。booleanisOpen()デバイスが開いているかどうかを判断します。voidopen()デバイスを開き、必要なシステム・リソースをデバイスが獲得して操作可能になっていることを示します。
-
メソッドの詳細
-
getDeviceInfo
MidiDevice.Info getDeviceInfo()Javaクラスと、名前、ベンダーおよび説明などのStringsを含む、デバイスに関する情報を取得します。- 戻り値:
- デバイス情報
-
open
void open() throws MidiUnavailableExceptionデバイスを開き、必要なシステム・リソースをデバイスが獲得して操作可能になっていることを示します。このメソッドを呼び出してデバイスを明示的に開いたアプリケーションでは、
close()を呼び出してそのデバイスを閉じる必要があります。 この操作は、システム・リソースを解放し、アプリケーションが正常に終了するために必要です。デバイスによっては、一度閉じるとふたたび開くことができないことに注意してください。 このようなデバイスを再オープンしようとすると、常に
MidiUnavailableExceptionになります。- 例外:
MidiUnavailableException- リソースの制約のためにデバイスを開けない場合にスローされるSecurityException- セキュリティの制約のためにデバイスを開けない場合にスローされる- 関連項目:
close(),isOpen()
-
close
void close()デバイスを閉じ、使用していたシステム・リソースをデバイスが解放することを示します。このデバイスから開いた
ReceiverインスタンスとTransmitterインスタンスはすべて閉じられます。MidiSystemを介して取得したインスタンスも同様に閉じられます。- 定義:
close、インタフェース:AutoCloseable- 関連項目:
open(),isOpen()
-
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
-
getReceiver
Receiver getReceiver() throws MidiUnavailableExceptionMIDIデバイスがMIDIデータを受信するMIDI INレシーバを取得します。 返されたレシーバは、アプリケーションがそのレシーバの使用を終えたときに閉じる必要があります。通常、返されたレシーバは
MidiDeviceReceiverインタフェースを実装します。このメソッドで
Receiverを取得しても、デバイスは開きません。 デバイスを使用するには、open()を呼び出して明示的に開く必要があります。 また、Receiverを閉じても、デバイスは閉じられません。close()を呼び出してデバイスを明示的に閉じる必要があります。- 戻り値:
- デバイスのレシーバ
- 例外:
MidiUnavailableException- リソースの制約のためにレシーバを使用できない場合にスローされる- 関連項目:
Receiver.close()
-
getReceivers
このMidiDeviceに接続されている、現在アクティブでクローズされていないすべてのレシーバを返します。 デバイスからレシーバを削除するには、そのレシーバを閉じます。通常、返されたレシーバは
MidiDeviceReceiverインタフェースを実装します。- 戻り値:
- 開いているレシーバのリスト(変更不可)
- 導入されたバージョン:
- 1.5
-
getTransmitter
Transmitter getTransmitter() throws MidiUnavailableExceptionMIDIデバイスがMIDIデータを送信するMIDI OUT接続を取得します。 返されたトランスミッタは、アプリケーションの使用が終了したら閉じなければなりません。通常、返されたトランスミッタは
MidiDeviceTransmitterインタフェースを実装します。このメソッドで
Transmitterを取得しても、デバイスは開きません。 デバイスを使用するには、open()を呼び出して明示的に開く必要があります。 また、Transmitterを閉じても、デバイスは閉じられません。close()を呼び出してデバイスを明示的に閉じる必要があります。- 戻り値:
- デバイスのMIDI OUTトランスミッタ
- 例外:
MidiUnavailableException- リソースの制約のためにトランスミッタを使用できない場合にスローされる- 関連項目:
Transmitter.close()
-
getTransmitters
List<Transmitter> getTransmitters()このMidiDeviceに接続されている現在アクティブでクローズされていない送信機をすべて返します。 デバイスからトランスミッタを削除するには、そのトランスミッタを閉じます。通常、返されたトランスミッタは
MidiDeviceTransmitterインタフェースを実装します。- 戻り値:
- 開いているトランスミッタのリスト(変更不可)
- 導入されたバージョン:
- 1.5
-