JavaTM 2 Platform
Standard Ed. 6

javax.sound.midi
類別 SysexMessage

java.lang.Object
  繼承者 javax.sound.midi.MidiMessage
      繼承者 javax.sound.midi.SysexMessage
所有已實作的介面:
Cloneable

public class SysexMessage
extends MidiMessage

表示 MIDI 系統獨佔訊息 SysexMessage 物件。

當從 MIDI 檔案中讀取系統獨佔訊息時,它通常具有已定義的長度。取自 MIDI 檔案的系統獨佔訊息的資料應存儲在 SysexMessage 的資料陣列中,如下所示:系統獨佔訊息狀態位元組(0xF0 或 0xF7),所有訊息資料位元組和最後的獨佔結束標誌 (0xF7)。因此,SysexMessage 物件報告的長度為系統獨佔資料的長度加上兩個位元組:一個位元組為狀態位元組,另一個為獨佔結束標誌。

按照 Standard MIDI Files 規範的規定,有兩個狀態位元組值對於從 MIDI 檔案讀取的 SysexMessage 是合法的:

當使用 Java Sound 處理通過 MIDI 導線協議接收的系統獨佔資料時,它應將資料置於一個或多個 SysexMessage 中。在這種情況下,預先不知道系統獨佔資料的長度;系統獨佔資料的結束由 MIDI 導線位元組串流中的一個獨佔結束標誌 (0xF7) 所標記。

第一個套件含用於特定系統獨佔訊息資料的 SysexMessage 物件應有狀態值 0xF0。如果此訊息包含該訊息的所有系統獨佔資料,則它應以狀態位元組 0xF7 (EOX) 結束。否則,應在一個或多個 SysexMessage 中發送其他的系統獨佔資料,狀態值為 0xF7。包含系統獨佔訊息最後資料的 SysexMessage 應以 0xF7 (EOX) 值結束,以標記系統獨佔訊息的結束。

如果使用 MIDI 導線協議傳輸取自 SysexMessage 物件的系統獨佔資料,則只有初始 0xF0 狀態位元組、系統獨佔資料本身和最終的 0xF7 (EOX) 位元組應該被傳播;任何用於指示 SysexMessage 套件含連續系統獨佔資料的 0xF7 狀態位元組都不應該通過 MIDI 導線協議被傳播。


欄位摘要
static int SPECIAL_SYSTEM_EXCLUSIVE
          用於 SPECIAL_SYSTEM_EXCLUSIVE 訊息的狀態位元組(0xF7 或 247),供在 MIDI 檔案中使用。
static int SYSTEM_EXCLUSIVE
          用於 SYSTEM_EXCLUSIVE 訊息的狀態位元組(0xF0 或 240)。
 
從類別 javax.sound.midi.MidiMessage 繼承的欄位
data, length
 
建構子摘要
  SysexMessage()
          建構一個新的 SysexMessage
protected SysexMessage(byte[] data)
          建構一個新的 SysexMessage
 
方法摘要
 Object clone()
          創建一個與此物件具有相同類別和相同內容的新物件。
 byte[] getData()
          獲得系統獨佔訊息資料的副本。
 void setMessage(byte[] data, int length)
          為系統獨佔訊息設置資料。
 void setMessage(int status, byte[] data, int length)
          為系統獨佔訊息設置資料。
 
從類別 javax.sound.midi.MidiMessage 繼承的方法
getLength, getMessage, getStatus
 
從類別 java.lang.Object 繼承的方法
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

欄位詳細資訊

SYSTEM_EXCLUSIVE

public static final int SYSTEM_EXCLUSIVE
用於 SYSTEM_EXCLUSIVE 訊息的狀態位元組(0xF0 或 240)。

另請參見:
MidiMessage.getStatus(), 常數欄位值

SPECIAL_SYSTEM_EXCLUSIVE

public static final int SPECIAL_SYSTEM_EXCLUSIVE
用於 SPECIAL_SYSTEM_EXCLUSIVE 訊息的狀態位元組(0xF7 或 247),供在 MIDI 檔案中使用。它與 END_OF_EXCLUSIVE 具有相同的值,用於實時 "MIDI wire" 協議中。

另請參見:
MidiMessage.getStatus(), 常數欄位值
建構子詳細資訊

SysexMessage

public SysexMessage()
建構一個新的 SysexMessage。可保證新訊息的內容指定一個有效的 MIDI 訊息。之後,可以使用 setMessage 方法之一來設置訊息的內容。

另請參見:
setMessage(byte[], int)

SysexMessage

protected SysexMessage(byte[] data)
建構一個新的 SysexMessage

參數:
data - 套件含完整訊息的 byte 陣列。使用 setMessage 方法可更改訊息資料。
另請參見:
setMessage(byte[], int)
方法詳細資訊

setMessage

public void setMessage(byte[] data,
                       int length)
                throws InvalidMidiDataException
為系統獨佔訊息設置資料。資料陣列的第一個位元組必須是一個有效的系統獨佔狀態位元組(0xF0 或 0xF7)。

覆寫:
類別 MidiMessage 中的 setMessage
參數:
data - 系統獨佔訊息資料
length - 陣列中有效訊息資料的長度,包含狀態位元組。
拋出:
InvalidMidiDataException

setMessage

public void setMessage(int status,
                       byte[] data,
                       int length)
                throws InvalidMidiDataException
為系統獨佔訊息設置資料。

參數:
status - 訊息的狀態位元組(0xF0 或 0xF7)
data - 系統獨佔訊息資料
length - 陣列中有效訊息資料的長度
拋出:
InvalidMidiDataException

getData

public byte[] getData()
獲得系統獨佔訊息資料的副本。返回的 byte 陣列不包括狀態位元組。

返回:
包含系統獨佔訊息資料的陣列。

clone

public Object clone()
創建一個與此物件具有相同類別和相同內容的新物件。

指定者:
類別 MidiMessage 中的 clone
返回:
此實例的一個副本。
另請參見:
Cloneable

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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