public class VoiceStatus extends Object
VoiceStatus
オブジェクトには、Synthesizer
で生成されるボイスのうちの1つについて、現在の状態に関する情報が含まれます。
一般にMIDIシンセサイザは、最大数までのノートを同時に再生できます。これらのノートはボイスとも呼ばれます。 ボイスは連続した単一ノートのストリームで、受信されるMIDIノートを特定のボイスにアサインする処理はボイス・アロケーションと呼ばれます。 ただし、ボイス・アロケーション・アルゴリズムや各ボイスの内容は、通常はMIDIシンセサイザ内部にあり、外から見ることはできません。 もちろん、シンセサイザが演奏しているノートをMIDIメッセージで調べ、ボイスとノートのアサインメントについて推測することもできます。 しかしMIDI自身には、シンセサイザによってどのノートがどのボイスにアサインされたか、およびシンセサイザで合成できるボイス数をレポートする手段はありません。
それに対してJava Soundの場合、Synthesizer
クラスはそのgetVoiceStatus()
メソッドによってボイスの内容を明らかにできます。 この動作は推奨されていますが、必須ではないため、ボイス・アロケーションを公開しないシンセサイザは長さ0の配列だけを返します。 ボイスの状態をレポートするSynthesizer
では、そのボイスが現在出力されているかどうかに関係なく、常にすべてのボイスについてボイス・アロケーション情報を維持しています。 言い換えると、特定のタイプのSynthesizer
は必ず、同時に出力できるノートの最大数に等しい固定した数のボイスを備えています。
現在MIDIノートを処理していないボイスはアクティブでないと見なされます。 ボイスは、ノートオン・コマンドを与えられていないか、あるいは受信したすべてのノートオン・コマンドがそれに対応するノート・オフ・コマンド(または「オール・ノート・オフ」メッセージ)によって終了された場合にアクティブでなくなります。 これはたとえば、16までのノートを同時に再生できるシンセサイザが4音からなる和音を再生するように指示された場合に起こります。つまり、この場合にアクティブなのは4つのボイスのみです(それより前のノートがまだ再生されていることはないと想定)。 通常、そのステータスがアクティブとレポートされたボイスは聞こえるサウンドを生成していますが、そうでない場合もあります。これはインストゥルメントの詳細(つまり合成アルゴリズム)と、そのノートの持続時間によって決まります。 たとえば、あるボイスが単一のハンド・クラップ・サウンドを合成しているとします。 このサウンドは非常に速く減衰するため、ノート・オフ・メッセージが受信される前に聞こえなくなってしまう可能性があります。 このような状況では、現在サウンドが生成されていない場合でも、このボイスはアクティブと見なされます。
VoiceStatus
クラスでは、アクティブまたは非アクティブ・ステータスの他に、そのボイスの現在のMIDIチャネル、バンクおよびプログラム番号、MIDIノート番号、およびMIDI音量を示すフィールドが提供されます。 これらはすべて、ボイスの進行中に変化する可能性があります。 ボイスが非アクティブの間は、これらのフィールドの値は未指定です。そのため、アクティブなフィールドから先に確認する必要があります。
修飾子と型 | フィールド | 説明 |
---|---|---|
boolean |
active |
そのボイスが現在MIDIノートを処理しているかどうかを示します。
|
int |
bank |
このボイスが現在使用しているインストゥルメントのバンク番号です。
|
int |
channel |
このボイスが演奏されているMIDIチャネルです。
|
int |
note |
このボイスが演奏しているMIDIノートです。
|
int |
program |
このボイスが現在使用しているインストゥルメントのプログラム番号です。
|
int |
volume |
このボイスの現在のMIDIボリューム・レベルです。
|
コンストラクタ | 説明 |
---|---|
VoiceStatus() |
public boolean active
public int channel
MidiChannel
、active
public int bank
SoundBank
オブジェクトについては参照しません。 値の範囲は、このボイスがアクティブな場合は0から16383、ボイスがアクティブでない場合は特定されません。 public int program
public int note
public int volume
この値は、そのボイスが生成するサウンドの瞬間的なレベルを必ずしも反映しないことに注意してください。サウンドの瞬間的なレベルは、現在のインストゥルメントやそのインストゥルメントが生成する振幅の包絡線の形状を含めて、さまざまな要因によって決定されます。
active
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。 そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。