Class ShortMessage

java.lang.Object
javax.sound.midi.MidiMessage
javax.sound.midi.ShortMessage
All Implemented Interfaces:
Cloneable

public class ShortMessage extends MidiMessage
A ShortMessage contains a MIDI message that has at most two data bytes following its status byte. The types of MIDI message that satisfy this criterion are channel voice, channel mode, system common, and system real-time--in other words, everything except system exclusive and meta-events. The ShortMessage class provides methods for getting and setting the contents of the MIDI message.

A number of ShortMessage methods have integer parameters by which you specify a MIDI status or data byte. If you know the numeric value, you can express it directly. For system common and system real-time messages, you can often use the corresponding fields of ShortMessage, such as SYSTEM_RESET. For channel messages, the upper four bits of the status byte are specified by a command value and the lower four bits are specified by a MIDI channel number. To convert incoming MIDI data bytes that are in the form of Java's signed bytes, you can use the conversion code given in the MidiMessage class description.

See Also:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final int
    Status byte for Active Sensing message (0xFE, or 254).
    static final int
    Command value for Channel Pressure (Aftertouch) message (0xD0, or 208).
    static final int
    Status byte for Continue message (0xFB, or 251).
    static final int
    Command value for Control Change message (0xB0, or 176).
    static final int
    Status byte for End of System Exclusive message (0xF7, or 247).
    static final int
    Status byte for MIDI Time Code Quarter Frame message (0xF1, or 241).
    static final int
    Command value for Note Off message (0x80, or 128).
    static final int
    Command value for Note On message (0x90, or 144).
    static final int
    Command value for Pitch Bend message (0xE0, or 224).
    static final int
    Command value for Polyphonic Key Pressure (Aftertouch) message (0xA0, or 160).
    static final int
    Command value for Program Change message (0xC0, or 192).
    static final int
    Status byte for Song Position Pointer message (0xF2, or 242).
    static final int
    Status byte for MIDI Song Select message (0xF3, or 243).
    static final int
    Status byte for Start message (0xFA, or 250).
    static final int
    Status byte for Stop message (0xFC, or 252).
    static final int
    Status byte for System Reset message (0xFF, or 255).
    static final int
    Status byte for Timing Clock message (0xF8, or 248).
    static final int
    Status byte for Tune Request message (0xF6, or 246).

    Fields inherited from class javax.sound.midi.MidiMessage

    data, length
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
     
    Constructs a new ShortMessage.
    protected
    ShortMessage(byte[] data)
    Constructs a new ShortMessage.
     
    ShortMessage(int status)
    Constructs a new ShortMessage which represents a MIDI message that takes no data bytes.
     
    ShortMessage(int status, int data1, int data2)
    Constructs a new ShortMessage which represents a MIDI message that takes up to two data bytes.
     
    ShortMessage(int command, int channel, int data1, int data2)
    Constructs a new ShortMessage which represents a channel MIDI message that takes up to two data bytes.
  • Method Summary

    Modifier and Type
    Method
    Description
    Creates a new object of the same class and with the same contents as this object.
    int
    Obtains the MIDI channel associated with this event.
    int
    Obtains the MIDI command associated with this event.
    int
    Obtains the first data byte in the message.
    int
    Obtains the second data byte in the message.
    protected final int
    getDataLength(int status)
    Retrieves the number of data bytes associated with a particular status byte value.
    void
    setMessage(int status)
    Sets the parameters for a MIDI message that takes no data bytes.
    void
    setMessage(int status, int data1, int data2)
    Sets the parameters for a MIDI message that takes one or two data bytes.
    void
    setMessage(int command, int channel, int data1, int data2)
    Sets the short message parameters for a channel message which takes up to two data bytes.

    Methods inherited from class javax.sound.midi.MidiMessage

    getLength, getMessage, getStatus, setMessage

    Methods inherited from class java.lang.Object

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

  • Constructor Details

    • ShortMessage

      public ShortMessage()
      Constructs a new ShortMessage. The contents of the new message are guaranteed to specify a valid MIDI message. Subsequently, you may set the contents of the message using one of the setMessage methods.
      See Also:
    • ShortMessage

      public ShortMessage(int status) throws InvalidMidiDataException
      Constructs a new ShortMessage which represents a MIDI message that takes no data bytes. The contents of the message can be changed by using one of the setMessage methods.
      Parameters:
      status - the MIDI status byte
      Throws:
      InvalidMidiDataException - if status does not specify a valid MIDI status byte for a message that requires no data bytes
      Since:
      1.7
      See Also:
    • ShortMessage

      public ShortMessage(int status, int data1, int data2) throws InvalidMidiDataException
      Constructs a new ShortMessage which represents a MIDI message that takes up to two data bytes. If the message only takes one data byte, the second data byte is ignored. If the message does not take any data bytes, both data bytes are ignored. The contents of the message can be changed by using one of the setMessage methods.
      Parameters:
      status - the MIDI status byte
      data1 - the first data byte
      data2 - the second data byte
      Throws:
      InvalidMidiDataException - if the status byte or all data bytes belonging to the message do not specify a valid MIDI message
      Since:
      1.7
      See Also:
    • ShortMessage

      public ShortMessage(int command, int channel, int data1, int data2) throws InvalidMidiDataException
      Constructs a new ShortMessage which represents a channel MIDI message that takes up to two data bytes. If the message only takes one data byte, the second data byte is ignored. If the message does not take any data bytes, both data bytes are ignored. The contents of the message can be changed by using one of the setMessage methods.
      Parameters:
      command - the MIDI command represented by this message
      channel - the channel associated with the message
      data1 - the first data byte
      data2 - the second data byte
      Throws:
      InvalidMidiDataException - if the command value, channel value or all data bytes belonging to the message do not specify a valid MIDI message
      Since:
      1.7
      See Also:
    • ShortMessage

      protected ShortMessage(byte[] data)
      Constructs a new ShortMessage.
      Parameters:
      data - an array of bytes containing the complete message. The message data may be changed using the setMessage method.
      See Also:
  • Method Details

    • setMessage

      public void setMessage(int status) throws InvalidMidiDataException
      Sets the parameters for a MIDI message that takes no data bytes.
      Parameters:
      status - the MIDI status byte
      Throws:
      InvalidMidiDataException - if status does not specify a valid MIDI status byte for a message that requires no data bytes
      See Also:
    • setMessage

      public void setMessage(int status, int data1, int data2) throws InvalidMidiDataException
      Sets the parameters for a MIDI message that takes one or two data bytes. If the message takes only one data byte, the second data byte is ignored; if the message does not take any data bytes, both data bytes are ignored.
      Parameters:
      status - the MIDI status byte
      data1 - the first data byte
      data2 - the second data byte
      Throws:
      InvalidMidiDataException - if the status byte, or all data bytes belonging to the message, do not specify a valid MIDI message
      See Also:
    • setMessage

      public void setMessage(int command, int channel, int data1, int data2) throws InvalidMidiDataException
      Sets the short message parameters for a channel message which takes up to two data bytes. If the message only takes one data byte, the second data byte is ignored; if the message does not take any data bytes, both data bytes are ignored.
      Parameters:
      command - the MIDI command represented by this message
      channel - the channel associated with the message
      data1 - the first data byte
      data2 - the second data byte
      Throws:
      InvalidMidiDataException - if the status byte or all data bytes belonging to the message, do not specify a valid MIDI message
      See Also:
    • getChannel

      public int getChannel()
      Obtains the MIDI channel associated with this event. This method assumes that the event is a MIDI channel message; if not, the return value will not be meaningful.
      Returns:
      MIDI channel associated with the message
      See Also:
    • getCommand

      public int getCommand()
      Obtains the MIDI command associated with this event. This method assumes that the event is a MIDI channel message; if not, the return value will not be meaningful.
      Returns:
      the MIDI command associated with this event
      See Also:
    • getData1

      public int getData1()
      Obtains the first data byte in the message.
      Returns:
      the value of the data1 field
      See Also:
    • getData2

      public int getData2()
      Obtains the second data byte in the message.
      Returns:
      the value of the data2 field
      See Also:
    • clone

      public Object clone()
      Creates a new object of the same class and with the same contents as this object.
      Specified by:
      clone in class MidiMessage
      Returns:
      a clone of this instance
      See Also:
    • getDataLength

      protected final int getDataLength(int status) throws InvalidMidiDataException
      Retrieves the number of data bytes associated with a particular status byte value.
      Parameters:
      status - status byte value, which must represent a short MIDI message
      Returns:
      data length in bytes (0, 1, or 2)
      Throws:
      InvalidMidiDataException - if the status argument does not represent the status byte for any short message