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