Module  java.desktop
软件包  javax.sound.midi

Class MidiMessage

  • All Implemented Interfaces:
    Cloneable
    已知直接子类:
    MetaMessageShortMessageSysexMessage


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

    基座MidiMessage提供对MIDI消息的三种类型的信息的访问:

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

    MIDI标准以字节表示MIDI数据。 但是,由于Java TM使用带符号字节,因此Java Sound API在表达MIDI数据时使用整数而不是字节。 例如, getStatus()的方法MidiMessage返回MIDI状态字节为整数。 如果您正在处理源自Java Sound外的MIDI数据,现在将其编码为有符号字节,则可以使用此转换将字节转换为整数:

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

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

    另请参见:
    TrackSequenceReceiver
    • 字段详细信息

      • data

        protected byte[] data
        MIDI信息数据。 第一个字节是消息的状态字节; 直到消息长度的后续字节是此消息的数据字节。
        另请参见:
        getLength()
      • length

        protected int length
        MIDI消息中的字节数,包括状态字节和任何数据字节。
        另请参见:
        getLength()
    • 构造方法详细信息

      • MidiMessage

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

      • 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消息的状态字节。 状态“byte”表示为整数; 参见discussion中的MidiMessage类描述。
        结果
        该事件的状态字节的整数表示
      • getLength

        public int getLength​()
        以字节获得MIDI消息的总长度。 MIDI消息由一个状态字节和零个或多个数据字节组成。 返回值的范围从系统实时消息的1到通道消息的2或3,到元和系统独占消息的任何值。
        结果
        消息的长度(以字节为单位)
      • clone

        public abstract Object clone​()
        创建与该对象相同的类和新内容相同的新对象。
        重写:
        cloneObject
        结果
        这个实例的一个克隆
        另请参见:
        Cloneable