- java.lang.Object
-
- javax.sound.midi.MidiMessage
-
- javax.sound.midi.SysexMessage
-
- All Implemented Interfaces:
-
Cloneable
public class SysexMessage extends MidiMessage
一个SysexMessage
对象表示一个MIDI系统独占消息。当从MIDI文件读取系统独占消息时,它总是具有一个定义的长度。 来自MIDI文件的系统专用消息的数据应存储在
SysexMessage
的数据阵列中,如下所示:系统专用消息状态字节(0xF0或0xF7),所有消息数据字节,最后是排他结束标志( 0xF7)。 因此,SysexMessage
对象报告的长度是系统专用数据的长度加上两个:状态字节的一个字节,排他结束标志的一个字节。根据标准MIDI文件规范的规定,
SysexMessage
从MIDI文件读取的两个状态字节值是合法的:- 0xF0:系统独占消息(与MIDI线路协议相同)
- 0xF7:特殊系统独占消息
SysexMessages
。 在这种情况下,系统专用数据的长度不是预先知道的; 系统独占数据的结尾由MIDI线字节流中的独占结束标志(0xF7)标记。- 0xF0:系统独占消息(与MIDI线路协议相同)
- 0xF7:独占结束(EOX)
SysexMessage
对象的状态值应为0xF0。 如果该消息包含消息的所有系统独占数据,则应以状态字节0xF7(EOX)结束。 否则,额外的系统专用数据应该在状态值为0xF7的一个或多个SysexMessages
发送。 包含系统独占消息的最后一个数据的SysexMessage
应以值0xF7(EOX)结尾,以标记系统独占消息的结尾。如果使用MIDI线路协议传输来自
SysexMessages
对象的系统专用数据,SysexMessages
应传播初始0xF0状态字节,系统独占数据本身和最终的0xF7(EOX)字节); 用于指示包含连续系统专用数据的SysexMessage
任何0xF7状态字节不应通过MIDI线路协议传播。
-
-
Field Summary
Fields Modifier and Type Field 描述 static int
SPECIAL_SYSTEM_EXCLUSIVE
特殊系统专用消息(0xF7或247)的状态字节,用于MIDI文件。static int
SYSTEM_EXCLUSIVE
系统独占消息(0xF0或240)的状态字节。-
Fields inherited from class javax.sound.midi.MidiMessage
data, length
-
-
构造方法摘要
构造方法 Modifier Constructor 描述 SysexMessage()
构造一个新的SysexMessage
。protected
SysexMessage(byte[] data)
构造一个新的SysexMessage
。SysexMessage(byte[] data, int length)
构造新的SysexMessage
并设置消息的数据。SysexMessage(int status, byte[] data, int length)
构造新的SysexMessage
并设置消息的数据。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 Object
clone()
创建与该对象相同的类和新内容相同的新对象。byte[]
getData()
获取系统专用消息的数据副本。void
setMessage(byte[] data, int length)
设置系统专用消息的数据。void
setMessage(int status, byte[] data, int length)
设置系统专用消息的数据。-
Methods inherited from class javax.sound.midi.MidiMessage
getLength, getMessage, getStatus
-
-
-
-
构造方法详细信息
-
SysexMessage
public SysexMessage()
构造新的SysexMessage
。 保证新消息的内容指定有效的MIDI消息。 随后,您可以使用setMessage
方法之一来设置消息的内容。- 另请参见:
-
setMessage(byte[], int)
-
SysexMessage
public SysexMessage(byte[] data, int length) throws InvalidMidiDataException
构造新的SysexMessage
并设置消息的数据。 数据数组的第一个字节必须是有效的系统独占状态字节(0xF0或0xF7)。 可以使用setMessage
方法之一更改消息的内容。- 参数
-
data
- 系统专用消息数据,包括状态字节 -
length
- 数组中有效消息数据的长度,包括状态字节; 应为非负数,小于等于data.length
- 异常
-
InvalidMidiDataException
- 如果参数值没有指定有效的MIDI元消息 - 从以下版本开始:
- 1.7
- 另请参见:
-
setMessage(byte[], int)
,setMessage(int, byte[], int)
,getData()
-
SysexMessage
public SysexMessage(int status, byte[] data, int length) throws InvalidMidiDataException
构造新的SysexMessage
并设置消息的数据。 可以使用setMessage
方法之一更改消息的内容。- 参数
-
status
- 消息的状态字节; 它必须是一个有效的系统独占状态字节(0xF0或0xF7) -
data
- 系统专用消息数据(不含状态字节) -
length
- 数组中有效消息数据的长度; 应为非负数,小于等于data.length
- 异常
-
InvalidMidiDataException
- 如果参数值未指定有效的MIDI元消息 - 从以下版本开始:
- 1.7
- 另请参见:
-
setMessage(byte[], int)
,setMessage(int, byte[], int)
,getData()
-
SysexMessage
protected SysexMessage(byte[] data)
构造新的SysexMessage
。- 参数
-
data
- 包含完整消息的字节数组。 可以使用setMessage
方法更改消息数据。 - 另请参见:
-
setMessage(byte[], int)
-
-
方法详细信息
-
setMessage
public void setMessage(byte[] data, int length) throws InvalidMidiDataException
设置系统专用消息的数据。 数据数组的第一个字节必须是有效的系统独占状态字节(0xF0或0xF7)。- 重写:
-
setMessage
在MidiMessage
- 参数
-
data
- 系统专用消息数据 -
length
- 数组中有效消息数据的长度,包括状态字节 - 异常
-
InvalidMidiDataException
- 如果参数值未指定有效的MIDI元消息
-
setMessage
public void setMessage(int status, byte[] data, int length) throws InvalidMidiDataException
设置系统专用消息的数据。- 参数
-
status
- 消息的状态字节(0xF0或0xF7) -
data
- 系统专用消息数据 -
length
- 数组中有效消息数据的长度 - 异常
-
InvalidMidiDataException
- 如果状态字节对于sysex消息无效
-
getData
public byte[] getData()
获取系统专用消息的数据副本。 返回的字节数组不包括状态字节。- 结果
- 数组包含系统专用消息数据
-
clone
public Object clone()
创建与该对象相同的类和新内容相同的新对象。- Specified by:
-
clone
在MidiMessage
- 结果
- 这个实例的一个克隆
- 另请参见:
-
Cloneable
-
-