|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
public interface MidiChannel
表示一個單獨 MIDI 通道的 MidiChannel
物件。通常,每個 MidiChannel
方法處理由 MIDI 規範定義的名稱類似 MIDI “通道聲音”或“通道網要”的訊息。除此之外,MidiChannel
還添加了某些 "get" 方法,可檢索由某個標準 MIDI 通道訊息最近設置的值。類似地,也添加了用於檢索每個通道的單聲和靜音值的方法。
物件有一個 Synthesizer
MidiChannel
集合,通常一個 MidiChannels
對應於 MIDI 1.0 規範規定的 16 個通道中的一個。Synthesizer
在其 MidiChannel
接收到 noteOn
訊息時產生聲音。
有關已規定的 MIDI 通道訊息行為的更多資訊,請參見 MIDI 1.0 規範,在此不加贅述。此規範名稱為 MIDI Reference:The Complete MIDI 1.0 Detailed Specification
,它由 MIDI 製造商協會 (http://www.midi.org) 發佈。
MIDI 最初是一個用於報告鍵盤樂師動作的協議。在 MidiChannel
API 中可以看出該起源的痕跡, 它保留了類似鍵號、鍵速度和鍵力度等 MIDI 概念。我們應該理解,MIDI 資料並不一定都起源於鍵盤演奏者(該源可以是另一類別樂師或軟體)。有些設備可以產生速度和力度的常數值,而不管如何演奏音符。同時,MIDI 規範通常讓合成器根據實作程序的需要來決定資料的使用方式。例如,不一定需要始終將速度資料映射到音量和/或聲音的亮度。
Synthesizer.getChannels()
方法摘要 | |
---|---|
void |
allNotesOff()
關閉此通道上當前發聲的所有音符。 |
void |
allSoundOff()
立即關閉通道上所有發聲的音符,同時忽略當前 Instrument 的 Hold Pedal 狀態和內部衰減率。 |
void |
controlChange(int controller,
int value)
對指定控制元件的值的更改作出反應。 |
int |
getChannelPressure()
獲得通道的鍵盤力度。 |
int |
getController(int controller)
獲得指定控制元件的當前值。 |
boolean |
getMono()
獲得當前的 mono/poly 網要。 |
boolean |
getMute()
獲得此通道的當前靜音狀態。 |
boolean |
getOmni()
獲得當前的 omni 網要。 |
int |
getPitchBend()
獲得此通道的向上或向下的音高偏移量。 |
int |
getPolyPressure(int noteNumber)
獲得指定鍵被按下的力度。 |
int |
getProgram()
獲得此通道的當前程序號。 |
boolean |
getSolo()
獲得此通道的當前 solo 狀態。 |
boolean |
localControl(boolean on)
打開或關閉本地控制。 |
void |
noteOff(int noteNumber)
關閉指定的音符。 |
void |
noteOff(int noteNumber,
int velocity)
關閉指定的音符。 |
void |
noteOn(int noteNumber,
int velocity)
啟動指定的音符發出聲音。 |
void |
programChange(int program)
更改一個程序(包)。 |
void |
programChange(int bank,
int program)
使用資源庫和程序(包)號更改程序。 |
void |
resetAllControllers()
將所有實作的控制元件重置為其預設值。 |
void |
setChannelPressure(int pressure)
對鍵盤力度的更改作出反應。 |
void |
setMono(boolean on)
打開或關閉 mono 網要。 |
void |
setMute(boolean mute)
設置此通道的靜音狀態。 |
void |
setOmni(boolean on)
打開或關閉 omni 網要。 |
void |
setPitchBend(int bend)
更改此通道上所有音符的音高偏移量。 |
void |
setPolyPressure(int noteNumber,
int pressure)
對指定音符鍵力度的更改作出反應。 |
void |
setSolo(boolean soloState)
設置此通道的 solo 狀態。 |
方法詳細資訊 |
---|
void noteOn(int noteNumber, int velocity)
velocity
為零,則此方法類似於執行 noteOff(int)
,終止此音符。
noteNumber
- MIDI 音符號,從 0 到 127(60 = 中央 C)velocity
- 鍵被按下的速度noteOff(int, int)
void noteOff(int noteNumber, int velocity)
Instrument
的內部情況。如果按下 Hold Pedal(一種控制元件;請參見 controlChange
),則此方法的效果要推遲到踏板釋放時才能體現。
noteNumber
- MIDI 音符號,從 0 到 127(60 = 中央 C)velocity
- 鍵釋放的速度noteOff(int)
,
noteOn(int, int)
,
allNotesOff()
,
allSoundOff()
void noteOff(int noteNumber)
noteNumber
- MIDI 音符號,從 0 到 127(60 = 中央 C)noteOff(int, int)
void setPolyPressure(int noteNumber, int pressure)
setPolyPressure
設置是否成功,可使用 getPolyPressure
。
noteNumber
- MIDI 音符號,從 0 到 127(60 = 中央 C)pressure
- 指定鍵的值,從 0 到 127(127 = 最大力度)getPolyPressure(int)
int getPolyPressure(int noteNumber)
noteNumber
- MIDI 音符號,從 0 到 127(60 = 中央 C)。
如果設備不支持設置 PolyPressure,則此方法始終返回 0。這種情況下,調用 setPolyPressure
沒有任何作用。
setPolyPressure(int, int)
void setChannelPressure(int pressure)
setPolyPressure
設置。多數情況下,它是對設備上不實作復調鍵力度的單一傳感器的的度量。力度可用於控制聲音的各個方面,如在 setPolyPressure
中的描述。
基礎合成器可能不支持此 MIDI 訊息。為了驗證 setChannelPressure
設置是否成功,可使用 getChannelPressure
。
pressure
- 鍵盤被按下的力度,從 0 到 127(127 = 最大力度)setPolyPressure(int, int)
,
getChannelPressure()
int getChannelPressure()
setChannelPressure
沒有任何作用。
setChannelPressure(int)
void controlChange(int controller, int value)
Instrument
對控制元件更改的反應方式特定於 Instrument
。
MIDI 1.0 Specification 同時定義了 7 位控制元件和 14 位控制元件。連續的控制元件,例如滾輪和滑桿通常為 14 位(兩個 MIDI 位元組),而離散的控制元件,例如開關,通常為 7 位(一個 MIDI 位元組)。請參考規範,瞭解每種控制型別的具體精度。
控制元件 64 到 95 (0x40 - 0x5F) 允許 7 位精度。7 位控制元件的值完全通過 value
參數進行設置。其他的控制元件集通過使用兩個控制元件號(一個用於最高有效 7 位,另一個用於最低有效 7 位)提供 14 位精度。控制元件號 0 到 31 (0x00 - 0x1F) 控制著 14 位控制元件的最高有效 7 位;控制元件號 32 到 63 (0x20 - 0x3F) 控制著這些控制元件的最低有效 7 位。例如,控制元件號 7 (0x07) 控制著通道音量控制元件的高 7 位,而控制元件號 39 (0x27) 則控制著低 7 位。14 位控制元件的值由這兩個部分一起確定。當設置了控制元件的最高有效 7 位(使用控制元件號 0 到 31)時,低 7 位自動設置為 0。相應的用於低 7 位的控制元件號可用於進一步調整此控制元件值。
基礎合成器可能不支持特定的控制元件訊息。為了驗證是否對 controlChange
進行了成功的調用,可使用 getController
。
controller
- 控制元件號(0 到 127;請參見 MIDI 1.0 Specification 中的解釋)value
- 將指定的控制元件更改成的值(0 到 127)getController(int)
int getController(int controller)
controlChange
沒有任何作用。
controller
- 需要其值的控制元件號。允許的範圍為 0-127;請參見 MIDI 1.0 Specification 中的解釋。
controlChange(int, int)
void programChange(int program)
MIDI 規範並未指示已經能夠發聲的音符應切換到新的樂器(音色),還是繼續使用它們原先的音色,直到由音符關閉來終止。
程序號從零開始(表示為 0 到 127)。注意,MIDI 硬體顯示和有關 MIDI 的文字描述通常使用 1 到 128 的範圍。
基礎合成器可能不支持特定的程序。為了驗證是否對 programChange
進行了成功的調用,請使用 getProgram
。
program
- 要切換到的程序號(0 到 127)programChange(int, int)
,
getProgram()
void programChange(int bank, int program)
programChange
進行了成功的調用,可使用 getProgram
和 getController
。由於要通過控制更改的方式來更改資源庫,所以可使用下面的語句驗證當前的資源庫:
int bank = (getController(0) * 128) + getController(32);
bank
- 要切換到的資源庫號(0 到 16383)program
- 在指定的資源庫(0 到 127)中使用的程序(包)programChange(int)
,
getProgram()
int getProgram()
Patch.getProgram()
,
Synthesizer.loadInstrument(javax.sound.midi.Instrument)
,
programChange(int)
void setPitchBend(int bend)
MIDI 規範規定彎音為一個 14 位值,其中,零為最大的向下彎音,16383 為最大的向上彎音,8192 位於中心位置(無彎音)。實際的音高更改量未指定;可由彎音微調設置對其進行更改。但是 General MIDI 規範指明,預設的範圍應為距中心向上或向下的兩個半音程。
基礎合成器可能不支持此 MIDI 訊息。為了驗證 setPitchBend
設置是否成功,可使用 getPitchBend
。
bend
- 音高的更改量,它是一個非負的 14 位值(8192 = 無 bend)getPitchBend()
int getPitchBend()
setPitchBend
沒有任何作用。
setPitchBend(int)
void resetAllControllers()
controlChange(int, int)
void allNotesOff()
Instrument
的內部情況。如果按下 Hold Pedal 控制元件(請參見 controlChange
),則此方法的效果要推遲到踏板釋放時才能體現。
allSoundOff()
,
noteOff(int)
void allSoundOff()
Instrument
的 Hold Pedal 狀態和內部衰減率。
allNotesOff()
boolean localControl(boolean on)
localControl
行了成功的調用,請檢查返回值。
on
- true
可打開本地控制,false
則關閉本地控制
void setMono(boolean on)
"Mono" 是 "monophonic"(單聲道)的簡寫,在此上下文中與 "polyphonic"(復調)相反,指的是每個 MIDI 通道有單個合成器聲音。它與音頻通道數沒有任何關係(即“單聲道”和“立體聲”錄音的情況)。
基礎合成器可能不支持 mono 網要。為了驗證是否對 setMono
進行了成功的調用,可使用 getMono
。
on
- true
為打開 mono 網要,false
為關閉 mono 網要(表示打開 poly 網要)。getMono()
,
VoiceStatus
boolean getMono()
setMono
,不允許更改 mono/poly 網要的合成器將始終返回相同的值。
true
,否則返回 false
(表示 poly 網要為打開)。setMono(boolean)
void setOmni(boolean on)
setOmni
設置是否成功,可使用 getOmni
。
on
- true
表示開啟 omni 網要,false
表示關閉 omni 網要。getOmni()
,
VoiceStatus
boolean getOmni()
setOmni
,不允許更改 omni 網要的合成器將始終返回相同的值。
true
,否則返回 false
(表示 omni 網要為關閉)。setOmni(boolean)
void setMute(boolean mute)
true
表示該通道將設置為靜音,值為 false
表示該通道可發聲(如果其他通道為非 solo)。
與 allSoundOff()
不同,此方法只適用於特定的通道,而不是所有的通道。更進一步地說,它不只將當前發聲的音符設置為靜音,而且將後續接收的音符都設置為靜音。
基礎合成器可能不支持靜音通道。為了驗證是否對 setMute
進行了成功的調用,可使用 getMute
。
mute
- 新的靜音狀態getMute()
,
setSolo(boolean)
boolean getMute()
false
。
true
,否則返回 false
setMute(boolean)
void setSolo(boolean soloState)
solo
為 true
,則只有此通道及其他 solo 通道可發聲。如果 solo
為 false
,則只有其他 solo 通道可發聲;除非在沒有 solo 通道的情況下,所有非靜音通道都發聲。
基礎合成器可能不支持 solo 通道。為了驗證是否對 setSolo
進行了成功的調用,可使用 getSolo
。
soloState
- 該通道的新 solo 狀態getSolo()
boolean getSolo()
false
。
true
,否則返回 false
setSolo(boolean)
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。