public class SysexMessage extends MidiMessage
SysexMessage
对象表示一个MIDI系统独占消息。
当从MIDI文件读取系统独占消息时,它总是具有一个定义的长度。 来自MIDI文件的系统专用消息的数据应存储在SysexMessage
的数据阵列中,如下所示:系统专用消息状态字节(0xF0或0xF7),所有消息数据字节,最后是排他结束标志( 0xF7)。 因此, SysexMessage
对象报告的长度是系统专用数据的长度加上两个:一个字节的状态字节,一个字节用于排除结束标志。
作为决定由标准MIDI文件规范,两个状态字节值是合法的SysexMessage
从MIDI文件读取:
当Java Sound用于处理使用MIDI线路协议接收的系统专用数据时,应将数据放在一个或多个SysexMessages
。 在这种情况下,系统专用数据的长度不是预先知道的; 系统独占数据的结尾由MIDI线字节流中的独占结束标志(0xF7)标记。
SysexMessage
对象应该具有状态值0xF0。
如果该消息包含消息的所有系统独占数据,则应以状态字节0xF7(EOX)结束。
否则,额外的系统专用数据应该在状态值为0xF7的一个或多个SysexMessages
发送。
所述SysexMessage
包含最后系统独占消息应用值0xF7(EOX)结束数据的以标记系统独占消息的结束。
如果使用MIDI线路协议传输来自SysexMessages
对象的系统专用数据,则SysexMessages
初始0xF0状态字节,系统独占数据本身以及最终的0xF7(EOX)字节); 用于指示包含持续系统专用数据的SysexMessage
任何0xF7状态字节不应通过MIDI线路协议传播。
Modifier and Type | Field and Description |
---|---|
static int |
SPECIAL_SYSTEM_EXCLUSIVE
特殊系统专用消息(0xF7或247)的状态字节,用于MIDI文件。
|
static int |
SYSTEM_EXCLUSIVE
系统独占消息(0xF0或240)的状态字节。
|
data, length
Modifier | Constructor and Description |
---|---|
|
SysexMessage()
构建一个新的
SysexMessage 。
|
protected |
SysexMessage(byte[] data)
构建新的
SysexMessage 。
|
|
SysexMessage(byte[] data, int length)
构造一个新的
SysexMessage 并设置消息的数据。
|
|
SysexMessage(int status, byte[] data, int length)
构造一个新的
SysexMessage 并设置消息的数据。
|
Modifier and Type | Method and Description |
---|---|
Object |
clone()
创建与该对象相同的类和新内容相同的新对象。
|
byte[] |
getData()
获取系统专用消息的数据副本。
|
void |
setMessage(byte[] data, int length)
设置系统专用消息的数据。
|
void |
setMessage(int status, byte[] data, int length)
设置系统专用消息的数据。
|
getLength, getMessage, getStatus
public static final int SYSTEM_EXCLUSIVE
public static final int SPECIAL_SYSTEM_EXCLUSIVE
public SysexMessage()
SysexMessage
。
保证新消息的内容指定有效的MIDI消息。
随后,您可以使用setMessage
方法之一来设置消息的内容。
setMessage(byte[], int)
public SysexMessage(byte[] data, int length) throws InvalidMidiDataException
SysexMessage
并设置消息的数据。
数据数组的第一个字节必须是有效的系统独占状态字节(0xF0或0xF7)。
消息的内容可以通过使用setMessage
之一来更改。
data
- 系统专用消息数据,包括状态字节
length
- 数组中有效消息数据的长度,包括状态字节;
它应该是非负的,小于等于data.length
InvalidMidiDataException
- 如果参数值未指定有效的MIDI元消息。
setMessage(byte[], int)
,
setMessage(int, byte[], int)
,
getData()
public SysexMessage(int status, byte[] data, int length) throws InvalidMidiDataException
SysexMessage
并设置消息的数据。
可以使用setMessage
方法之一来更改消息的内容。
status
- 消息的状态字节;
它必须是一个有效的系统独占状态字节(0xF0或0xF7)
data
- 系统独占消息数据(不含状态字节)
length
- 数组中有效消息数据的长度;
它应该是非负的,小于等于data.length
InvalidMidiDataException
- 如果参数值未指定有效的MIDI元消息。
setMessage(byte[], int)
,
setMessage(int, byte[], int)
,
getData()
protected SysexMessage(byte[] data)
SysexMessage
。
data
- 包含完整消息的字节数组。
可以使用setMessage
方法更改消息数据。
setMessage(byte[], int)
public void setMessage(byte[] data, int length) throws InvalidMidiDataException
setMessage
在类别
MidiMessage
data
- 系统专用消息数据
length
- 数组中有效消息数据的长度,包括状态字节。
InvalidMidiDataException
- 如果参数值未指定有效的MIDI元消息
public void setMessage(int status, byte[] data, int length) throws InvalidMidiDataException
status
- 消息的状态字节(0xF0或0xF7)
data
- 系统专用消息数据
length
- 数组中有效消息数据的长度
InvalidMidiDataException
- 如果状态字节对于sysex消息无效
public byte[] getData()
public Object clone()
clone
在类别
MidiMessage
Cloneable
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.