モジュール 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.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がハードウェアMIDIポートを表しているかどうかを判断するには、次のようなプログラミング手法を使用します。
    
     MidiDevice device = ...;
     if ( ! (device instanceof Sequencer) && ! (device instanceof Synthesizer)) {
       // we're now sure that device represents a MIDI port
       // ...
     }
     

    MidiDeviceには、メーカー情報などを提供するMidiDevice.Infoオブジェクトが含まれています。

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

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

      すべてのメソッド インスタンス・メソッド 抽象メソッド 
      修飾子と型 メソッド 説明
      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​()
      デバイスを開き、必要なシステム・リソースをデバイスが獲得して操作可能になっていることを示します。
    • メソッドの詳細

      • 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​()
        デバイスが開いているかどうかを判断します。
        戻り値:
        デバイスが開いている場合はtrue、そうでない場合はfalse
        関連項目:
        open(), close()
      • 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 - リソースの制約のためにレシーバを使用できない場合にスローされる
        関連項目:
        Receiver.close()
      • 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 - リソースの制約のためにトランスミッタを使用できない場合にスローされる
        関連項目:
        Transmitter.close()
      • getTransmitters

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

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

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