public class MidiSystem extends Object
MidiSystem
クラスは、シンセサイザ、シーケンサ、MIDI 入出力ポートなどのデバイスを含むインストール済み MIDI システムリソースへのアクセスを提供します。一般に見られる単純な MIDI アプリケーションは、1 つ以上の MidiSystem
メソッドを呼び出して、どのデバイスがインストールされているかを調べ、そのアプリケーションに必要なデバイスを取得することから始めます。
また、クラスにはファイル、ストリーム、および標準 MIDI ファイルデータまたはサウンドバンクを含む URL の読み取り用メソッドもあります。指定された MIDI ファイルの形式を MidiSystem
に照会できます。
MidiSystem
をインスタンス化することはできません。メソッドはすべて静的です。
プロパティーを使用して、デフォルトの MIDI デバイスを指定できます。システムプロパティー、プロパティーファイルの両方とも使用可能です。プロパティーファイルは、JRE ディレクトリ内の「lib/sound.properties」です。プロパティーがシステムプロパティーとしても、プロパティーファイル内にも存在する場合は、システムプロパティーが優先されます。プロパティーがまったく指定されていない場合は、使用可能なデバイスの中から適切なデフォルトプロパティーが選択されます。プロパティーファイルの構文は 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
を参照してください。
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, 2013, Oracle and/or its affiliates. All rights reserved.