package org.herac.tuxguitar.io.midi.base;
public class MidiMessage {
public static final int CONTROL_CHANGE = 0xB0;
public static final int NOTE_OFF = 0x80;
public static final int NOTE_ON = 0x90;
public static final int PITCH_BEND = 0xE0;
public static final int PROGRAM_CHANGE = 0xC0;
public static final int SYSTEM_RESET = 0xFF;
public static final int TEMPO_CHANGE = 0x51;
public static final int TIME_SIGNATURE_CHANGE = 0x58;
public static final int TYPE_META = 2;
public static final int TYPE_SHORT = 1;
public static MidiMessage metaMessage(int command, byte[] data) {
MidiMessage message = new MidiMessage(TYPE_META, command);
message.setData(data);
return message;
}
public static MidiMessage shortMessage(int command) {
MidiMessage message = new MidiMessage(TYPE_SHORT, command);
message.setData(new byte[] { (byte) command });
return message;
}
public static MidiMessage shortMessage(int command, int channel, int data) {
MidiMessage message = new MidiMessage(TYPE_SHORT, command);
message.setData(new byte[] { (byte) ((command & 0xF0) | (channel & 0x0F)),
(byte) data });
return message;
}
public static MidiMessage shortMessage(int command, int channel, int data1,
int data2) {
MidiMessage message = new MidiMessage(TYPE_SHORT, command);
message.setData(new byte[] { (byte) ((command & 0xF0) | (channel & 0x0F)),
(byte) data1, (byte) data2 });
return message;
}
private int command;
private byte[] data;
private int message;
public MidiMessage(int message, int command) {
this.message = message;
this.command = command;
}
public int getCommand() {
return this.command;
}
public byte[] getData() {
return this.data;
}
public int getType() {
return this.message;
}
public void setData(byte[] data) {
this.data = data;
}
}