|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
java.lang.Objectjavax.sound.midi.VoiceStatus
public class 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 〜 16383、アクティブでない場合は指定されていない値になります。
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 Standard Ed. 5.0 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。