home *** CD-ROM | disk | FTP | other *** search
- package javax.sound.midi;
-
- import java.io.ByteArrayInputStream;
- import java.io.ByteArrayOutputStream;
- import java.io.DataInputStream;
- import java.io.DataOutputStream;
- import java.io.FilterInputStream;
- import java.io.IOException;
-
- public class MetaMessage extends MidiMessage {
- public static final int META = 255;
- private static byte[] defaultMessage = new byte[]{-1, 0};
- private int dataLength;
-
- public MetaMessage() {
- this(defaultMessage);
- }
-
- protected MetaMessage(byte[] var1) {
- super(var1);
- this.dataLength = 0;
- }
-
- public void setMessage(int var1, byte[] var2, int var3) throws InvalidMidiDataException {
- if (var1 >= 128) {
- throw new InvalidMidiDataException("Invalid meta event with type " + var1);
- } else {
- try {
- ByteArrayOutputStream var4 = new ByteArrayOutputStream();
- DataOutputStream var5 = new DataOutputStream(var4);
- var5.writeByte(255);
- var5.writeByte(var1);
- this.writeVarInt(var3, var5);
- var5.write(var2, 0, var3);
- super.data = var4.toByteArray();
- super.length = super.data.length;
- this.dataLength = var3;
- } catch (IOException var6) {
- }
-
- }
- }
-
- public int getType() {
- int var1 = 0;
-
- try {
- ByteArrayInputStream var2 = new ByteArrayInputStream(super.data, 0, super.length);
- DataInputStream var3 = new DataInputStream(var2);
- ((FilterInputStream)var3).skip(1L);
- var1 = var3.readUnsignedByte();
- } catch (IOException var4) {
- }
-
- return var1;
- }
-
- public byte[] getData() {
- byte[] var1 = new byte[this.dataLength];
- System.arraycopy(super.data, super.length - this.dataLength, var1, 0, this.dataLength);
- return var1;
- }
-
- public Object clone() {
- byte[] var1 = new byte[super.length];
- System.arraycopy(super.data, 0, var1, 0, var1.length);
- MetaMessage var2 = new MetaMessage(var1);
- return var2;
- }
-
- private void writeVarInt(int var1, DataOutputStream var2) throws InvalidMidiDataException, IOException {
- byte var3 = 6;
- byte[] var4 = new byte[var3];
- int var5 = 0;
- boolean var6 = false;
-
- for(int var7 = 0; var7 < var3; ++var7) {
- var4[var7] = 0;
- }
-
- for(int var8 = var3 - 1; var8 >= 0; --var8) {
- var4[var8] = (byte)(var1 & 127);
- var1 >>>= 7;
- ++var5;
- if (var5 > 1) {
- var4[var8] = (byte)(var4[var8] | 128);
- }
-
- if (var1 == 0) {
- break;
- }
- }
-
- if ((var4[var3 - 1] & 128) != 0) {
- throw new InvalidMidiDataException("Unable to create variable-length integer");
- } else {
- var2.write(var4, var3 - var5, var5);
- }
- }
- }
-