java.lang.Object javax.sound.midi.MidiMessage javax.sound.midi.SysexMessage
public class SysexMessage
表示 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 |
字段详细信息 |
---|
public static final int SYSTEM_EXCLUSIVE
MidiMessage.getStatus()
,
常量字段值
public static final int SPECIAL_SYSTEM_EXCLUSIVE
MidiMessage.getStatus()
,
常量字段值
构造方法详细信息 |
---|
public SysexMessage()
SysexMessage
。可保证新消息的内容指定一个有效的 MIDI 消息。之后,可以使用
setMessage
方法之一来设置消息的内容。
setMessage(byte[], int)
protected SysexMessage(byte[] data)
SysexMessage
。
data
- 包含完整消息的 byte 数组。使用
setMessage
方法可更改消息数据。
setMessage(byte[], int)
方法详细信息 |
---|
public void setMessage(byte[] data, int length) throws InvalidMidiDataException
MidiMessage
中的
setMessage
data
- 系统独占消息数据
length
- 数组中有效消息数据的长度,包含状态字节。
InvalidMidiDataException
public void setMessage(int status, byte[] data, int length) throws InvalidMidiDataException
status
- 消息的状态字节(0xF0 或 0xF7)
data
- 系统独占消息数据
length
- 数组中有效消息数据的长度
InvalidMidiDataException
public byte[] getData()
public Object clone()
MidiMessage
中的
clone
Cloneable