Module java.desktop
Package javax.sound.midi

Class MidiMessage

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

public abstract class MidiMessage extends Object implements Cloneable
MidiMessage 是 MIDI 消息的基类。它们不仅包括合成器可以响应的标准 MIDI 消息,还包括可以被顺序器程序使用的“元事件”。有关歌词、版权、速度指示、时间和调号、标记等信息的元事件。更多信息,请参阅标准 MIDI 文件 1.0 规范,该规范是 MIDI 制造商协会发布的完整 MIDI 1.0 详细规范的一部分(http://www.midi.org)。

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

  • 消息的状态字节
  • 消息的总字节长度(状态字节加上任何数据字节)
  • 包含完整消息的字节数组
MidiMessage 包括获取这些值的方法,但不包括设置。设置这些值是子类的责任。

MIDI 标准以字节形式表示 MIDI 数据。然而,由于 Java 使用有符号字节,Java Sound API 在表示 MIDI 数据时使用整数而不是字节。例如,MidiMessagegetStatus() 方法将 MIDI 状态字节作为整数返回。如果您正在处理源自 Java Sound 外部并现在编码为有符号字节的 MIDI 数据,则可以使用以下转换将字节转换为整数:

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

如果您只需要将已知的 MIDI 字节值作为方法参数传递,可以直接表示为整数,使用(例如)十进制或十六进制表示法。例如,要将“活动感应”状态字节作为 ShortMessagesetMessage(int) 方法的第一个参数传递,可以将其表示为 254 或 0xFE。

参见:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected byte[]
    MIDI 消息数据。
    protected int
    MIDI 消息的字节数,包括状态字节和任何数据字节。
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    protected
    MidiMessage(byte[] data)
    构造一个新的 MidiMessage
  • Method Summary

    Modifier and Type
    Method
    Description
    abstract Object
    clone()
    创建一个与此对象相同类和相同内容的新对象。
    int
    获取 MIDI 消息的总字节长度。
    byte[]
    获取 MIDI 消息数据。
    int
    获取 MIDI 消息的状态字节。
    protected void
    setMessage(byte[] data, int length)
    设置 MIDI 消息的数据。

    Methods declared in class java.lang.Object

    equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • data

      protected byte[] data
      MIDI 消息数据。第一个字节是消息的状态字节;随后的字节直到消息的长度为消息的数据字节。
      参见:
    • length

      protected int length
      MIDI 消息的字节数,包括状态字节和任何数据字节。
      参见:
  • Constructor Details

    • MidiMessage

      protected MidiMessage(byte[] data)
      构造一个新的 MidiMessage。这个受保护的构造函数由具体的子类调用,子类应确保数据数组指定了一个完整、有效的 MIDI 消息。
      参数:
      data - 包含完整消息的字节数组。消息数据可以使用 setMessage 方法更改。
      参见:
  • Method Details

    • setMessage

      protected void setMessage(byte[] data, int length) throws InvalidMidiDataException
      设置 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

      public abstract Object clone()
      创建一个与此对象相同类和相同内容的新对象。
      覆盖:
      clone 在类 Object
      返回:
      此实例的克隆
      参见: