SysexMessage
SysexMessage
MIDI 시스템 전용(system exclusive) 메시지를 나타내는 클래스예요. 시스템 전용 데이터는 표준 MIDI 파일에 저장되고, 특정 하드웨어 장치가 해석할 수 있어요.
본문
javax.sound.midi 패키지에 속하는 클래스로, MidiMessage를 상속하고 Cloneable을 구현해요.
MIDI 사양은 시스템 전용 메시지 유형들과 제조사 식별 번호들을 정의해요. 시스템 전용 데이터는 MIDI의 다른 데이터와 달리, 메시지 안에 임의의 수의 데이터 바이트를 가질 수 있어요. 시스템 전용 메시지는 상태 바이트 0xF0 또는 0xF7을 가져요. SysexMessage의 message data는 보통 상태 바이트로 시작해요. 0xF0은 일반적인 sys-ex 메시지의 시작을 나타내고, 0xF7은 0xF0으로 시작한 이전 sys-ex 메시지의 연속을 나타내요. 0xF7으로 시작하는 메시지는 0xF0으로 시작하는 메시지가 먼저 포함된 다음 계속되는 데이터를 담아요.
public class SysexMessage extends MidiMessage
SYSTEM_EXCLUSIVE
public static final int SYSTEM_EXCLUSIVE
상태 바이트 값 0xF0을 나타내고, SysexMessage의 시작을 나타내요. ShortMessage의 SYSTEM_RESET과 같은 값을 가져요.
SPECIAL_SYSTEM_EXCLUSIVE
public static final int SPECIAL_SYSTEM_EXCLUSIVE
상태 바이트 값 0xF7을 나타내고, SysexMessage의 연속을 나타내요.
생성자
public SysexMessage()
새 SysexMessage를 생성해요. 내용은 여기서 설정되지 않고, 나중에 setMessage로 설정해요.
public SysexMessage(byte[] data, int length)
throws InvalidMidiDataException
지정된 데이터로 새 SysexMessage를 생성해요. data에서 메시지의 처음 length 바이트를 읽어 메시지를 구성해요. 데이터는 임의의 수의 바이트일 수 있고, length 바이트 이후의 데이터 바이트는 무시돼요.
- 파라미터
data: 시스템 전용 메시지 데이터 - 파라미터
length:data에 포함된 바이트 수 - 예외
InvalidMidiDataException:length가 0보다 작거나,data에 포함된 바이트 수보다 크거나,length가 1보다 크고 첫length바이트 중 어느 것도 상태 값 0xF0이나 0xF7을 가지지 않는 경우
setMessage
public void setMessage(byte[] data, int length)
throws InvalidMidiDataException
SysexMessage의 메시지 파라미터를 설정해요. data에서 메시지의 처음 length 바이트를 읽어 메시지를 설정해요. length는 음수가 아니고 data.length보다 작거나 같아야 해요. 메시지 데이터는 상태 바이트로 시작해야 해요. 상태 바이트는 data의 첫 바이트(0xF0 또는 0xF7)예요.
- 파라미터
data: 시스템 전용 메시지 데이터 - 파라미터
length:data에 포함된 바이트 수 - 예외
InvalidMidiDataException:length가 0보다 작거나,data.length보다 크거나, 또는length가 1보다 크고 첫length바이트 중 어느 것도 상태 값 0xF0이나 0xF7을 가지지 않는 경우
setMessage
public void setMessage(int status, byte[] data, int length)
throws InvalidMidiDataException
SysexMessage의 메시지 파라미터를 설정해요. data에서 메시지의 처음 length 바이트를 읽고 status 상태 바이트와 함께 메시지를 설정해요. length는 음수가 아니고 data.length보다 작거나 같아야 해요. data에 포함된 length 바이트 다음의 데이터 바이트는 무시돼요. status는 0xF0(시스템 전용 메시지 시작) 또는 0xF7(시스템 전용 메시지 연속)이어야 해요.
- 파라미터
status: 상태 바이트(0xF0 또는 0xF7) - 파라미터
data: 시스템 전용 메시지 데이터 - 파라미터
length:data에 포함된 바이트 수 - 예외
InvalidMidiDataException:length가 0보다 작거나,data.length보다 크거나, 또는status가 시스템 전용 상태 값 0xF0이나 0xF7이 아닌 경우
getData
public byte[] getData()
시스템 전용 메시지 데이터의 복사본을 얻어요. 이 SysexMessage가 사용할 시스템 전용 메시지를 나타내는 데이터 배열을 반환해요. 반환된 배열은 상태 바이트를 포함하지 않아요.
- 반환값: 시스템 전용 메시지 데이터를 담은 배열
clone
public Object clone()
이 객체와 같은 클래스, 같은 내용을 가진 새 객체를 만들어요.
- 반환값: 이 인스턴스의 복제본