javax.sound.midi

接口
异常
java.lang.Object
  继承者 javax.sound.midi.MidiMessage
所有已实现的接口:
Cloneable
直接已知子类:
MetaMessage, ShortMessage, SysexMessage

public abstract class MidiMessage
     
extends Object
implements Cloneable

MidiMessage 是 MIDI 消息的基类。这些基类中不仅包含了合成器可响应的标准 MIDI 消息,还包含可供 sequencer 程序使用的“元事件”。还有针对类似歌词、版权、速度指示、时间和主要签名、制造者等信息的元事件。有关更多的信息,请参见 Standard MIDI Files 1.0 规范,它是由 MIDI 制造商协会 (http://www.midi.org) 发布的 Complete MIDI 1.0 Detailed Specification 的一部分。

MidiMessage 基类提供了对有关 MIDI 消息的三类信息的访问:

  • 消息的状态字节
  • 消息的总长度,以字节为单位(状态字节加数据字节)
  • 包含完整消息的 byte 数组
MidiMessage 包含了用于获取这些值的方法,但不包括用于设置这些值的方法。设置这些值是子类的任务。

MIDI 标准用字节表示 MIDI 数据。但是,由于 JavaTM 使用带符号字节,所以 Java Sound API 表示 MIDI 数据时使用整数而不是字节。例如,MidiMessagegetStatus() 方法返回用整数表示的 MIDI 状态字节。如果处理来源于 Java Sound 之外的 MIDI 数据,而现在又编码为带符号字节,可使用以下转换将字节转换为整数:

int i = (int)(byte & 0xFF)

如果只需要将一个已知 MIDI 字节值作为方法参数传递,则可使用(例如)十进制或十六进制符号直接将其表示为整数。例如,要传递“实际有意义的”状态字节作为 ShortMessage 的 setMessage(int) 方法的第一个参数,您可以将其表示为 254 或 0xFE。

另请参见:
Track, Sequence, Receiver

字段摘要
protected  byte[] data
          MIDI 消息数据。
protected  int length
          MIDI 消息中的字节数,包括状态字节和数据字节。
 
构造方法摘要
protected MidiMessage(byte[] data)
          构造一个新的 MidiMessage
 
方法摘要
abstract  Object clone()
          创建一个与此对象具有相同类和相同内容的新对象。
 int getLength()
          获得 MIDI 消息的总长度,以字节为单位。
 byte[] getMessage()
          获得 MIDI 消息数据。
 int getStatus()
          获得 MIDI 消息的状态字节。
protected  void setMessage(byte[] data, int length)
          为 MIDI 消息设置数据。
 
从类 java.lang.Object 继承的方法
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

字段详细信息

data

protected byte[] data
MIDI 消息数据。第一个字节是消息的状态字节;后面一直到消息长度字节为止的是此消息的数据字节。

另请参见:
getLength()

length

protected int length
MIDI 消息中的字节数,包括状态字节和数据字节。

另请参见:
getLength()
构造方法详细信息

MidiMessage

protected MidiMessage(byte[] data)
构造一个新的 MidiMessage。此受保护的构造方法由具体子类调用,具体子类应确保数据数组指定一个完整有效的 MIDI 消息。

参数:
data - 包含完整消息的 byte 数组。使用 setMessage 方法可更改消息数据。
另请参见:
setMessage(byte[], int)
方法详细信息

setMessage

protected void setMessage(byte[] data,
                          int length)
                   throws InvalidMidiDataException
为 MIDI 消息设置数据。此受保护的方法由具体子类调用,具体子类应确保数据数组指定一个完整有效的 MIDI 消息。

抛出:
InvalidMidiDataException

getMessage

public byte[] getMessage()
获得 MIDI 消息数据。返回的 byte 数组中的第一个字节是消息的状态字节。后面一直到消息长度字节为止的是数据字节。byte 数组的长度可能会大于实际消息的长度;消息总长度(以字节为单位)由 getLength() 方法报告。

返回:
包含完整的 MidiMessage 数据的 byte 数组

getStatus

public int getStatus()
获得 MIDI 消息的状态字节。以整数方式表示状态“字节”;请参见 MidiMessage 类描述中的 讨论

返回:
此事件的状态字节的整数表示形式

getLength

public int getLength()
获得 MIDI 消息的总长度,以字节为单位。一个 MIDI 消息包含一个状态字节和零个或多个数据字节。返回值的范围:系统实时消息为 1,通道消息为 2 或 3,元和系统独占消息为任意值。

返回:
消息的长度,以字节为单位

clone

public abstract Object clone()
创建一个与此对象具有相同类和相同内容的新对象。

覆盖:
Object 中的 clone
返回:
此实例的一个副本。
另请参见:
Cloneable