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

クラスMidiSystem

java.lang.Object
javax.sound.midi.MidiSystem

public class MidiSystem extends Object
MidiSystemクラスは、シンセサイザ、シーケンサ、MIDI入出力ポートなどのデバイスを含むインストール済みMIDIシステム・リソースへのアクセスを提供します。 一般に見られる単純なMIDIアプリケーションは、1つ以上のMidiSystemメソッドを呼び出して、どのデバイスがインストールされているかを調べ、そのアプリケーションに必要なデバイスを取得することから始めます。

また、クラスにはファイル、ストリーム、および標準MIDIファイル・データまたはサウンド・バンクを含むURLの読取り用メソッドもあります。 指定されたMIDIファイルの形式をMidiSystemに照会できます。

MidiSystemをインスタンス化することはできません。メソッドはすべて静的です。

プロパティを使用して、デフォルトのMIDIデバイスを指定できます。 システム・プロパティ、プロパティ・ファイルの両方とも使用可能です。 "sound.properties"プロパティ・ファイルは、実装固有のロケーション(通常、Javaインストール・ディレクトリ内のconfディレクトリです)から読み込まれます。 オプションの"javax.sound.config.file"システム・プロパティを使用して、初期構成として読み取られるプロパティ・ファイルを指定できます。 プロパティがシステム・プロパティとしても、プロパティ・ファイル内にも存在する場合は、システム・プロパティが優先されます。 プロパティがまったく指定されていない場合は、使用可能なデバイスの中から適切なデフォルト・プロパティが選択されます。 プロパティ・ファイルの構文はProperties.loadに指定されています。 次の表は、使用可能なプロパティ・キーと、これらを認識するメソッドのリストです。

MIDIシステムのプロパティ・キー
プロパティ・キー インタフェース 影響を受けるメソッド
javax.sound.midi.Receiver Receiver getReceiver()
javax.sound.midi.Sequencer Sequencer getSequencer()
javax.sound.midi.Synthesizer Synthesizer getSynthesizer()
javax.sound.midi.Transmitter Transmitter getTransmitter()
プロパティ値は、プロバイダ・クラス名とデバイス名をハッシュ記号(「#」)で区切った形式で表されます。 プロバイダ・クラス名は、具象MIDI device providerクラスの完全指定名です。 デバイス名は、MidiDevice.InfogetNameメソッドから返されるStringとマッチングされます。 クラス名、デバイス名の一方を省略することもできます。 クラス名だけを指定した場合、ハッシュ記号は省略できます。

プロバイダ・クラスが指定されていて、インストール済プロバイダから正常に取得できる場合、このプロバイダからMidiDevice.Infoオブジェクトのリストが取り出されます。 そうでない場合、またはこれらのデバイスがこれ以降マッチングを行わない場合、使用可能なすべてのMidiDevice.Infoオブジェクトを含めるために、getMidiDeviceInfo()からリストが取得されます。

デバイス名が指定されている場合、結果として得られたMidiDevice.Infoオブジェクトのリストが検索されます。名前が一致した最初のオブジェクト(そのMidiDeviceはそれぞれのインタフェースを実装する)が返されます。 一致するMidiDevice.Infoオブジェクトが見つからない場合、またはデバイス名が指定されていない場合、結果リストの最初の適切なデバイスが返されます。 SequencerおよびSynthesizerの場合、それぞれのインタフェースを実装するデバイスが適切なデバイスです。これに対して、ReceiverおよびTransmitterの場合、SequencerもSynthesizerも実装せず、ReceiverまたはTransmitterを1つ以上提供するデバイスが適切なデバイスです。

たとえば、"com.sun.media.sound.MidiProvider#SunMIDI1"を値に持つプロパティjavax.sound.midi.Receiverでは、getReceiverが呼び出されたとき、次のような結果が得られます: インストール済MIDIデバイス・プロバイダのリスト内にcom.sun.media.sound.MidiProviderクラスが存在する場合、"SunMIDI1"という名前の最初のReceiverデバイスが返されます。 見つからない場合は、名前とは関係なく、そのプロバイダの最初のReceiverが返されます。 存在しない場合は、すべてのデバイスのリスト(getMidiDeviceInfoによって返される)内の"SunMIDI1"という名前の最初のReceiverが返されます。これが見つからない場合、すべてのデバイスのリスト内で最初に見つかったReceiverが返されます。 これにも失敗した場合は、MidiUnavailableExceptionがスローされます。