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:
SysexMessage
,MetaMessage
-
Field Summary
Fields Modifier and Type Field Description 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 160).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 message (0xF8, or 248).static int
TUNE_REQUEST
Status byte for Tune Request message (0xF6, or 246). -
Constructor Summary
Constructors Modifier Constructor Description ShortMessage()
Constructs a newShortMessage
.protected
ShortMessage(byte[] data)
Constructs a newShortMessage
.ShortMessage(int status)
Constructs a newShortMessage
which represents a MIDI message that takes no data bytes.ShortMessage(int status, int data1, int data2)
Constructs a newShortMessage
which represents a MIDI message that takes up to two data bytes.ShortMessage(int command, int channel, int data1, int data2)
Constructs a newShortMessage
which represents a channel MIDI message that takes up to two data bytes. -
Method Summary
Modifier and Type Method Description 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 up to two data bytes.
-
Field Details
-
MIDI_TIME_CODE
public static final int MIDI_TIME_CODEStatus 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_POINTERStatus byte for Song Position Pointer message (0xF2, or 242).- See Also:
MidiMessage.getStatus()
, Constant Field Values
-
SONG_SELECT
public static final int SONG_SELECTStatus byte for MIDI Song Select message (0xF3, or 243).- See Also:
MidiMessage.getStatus()
, Constant Field Values
-
TUNE_REQUEST
public static final int TUNE_REQUESTStatus byte for Tune Request message (0xF6, or 246).- See Also:
MidiMessage.getStatus()
, Constant Field Values
-
END_OF_EXCLUSIVE
public static final int END_OF_EXCLUSIVEStatus byte for End of System Exclusive message (0xF7, or 247).- See Also:
MidiMessage.getStatus()
, Constant Field Values
-
TIMING_CLOCK
public static final int TIMING_CLOCKStatus byte for Timing Clock message (0xF8, or 248).- See Also:
MidiMessage.getStatus()
, Constant Field Values
-
START
public static final int STARTStatus byte for Start message (0xFA, or 250).- See Also:
MidiMessage.getStatus()
, Constant Field Values
-
CONTINUE
public static final int CONTINUEStatus byte for Continue message (0xFB, or 251).- See Also:
MidiMessage.getStatus()
, Constant Field Values
-
STOP
public static final int STOPStatus byte for Stop message (0xFC, or 252).- See Also:
MidiMessage.getStatus()
, Constant Field Values
-
ACTIVE_SENSING
public static final int ACTIVE_SENSINGStatus byte for Active Sensing message (0xFE, or 254).- See Also:
MidiMessage.getStatus()
, Constant Field Values
-
SYSTEM_RESET
public static final int SYSTEM_RESETStatus byte for System Reset message (0xFF, or 255).- See Also:
MidiMessage.getStatus()
, Constant Field Values
-
NOTE_OFF
public static final int NOTE_OFFCommand value for Note Off message (0x80, or 128).- See Also:
- Constant Field Values
-
NOTE_ON
public static final int NOTE_ONCommand value for Note On message (0x90, or 144).- See Also:
- Constant Field Values
-
POLY_PRESSURE
public static final int POLY_PRESSURECommand value for Polyphonic Key Pressure (Aftertouch) message (0xA0, or 160).- See Also:
- Constant Field Values
-
CONTROL_CHANGE
public static final int CONTROL_CHANGECommand value for Control Change message (0xB0, or 176).- See Also:
- Constant Field Values
-
PROGRAM_CHANGE
public static final int PROGRAM_CHANGECommand value for Program Change message (0xC0, or 192).- See Also:
- Constant Field Values
-
CHANNEL_PRESSURE
public static final int CHANNEL_PRESSURECommand value for Channel Pressure (Aftertouch) message (0xD0, or 208).- See Also:
- Constant Field Values
-
PITCH_BEND
public static final int PITCH_BENDCommand value for Pitch Bend message (0xE0, or 224).- See Also:
- Constant Field Values
-
-
Constructor Details
-
ShortMessage
public ShortMessage()Constructs a newShortMessage
. 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 thesetMessage
methods.- See Also:
setMessage(int)
-
ShortMessage
Constructs a newShortMessage
which represents a MIDI message that takes no data bytes. The contents of the message can be changed by using one of thesetMessage
methods.- Parameters:
status
- the MIDI status byte- Throws:
InvalidMidiDataException
- ifstatus
does not specify a valid MIDI status byte for a message that requires no data bytes- Since:
- 1.7
- See Also:
setMessage(int)
,setMessage(int, int, int)
,setMessage(int, int, int, int)
,MidiMessage.getStatus()
-
ShortMessage
Constructs a newShortMessage
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 thesetMessage
methods.- Parameters:
status
- the MIDI status bytedata1
- the first data bytedata2
- 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:
setMessage(int)
,setMessage(int, int, int)
,setMessage(int, int, int, int)
,MidiMessage.getStatus()
,getData1()
,getData2()
-
ShortMessage
public ShortMessage(int command, int channel, int data1, int data2) throws InvalidMidiDataExceptionConstructs a newShortMessage
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 thesetMessage
methods.- Parameters:
command
- the MIDI command represented by this messagechannel
- the channel associated with the messagedata1
- the first data bytedata2
- 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:
setMessage(int)
,setMessage(int, int, int)
,setMessage(int, int, int, int)
,getCommand()
,getChannel()
,getData1()
,getData2()
-
ShortMessage
protected ShortMessage(byte[] data)Constructs a newShortMessage
.- Parameters:
data
- an array of bytes containing the complete message. The message data may be changed using thesetMessage
method.- See Also:
setMessage(int)
-
-
Method Details
-
setMessage
Sets the parameters for a MIDI message that takes no data bytes.- Parameters:
status
- the MIDI status byte- Throws:
InvalidMidiDataException
- ifstatus
does not specify a valid MIDI status byte for a message that requires no data bytes- See Also:
setMessage(int, int, int)
,setMessage(int, int, int, int)
-
setMessage
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 bytedata1
- the first data bytedata2
- 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(int, int, int, int)
,setMessage(int)
-
setMessage
public void setMessage(int command, int channel, int data1, int data2) throws InvalidMidiDataExceptionSets 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 messagechannel
- the channel associated with the messagedata1
- the first data bytedata2
- 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(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.- Returns:
- the MIDI command associated with this event
- 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
Creates a new object of the same class and with the same contents as this object.- Specified by:
clone
in classMidiMessage
- Returns:
- a clone of this instance
- See Also:
Cloneable
-
getDataLength
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 thestatus
argument does not represent the status byte for any short message
-