モジュール java.desktop
パッケージ javax.sound.midi

インタフェースSynthesizer

すべてのスーパー・インタフェース:
AutoCloseable, MidiDevice

public interface Synthesizer extends MidiDevice
Synthesizerはサウンドを生成します。 これは通常、SynthesizerMidiChannelオブジェクトの1つが直接、またはSynthesizerオブジェクトを介してnoteOnメッセージを受け取った場合に発生します。 多くのSynthesizerでは、MIDIイベントをSynthesizerに配信することのできるReceiversをサポートしています。 このような場合、Synthesizerは通常、対応するメッセージを適切なMidiChannelに送るか、イベントがMIDIチャネル・メッセージでない場合にはそのイベント自身を処理します。

Synthesizerインタフェースには、インストゥルメントをサウンド・バンクにロードおよびロード解除するためのメソッドが含まれています。 インストゥルメントは、従来の音源をエミュレートしたサウンドや、なんらかのサウンド・エフェクトあるいはその他の想像上のサウンドなど、ある種のサウンドを合成するための仕様です。 サウンド・バンクはインストゥルメントのコレクションで、そのインストゥルメントのPatchオブジェクトによってバンクおよびプログラム番号に基づいて編成されています。 実装されているサウンド合成技術はSynthesizerクラスによって異なる可能性があります。そのため、一部のインストゥルメントのみが特定のシンセサイザとの互換性を持つ場合があります。 また、シンセサイザがインストゥルメントに割り当てるメモリー・サイズには制限がある場合があるため、合成技術が互換のシンセサイザでも、サウンド・バンクやインストゥルメントによっては使用できない可能性があります。 特定のサウンド・バンクに含まれているインストゥルメントが特定のシンセサイザで再生できるかどうかを確認するには、SynthesizerisSoundbankSupportedメソッドを呼び出してください。

インストゥルメントを「ロードする」とは、ノートを合成するためにそのインストゥルメントを使用可能にすることです。 インストゥルメントは、そのPatchオブジェクトで指定されたバンクおよびプログラムの位置にロードされます。 インストゥルメントをロードしても、次に演奏するノートにそのインストゥルメントのサウンドがただちに反映されるわけではありません。 ノートを演奏するインストゥルメントのバンク番号およびプログラム番号を選択するプログラム・チェンジ・メッセージを、シンセサイザのMidiChannelオブジェクトの1つが受け取る(またはすでに受け取っている)必要があります。

関連項目:
MidiSystem.getSynthesizer()SoundbankInstrumentMidiChannel.programChange(int, int)ReceiverTransmitterMidiDevice
  • ネストされたクラスのサマリー

    インタフェース javax.sound.midi.MidiDeviceで宣言されたネストされたクラス/インタフェース

    MidiDevice.Info
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    シンセサイザに付属するインストゥルメントのリストを取得します。
    このシンセサイザで制御されるMIDIチャネルのセットを取得します。
    シンセサイザにデフォルトのサウンド・バンクがある場合は、そのサウンド・バンクを取得します。
    long
    このシンセサイザでの処理応答時間をマイクロ秒単位で取得します。
    このSynthesizerに現在ロードされているインストゥルメントのリストを取得します。
    int
    このシンセサイザが同時に出力できるノートの最大数を取得します。
    このシンセサイザによって生成されるボイスの現在の状態を取得します。
    boolean
    指定したサウンド・バンクのインストゥルメントをこのシンセサイザにロードできるかどうかを呼出し側に通知します。
    boolean
    指定したSoundbankに含まれているすべてのインストゥルメントをSynthesizerにロードします。
    boolean
    loadInstrument​(Instrument instrument)
    特定のインストゥルメントを合成に使用できるようにします。
    boolean
    loadInstruments​(Soundbank soundbank, Patch[] patchList)
    指定したパッチによって参照されるインストゥルメントを、指定したSoundbankからロードします。
    boolean
    インストゥルメントを再マッピングします。
    void
    指定したSoundbankに含まれるすべてのインストゥルメントをアンロードします。
    void
    特定のインストゥルメントをアンロードします。
    void
    unloadInstruments​(Soundbank soundbank, Patch[] patchList)
    指定したパッチによって参照されるインストゥルメントを、指定したMIDIサウンド・バンクからアンロードします。
  • メソッドの詳細

    • 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でサポートされるサウンド・バンクに含まれていなければいけません。 (確認するには、InstrumentgetSoundbankメソッドとSynthesizerisSoundbankSupportedメソッドを使用)。

      パラメータ:
      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[])