|
JavaTM 2 Platform Std. Ed. v1.3 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
java.lang.Object | +--javax.sound.midi.VoiceStatus
VoiceStatus オブジェクトには、Synthesizer で生成されたボイスのうちの 1 つについての、現在の状態に関する情報が含まれます。
一般に MIDI シンセサイザは、決められた最大数の範囲で複数のノートを生成できます。これらのノートはボイスとも呼ばれます。ボイスは連続した単音のストリームで、受信される MIDI ノートを特定のボイスに割り当てるプロセスはボイスアロケーションと呼ばれます。ただし、ボイスアロケーションアルゴリズムや各ボイスの内容は、通常は MIDI シンセサイザ内部にあり、外から見ることはできません。もちろん、シンセサイザが演奏しているノートを MIDI メッセージで調べ、さらにそこからボイスに対するノートの割り当てについて何かを推論することもできます。しかし MIDI 自身には、シンセサイザによって割り当てられたノートとボイスとの対応関係だけでなく、シンセサイザで合成できるボイス数さえもレポートする手段はありません。
それに対して Java Sound の場合、Synthesizer クラスはその getVoiceStatus() メソッドによってボイスの内容を明示できます。この動作は推奨されていますが、必須ではないため、ボイスアロケーションを明示しないシンセサイザは、長さ 0 の配列だけを返します。ボイスの状態をレポートする Synthesizer では、そのボイスが現在出力されているかどうかに関係なく、常にすべてのボイスについてボイスアロケーション情報を維持しています。言い換えると、このタイプの Synthesizer はいつでも、同時に出力できるノートの最大数に等しい固定した数のボイスを備えています。
現在 MIDI ノートを処理していないボイスはアクティブでないとみなされます。ボイスは、ノート・オンコマンドを与えられていないか、あるいは受信したすべてのノート・オンコマンドが、それに対応するノート・オフコマンド (または「全ノート・オフ」メッセージ) によって終了されている場合にアクティブでないとみなされます。これはたとえば、16 までのノートを同時に出力できるシンセサイザが 4 音からなる和音を演奏するように指示された場合に起こります。つまり、この場合にアクティブなのは 4 つのボイスだけです (それ以前に出力された音はすでにすべて止まっていると想定)。通常、その状態がアクティブとレポートされたボイスは聞こえるサウンドを生成していますが、そうでない場合もあります。これはインストゥルメントの詳細 (つまり合成アルゴリズム) と、そのノートの持続時間によって決まります。たとえば、あるボイスで 1 回手をたたく音を合成しているとします。この音は非常に速く減衰するため、ノート・オフメッセージが受信される前に聞こえなくなってしまう可能性があります。このような状況では、現在サウンドが生成されていない場合でも、このボイスはアクティブと見なされます。
VoiceStatus クラスでは、アクティブまたはアクティブでない状態のほかに、そのボイスの現在の MIDI チャネル、バンク番号およびプログラム番号、MIDI ノート番号、および MIDI ボリュームを明らかにするフィールドが提供されます。これらのすべては、ボイスを使用していくうちに変化する可能性があります。ボイスがアクティブでない間は、これらのフィールドのそれぞれには指定されていない値が表示されます。そのため、アクティブなフィールドから先に確認する必要があります。
Synthesizer.getMaxPolyphony(),
Synthesizer.getVoiceStatus()| フィールドの概要 | |
boolean |
active
そのボイスが現在 MIDI ノートを処理しているかどうかを示します。 |
int |
bank
このボイスが現在使用しているインストゥルメントのバンク番号です。 |
int |
channel
このボイスが演奏されている MIDI チャネルです。 |
int |
note
このボイスが演奏している MIDI ノートです。 |
int |
program
このボイスが現在使用しているインストゥルメントのプログラム番号です。 |
int |
volume
このボイスの現在の MIDI ボリュームレベルです。 |
| コンストラクタの概要 | |
VoiceStatus()
|
|
| クラス java.lang.Object から継承したメソッド |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| フィールドの詳細 |
public boolean active
public int channel
MidiChannel,
activepublic int bank
SoundBank オブジェクトについては参照しません。値の範囲は、このボイスがアクティブな場合は 0 〜 127、アクティブでない場合は指定されていない値になります。Patch,
Soundbank,
active,
MidiChannel.programChange(int, int)public int program
MidiChannel.getProgram(),
Patch,
activepublic int note
MidiChannel.noteOn(int, int),
activepublic int volume
この値は、そのボイスが生成するサウンドの瞬間的なレベルを必ずしも反映しないことに注意してください。サウンドの瞬間的なレベルは、現在のインストゥルメントやそのインストゥルメントが生成する振幅の包絡線の形状を含めて、さまざまな要因によって決定されます。
active| コンストラクタの詳細 |
public VoiceStatus()
|
JavaTM 2 Platform Std. Ed. v1.3 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
Java、Java 2D、JDBC は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2000 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.