JavaTM 2 Platform
Standard Ed. 6

javax.sound.midi
類別 VoiceStatus

java.lang.Object
  繼承者 javax.sound.midi.VoiceStatus

public class VoiceStatus
extends Object

VoiceStatus 物件包含有關由 Synthesizer 產生的某個聲音當前狀態的資訊。

MIDI 合成器通常能夠產生最多的同步發聲音符數,也稱為聲音。聲音是連續的單音符串流,將到來的 MIDI 音符分派給特定聲音的過程即所謂的聲音分派。但是,聲音分派演算法和每個聲音的內容通常只存在於 MIDI 合成器內部,對外隱藏。當然,我們可以從 MIDI 訊息瞭解合成器正在演奏的音符,並可能推斷出一些聲音中的音符分派資訊。但是 MIDI 本身並未提供一種報告合成器將哪個音符分派給哪種聲音的方式,甚至都未報告合成器能夠合成的聲音數。

但在 Java Sound 中,Synthesizer 類別可通過其 getVoiceStatus() 方法公開其聲音的內容。建議使用此行為,但這是可選的;不公開其聲音分派的合成器僅返回一個長度為零的陣列。確實報告其聲音狀態的 Synthesizer 應對其所有聲音一直維護此資訊,無論該聲音當前是否發出。換句話說,給定型別的 Synthesizer 始終具有固定數量的聲音,等於它能夠發聲的最大同步音符數。

如果該聲音當前不處理 MIDI 音符,則視其為非活動的。在未給定任何 note-on 命令時,或在接收到的每個 note-on 命令已通過相應的 note-off(或通過一個“關閉所有音符”訊息)中止時,該聲音為非活動的。例如,發生這種情形的條件是:讓一個能夠演奏 16 個同步發聲音符的合成器演奏一個四音符和弦;這種情況下,只有四種聲音為活動的(假定沒有演奏以前的音符)。通常,一個狀態報告為活動的聲音產生可聽到的聲音,但是並非總是如此;這還取決於樂器的細節(即合成演算法)和音符已持續的時間。例如,一個聲音可合成單擊掌聲。由於此聲消失速度太快,所以它可能在收到 note-off 訊息前變得無法聽到。此時,該聲音仍視為活動的,即使當前不產生任何聲音。

除了活動或非活動狀態,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
 

欄位詳細資訊

active

public boolean active
指示聲音當前是否正在處理 MIDI 音符。請參見活動和非活動聲音的解釋。


channel

public int channel
在其上演奏此聲音的 MIDI 通道。如果聲音為活動的,則值為從零開始的通道號,如果聲音為非活動的,則未指定該值。

另請參見:
MidiChannel, active

bank

public int bank
此聲音當前正在使用的樂器的資源庫號。這是一個由 MIDI 資源庫選擇訊息指定的號;它並不指一個 SoundBank 物件。如果聲音為活動的,則值的範圍為 0 到 16383,如果聲音為非活動的,則未指定該值。

另請參見:
Patch, Soundbank, active, MidiChannel.programChange(int, int)

program

public int program
此聲音當前正在使用的樂器的程序號。如果聲音為活動的,則值的範圍為 0 到 127,如果聲音為非活動的,則未指定該值。

另請參見:
MidiChannel.getProgram(), Patch, active

note

public int note
此聲音正在演奏的 MIDI 音符。活動聲音的範圍從 0 到 127,以半音為單位,60 指中央 C(Middle C)。如果聲音為非活動的,則未指定該值。

另請參見:
MidiChannel.noteOn(int, int), active

volume

public int volume
聲音的當前 MIDI 音量級。如果聲音為活動的,則值的範圍為 0 到 127,如果聲音為非活動的,則未指定該值。

注意,此值不一定反映此聲音所發聲的瞬間級;該級是諸多因素產生的結果,包括當前樂器及其產生的振幅包絡線的形狀。

另請參見:
active
建構子詳細資訊

VoiceStatus

public VoiceStatus()

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only