モジュール java.desktop
パッケージ javax.sound.midi

インタフェースMidiDevice

すべてのスーパー・インタフェース:
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.getReceiverMidiSystem.getTransmitterによって使用されるMidiDeviceは、プロパティjavax.sound.midi.Receiverjavax.sound.midi.Transmitterが(MidiSystemのデフォルト・プロバイダを選択するためのプロパティの説明を参照してください。)でない限り、実装依存です。 暗黙的に開いたMidiDeviceは、そのデバイスを開いたReceiverまたはTransmitterを閉じると、暗黙的に閉じられます。 アプリケーションが複数の暗黙的に開かれたReceiverまたはTransmitterを取得した場合は、最後のReceiverまたはTransmitterが閉じられた時点で、デバイスが閉じられます。 一方、デバイス・インスタンスでgetReceiverまたはgetTransmitterを直接呼び出しても、デバイスが暗黙的に開くことはありません。 また、これらのTransmitterおよびReceiverを閉じても、デバイスが暗黙的に閉じることはありません。 この方法で取得したReceiverまたはTransmitterでデバイスを使用するには、デバイスを明示的に開閉する必要があります。

MidiDeviceの同一のインスタンスに対して明示的な開閉と暗黙的な開閉が混在して行われた場合には、次の規則が適用されます。

  • 明示的に開いたあとは(暗黙的に開く前と後のいずれか)、そのデバイスが暗黙的に閉じることはありません。 明示的に開いたデバイスは、必ず明示的に閉じる必要があります。
  • 明示的に閉じると、そのデバイスが暗黙的に開いていたとしても、常にデバイスは閉じられます。 そのあとに暗黙的に閉じようとしても、何も起こりません。
MidiDeviceがハードウェアMIDIポートを表しているかどうかを判断するには、次のようなプログラミング手法を使用します。

 MidiDevice device = ...;
 if (!(device instanceof Sequencer) && !(device instanceof Synthesizer)) {
   // we're now sure that device represents a MIDI port
   // ...
 }
 

MidiDeviceには、製造元情報などを提供するMidiDevice.Infoオブジェクトが含まれます。

関連項目: