public interface Synthesizer extends MidiDevice
Synthesizer はサウンドを生成します。これは通常、Synthesizer の MidiChannel オブジェクトの 1 つが直接、または Synthesizer オブジェクトを介して noteOn メッセージを受け取った場合に発生します。多くの Synthesizer では、MIDI イベントを Synthesizer に配信することのできる Receivers をサポートしています。このような場合、Synthesizer は通常、対応するメッセージを適切な MidiChannel に送るか、イベントが MIDI チャネルメッセージでない場合にはそのイベント自身を処理します。
Synthesizer インタフェースには、インストゥルメントをサウンドバンクにロードおよびロード解除するためのメソッドが含まれています。インストゥルメントは、伝統的なインストゥルメントをエミュレートしたサウンドや、ある種のサウンドエフェクトあるいはその他の想像上のサウンドなど、一定のタイプのサウンドを合成するための仕様となります。サウンドバンクはインストゥルメントの集合体で、そのインストゥルメントの Patch オブジェクトによってバンク番号およびプログラム番号に基づいて編成されています。実装されているサウンド合成技術は Synthesizer クラスによって異なる可能性があります。そのため、一部のインストゥルメントだけが特定のシンセサイザとの互換性を持つ場合があります。また、シンセサイザがインストゥルメントに対して割り当てるメモリーサイズには制限がある場合があるため、合成技術が互換のシンセサイザでも、サウンドバンクやインストゥルメントによっては使用できない可能性があります。特定のサウンドバンクに含まれているインストゥルメントが特定のシンセサイザで使用できるかどうかを確認するには、Synthesizer の isSoundbankSupported メソッドを呼び出します。
インストゥルメントを「ロードする」とは、ノートを合成するためにそのインストゥルメントを使用可能にすることです。インストゥルメントは、その Patch オブジェクトで指定されたバンクおよびプログラムの位置にロードされます。インストゥルメントをロードしても、次に演奏するノートにそのインストゥルメントのサウンドがただちに反映されるわけではありません。ノートを演奏するインストゥルメントのバンク番号およびプログラム番号を選択するプログラムチェンジメッセージを、シンセサイザの MidiChannel オブジェクトの 1 つが受け取る (またはすでに受け取っている) 必要があります。
MidiDevice.Info| 修飾子と型 | メソッドと説明 |
|---|---|
Instrument[] |
getAvailableInstruments()
シンセサイザに付属するインストゥルメントのリストを取得します。
|
MidiChannel[] |
getChannels()
このシンセサイザで制御される MIDI チャネルのセットを取得します。
|
Soundbank |
getDefaultSoundbank()
シンセサイザにデフォルトのサウンドバンクがある場合は、そのサウンドバンクを取得します。
|
long |
getLatency()
このシンセサイザでの処理応答時間をマイクロ秒単位で取得します。
|
Instrument[] |
getLoadedInstruments()
この
Synthesizer に現在ロードされているインストゥルメントのリストを取得します。 |
int |
getMaxPolyphony()
このシンセサイザが同時に出力できるノートの最大数を取得します。
|
VoiceStatus[] |
getVoiceStatus()
このシンセサイザによって生成されるボイスの現在の状態を取得します。
|
boolean |
isSoundbankSupported(Soundbank soundbank)
指定したサウンドバンクのインストゥルメントをこのシンセサイザにロードできるかどうかを呼び出し側に通知します。
|
boolean |
loadAllInstruments(Soundbank soundbank)
指定した
Soundbank に含まれているすべてのインストゥルメントを Synthesizer にロードします。 |
boolean |
loadInstrument(Instrument instrument)
特定のインストゥルメントを合成に使用できるようにします。
|
boolean |
loadInstruments(Soundbank soundbank, Patch[] patchList)
指定したパッチによって参照されるインストゥルメントを、指定した
Soundbank からロードします。 |
boolean |
remapInstrument(Instrument from, Instrument to)
インストゥルメントを再マッピングします。
|
void |
unloadAllInstruments(Soundbank soundbank)
指定した
Soundbank に含まれるすべてのインストゥルメントをアンロードします。 |
void |
unloadInstrument(Instrument instrument)
特定のインストゥルメントをアンロードします。
|
void |
unloadInstruments(Soundbank soundbank, Patch[] patchList)
指定したパッチによって参照されるインストゥルメントを、指定した MIDI サウンドバンクからアンロードします。
|
close, getDeviceInfo, getMaxReceivers, getMaxTransmitters, getMicrosecondPosition, getReceiver, getReceivers, getTransmitter, getTransmitters, isOpen, openint getMaxPolyphony()
getVoiceStatus()long getLatency()
この応答時間はマイクロ秒単位で表されますが、シンセサイザの遅延時間の実測値は、この判定が示す範囲よりも大幅にばらつく場合があります。たとえば、シンセサイザによっては最大遅延時間が数ミリ秒を超えることもあります。
MidiChannel[] getChannels()
MidiChannel です。
MIDI 1.0 仕様では 16 のチャネルが規定されているため、このメソッドは少なくとも 16 の要素を持つ配列を返します。ただし、このシンセサイザで 16 チャネルのうちのいくつかが使用されていない場合は、配列の要素の一部が null となることがあります。そのため、シンセサイザを使用する前には各要素を確認してください。
Synthesizer で管理される MidiChannel オブジェクトの配列。配列要素には null が含まれる可能性がある。VoiceStatus[] getVoiceStatus()
Synthesizer のこのクラスがボイス情報を提供しない場合、返される配列の長さは必ず 0 になります。それ以外の場合、返される配列の長さは getMaxPolyphony() が返すボイスの合計数と必ず等しくなります (シンセサイザボイスの説明は、VoiceStatus クラスの記述を参照)。VoiceStatus オブジェクトの配列getMaxPolyphony()、VoiceStatusboolean isSoundbankSupported(Soundbank soundbank)
IllegalArgumentException が発生します。soundbank - サポートの有無について照会するサウンドバンクtrue、そうでない場合は falseloadInstruments(javax.sound.midi.Soundbank, javax.sound.midi.Patch[]), loadAllInstruments(javax.sound.midi.Soundbank), unloadInstruments(javax.sound.midi.Soundbank, javax.sound.midi.Patch[]), unloadAllInstruments(javax.sound.midi.Soundbank), getDefaultSoundbank()boolean loadInstrument(Instrument instrument)
Patch オブジェクトで指定されたパッチ位置にロードされるため、プログラムチェンジメッセージが受け取られる (またはすでに受け取られている) と、そのパッチが選択され、それ以後のノートは instrument のサウンドで演奏されます。指定したインストゥルメントがすでにロードされている場合には、このメソッドは何も実行しないで true を返します。
インストゥルメントは、この Synthesizer でサポートされるサウンドバンクに含まれていなければいけません。(確認するには、Instrument の getSoundbank メソッドと Synthesizer の isSoundbankSupported メソッドを使用)。
instrument - ロードするインストゥルメントtrue、インストゥルメントがロードできなかった場合 (たとえばシンセサイザのメモリー不足でロードできなかった場合) は falseIllegalArgumentException - 指定したインストゥルメントのサウンドバンクがこの Synthesizer でサポートされない場合unloadInstrument(javax.sound.midi.Instrument), loadInstruments(javax.sound.midi.Soundbank, javax.sound.midi.Patch[]), loadAllInstruments(javax.sound.midi.Soundbank), remapInstrument(javax.sound.midi.Instrument, javax.sound.midi.Instrument), SoundbankResource.getSoundbank(), MidiChannel.programChange(int, int)void unloadInstrument(Instrument instrument)
instrument - アンロードするインストゥルメントIllegalArgumentException - 指定したインストゥルメントのサウンドバンクがこの Synthesizer でサポートされない場合loadInstrument(javax.sound.midi.Instrument), unloadInstruments(javax.sound.midi.Soundbank, javax.sound.midi.Patch[]), unloadAllInstruments(javax.sound.midi.Soundbank), getLoadedInstruments(), remapInstrument(javax.sound.midi.Instrument, javax.sound.midi.Instrument)boolean remapInstrument(Instrument from, Instrument to)
from がインストゥルメント to で置換されます。from がバンク番号 2、プログラム番号 11 にある場合、再マッピングによってそのバンク番号およびプログラム番号には代わりに to が割り当てられます。from はアンロードされます。
再マッピングを取り消すには、loadInstrument(javax.sound.midi.Instrument)、loadInstruments(javax.sound.midi.Soundbank, javax.sound.midi.Patch[]) または loadAllInstruments(javax.sound.midi.Soundbank) のいずれかを呼び出し、インストゥルメント from を再ロードします。
from - 置き換えられる Instrument オブジェクトto - 古いインストゥルメントの代わりに使用する Instrument オブジェクトで、シンセサイザにロードされるtrue、機能がシンセサイザによって実装されていない場合は falseIllegalArgumentException - シンセサイザがインストゥルメント from またはインストゥルメント to をサポートしていない場合、またはインストゥルメント to がロードされない場合NullPointerException - from または to パラメータが null 値の場合loadInstrument(javax.sound.midi.Instrument), loadInstruments(javax.sound.midi.Soundbank, javax.sound.midi.Patch[]), loadAllInstruments(javax.sound.midi.Soundbank)Soundbank getDefaultSoundbank()
null。isSoundbankSupported(javax.sound.midi.Soundbank)Instrument[] getAvailableInstruments()
このメソッドは、シンセサイザに現在ロードされているインストゥルメントを検索するためには使用できないことに注意してください。そのような目的には、getLoadedInstruments() を使用します。またこのメソッドでは、シンセサイザにロードできるすべてのインストゥルメントを示すこともできません。このメソッドで示されるのは、シンセサイザに付属するインストゥルメントのサブセットだけです。ほかのインストゥルメントをロードできるかどうかを調べるには isSoundbankSupported() を呼び出します。そのインストゥルメントの Soundbank がサポートされていれば、そのインストゥルメントのロードを行うことができます。
getLoadedInstruments(), isSoundbankSupported(Soundbank), loadInstrument(javax.sound.midi.Instrument)Instrument[] getLoadedInstruments()
Synthesizer に現在ロードされているインストゥルメントのリストを取得します。loadInstrument(javax.sound.midi.Instrument), getAvailableInstruments(), Soundbank.getInstruments()boolean loadAllInstruments(Soundbank soundbank)
Soundbank に含まれているすべてのインストゥルメントを Synthesizer にロードします。soundbank - ロードするインストゥルメントを含んでいる Soundbanktrue、ロードされなかったインストゥルメントがある場合 (たとえば Synthesizer のメモリーが不足していたとき) は falseIllegalArgumentException - 要求したサウンドバンクがこのシンセサイザと互換でない場合。isSoundbankSupported(javax.sound.midi.Soundbank), loadInstrument(javax.sound.midi.Instrument), loadInstruments(javax.sound.midi.Soundbank, javax.sound.midi.Patch[])void unloadAllInstruments(Soundbank soundbank)
Soundbank に含まれるすべてのインストゥルメントをアンロードします。soundbank - アンロードするインストゥルメントを含んでいるサウンドバンクIllegalArgumentException - そのサウンドバンクがサポートされていない場合にスローされる。isSoundbankSupported(javax.sound.midi.Soundbank), unloadInstrument(javax.sound.midi.Instrument), unloadInstruments(javax.sound.midi.Soundbank, javax.sound.midi.Patch[])boolean loadInstruments(Soundbank soundbank, Patch[] patchList)
Soundbank からロードします。それぞれの Patch オブジェクトは、バンク番号およびプログラム番号を示します。一致する Patch を持つ Instrument が、そのバンクおよびプログラムの位置にロードされます。soundbank - ロードするインストゥルメントを含んでいる SoundbankpatchList - それに対応するインストゥルメントがロードされるパッチのリストtrue、ロードされなかったインストゥルメントがある場合 (たとえば Synthesizer のメモリーが不足していたとき) は falseIllegalArgumentException - そのサウンドバンクがサポートされていない場合にスローされる。isSoundbankSupported(javax.sound.midi.Soundbank), Instrument.getPatch(), loadAllInstruments(javax.sound.midi.Soundbank), loadInstrument(javax.sound.midi.Instrument), Soundbank.getInstrument(Patch), Sequence.getPatchList()void unloadInstruments(Soundbank soundbank, Patch[] patchList)
soundbank - アンロードするインストゥルメントを含んでいるサウンドバンクpatchList - それに対応するインストゥルメントがアンロードされるパッチのリストIllegalArgumentException - そのサウンドバンクがサポートされていない場合にスローされる。unloadInstrument(javax.sound.midi.Instrument), unloadAllInstruments(javax.sound.midi.Soundbank), isSoundbankSupported(javax.sound.midi.Soundbank), Instrument.getPatch(), loadInstruments(javax.sound.midi.Soundbank, javax.sound.midi.Patch[]) バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.