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
- ファイル形式情報を抽出するFile
MidiFileFormat
オブジェクト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
を構築するFile
Sequence
オブジェクトInvalidMidiDataException
- システムが認識した有効なMIDIファイル・データをFileが示さない場合IOException
- 入出力例外が発生した場合public static int[] getMidiFileTypes()
public static boolean isFileTypeSupported(int fileType)
fileType
- 書込み機能が照会されるファイル・タイプtrue
、そうでない場合はfalse
public static int[] getMidiFileTypes(Sequence sequence)
sequence
- MIDIファイル・タイプのサポートが照会されるシーケンスpublic static boolean isFileTypeSupported(int fileType, Sequence sequence)
fileType
- 書込み機能が照会されるファイル・タイプsequence
- ファイル書込みサポートが照会されるシーケンスtrue
、そうでない場合はfalse
public 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.