javax.sound.midi

接口
异常
java.lang.Object
  继承者 javax.sound.midi.MidiMessage
      继承者 javax.sound.midi.ShortMessage
所有已实现的接口:
Cloneable

public class ShortMessage
     
extends MidiMessage

ShortMessage 包含了一个 MIDI 消息,该消息在状态字节后最多有两个数据字节。满足此标准的 MIDI 消息类型是通道声音、通道模式、系统常见和系统实时消息,换句话说,除系统独占和元事件之外的所有情况。ShortMessage 类提供了用于获取和设置 MIDI 消息内容的方法。

多个 ShortMessage 方法带有整数参数,您可通过它来指定 MIDI 状态或数据字节。如果知道此数字值,则可以直接使用数字表示。对于系统常见和系统实时消息,通常可使用相应的 ShortMessage 字段,例如 SYSTEM_RESET。对于通道消息,状态字节的高四位由一个命令值指定,低四位由一个 MIDI 通道号指定。要转换传入的 MIDI 数据字节(Java 带符号字节格式),可以使用 MidiMessage 类描述中给出的变换码

另请参见:
SysexMessage, MetaMessage

字段摘要
static int ACTIVE_SENSING
          ACTIVE_SENSING 消息的状态字节(0xFE 或 254)。
static int CHANNEL_PRESSURE
          CHANNEL_PRESSURE (Aftertouch) 消息的命令值(0xD0 或 208)
static int CONTINUE
          CONTINUE 消息的状态字节(0xFB 或 251)。
static int CONTROL_CHANGE
          CONTROL_CHANGE 消息的命令值(0xB0 或 176)
static int END_OF_EXCLUSIVE
          End of System Exclusive 消息的状态字节(0xF7 或 247)。
static int MIDI_TIME_CODE
          MIDI Time Code Quarter Frame 消息的状态字节(0xF1 或 241)。
static int NOTE_OFF
          NOTE_OFF 消息的命令值(0x80 或 128)
static int NOTE_ON
          NOTE_ON 消息的命令值(0x90 或 144)
static int PITCH_BEND
          PITCH_BEND 消息的命令值(0xE0 或 224)
static int POLY_PRESSURE
          Polyphonic Key Pressure (Aftertouch) 消息的命令值(0xA0 或 128)
static int PROGRAM_CHANGE
          PROGRAM_CHANGE 消息的命令值(0xC0 或 192)
static int SONG_POSITION_POINTER
          SONG_POSITION_POINTER 消息的状态字节(0xF2 或 242)。
static int SONG_SELECT
          MIDI SONG_SELECT 消息的状态字节(0xF3 或 243)。
static int START
          START 消息的状态字节(0xFA 或 250)。
static int STOP
          STOP 消息的状态字节(0xFC 或 252)。
static int SYSTEM_RESET
          SYSTEM_RESET 消息的状态字节(0xFF 或 255)。
static int TIMING_CLOCK
          TIMING_CLOCK 消息的状态字节(0xF8 或 248)。
static int TUNE_REQUEST
          TUNE_REQUEST 消息的状态字节(0xF6 或 246)。
 
从类 javax.sound.midi.MidiMessage 继承的字段
data, length
 
构造方法摘要
  ShortMessage()
          构造一个新的 ShortMessage
protected ShortMessage(byte[] data)
          构造一个新的 ShortMessage
 
方法摘要
 Object clone()
          创建一个与此对象具有相同类和相同内容的新对象。
 int getChannel()
          获取与此事件关联的 MIDI 通道。
 int getCommand()
          获取与此事件关联的 MIDI 命令。
 int getData1()
          获取消息中的第一个数据字节。
 int getData2()
          获取消息中的第二个数据字节。
protected  int getDataLength(int status)
          检索与特定状态字节值关联的数据字节数。
 void setMessage(int status)
          为不带任何数据字节的 MIDI 消息设置参数。
 void setMessage(int status, int data1, int data2)
          为带一个或两个数据字节的 MIDI 消息设置参数。
 void setMessage(int command, int channel, int data1, int data2)
          为带两个数据字节的通道消息设置短消息参数。
 
从类 javax.sound.midi.MidiMessage 继承的方法
getLength, getMessage, getStatus, setMessage
 
从类 java.lang.Object 继承的方法
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

字段详细信息

MIDI_TIME_CODE

public static final int MIDI_TIME_CODE
MIDI Time Code Quarter Frame 消息的状态字节(0xF1 或 241)。

另请参见:
MidiMessage.getStatus(), 常量字段值

SONG_POSITION_POINTER

public static final int SONG_POSITION_POINTER
SONG_POSITION_POINTER 消息的状态字节(0xF2 或 242)。

另请参见:
MidiMessage.getStatus(), 常量字段值

SONG_SELECT

public static final int SONG_SELECT
MIDI SONG_SELECT 消息的状态字节(0xF3 或 243)。

另请参见:
MidiMessage.getStatus(), 常量字段值

TUNE_REQUEST

public static final int TUNE_REQUEST
TUNE_REQUEST 消息的状态字节(0xF6 或 246)。

另请参见:
MidiMessage.getStatus(), 常量字段值

END_OF_EXCLUSIVE

public static final int END_OF_EXCLUSIVE
End of System Exclusive 消息的状态字节(0xF7 或 247)。

另请参见:
MidiMessage.getStatus(), 常量字段值

TIMING_CLOCK

public static final int TIMING_CLOCK
TIMING_CLOCK 消息的状态字节(0xF8 或 248)。

另请参见:
MidiMessage.getStatus(), 常量字段值

START

public static final int START
START 消息的状态字节(0xFA 或 250)。

