public class MidiSystem extends Object
MidiSystemクラスは、シンセサイザ、シーケンサ、MIDI入出力ポートなどのデバイスを含むインストール済みMIDIシステム・リソースへのアクセスを提供します。一般に見られる単純なMIDIアプリケーションは、1つ以上のMidiSystemメソッドを呼び出して、どのデバイスがインストールされているかを調べ、そのアプリケーションに必要なデバイスを取得することから始めます。
また、クラスにはファイル、ストリーム、および標準MIDIファイル・データまたはサウンド・バンクを含むURLの読取り用メソッドもあります。指定されたMIDIファイルの形式をMidiSystemに照会できます。
MidiSystemをインスタンス化することはできません。メソッドはすべて静的です。
プロパティを使用して、デフォルトのMIDIデバイスを指定できます。システム・プロパティ、プロパティ・ファイルの両方とも使用可能です。sound.propertiesプロパティ・ファイルは、実装固有の場所(通常それはJavaインストール・ディレクトリ内のlibディレクトリ)から読み取られます。プロパティがシステム・プロパティとしても、プロパティ・ファイル内にも存在する場合は、システム・プロパティが優先されます。プロパティがまったく指定されていない場合は、使用可能なデバイスの中から適切なデフォルト・プロパティが選択されます。プロパティ・ファイルの構文はProperties.loadに指定されています。次の表は、使用可能なプロパティ・キーと、これらを認識するメソッドのリストです。
| プロパティ・キー | インタフェース | 影響を受けるメソッド |
|---|---|---|
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.InfoのgetNameメソッドから返される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がスローされます。
| 修飾子と型 | メソッドと説明 |
|---|---|
static MidiDevice |
getMidiDevice(MidiDevice.Info info)
要求されたMIDIデバイスを取得します。
|
static MidiDevice.Info[] |
getMidiDeviceInfo()
システムで使用可能な全MIDIデバイスのセットを表す情報オブジェクトの配列を取得します。
|
static MidiFileFormat |
getMidiFileFormat(File file)
指定された
FileのMIDIファイル形式を取得します。 |
static MidiFileFormat |
getMidiFileFormat(InputStream stream)
指定された入力ストリームのデータのMIDIファイル形式を取得します。
|
static MidiFileFormat |
getMidiFileFormat(URL url)
指定されたURLのデータのMIDIファイル形式を取得します。
|
static int[] |
getMidiFileTypes()
システムがファイル書込みサポートを提供するMIDIファイル・タイプのセットを取得します。
|
static int[] |
getMidiFileTypes(Sequence sequence)
指定されたシーケンスからシステムが書込み可能なMIDIファイル・タイプのセットを取得します。
|
static Receiver |
getReceiver()
外部MIDIポートまたはその他のデフォルト・デバイスから、MIDIレシーバを取得します。
|
static Sequence |
getSequence(File file)
指定された
FileからMIDIシーケンスを取得します。 |
static Sequence |
getSequence(InputStream stream)
指定された入力ストリームからMIDIシーケンスを取得します。
|
static Sequence |
getSequence(URL url)
指定されたURLからMIDIシーケンスを取得します。
|
static Sequencer |
getSequencer()
デフォルト・デバイスに接続されたデフォルトの
Sequencerを取得します。 |
static Sequencer |
getSequencer(boolean connected)
オプションでデフォルト・デバイスに接続された、デフォルトの
Sequencerを取得します。 |
static Soundbank |
getSoundbank(File file)
指定された
FileからSoundbankを読み取ることによって、それを構築します。 |
static Soundbank |
getSoundbank(InputStream stream)
指定されたストリームからMIDIサウンド・バンクを読み取ることによって、MIDIサウンド・バンクを構築します。
|
static Soundbank |
getSoundbank(URL url)
指定されたURLから読み取ることによって、
Soundbankを構築します。 |
static Synthesizer |
getSynthesizer()
デフォルト・シンセサイザを取得します。
|
static Transmitter |
getTransmitter()
外部MIDIポートまたはほかのデフォルト・ソースから、MIDIトランスミッタを取得します。
|
static boolean |
isFileTypeSupported(int fileType)
指定されたMIDIファイル・タイプのファイル書込みサポートをシステムが提供しているかどうかを示します。
|
static boolean |
isFileTypeSupported(int fileType, Sequence sequence)
指定されたファイル・タイプのMIDIファイルを、示されたシーケンスから書き込めるかどうかを示します。
|
static int |
write(Sequence in, int type, File out)
提供される外部ファイルに示されるMIDIファイル・タイプのファイルを表すバイトのストリームを書き込みます。
|
static int |
write(Sequence in, int fileType, OutputStream out)
提供される出力ストリームに示されるMIDIファイル・タイプのファイルを表すバイトのストリームを書き込みます。
|
public static MidiDevice.Info[] getMidiDeviceInfo()
getMidiDeviceを呼び出すことにより、返された情報オブジェクトを使用して、対応するデバイスを取得できます。MidiDevice.Infoオブジェクトの配列で、インストールされたMIDIデバイスごとに1つの配列が返される。該当するデバイスがインストールされていない場合、長さ0の配列が返される。public static MidiDevice getMidiDevice(MidiDevice.Info info) throws MidiUnavailableException
info - 目的のデバイスを表すデバイス情報オブジェクト。MidiUnavailableException - リソースの制約のために、要求されたデバイスを使用できない場合IllegalArgumentException - 情報オブジェクトが、システムにインストールされたMIDIデバイスを表さない場合getMidiDeviceInfo()public static Receiver getReceiver() throws MidiUnavailableException
MidiDeviceReceiverインタフェースを実装します。
システム・プロパティjavax.sound.midi.Receiverが定義されている場合、または「sound.properties」ファイル内に定義されている場合、このプロパティは、デフォルトのレシーバを提供するデバイスを識別するために使用されます。詳細は、class descriptionを参照してください。適切なMIDIポートを使用できない場合、インストール済みシンセサイザからReceiverを取得します。
デフォルト・デバイスで提供されるネイティブ・レシーバは、MidiDeviceReceiverインタフェースを実装しない場合、MidiDeviceReceiverインタフェースを実装するラッパー・クラス内にラップされます。対応するReceiverメソッド呼出しはネイティブ・レシーバに転送されます。
このメソッドが正常に実行されると、暗黙のうちに、ReceiverのMidiDeviceが開きます(まだ開いていない場合)。暗黙的に開かれたデバイスを閉じるには、返されたReceiver上でcloseを呼び出します。MidiDeviceに格納されているシステム・リソースを解放するには、開いているすべてのReceiverインスタンスを閉じる必要があります。開く/閉じるの動作の詳細については、MidiDeviceの説明を参照してください。
MidiUnavailableException - リソース制約により、またはレシーバを提供するデバイスがシステムにインストールされていないためにデフォルトのレシーバを使用できない場合public static Transmitter getTransmitter() throws MidiUnavailableException
MidiDeviceTransmitterインタフェースを実装します。
システム・プロパティjavax.sound.midi.Transmitterが定義されている場合、または「sound.properties」ファイル内に定義されている場合、このプロパティは、デフォルトのトランスミッタを提供するデバイスを識別するために使用されます。詳細は、class descriptionを参照してください。
デフォルト・デバイスで提供されるネイティブ・トランスミッタは、MidiDeviceTransmitterインタフェースを実装しない場合、MidiDeviceTransmitterインタフェースを実装するラッパー・クラス内にラップされます。対応するTransmitterメソッド呼出しはネイティブ・トランスミッタに転送されます。
このメソッドが正常に実行されると、暗黙のうちに、TransmitterのMidiDeviceが開きます(まだ開いていない場合)。暗黙的に開かれたデバイスを閉じるには、返されたTransmitter上でcloseを呼び出します。MidiDeviceに格納されているシステム・リソースを解放するには、開いているすべてのTransmitterインスタンスを閉じる必要があります。開く/閉じるの動作の詳細については、MidiDeviceの説明を参照してください。
MidiUnavailableException - リソース制約により、またはトランスミッタを提供するデバイスがシステムにインストールされていないためにデフォルトのトランスミッタを使用できない場合public static Synthesizer getSynthesizer() throws MidiUnavailableException
システム・プロパティjavax.sound.midi.Synthesizerが定義されている場合、または「sound.properties」ファイル内に定義されている場合、このプロパティは、デフォルトのシンセサイザを識別するために使用されます。詳細は、class descriptionを参照してください。
MidiUnavailableException - リソース制約により、またはシステムにシンセサイザがインストールされていないためにデフォルトのシンセサイザを使用できない場合public static Sequencer getSequencer() throws MidiUnavailableException
Sequencerを取得します。返されるSequencerインスタンスは、getSynthesizer()により返されるデフォルトのSynthesizerに接続されます。使用可能なSynthesizerがない場合、またはデフォルトのSynthesizerを開くことができない場合、sequencerは、getReceiver()により返されるデフォルトのReceiverに接続されます。接続を確立するには、SequencerからTransmitterインスタンスを取得し、そのReceiverを設定します。シーケンサを閉じて再度開くと、デフォルト・デバイスとの接続が復元されます。
このメソッドは、getSequencer(true)を呼び出すのと同等です。
システム・プロパティjavax.sound.midi.Sequencerが定義されている場合、または「sound.properties」ファイル内に定義されている場合、このプロパティは、デフォルトのシーケンサを識別するために使用されます。詳細は、class descriptionを参照してください。
MidiUnavailableException - リソース制約により、またはインストール済みMidiDeviceで使用できるReceiverがないため、またはシステムにシーケンサがインストールされていないため、シーケンサを使用できない場合。getSequencer(boolean), getSynthesizer(), getReceiver()public static Sequencer getSequencer(boolean connected) throws MidiUnavailableException
Sequencerを取得します。
connectedがtrueの場合、返されるSequencerインスタンスは、getSynthesizer()により返されるデフォルトのSynthesizerに接続されます。使用可能なSynthesizerがない場合、またはデフォルトのSynthesizerを開くことができない場合、sequencerは、getReceiver()により返されるデフォルトのReceiverに接続されます。接続を確立するには、SequencerからTransmitterインスタンスを取得し、そのReceiverを設定します。シーケンサを閉じて再度開くと、デフォルト・デバイスとの接続が復元されます。
connectedがfalseの場合、返されるSequencerインスタンスは接続されず、開いたTransmittersが存在しない状態になります。MIDIデバイスまたはSynthesizer上でシーケンサを使用するには、Transmitterを取得し、そのReceiverを設定する必要があります。
システム・プロパティjavax.sound.midi.Sequencerが定義されている場合、または「sound.properties」ファイル内に定義されている場合、このプロパティは、デフォルトのシーケンサを識別するために使用されます。詳細は、class descriptionを参照してください。
connected - 返されるSequencerがデフォルトSynthesizerに接続されるかどうかMidiUnavailableException - リソース制約により、またはシステムにシーケンサがインストールされていないため、シーケンサを使用できない場合。または、connectedがtrueで、インストール済みMidiDeviceで使用可能なReceiverが存在しない場合getSynthesizer(), getReceiver()public static Soundbank getSoundbank(InputStream stream) throws InvalidMidiDataException, IOException
stream - サウンドバンク・データのソース。InvalidMidiDataException - システムが認識した有効なMIDIサウンドバンク・データをストリームが示さない場合IOException - サウンド・バンクをロードするときに入出力エラーが発生した場合InputStream.markSupported(), InputStream.mark(int)public static Soundbank getSoundbank(URL url) throws InvalidMidiDataException, IOException
Soundbankを構築します。URLは有効なMIDIサウンドバンク・ファイルを示す必要があります。url - サウンドバンク・データのソースInvalidMidiDataException - システムが認識した有効なMIDIサウンドバンク・データをURLが示さない場合IOException - サウンド・バンクをロードするときに入出力エラーが発生した場合public static Soundbank getSoundbank(File file) throws InvalidMidiDataException, IOException
FileからSoundbankを読み取ることによって、それを構築します。Fileは有効なMIDIサウンドバンク・ファイルを示す必要があります。file - サウンドバンク・データのソースInvalidMidiDataException - システムが認識した有効なMIDIサウンドバンク・データをFileが示さない場合IOException - サウンド・バンクをロードするときに入出力エラーが発生した場合public static MidiFileFormat getMidiFileFormat(InputStream stream) throws InvalidMidiDataException, IOException
このメソッドまたはこのメソッドが呼び出すコード、あるいはその両方とも、そのデータ形式がサポートされるかどうかを判定するためにストリームからデータをいくらか読み取る必要があります。したがって、ストリームをマークし、データがサポートされる形式であるかどうかを判定するのに十分なデータを読み取り、ストリームのリード・ポインタを元の位置に戻すための実装が必要です。入力ストリームがこの一連の操作を許可しない場合、このメソッドはIOExceptionをスローして失敗します。
この操作は、インストールされたファイル・リーダーによって構文解析できる種類のファイルに限り有効です。互換性のあるファイル・リーダーがインストールされていない場合、有効なファイルでもInvalidMidiDataExceptionをスローして失敗する可能性があります。互換性のあるファイル・リーダーがインストールされていても、ファイル形式を判別中にエラーが発生すると、やはり失敗します。
stream - ファイル形式情報を抽出する入力ストリームMidiFileFormatオブジェクトInvalidMidiDataException - システムが認識した有効なオーディオ・ファイル・データをストリームが示さない場合IOException - ストリームにアクセス中に入出力例外が発生した場合getMidiFileFormat(URL), getMidiFileFormat(File), InputStream.markSupported(), InputStream.mark(int)public static MidiFileFormat getMidiFileFormat(URL url) throws InvalidMidiDataException, IOException
この操作は、インストールされたファイル・リーダーによって構文解析できる種類のファイルに限り有効です。互換性のあるファイル・リーダーがインストールされていない場合、有効なファイルでもInvalidMidiDataExceptionをスローして失敗する可能性があります。互換性のあるファイル・リーダーがインストールされていても、ファイル形式を判別中にエラーが発生すると、やはり失敗します。
url - ファイル形式情報を抽出するURLMidiFileFormatオブジェクトInvalidMidiDataException - システムが認識した有効なMIDIファイル・データをURLが示さない場合IOException - URLにアクセス中に入出力例外が発生した場合getMidiFileFormat(InputStream), getMidiFileFormat(File)public static MidiFileFormat getMidiFileFormat(File file) throws InvalidMidiDataException, IOException
FileのMIDIファイル形式を取得します。Fileは、システムが認識したファイル・タイプに有効なMIDIファイル・データを示す必要があります。
この操作は、インストールされたファイル・リーダーによって構文解析できる種類のファイルに限り有効です。互換性のあるファイル・リーダーがインストールされていない場合、有効なファイルでもInvalidMidiDataExceptionをスローして失敗する可能性があります。互換性のあるファイル・リーダーがインストールされていても、ファイル形式を判別中にエラーが発生すると、やはり失敗します。
file - ファイル形式情報を抽出するFileMidiFileFormatオブジェクトInvalidMidiDataException - システムが認識した有効なMIDIファイル・データをFileが示さない場合IOException - ファイルにアクセス中に入出力例外が発生した場合getMidiFileFormat(InputStream), getMidiFileFormat(URL)public static Sequence getSequence(InputStream stream) throws InvalidMidiDataException, IOException
このメソッドまたはこのメソッドが呼び出すコード、あるいはその両方とも、そのデータ形式がサポートされるかどうかを判定するためにストリームからデータをいくらか読み取る必要があります。したがって、ストリームをマークし、データがサポートされる形式であるかどうかを判定するのに十分なデータを読み取り、ストリームのリード・ポインタを元の位置に戻すための実装が必要です。入力ストリームがこの一連の操作を許可しない場合、このメソッドはIOExceptionをスローして失敗します。
この操作は、インストールされたファイル・リーダーによって構文解析できる種類のファイルに限り有効です。互換性のあるファイル・リーダーがインストールされていない場合、有効なファイルでもInvalidMidiDataExceptionをスローして失敗する可能性があります。互換性のあるファイル・リーダーがインストールされていても、ファイル・データからSequenceオブジェクトを構築中にエラーが発生すると、やはり失敗します。
stream - Sequenceを構築する入力ストリームSequenceオブジェクトInvalidMidiDataException - システムが認識した有効なオーディオ・ファイル・データをストリームが示さない場合IOException - ストリームにアクセス中に入出力例外が発生した場合InputStream.markSupported(), InputStream.mark(int)public static Sequence getSequence(URL url) throws InvalidMidiDataException, IOException
この操作は、インストールされたファイル・リーダーによって構文解析できる種類のファイルに限り有効です。互換性のあるファイル・リーダーがインストールされていない場合、有効なファイルでもInvalidMidiDataExceptionをスローして失敗する可能性があります。互換性のあるファイル・リーダーがインストールされていても、ファイル・データからSequenceオブジェクトを構築中にエラーが発生すると、やはり失敗します。
url - Sequenceを構築するURLSequenceオブジェクトInvalidMidiDataException - システムが認識した有効なMIDIファイル・データをURLが示さない場合IOException - URLにアクセス中に入出力例外が発生した場合public static Sequence getSequence(File file) throws InvalidMidiDataException, IOException
FileからMIDIシーケンスを取得します。Fileは、システムが認識したファイル・タイプに有効なMIDIファイル・データを示す必要があります。
この操作は、インストールされたファイル・リーダーによって構文解析できる種類のファイルに限り有効です。互換性のあるファイル・リーダーがインストールされていない場合、有効なファイルでもInvalidMidiDataExceptionをスローして失敗する可能性があります。互換性のあるファイル・リーダーがインストールされていても、ファイル・データからSequenceオブジェクトを構築中にエラーが発生すると、やはり失敗します。
file - Sequenceを構築するFileSequenceオブジェクトInvalidMidiDataException - システムが認識した有効なMIDIファイル・データをFileが示さない場合IOException - 入出力例外が発生した場合public static int[] getMidiFileTypes()
public static boolean isFileTypeSupported(int fileType)
fileType - 書込み機能が照会されるファイル・タイプtrue、そうでない場合はfalsepublic static int[] getMidiFileTypes(Sequence sequence)
sequence - MIDIファイル・タイプのサポートが照会されるシーケンスpublic static boolean isFileTypeSupported(int fileType,
Sequence sequence)
fileType - 書込み機能が照会されるファイル・タイプsequence - ファイル書込みサポートが照会されるシーケンスtrue、そうでない場合はfalsepublic static int write(Sequence in, int fileType, OutputStream out) throws IOException
in - ファイルへ書き込まれるMIDIデータを含むシーケンスfileType - 出力ストリームへ書き込まれるファイルのファイル・タイプout - ファイル・データが書き込まれるストリームIOException - 入出力例外が発生した場合IllegalArgumentException - システムがそのファイル形式をサポートしていない場合isFileTypeSupported(int, Sequence), getMidiFileTypes(Sequence)public static int write(Sequence in, int type, File out) throws IOException
in - ファイルへ書き込まれるMIDIデータを含むシーケンスtype - 出力ストリームへ書き込まれるファイルのファイル・タイプout - ファイル・データが書き込まれる外部ファイルIOException - 入出力例外が発生した場合IllegalArgumentException - システムがそのファイル・タイプをサポートしていない場合isFileTypeSupported(int, Sequence), getMidiFileTypes(Sequence) バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.