java.lang.Object
javax.sound.midi.MidiMessage
- 所有已实现的接口:
-
Cloneable
- 直接已知的子类:
-
MetaMessage
,ShortMessage
,SysexMessage
MidiMessage
是 MIDI 消息的基类。它们不仅包括合成器可以响应的标准 MIDI 消息,还包括可以被顺序器程序使用的“元事件”。有关歌词、版权、速度指示、时间和调号、标记等信息的元事件。更多信息,请参阅标准 MIDI 文件 1.0 规范,该规范是 MIDI 制造商协会发布的完整 MIDI 1.0 详细规范的一部分(http://www.midi.org)。
基类 MidiMessage
提供了关于 MIDI 消息的三种信息的访问:
- 消息的状态字节
- 消息的总字节长度(状态字节加上任何数据字节)
- 包含完整消息的字节数组
MidiMessage
包括获取这些值的方法,但不包括设置。设置这些值是子类的责任。
MIDI 标准以字节形式表示 MIDI 数据。然而,由于 Java 使用有符号字节,Java Sound API 在表示 MIDI 数据时使用整数而不是字节。例如,MidiMessage
的 getStatus()
方法将 MIDI 状态字节作为整数返回。如果您正在处理源自 Java Sound 外部并现在编码为有符号字节的 MIDI 数据,则可以使用以下转换将字节转换为整数:
int i = (int)(byte & 0xFF)
如果您只需要将已知的 MIDI 字节值作为方法参数传递,可以直接表示为整数,使用(例如)十进制或十六进制表示法。例如,要将“活动感应”状态字节作为 ShortMessage
的 setMessage(int)
方法的第一个参数传递,可以将其表示为 254 或 0xFE。
- 参见:
-
Field Summary
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionabstract Object
clone()
创建一个与此对象相同类和相同内容的新对象。int
获取 MIDI 消息的总字节长度。byte[]
获取 MIDI 消息数据。int
获取 MIDI 消息的状态字节。protected void
setMessage
(byte[] data, int length) 设置 MIDI 消息的数据。
-
Field Details
-
data
protected byte[] dataMIDI 消息数据。第一个字节是消息的状态字节;随后的字节直到消息的长度为消息的数据字节。- 参见:
-
length
protected int lengthMIDI 消息的字节数,包括状态字节和任何数据字节。- 参见:
-
-
Constructor Details
-
MidiMessage
protected MidiMessage(byte[] data) 构造一个新的MidiMessage
。这个受保护的构造函数由具体的子类调用,子类应确保数据数组指定了一个完整、有效的 MIDI 消息。- 参数:
-
data
- 包含完整消息的字节数组。消息数据可以使用setMessage
方法更改。 - 参见:
-
-
Method Details
-
setMessage
设置 MIDI 消息的数据。这个受保护的方法由具体的子类调用,子类应确保数据数组指定了一个完整、有效的 MIDI 消息。- 参数:
-
data
- MIDI 消息中的数据字节 -
length
- 数据字节数组中的字节数 - 抛出:
-
InvalidMidiDataException
- 如果参数值未指定有效的 MIDI 元消息
-
getMessage
public byte[] getMessage()获取 MIDI 消息数据。返回的字节数组的第一个字节是消息的状态字节。任何后续字节直到消息的长度都是数据字节。字节数组的长度可能大于实际消息的长度;消息的总字节长度由getLength()
方法报告。- 返回:
-
包含完整
MidiMessage
数据的字节数组
-
getStatus
public int getStatus()获取 MIDI 消息的状态字节。状态“字节”表示为整数;请参阅MidiMessage
类描述中的 讨论。- 返回:
- 此事件状态字节的整数表示
-
getLength
public int getLength()获取 MIDI 消息的总字节长度。MIDI 消息由一个状态字节和零个或多个数据字节组成。返回值范围从系统实时消息的 1,到通道消息的 2 或 3,到元消息和系统专用消息的任意值。- 返回:
- 消息的字节长度
-
clone
创建一个与此对象相同类和相同内容的新对象。
-