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