Module java.desktop
Package javax.sound.midi

Class MetaMessage

java.lang.Object
javax.sound.midi.MidiMessage
javax.sound.midi.MetaMessage
所有已实现的接口:
Cloneable

public class MetaMessage extends MidiMessage
MetaMessage是一个MidiMessage,对合成器没有意义,但可以存储在MIDI文件中,并由顺序程序解释。(请参阅MidiMessage类描述中的讨论。)标准MIDI文件规范定义了各种类型的元事件,例如序列号、歌词、提示点和设置速度。还有用于歌词、版权、速度指示、时间和调号、标记等信息的元事件。有关更多信息,请参阅Complete MIDI 1.0 Detailed Specification中发布的Standard MIDI Files 1.0规范,该规范是由MIDI制造商协会(http://www.midi.org)的一部分。

在使用MIDI线协议传输数据时,状态值为0xFFShortMessage表示系统复位消息。在MIDI文件中,此相同状态值表示MetaMessage。元消息的类型通过跟随状态字节0xFF的第一个字节来区分。随后的字节是数据字节。与系统专用消息一样,数据字节的数量是任意的,取决于MetaMessage的类型。

参见:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final int
    MetaMessage的状态字节(0xFF,或255),用于MIDI文件中。

    Fields declared in class javax.sound.midi.MidiMessage

    data, length
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
     
    构造一个新的MetaMessage
    protected
    MetaMessage(byte[] data)
    构造一个新的MetaMessage
     
    MetaMessage(int type, byte[] data, int length)
    构造一个新的MetaMessage并设置消息参数。
  • Method Summary

    Modifier and Type
    Method
    Description
    clone()
    创建一个与此对象相同类和相同内容的新对象。
    byte[]
    获取元消息的数据副本。
    int
    获取MetaMessage的类型。
    void
    setMessage(int type, byte[] data, int length)
    MetaMessage设置消息参数。

    Methods declared in class javax.sound.midi.MidiMessage

    getLength, getMessage, getStatus, setMessage

    Methods declared in class java.lang.Object

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

    • META

      public static final int META
      MetaMessage的状态字节(0xFF,或255),用于MIDI文件中。它具有与实时"MIDI线"协议中使用的ShortMessage.SYSTEM_RESET相同的值。
      参见:
  • Constructor Details

    • MetaMessage

      public MetaMessage()
      构造一个新的MetaMessage。此处未设置消息的内容;请使用setMessage随后设置。
    • MetaMessage

      public MetaMessage(int type, byte[] data, int length) throws InvalidMidiDataException
      构造一个新的MetaMessage并设置消息参数。消息的内容可以通过使用setMessage方法更改。
      参数:
      type - 元消息类型(必须小于128)
      data - MIDI消息中的数据字节
      length - data字节数量; 它应为非负且小于或等于data.length
      抛出:
      InvalidMidiDataException - 如果参数值未指定有效的MIDI元消息
      自:
      1.7
      参见:
    • MetaMessage

      protected MetaMessage(byte[] data)
      构造一个新的MetaMessage
      参数:
      data - 包含完整消息的字节数组。消息数据可以使用setMessage方法更改。
      参见:
  • Method Details

    • setMessage

      public void setMessage(int type, byte[] data, int length) throws InvalidMidiDataException
      MetaMessage设置消息参数。由于元消息只允许一个状态字节值0xFF,因此此处不需要指定。对于所有元消息,调用getStatus都会返回0xFF

      type参数应为跟随状态字节的MetaMessage中的有效值。data参数应包含MetaMessage的所有后续字节。换句话说,指定MetaMessage类型的字节不被视为数据字节。

      参数:
      type - 元消息类型(必须小于128)
      data - MIDI消息中的数据字节
      length - data字节数量
      抛出:
      InvalidMidiDataException - 如果参数值未指定有效的MIDI元消息
    • getType

      public int getType()
      获取MetaMessage的类型。
      返回:
      代表MetaMessage类型的整数
    • getData

      public byte[] getData()
      获取元消息的数据副本。返回的字节数组不包括状态字节或消息长度数据。元消息的数据长度为数组的长度。请注意,整个消息的长度包括状态字节和元消息类型字节,因此可能比返回的数组长。
      返回:
      包含元消息数据的数组
      参见:
    • clone

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