home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &… the Search for Life CD 3 / 0_CD-ROM.iso / install / jre1_3 / lib / rt.jar / javax / sound / midi / ShortMessage.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  2.9 KB  |  195 lines

  1. package javax.sound.midi;
  2.  
  3. import java.io.ByteArrayInputStream;
  4. import java.io.ByteArrayOutputStream;
  5. import java.io.DataInputStream;
  6. import java.io.DataOutputStream;
  7. import java.io.FilterInputStream;
  8. import java.io.IOException;
  9.  
  10. public class ShortMessage extends MidiMessage {
  11.    public static final int MIDI_TIME_CODE = 241;
  12.    public static final int SONG_POSITION_POINTER = 242;
  13.    public static final int SONG_SELECT = 243;
  14.    public static final int TUNE_REQUEST = 246;
  15.    public static final int END_OF_EXCLUSIVE = 247;
  16.    public static final int TIMING_CLOCK = 248;
  17.    public static final int START = 250;
  18.    public static final int CONTINUE = 251;
  19.    public static final int STOP = 252;
  20.    public static final int ACTIVE_SENSING = 254;
  21.    public static final int SYSTEM_RESET = 255;
  22.    public static final int NOTE_OFF = 128;
  23.    public static final int NOTE_ON = 144;
  24.    public static final int POLY_PRESSURE = 160;
  25.    public static final int CONTROL_CHANGE = 176;
  26.    public static final int PROGRAM_CHANGE = 192;
  27.    public static final int CHANNEL_PRESSURE = 208;
  28.    public static final int PITCH_BEND = 224;
  29.    private static byte[] defaultMessage = new byte[]{-112, -1, 0};
  30.  
  31.    public ShortMessage() {
  32.       this(defaultMessage);
  33.    }
  34.  
  35.    protected ShortMessage(byte[] var1) {
  36.       super(var1);
  37.    }
  38.  
  39.    public void setMessage(int var1) throws InvalidMidiDataException {
  40.       int var2 = this.getDataLength(var1);
  41.       if (var2 != 0) {
  42.          throw new InvalidMidiDataException("Status byte; " + var1 + " requires " + var2 + " data bytes");
  43.       } else {
  44.          try {
  45.             ByteArrayOutputStream var3 = new ByteArrayOutputStream();
  46.             DataOutputStream var4 = new DataOutputStream(var3);
  47.             var4.writeByte(var1);
  48.             super.data = var3.toByteArray();
  49.             super.length = super.data.length;
  50.          } catch (IOException var5) {
  51.          }
  52.  
  53.       }
  54.    }
  55.  
  56.    public void setMessage(int var1, int var2, int var3) throws InvalidMidiDataException {
  57.       int var4 = this.getDataLength(var1);
  58.  
  59.       try {
  60.          ByteArrayOutputStream var5 = new ByteArrayOutputStream();
  61.          DataOutputStream var6 = new DataOutputStream(var5);
  62.          var6.writeByte(var1);
  63.          if (var4 >= 1) {
  64.             var6.writeByte(var2);
  65.          }
  66.  
  67.          if (var4 >= 2) {
  68.             var6.writeByte(var3);
  69.          }
  70.  
  71.          super.data = var5.toByteArray();
  72.          super.length = super.data.length;
  73.       } catch (IOException var7) {
  74.       }
  75.  
  76.    }
  77.  
  78.    public void setMessage(int var1, int var2, int var3, int var4) throws InvalidMidiDataException {
  79.       int var5 = var1 & 240 | var2 & 15;
  80.       int var6 = this.getDataLength(var5);
  81.  
  82.       try {
  83.          ByteArrayOutputStream var7 = new ByteArrayOutputStream();
  84.          DataOutputStream var8 = new DataOutputStream(var7);
  85.          var8.writeByte(var5);
  86.          if (var6 >= 1) {
  87.             var8.writeByte(var3);
  88.          }
  89.  
  90.          if (var6 >= 2) {
  91.             var8.writeByte(var4);
  92.          }
  93.  
  94.          super.data = var7.toByteArray();
  95.          super.length = super.data.length;
  96.       } catch (IOException var9) {
  97.       }
  98.  
  99.    }
  100.  
  101.    public int getChannel() {
  102.       int var1 = ((MidiMessage)this).getStatus();
  103.       return var1 & 15;
  104.    }
  105.  
  106.    public int getCommand() {
  107.       int var1 = ((MidiMessage)this).getStatus();
  108.       return var1 & 240;
  109.    }
  110.  
  111.    public int getData1() {
  112.       int var1 = 0;
  113.  
  114.       try {
  115.          int var2 = ((MidiMessage)this).getStatus();
  116.          int var3 = this.getDataLength(var2);
  117.          if (var3 < 1) {
  118.          }
  119.  
  120.          ByteArrayInputStream var4 = new ByteArrayInputStream(super.data, 0, super.length);
  121.          DataInputStream var5 = new DataInputStream(var4);
  122.          ((FilterInputStream)var5).skip(1L);
  123.          var1 = var5.readUnsignedByte();
  124.       } catch (InvalidMidiDataException var6) {
  125.       } catch (IOException var7) {
  126.       }
  127.  
  128.       return var1;
  129.    }
  130.  
  131.    public int getData2() {
  132.       int var1 = 0;
  133.  
  134.       try {
  135.          int var2 = ((MidiMessage)this).getStatus();
  136.          int var3 = this.getDataLength(var2);
  137.          if (var3 < 2) {
  138.          }
  139.  
  140.          ByteArrayInputStream var4 = new ByteArrayInputStream(super.data, 0, super.length);
  141.          DataInputStream var5 = new DataInputStream(var4);
  142.          ((FilterInputStream)var5).skip(2L);
  143.          var1 = var5.readUnsignedByte();
  144.       } catch (InvalidMidiDataException var6) {
  145.       } catch (IOException var7) {
  146.       }
  147.  
  148.       return var1;
  149.    }
  150.  
  151.    public Object clone() {
  152.       byte[] var1 = new byte[super.length];
  153.       System.arraycopy(super.data, 0, var1, 0, var1.length);
  154.       ShortMessage var2 = new ShortMessage(var1);
  155.       return var2;
  156.    }
  157.  
  158.    protected final int getDataLength(int var1) throws InvalidMidiDataException {
  159.       switch (var1) {
  160.          case 241:
  161.          case 243:
  162.             return 1;
  163.          case 242:
  164.             return 2;
  165.          case 244:
  166.          case 245:
  167.          default:
  168.             switch (var1 & 240) {
  169.                case 128:
  170.                case 144:
  171.                case 160:
  172.                case 176:
  173.                case 224:
  174.                   return 2;
  175.                case 192:
  176.                case 208:
  177.                   return 1;
  178.                default:
  179.                   throw new InvalidMidiDataException("Invalid status byte: " + var1);
  180.             }
  181.          case 246:
  182.          case 247:
  183.          case 248:
  184.          case 249:
  185.          case 250:
  186.          case 251:
  187.          case 252:
  188.          case 253:
  189.          case 254:
  190.          case 255:
  191.             return 0;
  192.       }
  193.    }
  194. }
  195.