java.lang.Object
javax.sound.midi.MidiMessage
javax.sound.midi.SysexMessage
- 所有已实现的接口:
-
Cloneable
一个
SysexMessage
对象表示一个MIDI系统独占消息。
当从MIDI文件中读取系统独占消息时,它总是具有定义的长度。来自MIDI文件的系统独占消息的数据应该按照以下方式存储在SysexMessage
的数据数组中:系统独占消息状态字节(0xF0或0xF7),所有消息数据字节,最后是独占结束标志(0xF7)。因此,SysexMessage
对象报告的长度是系统独占数据的长度加上两个字节:一个字节用于状态字节,另一个用于独占结束标志。
根据标准MIDI文件规范,从MIDI文件中读取的SysexMessage
有两个合法的状态字节值:
- 0xF0:系统独占消息(与MIDI线协议中相同)
- 0xF7:特殊系统独占消息
SysexMessages
中。在这种情况下,系统独占数据的长度事先是未知的;系统独占数据的结束由MIDI线字节流中的独占结束标志(0xF7)标记。
- 0xF0:系统独占消息(与MIDI线协议中相同)
- 0xF7:独占结束(EOX)
SysexMessage
对象应该具有状态值0xF0。如果此消息包含消息的所有系统独占数据,则应以状态字节0xF7(EOX)结束。否则,应该在一个或多个具有状态值0xF7的SysexMessages
中发送额外的系统独占数据。包含系统独占消息的最后一部分数据的SysexMessage
应以值0xF7(EOX)结束,以标记系统独占消息的结束。
如果使用SysexMessages
对象传输系统独占数据使用MIDI线协议,则应仅传播初始0xF0状态字节,系统独占数据本身以及最终的0xF7(EOX)字节;用于指示SysexMessage
包含继续系统独占数据的任何0xF7状态字节不应通过MIDI线协议传播。
-
Field Summary
Modifier and TypeFieldDescriptionstatic final int
特殊系统独占消息的状态字节(0xF7,或247),用于MIDI文件。static final int
系统独占消息的状态字节(0xF0,或240)。Fields declared in class javax.sound.midi.MidiMessage
data, length
-
Constructor Summary
ModifierConstructorDescription构造一个新的SysexMessage
。protected
SysexMessage
(byte[] data) 构造一个新的SysexMessage
。SysexMessage
(byte[] data, int length) 构造一个新的SysexMessage
并设置消息的数据。SysexMessage
(int status, byte[] data, int length) 构造一个新的SysexMessage
并设置消息的数据。 -
Method Summary
Modifier and TypeMethodDescriptionclone()
创建一个与此对象相同类和相同内容的新对象。byte[]
getData()
获取系统独占消息的数据的副本。void
setMessage
(byte[] data, int length) 设置系统独占消息的数据。void
setMessage
(int status, byte[] data, int length) 设置系统独占消息的数据。Methods declared in class javax.sound.midi.MidiMessage
getLength, getMessage, getStatus
-
Field Details
-
SYSTEM_EXCLUSIVE
public static final int SYSTEM_EXCLUSIVE系统独占消息的状态字节(0xF0,或240)。- 参见:
-
SPECIAL_SYSTEM_EXCLUSIVE
public static final int SPECIAL_SYSTEM_EXCLUSIVE特殊系统独占消息的状态字节(0xF7,或247),用于MIDI文件。它具有与实时“MIDI线”协议中使用的END_OF_EXCLUSIVE相同的值。- 参见:
-
-
Constructor Details
-
SysexMessage
public SysexMessage()构造一个新的SysexMessage
。新消息的内容保证指定为有效的MIDI消息。随后,您可以使用setMessage
方法之一设置消息的内容。- 参见:
-
SysexMessage
构造一个新的SysexMessage
并设置消息的数据。数据数组的第一个字节必须是有效的系统独占状态字节(0xF0或0xF7)。消息的内容可以通过使用setMessage
方法之一更改。- 参数:
-
data
- 包含状态字节的系统独占消息数据 -
length
- 数组中有效消息数据的长度,包括状态字节;它应为非负数且小于或等于data.length
- 抛出:
-
InvalidMidiDataException
- 如果参数值未指定有效的MIDI元消息 - 自:
- 1.7
- 参见:
-
SysexMessage
构造一个新的SysexMessage
并设置消息的数据。消息的内容可以通过使用setMessage
方法之一更改。- 参数:
-
status
- 消息的状态字节;它必须是有效的系统独占状态字节(0xF0或0xF7) -
data
- 系统独占消息数据(不包括状态字节) -
length
- 数组中有效消息数据的长度;它应为非负数且小于或等于data.length
- 抛出:
-
InvalidMidiDataException
- 如果参数值未指定有效的MIDI系统独占消息 - 自:
- 1.7
- 参见:
-
SysexMessage
protected SysexMessage(byte[] data) 构造一个新的SysexMessage
。- 参数:
-
data
- 包含完整消息的字节数组。消息数据可以使用setMessage
方法更改。 - 参见:
-
-
Method Details
-
setMessage
设置系统独占消息的数据。数据数组的第一个字节必须是有效的系统独占状态字节(0xF0或0xF7)。- 覆盖:
-
setMessage
在类MidiMessage
- 参数:
-
data
- 系统独占消息数据 -
length
- 数组中有效消息数据的长度,包括状态字节 - 抛出:
-
InvalidMidiDataException
- 如果参数值未指定有效的MIDI系统独占消息
-
setMessage
设置系统独占消息的数据。- 参数:
-
status
- 消息的状态字节(0xF0或0xF7) -
data
- 系统独占消息数据 -
length
- 数组中有效消息数据的长度 - 抛出:
-
InvalidMidiDataException
- 如果状态字节对于系统独占消息无效
-
getData
public byte[] getData()获取系统独占消息的数据的副本。返回的字节数组不包括状态字节。- 返回:
- 包含系统独占消息数据的数组
-
clone
创建一个与此对象相同类和相同内容的新对象。- 指定者:
-
clone
在类MidiMessage
- 返回:
- 此实例的克隆
- 参见:
-