-
- すべてのスーパー・インタフェース:
AutoCloseable,MidiDevice
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つが受け取る(またはすでに受け取っている)必要があります。
-
-
ネストされたクラスのサマリー
-
インタフェース javax.sound.midi.MidiDeviceで宣言されたネストされたクラス/インタフェース
MidiDevice.Info
-
-
メソッドのサマリー
すべてのメソッド インスタンス・メソッド 抽象メソッド 修飾子と型 メソッド 説明 Instrument[]getAvailableInstruments()シンセサイザに付属するインストゥルメントのリストを取得します。MidiChannel[]getChannels()このシンセサイザで制御されるMIDIチャネルのセットを取得します。SoundbankgetDefaultSoundbank()シンセサイザにデフォルトのサウンド・バンクがある場合は、そのサウンド・バンクを取得します。longgetLatency()このシンセサイザでの処理応答時間をマイクロ秒単位で取得します。Instrument[]getLoadedInstruments()このSynthesizerに現在ロードされているインストゥルメントのリストを取得します。intgetMaxPolyphony()このシンセサイザが同時に出力できるノートの最大数を取得します。VoiceStatus[]getVoiceStatus()このシンセサイザによって生成されるボイスの現在の状態を取得します。booleanisSoundbankSupported(Soundbank soundbank)指定したサウンド・バンクのインストゥルメントをこのシンセサイザにロードできるかどうかを呼出し側に通知します。booleanloadAllInstruments(Soundbank soundbank)指定したSoundbankに含まれているすべてのインストゥルメントをSynthesizerにロードします。booleanloadInstrument(Instrument instrument)特定のインストゥルメントを合成に使用できるようにします。booleanloadInstruments(Soundbank soundbank, Patch[] patchList)指定したパッチによって参照されるインストゥルメントを、指定したSoundbankからロードします。booleanremapInstrument(Instrument from, Instrument to)インストゥルメントを再マッピングします。voidunloadAllInstruments(Soundbank soundbank)指定したSoundbankに含まれるすべてのインストゥルメントをアンロードします。voidunloadInstrument(Instrument instrument)特定のインストゥルメントをアンロードします。voidunloadInstruments(Soundbank soundbank, Patch[] patchList)指定したパッチによって参照されるインストゥルメントを、指定したMIDIサウンド・バンクからアンロードします。-
インタフェース javax.sound.midi.MidiDeviceで宣言されたメソッド
close, getDeviceInfo, getMaxReceivers, getMaxTransmitters, getMicrosecondPosition, getReceiver, getReceivers, getTransmitter, getTransmitters, isOpen, open
-
-
-
-
メソッドの詳細
-
getMaxPolyphony
int getMaxPolyphony()
このシンセサイザが同時に出力できるノートの最大数を取得します。- 戻り値:
- 同時に出力できるノートの最大数
- 関連項目:
getVoiceStatus()
-
getLatency
long getLatency()
このシンセサイザでの処理応答時間をマイクロ秒単位で取得します。 この応答時間は、MIDIメッセージがシンセサイザに配信されてから、対応する結果がそのシンセサイザで実際に生成されるまでの、最大遅延時間を測定したものです。この応答時間はマイクロ秒単位で表されますが、シンセサイザの遅延時間の実測値は、この判定が示す範囲よりも大幅にばらつく場合があります。 たとえば、シンセサイザによっては最大遅延時間が数ミリ秒を超えることもあります。
- 戻り値:
- マイクロ秒単位での最大遅延時間
-
getChannels
MidiChannel[] getChannels()
このシンセサイザで制御されるMIDIチャネルのセットを取得します。 返された配列のnullでない各要素は、そのチャネル番号に送られたMIDIメッセージを受け取るMidiChannelです。MIDI 1.0仕様では16のチャネルが規定されているため、このメソッドは少なくとも16の要素を持つ配列を返します。 ただし、このシンセサイザで16チャネルのうちのいくつかが使用されていない場合は、配列の要素の一部が
nullとなることがあります。そのため、シンセサイザを使用する前には各要素を確認してください。- 戻り値:
- この
Synthesizerで管理されるMidiChannelオブジェクトの配列。 配列要素にはnullが含まれる可能性がある。
-
getVoiceStatus
VoiceStatus[] getVoiceStatus()
このシンセサイザによって生成されるボイスの現在の状態を取得します。Synthesizerのこのクラスがボイス情報を提供しない場合、返される配列の長さは必ず0になります。 それ以外の場合、その長さは必ず、getMaxPolyphony()から返されるボイスの合計数に等しくなります。 (シンセサイザ・ボイスの説明については、VoiceStatusクラスの説明を参照。)- 戻り値:
- 対応するシンセサイザ・ボイスに関する情報を提供する
VoiceStatusオブジェクトの配列 - 関連項目:
getMaxPolyphony()、VoiceStatus
-
isSoundbankSupported
boolean isSoundbankSupported(Soundbank soundbank)
指定したサウンド・バンクのインストゥルメントをこのシンセサイザにロードできるかどうかを呼出し側に通知します。 サウンド・バンクがサポートされていない場合、そのサウンド・バンクからインストゥルメントをロードしようとすると、IllegalArgumentExceptionが発生します。- パラメータ:
soundbank- サポートの有無について照会するサウンド・バンク- 戻り値:
- サポートされている場合は
true、そうでない場合はfalse - 関連項目:
loadInstruments(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()
-
loadInstrument
boolean loadInstrument(Instrument instrument)
特定のインストゥルメントを合成に使用できるようにします。 このインストゥルメントはそのPatchオブジェクトで指定されたパッチ位置にロードされるため、プログラム・チェンジ・メッセージが受け取られる(またはすでに受け取られている)と、そのパッチが選択され、それ以後のノートはinstrumentのサウンドで演奏されます。 指定したインストゥルメントがすでにロードされている場合には、このメソッドは何も実行しないでtrueを返します。インストゥルメントは、この
Synthesizerでサポートされるサウンド・バンクに含まれていなければいけません。 (確認するには、InstrumentのgetSoundbankメソッドとSynthesizerのisSoundbankSupportedメソッドを使用)。- パラメータ:
instrument- ロードするインストゥルメント- 戻り値:
- インストゥルメントが正常にロードされた(またはすでにロードされている)場合は
true、インストゥルメントがロードできなかった場合(たとえばシンセサイザのメモリー不足でロードできなかった場合)はfalse - 例外:
IllegalArgumentException- 指定したインストゥルメントのサウンド・バンクがこの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)
-
unloadInstrument
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)
-
remapInstrument
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、機能がシンセサイザによって実装されていない場合はfalse - 例外:
IllegalArgumentException- シンセサイザがインストゥルメント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)
-
getDefaultSoundbank
Soundbank getDefaultSoundbank()
シンセサイザにデフォルトのサウンド・バンクがある場合は、そのサウンド・バンクを取得します。 (一部のシンセサイザにはデフォルトまたは組込みのサウンド・バンクがある)。 シンセサイザにデフォルトのサウンド・バンクがない場合には、インストゥルメントを外部のサウンド・バンクから明示的にロードする必要があります。- 戻り値:
- デフォルトのサウンド・バンク。デフォルトのサウンド・バンクがない場合は
null - 関連項目:
isSoundbankSupported(javax.sound.midi.Soundbank)
-
getAvailableInstruments
Instrument[] getAvailableInstruments()
シンセサイザに付属するインストゥルメントのリストを取得します。 このようなインストゥルメントは、シンセサイザに組み込まれていたり、シンセサイザに付属のデフォルトのサウンド・バンクに含まれていたりする場合があります。このメソッドは、シンセサイザに現在ロードされているインストゥルメントを検索するためには使用できないことに注意してください。そのような目的には、
getLoadedInstruments()を使用します。 またこのメソッドでは、シンセサイザにロードできるすべてのインストゥルメントを示すこともできません。このメソッドで示されるのは、シンセサイザに付属するインストゥルメントのサブセットのみです。 他のインストゥルメントをロードできるかどうかを調べるにはisSoundbankSupported()を呼び出します。そのインストゥルメントのSoundbankがサポートされていれば、そのインストゥルメントをロードしてみることができます。- 戻り値:
- 使用できるインストゥルメントのリスト。 シンセサイザにインストゥルメントが付属していない場合、長さ0の配列が返されます。
- 関連項目:
getLoadedInstruments(),isSoundbankSupported(Soundbank),loadInstrument(javax.sound.midi.Instrument)
-
getLoadedInstruments
Instrument[] getLoadedInstruments()
このSynthesizerに現在ロードされているインストゥルメントのリストを取得します。- 戻り値:
- 現在ロードされているインストゥルメントのリスト
- 関連項目:
loadInstrument(javax.sound.midi.Instrument),getAvailableInstruments(),Soundbank.getInstruments()
-
loadAllInstruments
boolean loadAllInstruments(Soundbank soundbank)
指定したSoundbankに含まれているすべてのインストゥルメントをSynthesizerにロードします。- パラメータ:
soundbank- ロードするインストゥルメントを含んでいるSoundbank- 戻り値:
- すべてのインストゥルメントが正常にロードされた(またはすでにロードされている)場合は
true、ロードされなかったインストゥルメントがある場合(たとえばSynthesizerのメモリーが不足していたとき)はfalse - 例外:
IllegalArgumentException- 要求したサウンド・バンクがこのシンセサイザと互換でない場合- 関連項目:
isSoundbankSupported(javax.sound.midi.Soundbank),loadInstrument(javax.sound.midi.Instrument),loadInstruments(javax.sound.midi.Soundbank, javax.sound.midi.Patch[])
-
unloadAllInstruments
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[])
-
loadInstruments
boolean loadInstruments(Soundbank soundbank, Patch[] patchList)
指定したパッチによって参照されるインストゥルメントを、指定したSoundbankからロードします。 それぞれのPatchオブジェクトは、バンクおよびプログラム番号を示します。一致するPatchを持つInstrumentが、そのバンクおよびプログラムの位置にロードされます。- パラメータ:
soundbank- ロードするインストゥルメントを含んでいるSoundbankpatchList- それに対応するインストゥルメントがロードされるパッチのリスト- 戻り値:
- すべてのインストゥルメントが正常にロードされた(またはすでにロードされている)場合は
true、ロードされなかったインストゥルメントがある場合(たとえばSynthesizerのメモリーが不足していたとき)はfalse - 例外:
IllegalArgumentException- そのサウンド・バンクがサポートされていない場合にスローされる- 関連項目:
isSoundbankSupported(javax.sound.midi.Soundbank),Instrument.getPatch(),loadAllInstruments(javax.sound.midi.Soundbank),loadInstrument(javax.sound.midi.Instrument),Soundbank.getInstrument(Patch),Sequence.getPatchList()
-
unloadInstruments
void unloadInstruments(Soundbank soundbank, Patch[] patchList)
指定したパッチによって参照されるインストゥルメントを、指定したMIDIサウンド・バンクからアンロードします。- パラメータ:
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[])
-
-