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, 2014, Oracle and/or its affiliates. All rights reserved.