另请参见:
MidiMessage.getStatus(), 常量字段值

CONTINUE

public static final int CONTINUE
CONTINUE 消息的状态字节(0xFB 或 251)。

另请参见:
MidiMessage.getStatus(), 常量字段值

STOP

public static final int STOP
STOP 消息的状态字节(0xFC 或 252)。

另请参见:
MidiMessage.getStatus(), 常量字段值

ACTIVE_SENSING

public static final int ACTIVE_SENSING
ACTIVE_SENSING 消息的状态字节(0xFE 或 254)。

另请参见:
MidiMessage.getStatus(), 常量字段值

SYSTEM_RESET

public static final int SYSTEM_RESET
SYSTEM_RESET 消息的状态字节(0xFF 或 255)。

另请参见:
MidiMessage.getStatus(), 常量字段值

NOTE_OFF

public static final int NOTE_OFF
NOTE_OFF 消息的命令值(0x80 或 128)

另请参见:
常量字段值

NOTE_ON

public static final int NOTE_ON
NOTE_ON 消息的命令值(0x90 或 144)

另请参见:
常量字段值

POLY_PRESSURE

public static final int POLY_PRESSURE
Polyphonic Key Pressure (Aftertouch) 消息的命令值(0xA0 或 128)

另请参见:
常量字段值

CONTROL_CHANGE

public static final int CONTROL_CHANGE
CONTROL_CHANGE 消息的命令值(0xB0 或 176)

另请参见:
常量字段值

PROGRAM_CHANGE

public static final int PROGRAM_CHANGE
PROGRAM_CHANGE 消息的命令值(0xC0 或 192)

另请参见:
常量字段值

CHANNEL_PRESSURE

public static final int CHANNEL_PRESSURE
CHANNEL_PRESSURE (Aftertouch) 消息的命令值(0xD0 或 208)

另请参见:
常量字段值

PITCH_BEND

public static final int PITCH_BEND
PITCH_BEND 消息的命令值(0xE0 或 224)

另请参见:
常量字段值
构造方法详细信息

ShortMessage

public ShortMessage()
构造一个新的 ShortMessage。可保证新消息的内容指定一个有效的 MIDI 消息。之后,可以使用 setMessage 方法之一来设置消息的内容。

另请参见:
setMessage(int)

ShortMessage

protected ShortMessage(byte[] data)
构造一个新的 ShortMessage

参数:
data - 包含完整消息的 byte 数组。使用 setMessage 方法可更改消息数据。
另请参见:
setMessage(int)
方法详细信息

setMessage

public void setMessage(int status)
                throws InvalidMidiDataException
为不带任何数据字节的 MIDI 消息设置参数。

参数:
status - MIDI 状态字节
抛出:
InvalidMidiDataException - 如果 status 没有为不要求任何数据字节的消息指定有效的 MIDI 状态字节。
InvalidMidiDataException
另请参见:
setMessage(int, int, int), setMessage(int, int, int, int)

setMessage

public void setMessage(int status,
                       int data1,
                       int data2)
                throws InvalidMidiDataException
为带一个或两个数据字节的 MIDI 消息设置参数。如果消息只带一个数据字节,则忽略第二个数据字节;如果消息不带任何数据字节,则忽略两个数据字节。

参数:
status - MIDI 状态字节
data1 - 第一个数据字节
data2 - 第二个数据字节
抛出:
InvalidMidiDataException - 如果该状态字节或属于此消息的所有数据字节都未指定有效的 MIDI 消息。
InvalidMidiDataException
另请参见:
setMessage(int, int, int, int), setMessage(int)

setMessage

public void setMessage(int command,
                       int channel,
                       int data1,
                       int data2)
                throws InvalidMidiDataException
为带两个数据字节的通道消息设置短消息参数。如果消息只带一个数据字节,则忽略第二个数据字节;如果消息不带任何数据字节,则忽略两个数据字节。

参数:
command - 此消息所表示的 MIDI 命令
channel - 与此消息关联的通道
data1 - 第一个数据字节
data2 - 第二个数据字节
抛出:
InvalidMidiDataException - 如果该状态字节或属于此消息的所有数据字节都未指定有效的 MIDI 消息
InvalidMidiDataException
另请参见:
setMessage(int, int, int), setMessage(int), getCommand(), getChannel(), getData1(), getData2()

getChannel

public int getChannel()
获取与此事件关联的 MIDI 通道。此方法假定事件是一个 MIDI 通道消息;否则返回值没有意义。

返回:
与此消息关联的 MIDI 通道。
另请参见:
setMessage(int, int, int, int)

getCommand

public int getCommand()
获取与此事件关联的 MIDI 命令。此方法假定事件是一个 MIDI 通道消息;否则返回值没有意义。

另请参见:
setMessage(int, int, int, int)

getData1

public int getData1()
获取消息中的第一个数据字节。

返回:
data1 字段的值
另请参见:
setMessage(int, int, int)

getData2

public int getData2()
获取消息中的第二个数据字节。

返回:
data2 字段的值
另请参见:
setMessage(int, int, int)

clone

public Object clone()
创建一个与此对象具有相同类和相同内容的新对象。

指定者:
MidiMessage 中的 clone
返回:
此实例的一个副本。
另请参见:
Cloneable

getDataLength

protected final int getDataLength(int status)
                           throws InvalidMidiDataException
检索与特定状态字节值关联的数据字节数。

参数:
status - 状态字节值,必须表示一个短 MIDI 消息
返回:
数据长度,以字节为单位(0、1 或 2)
抛出:
InvalidMidiDataException - 如果 status 参数不表示任何短消息的状态字节
InvalidMidiDataException