-
- すべてのスーパー・インタフェース:
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チャネルのセットを取得します。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サウンド・バンクからアンロードします。-
インタフェース 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
- ロードするインストゥルメントを含んでいるSoundbank
patchList
- それに対応するインストゥルメントがロードされるパッチのリスト- 戻り値:
- すべてのインストゥルメントが正常にロードされた(またはすでにロードされている)場合は
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[])
-
-