モジュール 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オブジェクトが含まれています。

関連項目:
  • ネストされたクラスのサマリー

    ネストされたクラス
    修飾子と型
    インタフェース
    説明
    static class 
    MidiDevice.Infoオブジェクトには、名前、作成者、説明文など、MidiDeviceに関するさまざまなデータが含まれています。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    void
    デバイスを閉じ、使用していたシステム・リソースをデバイスが解放することを示します。
    Javaクラスと、名前、ベンダーおよび説明などのStringsを含む、デバイスに関する情報を取得します。
    int
    このMIDIデバイスでMIDIデータを受信するのに使用可能なMIDI IN接続の最大数を取得します。
    int
    このMIDIデバイスでMIDIデータを転送するのに使用可能なMIDI OUT接続の最大数を取得します。
    long
    デバイスの現在のタイムスタンプをマイクロ秒単位で取得します。
    MIDIデバイスがMIDIデータを受信するMIDI INレシーバを取得します。
    このMidiDeviceに接続されている、現在アクティブでクローズされていないすべてのレシーバを返します。
    MIDIデバイスがMIDIデータを送信するMIDI OUT接続を取得します。
    このMidiDeviceに接続されている現在アクティブでクローズされていない送信機をすべて返します。
    boolean
    デバイスが開いているかどうかを判断します。
    void
    デバイスを開き、必要なシステム・リソースをデバイスが獲得して操作可能になっていることを示します。
  • メソッドの詳細

    • 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()
      デバイスが開いているかどうかを判断します。
      戻り値:
      デバイスが開いている場合はtrue、そうでない場合はfalse
      関連項目:
    • 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 MidiUnavailableException
      MIDIデバイスがMIDIデータを受信するMIDI INレシーバを取得します。 返されたレシーバは、アプリケーションがそのレシーバの使用を終えたときに閉じる必要があります。

      通常、返されたレシーバはMidiDeviceReceiverインタフェースを実装します。

      このメソッドでReceiverを取得しても、デバイスは開きません。 デバイスを使用するには、open()を呼び出して明示的に開く必要があります。 また、Receiverを閉じても、デバイスは閉じられません。 close()を呼び出してデバイスを明示的に閉じる必要があります。

      戻り値:
      デバイスのレシーバ
      例外:
      MidiUnavailableException - リソースの制約のためにレシーバを使用できない場合にスローされる
      関連項目:
    • getReceivers

      List<Receiver> getReceivers()
      このMidiDeviceに接続されている、現在アクティブでクローズされていないすべてのレシーバを返します。 デバイスからレシーバを削除するには、そのレシーバを閉じます。

      通常、返されたレシーバはMidiDeviceReceiverインタフェースを実装します。

      戻り値:
      開いているレシーバのリスト(変更不可)
      導入されたバージョン:
      1.5
    • getTransmitter

      Transmitter getTransmitter() throws MidiUnavailableException
      MIDIデバイスがMIDIデータを送信するMIDI OUT接続を取得します。 返されたトランスミッタは、アプリケーションの使用が終了したら閉じなければなりません。

      通常、返されたトランスミッタはMidiDeviceTransmitterインタフェースを実装します。

      このメソッドでTransmitterを取得しても、デバイスは開きません。 デバイスを使用するには、open()を呼び出して明示的に開く必要があります。 また、Transmitterを閉じても、デバイスは閉じられません。 close()を呼び出してデバイスを明示的に閉じる必要があります。

      戻り値:
      デバイスのMIDI OUTトランスミッタ
      例外:
      MidiUnavailableException - リソースの制約のためにトランスミッタを使用できない場合にスローされる
      関連項目:
    • getTransmitters

      List<Transmitter> getTransmitters()
      このMidiDeviceに接続されている現在アクティブでクローズされていない送信機をすべて返します。 デバイスからトランスミッタを削除するには、そのトランスミッタを閉じます。

      通常、返されたトランスミッタはMidiDeviceTransmitterインタフェースを実装します。

      戻り値:
      開いているトランスミッタのリスト(変更不可)
      導入されたバージョン:
      1.5