JavaTM Platform
Standard Ed. 6

javax.sound.midi
インタフェース MidiDevice

既知のサブインタフェースの一覧:
Sequencer, Synthesizer

public interface MidiDevice

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 を直接呼び出しても、デバイスが暗黙的に開くことはありません。また、これらの TransmitterReceiver を閉じても、デバイスが暗黙的に閉じることはありません。この方法で取得した ReceiverTransmitter でデバイスを使用する際は、デバイスを明示的に開閉する必要があります。  

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

関連項目:
Synthesizer, Sequencer, Receiver, Transmitter

入れ子のクラスの概要
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 を介して取得したインスタンスも同様に閉じられます。

関連項目:
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 IN 接続の最大数、 または利用可能な接続数に制限がない場合は -1

getReceiver

Receiver getReceiver()
                     throws MidiUnavailableException
MIDI デバイスが MIDI データを受信するのに経由する MIDI IN レシーバを取得します。返されたレシーバは、アプリケーションがそのレシーバの使用を終えたときに閉じる必要があります。  

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

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

getReceivers

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

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

getTransmitter

Transmitter getTransmitter()
                           throws MidiUnavailableException
MIDI デバイスが MIDI データを転送する MIDI OUT 接続を取得します。返されたトランスミッタは、アプリケーションがそのトランスミッタの使用を終えたときに閉じる必要があります。  

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

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

getTransmitters

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

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

JavaTM Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。