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, open
int 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()
、VoiceStatus
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()
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)
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
、機能がシンセサイザによって実装されていない場合は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)
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
- ロードするインストゥルメントを含んでいるSoundbank
true
、ロードされなかったインストゥルメントがある場合(たとえばSynthesizer
のメモリーが不足していたとき)はfalse
IllegalArgumentException
- 要求したサウンド・バンクがこのシンセサイザと互換でない場合。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
- ロードするインストゥルメントを含んでいる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()
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, 2014, Oracle and/or its affiliates. All rights reserved.