javax.sound.midi
Class ShortMessagejava.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:
- SysexMessage, MetaMessage
Field Summary
static int ACTIVE_SENSING
Status byte for Active Sensing message (0xFE, or 254).static int CHANNEL_PRESSURE
Command value for Channel Pressure (Aftertouch) message (0xD0, or 208)static int CONTINUE
Status byte for Continue message (0xFB, or 251).static int CONTROL_CHANGE
Command value for Control Change message (0xB0, or 176)static int END_OF_EXCLUSIVE
Status byte for End of System Exclusive message (0xF7, or 247).static int MIDI_TIME_CODE
Status byte for MIDI Time Code Quarter Frame message (0xF1, or 241).static int NOTE_OFF
Command value for Note Off message (0x80, or 128)static int NOTE_ON
Command value for Note On message (0x90, or 144)static int PITCH_BEND
Command value for Pitch Bend message (0xE0, or 224)static int POLY_PRESSURE
Command value for Polyphonic Key Pressure (Aftertouch) message (0xA0, or 128)static int PROGRAM_CHANGE
Command value for Program Change message (0xC0, or 192)static int SONG_POSITION_POINTER
Status byte for Song Position Pointer message (0xF2, or 242).static int SONG_SELECT
Status byte for MIDI Song Select message (0xF3, or 243).static int START
Status byte for Start message (0xFA, or 250).static int STOP
Status byte for Stop message (0xFC, or 252).static int SYSTEM_RESET
Status byte for System Reset message (0xFF, or 255).static int TIMING_CLOCK
Status byte for Timing Clock messagem (0xF8, or 248).static int TUNE_REQUEST
Status byte for Tune Request message (0xF6, or 246).
Fields inherited from class javax.sound.midi.MidiMessage data, length
Constructor Summary
ShortMessage()
Constructs a new ShortMessage.protected ShortMessage(byte[] data)
Constructs a new ShortMessage.
Method Summary
Object clone()
Creates a new object of the same class and with the same contents as this object.int getChannel()
Obtains the MIDI channel associated with this event.int getCommand()
Obtains the MIDI command associated with this event.int getData1()
Obtains the first data byte in the message.int getData2()
Obtains the second data byte in the message.protected 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 one or 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 Detail
MIDI_TIME_CODE
public static final int MIDI_TIME_CODE
- Status byte for MIDI Time Code Quarter Frame message (0xF1, or 241).
- See Also:
- MidiMessage.getStatus(), Constant Field Values
SONG_POSITION_POINTER
public static final int SONG_POSITION_POINTER
- Status byte for Song Position Pointer message (0xF2, or 242).
- See Also:
- MidiMessage.getStatus(), Constant Field Values
SONG_SELECT
public static final int SONG_SELECT
- Status byte for MIDI Song Select message (0xF3, or 243).
- See Also:
- MidiMessage.getStatus(), Constant Field Values
TUNE_REQUEST
public static final int TUNE_REQUEST
- Status byte for Tune Request message (0xF6, or 246).
- See Also:
- MidiMessage.getStatus(), Constant Field Values
END_OF_EXCLUSIVE
public static final int END_OF_EXCLUSIVE
- Status byte for End of System Exclusive message (0xF7, or 247).
- See Also:
- MidiMessage.getStatus(), Constant Field Values
TIMING_CLOCK
public static final int TIMING_CLOCK
- Status byte for Timing Clock messagem (0xF8, or 248).
- See Also:
- MidiMessage.getStatus(), Constant Field Values
START
public static final int START
- Status byte for Start message (0xFA, or 250).
- See Also:
- MidiMessage.getStatus(), Constant Field Values
CONTINUE
public static final int CONTINUE
- Status byte for Continue message (0xFB, or 251).
- See Also:
- MidiMessage.getStatus(), Constant Field Values
STOP
public static final int STOP
- Status byte for Stop message (0xFC, or 252).
- See Also:
- MidiMessage.getStatus(), Constant Field Values
ACTIVE_SENSING
public static final int ACTIVE_SENSING
- Status byte for Active Sensing message (0xFE, or 254).
- See Also:
- MidiMessage.getStatus(), Constant Field Values
SYSTEM_RESET
public static final int SYSTEM_RESET
- Status byte for System Reset message (0xFF, or 255).
- See Also:
- MidiMessage.getStatus(), Constant Field Values
NOTE_OFF
public static final int NOTE_OFF
- Command value for Note Off message (0x80, or 128)
- See Also:
- Constant Field Values
NOTE_ON
public static final int NOTE_ON
- Command value for Note On message (0x90, or 144)
- See Also:
- Constant Field Values
POLY_PRESSURE
public static final int POLY_PRESSURE
- Command value for Polyphonic Key Pressure (Aftertouch) message (0xA0, or 128)
- See Also:
- Constant Field Values
CONTROL_CHANGE
public static final int CONTROL_CHANGE
- Command value for Control Change message (0xB0, or 176)
- See Also:
- Constant Field Values
PROGRAM_CHANGE
public static final int PROGRAM_CHANGE
- Command value for Program Change message (0xC0, or 192)
- See Also:
- Constant Field Values
CHANNEL_PRESSURE
public static final int CHANNEL_PRESSURE
- Command value for Channel Pressure (Aftertouch) message (0xD0, or 208)
- See Also:
- Constant Field Values
PITCH_BEND
public static final int PITCH_BEND
- Command value for Pitch Bend message (0xE0, or 224)
- See Also:
- Constant Field Values
Constructor Detail
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:
- setMessage(int)
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:
- setMessage(int)
Method Detail
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.
- InvalidMidiDataException
- See Also:
- setMessage(int, int, int), setMessage(int, int, int, int)
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 value passed in for the second data byte should be 0.
- Parameters:
- status - the MIDI status byte
- data1 - the first data byte
- data2 - the second data byte
- Throws:
- InvalidMidiDataException - if the the status or data bytes do not specify a valid MIDI message
- InvalidMidiDataException
- See Also:
- setMessage(int, int, int, int), setMessage(int)
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 one or two data bytes. If the message only takes one data byte, the second data byte value passed should be 0.
- 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 parameter values do not specify a valid MIDI message
- InvalidMidiDataException
- See Also:
- setMessage(int, int, int), setMessage(int), getCommand(), getChannel(), getData1(), getData2()
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:
- setMessage(int, int, int, int)
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.
- See Also:
- setMessage(int, int, int, int)
getData1
public int getData1()
- Obtains the first data byte in the message.
- Returns:
- the value of the data1 field
- See Also:
- setMessage(int, int, int)
getData2
public int getData2()
- Obtains the second data byte in the message.
- Returns:
- the value of the data2 field
- See Also:
- setMessage(int, int, int)
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.
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
- InvalidMidiDataException